โปรเจกต์ Fall detection โดยใช้ Phone และ Arduino Cloud
ใช้ข้อมูลจาก Sensors ของ Phone และ Arduino Cloud เพื่อทำ Fall detection
ใช้ข้อมูลจาก Sensors ของ Phone และ Arduino Cloud เพื่อทำ Fall detection
Project Supporter Team
โพสต์โดย
ในโปรเจกต์นี้ ผมจะแสดงให้เห็นถึงความง่ายในการสร้างโปรเจกต์ IoT โดยใช้โทรศัพท์มือถือของคุณเป็นอุปกรณ์เพิ่มเติมสำหรับส่งข้อมูลผ่าน Arduino Cloud เป้าหมายคือการสาธิตแนวคิดนี้ด้วยการสร้างตัวอย่างระบบตรวจจับการล้ม (fall detection system) ที่ใช้โทรศัพท์ของคุณ
ด้วยการสตรีมข้อมูลจากโทรศัพท์ของเราไปยัง Arduino Cloud โดยใช้ฟีเจอร์ "Phone as Device" ในโหมด background ทำให้เราสามารถตรวจสอบการเร่งความเร็วที่เกิดขึ้นอย่างกะทันหันของโทรศัพท์ได้ Arduino Nano RP2040 Connect จะรับข้อมูลจาก Accelerometer ของโทรศัพท์แบบ real time และหากตรวจพบความเร่งที่เกินเกณฑ์ (threshold) ที่กำหนดไว้ จะเกิดการทริกเกอร์เหตุการณ์และ LED บนบอร์ดจะสว่างขึ้นเพื่อแจ้งเตือนคนรอบข้าง
เพื่อให้ง่ายต่อการมอนิเตอร์ระบบ ผมได้สร้าง Dashboard ที่แสดงสถานะปัจจุบันของระบบ Dashboard นี้ประกอบด้วยข้อมูลเกี่ยวกับเหตุการณ์การล้ม รวมถึง timestamp และตำแหน่ง GPS ด้วยวิธีนี้ คุณสามารถติดตามเหตุการณ์ต่างๆ และดำเนินการหากจำเป็นได้อย่างง่ายดาย
ระบบนี้ถูกออกแบบมาให้ใช้งานและติดตั้งได้ง่าย สิ่งที่คุณต้องทำมีเพียงแค่เปิดใช้งานฟีเจอร์ "Phone as Device" บนโทรศัพท์มือถือของคุณ และโปรแกรม Arduino Nano RP2040 Connect ด้วย Sketch ที่ให้ไว้ในตัวอย่างนี้ โทรศัพท์จะส่งข้อมูลไปยัง Arduino Cloud โดยอัตโนมัติ และ Nano จะเริ่มตรวจสอบการล้มโดยอัตโนมัติ พร้อมทั้งอัปเดตสถานะให้คุณทราบผ่าน Dashboard
ในตอนท้าย ผมจะแสดงวิธีสร้าง Trigger เพื่อรับการแจ้งเตือนเมื่อตรวจพบการล้ม
การติดตั้งนั้นง่ายมาก
รายการแรกคือโทรศัพท์มือถือที่รัน App Arduino IoT Remote พร้อมเปิดใช้งานฟีเจอร์ “Phone as Device” ในโหมด background ซึ่งจะส่งข้อมูลจาก Sensor ต่างๆ ไปยัง Arduino Cloud เช่น ตำแหน่ง GPS และความเร่ง (acceleration)
ส่วนประกอบที่สองคือ Arduino Nano RP2040 Connect เราจะกำหนดค่าการซิงโครไนซ์ตัวแปร GPS และ acceleration ระหว่างโทรศัพท์และ Nano โดย Sketch ที่รันบน Nano จะตรวจจับว่าความเร่งเกินเกณฑ์ที่กำหนดหรือไม่ และเปิดใช้งานเหตุการณ์เพื่อระบุว่าการล้มเกิดขึ้นเมื่อใด ที่ไหน และรุนแรงเพียงใด
ทั้งหมดนี้จะถูกมอนิเตอร์และควบคุมโดย Dashboard บน Arduino IoT Cloud ซึ่งเราจะสามารถดูข้อมูลการล้มครั้งล่าสุดและข้อมูลย้อนหลังได้ นอกจากนี้ เรายังสามารถล้างสถานะการตรวจจับการล้มได้ด้วยปุ่มกด

