กลับไปหน้ารวมไฟล์
museum-alert-1efeda.md

โซลูชัน IoT แบบจัดเต็ม ที่มาพร้อมกับเฟิร์มแวร์ Arduino® Nano ESP32 แบบสั่งทำเอง, วงจรไฟฟ้าที่ออกแบบอย่างละเอียด, โครงสร้างพื้นฐานคลาวด์ AWS ที่ขยายได้, และแอปพลิเคชันเดสก์ท็อปข้ามแพลตฟอร์มที่สร้างด้วย Angular/Electron เริ่มต้นจากโปรเจกต์จบของหลักสูตร IoT MicroMasters ที่ Curtin University (เมษายน–กรกฎาคม 2023) และพัฒนาต่อจนสมบูรณ์หลังเรียนจบ

ไปดูตรงไหนดี?

  1. Museum Alert API: โปรเจกต์ AWS CDK สำหรับสร้างโครงสร้างพื้นฐาน, APIs, และไฟล์คอนฟิกที่จำเป็นสำหรับการติดตั้งทั้งอุปกรณ์ "Museum Alert Sensor (MAS)" และแอปพลิเคชัน "Museum Alert Desktop";
  2. Museum Alert Sketch: วงจรไฟฟ้าและเฟิร์มแวร์สำหรับสร้างอุปกรณ์ "Museum Alert Sensor (MAS)";
  3. Museum Alert Desktop: แอปพลิเคชันเดสก์ท็อปข้ามแพลตฟอร์มสำหรับลงทะเบียน, ตั้งค่า, และทดสอบอุปกรณ์ "Museum Alert Sensor (MAS)".

มันแก้ปัญหาอะไร?

ผลิตภัณฑ์แนวคิดที่เสนอในเอกสารนี้ ภายใต้แบรนด์ "Museum Alert" เป็นการพิสูจน์แนวคิด (Proof-of-Concept) ที่ออกแบบมาเพื่อแก้ไขปัญหาที่กล่าวมาข้างต้นอย่างตรงจุด ด้วยสองฟีเจอร์หลักที่เน้นความปลอดภัยของงานศิลปะและการมีส่วนร่วมของผู้ชม:

  1. ช่วยเรื่องความปลอดภัยพื้นฐานให้เจ้าหน้าที่พิพิธภัณฑ์ ผ่านการตั้งเกณฑ์ระยะทางและเส้นตรวจจับ (tripwire) เพื่อช่วยป้องกันการล้ำเส้นพื้นที่ปลอดภัย (เช่น การสัมผัสงานศิลปะ) และการเข้าถึงพื้นที่หวงห้ามโดยไม่ได้รับอนุญาต
  2. ส่งการแจ้งเตือนแบบพุช (Push Notification) ตามระยะใกล้ ไปยังอุปกรณ์มือถือของผู้เข้าชม พร้อมเนื้อหาเกี่ยวกับคอลเลกชันที่พวกเขากำลังชมอยู่

Museum Alert Sensor (MAS) ออกแบบกระบวนการตั้งค่าให้เรียบง่าย เพื่อให้ติดตั้งได้เร็วและใช้ง่าย เริ่มต้นด้วยการที่ตัวแทนองค์กรสร้างบัญชีมืออาชีพผ่านแอปพลิเคชันเดสก์ท็อปบนอุปกรณ์ที่เชื่อมต่ออินเทอร์เน็ต หลังจากยืนยันตัวตนแล้ว ก็สามารถเพิ่มอุปกรณ์ MAS ที่ยังไม่ได้ลงทะเบียนผ่านกระบวนการ 4 ขั้นตอนแบบมีคำแนะนำได้ ซึ่งรวมถึงการป้อนข้อมูล Wi-Fi เพื่อเชื่อมต่อเซนเซอร์แต่ละตัวเข้ากับเครือข่ายท้องถิ่น

เมื่อเชื่อมต่อสำเร็จ เซนเซอร์แต่ละตัวจะถูกเชื่อมโยงกับกลุ่มอุปกรณ์ของบริษัทของผู้ใช้ที่ยืนยันตัวตนโดยอัตโนมัติ จากนั้นก็จะเริ่มการสื่อสารที่ปลอดภัยกับบรอกเกอร์ของ Museum Alert โดยใช้ MQTT over TLS (MQTTs) พร้อมกันนั้นก็จะส่งสัญญาณบีคอนผ่าน Bluetooth Low Energy (BLE) ไปยังอุปกรณ์มือถือที่อยู่ใกล้ๆ การสื่อสารสองช่องทางนี้ทำให้สามารถส่งการแจ้งเตือนแบบเรียลไทม์และการแจ้งเตือนตามระยะใกล้ได้

นอกจากบทบาทในการลงทะเบียนเซนเซอร์แล้ว แอปพลิเคชันเดสก์ท็อปในโปรเจกต์นี้ยังทำหน้าที่เป็นเครื่องมือวินิจฉัยและตั้งค่าที่ครบครัน มันทำให้ผู้ใช้สามารถ:

  1. ตั้งค่า Eddystone-URL ที่จะส่งผ่าน BLE สำหรับแต่ละเซนเซอร์
  2. กำหนดค่าระยะทางขั้นต่ำที่จะทำให้เกิดการแจ้งเตือน
  3. ตรวจสอบว่าการแจ้งเตือนถูกส่งไปยังหัวข้อ (Topic) ของบริษัทของผู้ใช้ที่ยืนยันตัวตนถูกต้องหรือไม่

