โซลูชัน IoT แบบจัดเต็ม ที่มาพร้อมกับเฟิร์มแวร์ Arduino® Nano ESP32 แบบสั่งทำเอง, วงจรไฟฟ้าที่ออกแบบอย่างละเอียด, โครงสร้างพื้นฐานคลาวด์ AWS ที่ขยายได้, และแอปพลิเคชันเดสก์ท็อปข้ามแพลตฟอร์มที่สร้างด้วย Angular/Electron เริ่มต้นจากโปรเจกต์จบของหลักสูตร IoT MicroMasters ที่ Curtin University (เมษายน–กรกฎาคม 2023) และพัฒนาต่อจนสมบูรณ์หลังเรียนจบ
ไปดูตรงไหนดี?
- Museum Alert API: โปรเจกต์ AWS CDK สำหรับสร้างโครงสร้างพื้นฐาน, APIs, และไฟล์คอนฟิกที่จำเป็นสำหรับการติดตั้งทั้งอุปกรณ์ "Museum Alert Sensor (MAS)" และแอปพลิเคชัน "Museum Alert Desktop";
- Museum Alert Sketch: วงจรไฟฟ้าและเฟิร์มแวร์สำหรับสร้างอุปกรณ์ "Museum Alert Sensor (MAS)";
- Museum Alert Desktop: แอปพลิเคชันเดสก์ท็อปข้ามแพลตฟอร์มสำหรับลงทะเบียน, ตั้งค่า, และทดสอบอุปกรณ์ "Museum Alert Sensor (MAS)".
มันแก้ปัญหาอะไร?
ผลิตภัณฑ์แนวคิดที่เสนอในเอกสารนี้ ภายใต้แบรนด์ "Museum Alert" เป็นการพิสูจน์แนวคิด (Proof-of-Concept) ที่ออกแบบมาเพื่อแก้ไขปัญหาที่กล่าวมาข้างต้นอย่างตรงจุด ด้วยสองฟีเจอร์หลักที่เน้นความปลอดภัยของงานศิลปะและการมีส่วนร่วมของผู้ชม:
- ช่วยเรื่องความปลอดภัยพื้นฐานให้เจ้าหน้าที่พิพิธภัณฑ์ ผ่านการตั้งเกณฑ์ระยะทางและเส้นตรวจจับ (tripwire) เพื่อช่วยป้องกันการล้ำเส้นพื้นที่ปลอดภัย (เช่น การสัมผัสงานศิลปะ) และการเข้าถึงพื้นที่หวงห้ามโดยไม่ได้รับอนุญาต
- ส่งการแจ้งเตือนแบบพุช (Push Notification) ตามระยะใกล้ ไปยังอุปกรณ์มือถือของผู้เข้าชม พร้อมเนื้อหาเกี่ยวกับคอลเลกชันที่พวกเขากำลังชมอยู่


