ระบบรักษาความปลอดภัยบ้านของฉัน หรือที่เรียกว่า Cameran เป็นระบบรักษาความปลอดภัยที่เรียบง่ายและน่าเชื่อถือ Cameran ใช้ เซ็นเซอร์วัดระยะอัลตราโซนิก (Ultrasonic Distance Sensor) ในการตรวจจับว่ามีใครอยู่ห่างจากประตูบ้านเราเท่าไหร่
ถ้ามีใครอยู่ห่างออกไป 100 ฟุต ระบบจะเริ่มทำงาน และไฟ LED สีเขียวจะสว่างขึ้น ถ้าผู้บุกรุกเข้ามาใกล้กว่า 75 ฟุต ระบบจะส่งสัญญาณเตือนด้วยไฟ LED สีเหลือง นี่ควรจะทำให้ผู้บุกรุกคิดทบทวนก่อนจะเข้ามาใกล้กว่านี้ ถ้าผู้บุกรุกเข้ามาใกล้ประตูในระยะ 25 ฟุต ไซเรนจะดังและไฟ LED สีแดงจะสว่างขึ้น ถ้าเป็นสมาชิกในครอบครัวหรือผู้มีสิทธิ์ พวกเขาสามารถป้อนรหัสผ่าน 4 หลักที่ถูกต้องเพื่อปิดเสียงเตือนได้ ถ้ารหัสผ่านไม่ถูกต้อง ไซเรนจะยังคงดังเตือนต่อไป และไฟ LED สีแดงจะเริ่มกระพริบเพื่อบ่งชี้ว่าอาจมีผู้บุกรุก
สำหรับต้นแบบนี้ ฉันออกแบบระบบให้
- ทำงานโดยเปิดไฟ LED สีเขียว เมื่อตรวจจับการเคลื่อนไหวได้ระหว่าง 75 ซม. ถึง 100 ซม.
- แสดงไฟเตือน LED สีเหลือง เมื่อตรวจจับการเคลื่อนไหวได้ระหว่าง 25 ซม. ถึง 75 ซม.
- แสดงไฟ LED สีแดง พร้อมกับเสียงไซเรน เมื่อตรวจจับการเคลื่อนไหวได้ที่ระยะน้อยกว่า 25 ซม.
Perimeter Breach Detection: ระบบรักษาความปลอดภัยโซนาร์อัลตราโซนิก
การพึ่งพาสวิตช์แม่เหล็กประตูแบบกลอย่างเดียว จะทำให้ผู้บุกรุกสามารถทุบกระจกเข้ามาได้โดยไม่ทำให้ระบบเตือนทำงาน ระบบรักษาความปลอดภัยบ้านด้วยอัลตราโซนิก นี้เปลี่ยนสถาปัตยกรรมการป้องกันโดยสิ้นเชิง ด้วยการสร้างเรดาร์วัดปริมาตรด้วยเสียงที่มองไม่เห็น! Arduino จะปล่อยคลื่นเสียงความถี่ 40,000 เฮิรตซ์ เข้าไปในห้องอย่างต่อเนื่อง มันจะคำนวณปริมาตรว่างของโถงทางเดินอย่างแม่นยำ ในเสี้ยววินาทีที่มนุษย์ก้าวเข้ามาในโซน คลื่นเสียงที่สะท้อนกลับจะวิ่งเข้าหาไมโครโฟนเร็วขึ้นเป็นทวีคูณ โปรเซสเซอร์ตรวจจับความผิดปกติของความหน่วงเวลานี้ และจะเริ่มต้นเมทริกซ์ไซเรนหลายโทนที่น่ากลัวทันที เพื่อทำให้ผู้บุกรุกสับสน!
ไขความลับของเรดาร์เสียง (pulseIn)
โมดูล HC-SR04 ไม่สามารถทำงานเป็นพิน HIGH/LOW ธรรมดาๆ ได้ มันต้องการการจัดการเรื่องเวลาอย่างแม่นยำโดยธรรมชาติ
- พิน Trig ต้องการพัลส์
HIGHที่แรงและยาว10 ไมโครวินาทีเพื่อสั่งให้โมดูลลำโพงปล่อยระเบิดเสียง 8 รอบออกไป - Arduino ต้องหยุดการทำงานชั่วคราวอย่างเด็ดขาดโดยใช้
pulseIn()เพื่อรอสัญญาณเอคโค่ที่สะท้อนกลับมา - เพราะความเร็วเสียงคือ
343 เมตร/วินาทีการหารระยะเวลาไมโครวินาทีด้วย58.2จะได้ระยะทางที่แท้จริงเป็นเซนติเมตร!
#define TRIG_PIN 9
#define ECHO_PIN 10
#define SIREN_PIN 8
int baselineDistance = 0; // ค่าที่วัดได้ตอนห้องว่าง!
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// จ่ายไฟและคำนวณสถานะปกติของห้องซะ!
baselineDistance = measureDistance();
}
void loop() {
int currentDistance = measureDistance();
// ถ้าระยะทางลดลงฮวบฮาบ (เช่น มีคนเดินเข้ามาขวาง!)
if (currentDistance < (baselineDistance - 15)) {
// ยืนยันผู้บุกรุก! เปิดไซเรนให้สุด!
tone(SIREN_PIN, 2000);
delay(200);
tone(SIREN_PIN, 1000);
delay(200);
}
}
สร้างสถาปัตยกรรมปรับเทียบแบบไดนามิก
ถ้าน้องเขียนโค้ดแบบเด็กใหม่ ใช้ if (distance < 100) ตายตัวเลย พอน้องย้ายเซ็นเซอร์ไปติดในทางเดินแคบๆ มันก็จะส่งสัญญาณเตือนผิดเพี้ยนตลอดเวลา!
- การปรับเทียบแบบไดนามิกแบบสมบูรณ์นี่สำคัญมากนะตัว!
- ใน
setup()ตัว Arduino จะรันลูป10 รอบโดยอัตโนมัติ เพื่ออ่านค่าระยะทางของห้องตอนว่างๆ แล้วหาค่าเฉลี่ยเก็บไว้เป็นbaselineDistance - วิธีนี้ทำให้ไม่ว่าเจ้าของบ้านจะย้ายอุปกรณ์ไปติดที่ไหน ระบบก็จะสอนตัวเองให้รู้ขนาดของสภาพแวดล้อมใหม่ได้ทุกครั้งที่เปิดเครื่อง!
อุปกรณ์ที่ต้องจัดเต็ม (Defensive Infrastructure Loadout)
- Arduino Uno/Nano (จัดการไทม์เมอร์ระดับไมโครวินาทีสำหรับเสียงได้อย่างแม่นยำ)
- เซ็นเซอร์วัดระยะอัลตราโซนิค HC-SR04 (ต้องมั่นใจว่าตาข่ายโลหะด้านหน้าโล่งเตียน ไม่มีอะไรบังนะ! ถ้าน้องเอาไปติดไว้หลังกระจก เซ็นเซอร์นี้ใช้การไม่ได้เลย เพราะเสียงผ่านกระจกไม่ได้!)
- ออดพีโซ่เสียงดังระดับ High-Decibel หรือจะใช้ โมดูลรีเลย์ 5V ต่อกับไซเรนบ้าน 12V 120dB แบบของจริงก็ได้
- คีย์แพดลับสำหรับเปิด/ปิดระบบ (เพื่อให้เจ้าของบ้านสามารถผ่านเข้า-ออกพื้นที่ได้โดยไม่ทำให้ตัวเองโดนไซเรนแห้ง!)
ตอนพี่ทำโปรเจคนี้ ก็เคยเจอปัญหาเรื่องการช็อตตอนต่อขา 5V เข้ากับกราวด์เหมือนกัน ถ้าน้องเจอปัญหาแบบนี้ ลองไปหาวิธีแก้ไขได้จากโพสต์ที่พี่เขียนไว้เกี่ยวกับเรื่องนี้ได้