ระบบป้องกันระยะปลอดภัย: ระบบเตือนภัยพิพิธภัณฑ์

ป้าย "ห้ามจับ" มันใช้ไม่ได้หรอกน้อง ต่อให้ติดไว้ คนก็ยังอยากจับของโบราณอยู่ดี! เราต้องสร้าง "เขตหวงห้าม" ที่มองไม่เห็นแต่ดุเหมือนเสือดาว! โปรเจค Museum Alert นี้คือการสร้างรั้วเรดาร์ด้วยเสียงขึ้นมาจริงๆ นั่นเอง โดยเราจะซ่อนเซ็นเซอร์วัดระยะอัลตราโซนิคความเร็วสูงไว้ใต้แท่นโชว์ Arduino ของเราจะยิงคลื่นเสียงออกไปเป็นระยะๆ เพื่อสำรวจพื้นที่ (เหมือนเรดาร์เลย) ถ้ามีมือมนุษย์บุกเข้ามาในระยะ 30 เซนติเมตรที่เราตั้งไว้ Arduino จะตรวจจับการเปลี่ยนแปลงและสั่งเปิดไซเรนเสียงดังฉิบหายทันที!

วิธีโปรแกรม SR04 ให้เป็นเรดาร์เสียง

HC-SR04 มันไม่ใช่เซ็นเซอร์ธรรมดาที่อ่านค่าได้เลยนะน้อง มันต้องถูก "บังคับ" ด้วยสัญญาณแม่นยำระดับไมโครวินาที!

  1. ขา Trigger ต้องถูกสั่งให้เป็น HIGH เป็นเวลา 10 ไมโครวินาทีพอดี เพื่อบังคับให้เซ็นเซอร์ยิงพัลส์เสียงความถี่ 40KHz ออกไป!
  2. Arduino จะต้องหยุดทุกอย่างชั่วคราว แล้วใช้ฟังก์ชัน pulseIn() รอฟังสัญญาณที่สะท้อนกลับมาทาง ขา Echo
  3. ความเร็วเสียงคือ 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 นี่แหละ

สรุปง่ายๆ: ต้องวางแผนดีๆ ไม่งั้นงานอาจจะช็อตได้นะตัวนี้! สู้งานนะน้อง

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x AWS API Gateway"
  - "1x AWS Lambda"
  - "1x AWS IoT"
author: "humana_fragilitas"
category: "Sensors & Environment"
components:
  - "1x Bread board"
  - "4x male/female jumper wires"
  - "3x 5 mm LED: Green"
  - "6x male/male jumper wires"
  - "1x Push Button Switch"
  - "1x 5 mm LED: Red"
  - "1x HC-SR04 Ultrasonic Sensor"
  - "1x Arduino® Nano ESP32"
  - "4x Resistor 220 Ohm ¼ w"
description: "มาทำระบบแจ้งเตือนและให้ข้อมูลในพิพิธภัณฑ์แบบ 2-in-1 กัน! ใช้เซนเซอร์ตรวจจับความใกล้ชิดกับวัตถุจัดแสดง พอมีคนเข้าใกล้ก็ส่งเสียงหรือเปิดไฟเตือนแบบเทพๆ หรือจะเปลี่ยนโหมดเป็นให้ข้อมูลผ่านลำโพงก็จัดไปได้หมด ใช้ Arduino ควบคุม อินเตอร์รัพต์ตอบสนองไว งานนี้ทั้งตึงทั้งเวิร์คสำหรับน้องๆ วัยรุ่นสายช่างแน่นอน!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://github.com/humana-fragilitas/museum-alert-api/"
  - "https://github.com/humana-fragilitas/museum-alert"
  - "https://github.com/humana-fragilitas/museum-alert-sketch/"
  - "https://github.com/humana-fragilitas/museum-alert-desktop/"
encryptedPayload: "U2FsdGVkX18CiKSlWv5mXw+qqBcvEunGyAyB3TQhtMfq6+2fckDz+pQm4o5N0dgT6Eftcuk0Lk67iC4cCj+VTzwz37pCjQvEez4zL/R2FWSnQH9+FjPlKw/74ll7LBk6YKzycfzLHAMqHFHCnQNbWw=="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/museum-alert-1efeda_cover.jpg"
lang: "en"
likes: 0
passwordHash: "72eca13cb5edc45d3cb0dc3fe3711a5a9c951cd579e9562b2af8717c3f12ab78"
price: 1499
seoDescription: "Proof-of-concept for a dual-purpose Museum alert and information system using Arduino and Sensor modules for security."
tags:
  - "Security"
  - "Internet Of Things"
title: "โปรเจค Museum Alert: งานง่ายแต่หล่อ ปลุกพิพิธภัณฑ์ให้ตื่น!"
tools: []
videoLinks:
  - "https://www.youtube.com/watch?v=2JDBWRLDWfI"
views: 367