ขั้นตอนนี้ตรงไปตรงมามาก:
1. กำหนดค่าโทรศัพท์ของคุณเป็นอุปกรณ์ Arduino IoT Cloud
2. กำหนดค่าอุปกรณ์ที่จะแสดงผลเมื่อมีการล้ม
3. สร้าง Dashboard
4. สร้าง Trigger เพื่อรับการแจ้งเตือน
5. การทดสอบ
การใช้งานโทรศัพท์เป็นอุปกรณ์แบบ background เป็นกระบวนการที่ง่าย อย่างไรก็ตาม ก่อนที่คุณจะเริ่ม ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง App เวอร์ชันล่าสุดบนอุปกรณ์ของคุณแล้ว เป็นที่น่าสังเกตว่า App นี้รองรับทั้งแพลตฟอร์ม Android และ iOS
1. เปิดใช้งานฟีเจอร์ “Phone as Device”
ในการดำเนินการต่อ ให้ไปที่ตัวเลือก "Phone as Device" บนแถบเมนูของ App จากนั้นทำตามคำแนะนำเพื่ออนุญาตให้ App เข้าถึง Sensor ของโทรศัพท์คุณ
2. เปิดใช้งานโหมด background
เมื่อคุณทำขั้นตอนก่อนหน้าเสร็จแล้ว คุณจะได้รับข้อความแจ้งให้เปิดใช้งานฟีเจอร์ "Background mode" คุณสามารถเปิดใช้งานได้ทันทีหรือทำด้วยตนเองในภายหลัง คุณยังสามารถเลือกวิธีที่อุปกรณ์จะสตรีมข้อมูลไปยัง IoT Cloud ได้:
คุณสามารถอ่านคู่มือฉบับเต็มได้ที่นี่: https://docs.arduino.cc/arduino-cloud/tutorials/iot-remote-phone-sensors
Nano RP2040 Connect เป็นอุปกรณ์ที่ใช้รัน Logic และเป็นที่ตั้งของ LED แจ้งเตือน (เราจะใช้ LED แบบ builtin)
คุณเพียงแค่ทำตามขั้นตอนดังนี้:
1. สร้าง Device
เชื่อมต่อบอร์ด Nano RP2040 Connect เข้ากับ PC โดยใช้สาย USB ไปที่ส่วน Devices ของ Arduino IoT Cloud ( https://create.arduino.cc/iot/devices ) และคลิกที่ ADD
ทำตามคำแนะนำใน Wizard แล้วอุปกรณ์ของคุณจะถูกตรวจพบ กำหนดค่าเพื่อใช้งานกับ Arduino Cloud และถูกเพิ่มเข้าไปในรายการอุปกรณ์
2. สร้าง Thing
ไปที่ส่วน Things ของ Arduino IoT Cloud ( https://create.arduino.cc/iot/things ) และคลิกที่ CREATE ตั้งชื่อให้เรียบร้อยแล้ว Thing ของคุณจะถูกสร้างขึ้น
3. สร้าง Variables
เพิ่มตัวแปรโดยคลิกที่ปุ่ม ADD
เมื่อคุณสร้างตัวแปร ‘accel’ และ ‘gps’ คุณต้องเปิดใช้งานการซิงโครไนซ์กับตัวแปรของโทรศัพท์ ‘Accelerometer_Linear’ และ ‘Gps’:
ตัวแปรโทรศัพท์: Accelerometer_Linear
ตัวแปร Nano: accel
ตัวแปรโทรศัพท์: Gps
ตัวแปร Nano: gps
ใน tutorial นี้คุณจะพบคำอธิบายฉบับเต็มของกระบวนการสร้างตัวแปรและการซิงโครไนซ์แบบ Thing-to-thing
เมื่อสิ้นสุดกระบวนการ รายการตัวแปรของคุณควรเป็นดังนี้

4. เชื่อมโยง Thing กับ Device ของคุณ
ไปที่ส่วน Associated Device และคลิกที่ “Select Device” เลือก Nano RP2040 Connect ของคุณจากรายการ

5. กำหนดค่าเครือข่าย
ไปที่ส่วน Network และคลิกที่ “Change” ตั้งค่าข้อมูลการเข้าถึง WIFI ของคุณ
6. แก้ไข Sketch
วาง Sketch ลงในส่วนย่อย “Sketch” ของส่วน Thing คุณสามารถหา Sketch ได้ที่ส่วน Code ในตอนท้ายของโปรเจกต์
ไปที่ส่วน Dashboards และคลิกที่ CREATE ตั้งชื่อและเริ่มเพิ่ม Widget ตามตารางต่อไปนี้:
| Widget type | Widget name | Variable name |
|-------------|--------------------------|---------------------|
| Status | Fall detected | fall |
| Push button | Clear Fall det | fall_clear |
| Stepper | Acceleration threshold | threshold |
| Messenger | Messenger | message |
| Gauge | Last fall intensity | fall_intensity |
| Map | Last fall location | gps |
| Value | Last Fall detection time | fall_detection_time |
| Chart | Fall Intensity History | fall_intensity |
ผลลัพธ์สุดท้ายจะเป็นดังนี้:

ขั้นตอนนี้ตรงไปตรงมามาก:

ลองนำทั้งหมดนี้มาใช้งานจริง!
ก่อนอื่น ให้กำหนดค่าเกณฑ์ (threshold) ซึ่งความไวต่อความเร่งจะขึ้นอยู่กับระดับนี้
หากคุณเริ่มเขย่าโทรศัพท์ เมื่อความเร่งเกินเกณฑ์ที่กำหนด คุณจะเห็นว่า:
หากคุณต้องการปิด LED บนบอร์ดและสถานะ Widget บน Dashboard คุณเพียงแค่กดปุ่ม “Clear Fall Det”
การประยุกต์ใช้งานนั้นไร้ขีดจำกัด
แทนที่จะเปิดไฟ LED บน Nano ระบบอาจถูกออกแบบให้มีหน้าจอ LCD หรือการแจ้งเตือนด้วยเสียง
แต่คุณยังสามารถใช้ข้อมูลจาก Sensor ของโทรศัพท์ในโปรเจกต์ของคุณได้อีกด้วย ลองจินตนาการถึงความเป็นไปได้ไม่รู้จบจากการใช้ข้อมูลดังกล่าว ตัวอย่างเช่น คุณสามารถใช้ขอบเขตทางภูมิศาสตร์เสมือน (Geofencing) เพื่อเริ่มการทำงานตามตำแหน่งของคุณ คุณยังสามารถทำระบบอัตโนมัติในบ้าน เช่น ปิดไฟเมื่อคุณออกจากบ้านและเปิดไฟเมื่อคุณกลับมา ล็อกประตู และปรับระบบควบคุมอุณหภูมิในบ้าน นอกจากนี้ คุณยังสามารถติดตามคนที่คุณรักด้วย Geofencing และรับการแจ้งเตือนทันทีหากพวกเขาออกจากพื้นที่ที่กำหนด Accelerometer ในโทรศัพท์ของคุณยังสามารถใช้ตรวจจับอุบัติเหตุหรือการล้ม และคุณยังสามารถใช้โทรศัพท์เป็นรีโมทคอนโทรลสำหรับเกมหรือหุ่นยนต์ได้อีกด้วย
จินตนาการของคุณเท่านั้นที่เป็นขอบเขตของสิ่งที่คุณสามารถทำได้ด้วยฟีเจอร์ใหม่นี้
เรียนรู้เพิ่มเติม
หากคุณต้องการเรียนรู้เพิ่มเติม โปรดดูเอกสาร (documentation) อย่างเป็นทางการของ Arduino ซึ่งคุณจะพบกับคู่มือการเริ่มต้นใช้งาน Tutorial และตัวอย่างที่เป็นประโยชน์มากมาย
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้