Museum Alert Sensor (MAS) ออกแบบกระบวนการตั้งค่าให้เรียบง่าย เพื่อให้ติดตั้งได้เร็วและใช้ง่าย เริ่มต้นด้วยการที่ตัวแทนองค์กรสร้างบัญชีมืออาชีพผ่านแอปพลิเคชันเดสก์ท็อปบนอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ต หลังจากยืนยันตัวตนแล้ว ก็สามารถเพิ่มอุปกรณ์ MAS ที่ยังไม่ได้ลงทะเบียนผ่านกระบวนการ 4 ขั้นตอนแบบมีคำแนะนำได้ ซึ่งรวมถึงการป้อนข้อมูล Wi-Fi เพื่อเชื่อมต่อเซนเซอร์แต่ละตัวเข้ากับเครือข่ายท้องถิ่น
เมื่อเชื่อมต่อสำเร็จ เซนเซอร์แต่ละตัวจะถูกเชื่อมโยงกับกลุ่มอุปกรณ์ของบริษัทของผู้ใช้ที่ยืนยันตัวตนโดยอัตโนมัติ จากนั้นก็จะเริ่มการสื่อสารที่ปลอดภัยกับบรอกเกอร์ของ Museum Alert โดยใช้ MQTT over TLS (MQTTs) พร้อมกันนั้นก็จะส่งสัญญาณบีคอนผ่าน Bluetooth Low Energy (BLE) ไปยังอุปกรณ์มือถือที่อยู่ใกล้ๆ การสื่อสารสองช่องทางนี้ทำให้สามารถส่งการแจ้งเตือนแบบเรียลไทม์และการแจ้งเตือนตามระยะใกล้ได้
นอกจากบทบาทในการลงทะเบียนเซนเซอร์แล้ว แอปพลิเคชันเดสก์ท็อปในโปรเจกต์นี้ยังทำหน้าที่เป็นเครื่องมือวินิจฉัยและตั้งค่าที่ครบครัน มันทำให้ผู้ใช้สามารถ:
- ตั้งค่า Eddystone-URL ที่จะส่งผ่าน BLE สำหรับแต่ละเซนเซอร์
- กำหนดค่าระยะทางขั้นต่ำที่จะทำให้เกิดการแจ้งเตือน
- ตรวจสอบว่าการแจ้งเตือนถูกส่งไปยังหัวข้อ (Topic) ของบริษัทของผู้ใช้ที่ยืนยันตัวตนถูกต้องหรือไม่
ระบบป้องกันระยะปลอดภัย: ระบบเตือนภัยพิพิธภัณฑ์
ป้าย "ห้ามจับ" มันใช้ไม่ได้หรอกน้อง ต่อให้ติดไว้ คนก็ยังอยากจับของโบราณอยู่ดี! เราต้องสร้าง "เขตหวงห้าม" ที่มองไม่เห็นแต่ดุเหมือนเสือดาว! โปรเจค Museum Alert นี้คือการสร้างรั้วเรดาร์ด้วยเสียงขึ้นมาจริงๆ นั่นเอง โดยเราจะซ่อนเซ็นเซอร์วัดระยะอัลตราโซนิคความเร็วสูงไว้ใต้แท่นโชว์ Arduino ของเราจะยิงคลื่นเสียงออกไปเป็นระยะๆ เพื่อสำรวจพื้นที่ (เหมือนเรดาร์เลย) ถ้ามีมือมนุษย์บุกเข้ามาในระยะ 30 เซนติเมตรที่เราตั้งไว้ Arduino จะตรวจจับการเปลี่ยนแปลงและสั่งเปิดไซเรนเสียงดังฉิบหายทันที!
วิธีโปรแกรม SR04 ให้เป็นเรดาร์เสียง
HC-SR04 มันไม่ใช่เซ็นเซอร์ธรรมดาที่อ่านค่าได้เลยนะน้อง มันต้องถูก "บังคับ" ด้วยสัญญาณแม่นยำระดับไมโครวินาที!
- ขา Trigger ต้องถูกสั่งให้เป็น
HIGHเป็นเวลา 10 ไมโครวินาทีพอดี เพื่อบังคับให้เซ็นเซอร์ยิงพัลส์เสียงความถี่ 40KHz ออกไป! - Arduino จะต้องหยุดทุกอย่างชั่วคราว แล้วใช้ฟังก์ชัน
pulseIn()รอฟังสัญญาณที่สะท้อนกลับมาทาง ขา Echo - ความเร็วเสียงคือ
343 เมตร/วินาทีเสียงใช้เวลา29.1 ไมโครวินาทีในการเดินทาง 1 เซนติเมตร
// 1. ยิงเรดาร์เสียง!
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 2. จับเวลาที่เสียงสะท้อนกลับมา!
long duration = pulseIn(echoPin, HIGH);
// 3. แปลงค่าเวลาเป็นระยะทาง (เซนติเมตร)!
int distance = duration / 29.1 / 2; // หาร 2 เพราะเสียงเดินทางไป-กลับ!
// 4. ตรรกะตรวจสอบเขตหวงห้าม!
if (distance < 30) { // มือบุกทะลุเส้น 30 ซม. แล้ววว!
tone(BUZZER_PIN, 2000); // เปิดหวอ 2KHz ดังกึกก้อง!
delay(100);
tone(BUZZER_PIN, 1000); // เปลี่ยนความถี่ให้หวอวิ้งๆ!
} else {
noTone(BUZZER_PIN); // ยังปลอดภัย เงียบไว้ก่อน
}
กำจัดสัญญาณหลอก (False Positive)
ถ้าแค่ฝุ่นลอยผ่านแล้วหวอดังขึ้นมา เจ้าหน้าที่คงหงุดหงิดแน่ๆ
- ต้องตั้งค่าใน
loop()ให้มี "ระบบยืนยันความมั่นใจ" - ถ้าตรวจจับการบุกรุกได้ (
distance < 30) อย่าเพิ่งเปิดหวอ! ให้อ่านค่า ติดกันอีก 3 ครั้งรวดเร็ว ถ้าทั้ง 3 ครั้งยืนยันว่ามีสิ่งผิดปกติ จริงๆ ค่อยสั่งเปิดหวอ! วิธีนี้จะกรองสัญญาณสะท้อนหลอกจากฝุ่นหรือสิ่งรบกวนอื่นๆ ได้ดีขึ้น
อุปกรณ์ที่ต้องจัดให้ครบ
- Arduino Uno/Nano (ซ่อนได้มิดชิดแน่นอน)
- โมดูลวัดระยะอัลตราโซนิค HC-SR04 (หรือจะอัพเกรดเป็น TF-Luna LiDAR แบบอุตสาหกรรมก็ได้ ถ้าต้องการความแม่นยำสูงสำหรับของชิ้นเล็กๆ เช่น เพชรพลอย)
- ออดเสียงดังแบบ Active Buzzer หรือ Piezo Siren (ใช้คำสั่ง
tone(pin, freq)ตั้งเสียงหวอให้วิ้งเว้ากันได้เลย!) - แถบไฟ LED สีแดงเตือนภัย (ต่อผ่านทรานซิสเตอร์ TIP120 เพื่อให้ไฟกระพริบพร้อมกับเสียงหวอ เวลามีการบุกรุก จะได้เห็นจุดเกิดเหตุชัดเจน!)
ทำงาน WiFi + BLE พร้อมกันแบบไม่สะดุด
เรื่องเทคนิคที่น่าสนใจก็คือ Arduino Nano ESP32 ตัวนี้มันสามารถทำงาน WiFi กับ Bluetooth Low Energy (BLE) ไปพร้อมกันได้อย่างเสถียรเลยนะน้อง! ซึ่งความสามารถนี้มาจากโมดูล u-blox® NORA-W106 (ESP32-S3) ที่เป็นหัวใจหลักของบอร์ด
แต่เดี๋ยวก่อน... มันไม่ได้ง่ายแบบนั้นหรอก เพราะ ESP32-S3 ใช้วิทยุ (Radio) ตัวเดียวที่ความถี่ 2.4GHz ในการทำงานทั้งสองโปรโตคอลนี่แหละ ดังนั้น การจัดการทรัพยากร RF ให้ดีเป็นเรื่องสำคัญมาก ถ้าจัดการไม่ดีอาจเกิดการชนกันของสัญญาณ (Conflict) ซึ่งมักจะนำไปสู่ความไม่เสถียรในระบบที่ทำงานแบบ Dual-mode นี่แหละ
สรุปง่ายๆ: ต้องวางแผนดีๆ ไม่งั้นงานอาจจะช็อตได้นะตัวนี้! สู้งานนะน้อง