เป้าหมายของโปรเจคนี้คือ การเฝ้าสังเกตการดื่มน้ำของสัตว์เลี้ยง ส่งการแจ้งเตือนเมื่อสัตว์เลี้ยงดื่มน้ำไม่เพียงพอ และเติมน้ำลงในชามอัตโนมัติเมื่อน้ำใกล้หมด ผู้ดูแลยังสามารถสั่งเติมน้ำจากแดชบอร์ดได้ด้วย ระบบตรวจจับสถานะการดื่มน้ำโดยใช้เซ็นเซอร์ตรวจจับการเคลื่อนไหว (Motion Sensor) เพื่อดูว่าสัตว์เลี้ยงกำลังดื่มน้ำหรือไม่ และใช้เซ็นเซอร์อัลตราโซนิก (Ultrasonic Sensor) วัดระดับน้ำก่อนและหลังดื่ม เมื่อตรวจจับการเคลื่อนไหวของการดื่มได้ เซ็นเซอร์อัลตราโซนิกจะหยุดทำงานจนกว่าจะดื่มเสร็จ
ข้อมูลการดื่มน้ำจะถูกส่งไปยัง ThingsBoard ผ่าน MQTT ซึ่งรวมถึงปริมาณน้ำที่ดื่มในแต่ละครั้ง ปริมาณรวมที่ดื่มในวันนั้น และจำนวนครั้งที่ดื่มในวันนั้น ทุกๆ 24 ชั่วโมง ระบบจะส่งปริมาณการดื่มน้ำรวมรายวันไปยัง ThingsBoard ผ่าน MQTT หากปริมาณต่ำกว่าเกณฑ์ที่ตั้งไว้ (แปลว่าสัตว์เลี้ยงดื่มน้ำน้อยเกินไป) ระบบจะส่งอีเมลแจ้งเตือนไปยังผู้ดูแล จากนั้นข้อมูลที่เก็บรวบรวมไว้สามารถนำไปวิเคราะห์ด้วยอัลกอริทึม Machine Learning เพื่อตรวจจับพฤติกรรมการดื่มน้ำที่ผิดปกติในรูปแบบที่ซับซ้อนขึ้น และบ่งชี้ถึงสถานะสุขภาพของสัตว์เลี้ยงได้
เราใช้ เซอร์โวมอเตอร์ (Servo Motor) ควบคุมตัวจ่ายน้ำเพื่อเติมน้ำอัตโนมัติ และยังสามารถควบคุมเซอร์โวมอเตอร์ผ่านแดชบอร์ดได้ด้วย รับรองว่าน้องหมาหรือน้องแมวของคุณจะไม่ขาดน้ำแน่นอน!
โปรเจคนี้ใช้ Arduino Cloud และ ThingsBoard โดย Arduino Cloud ใช้เป็น IDE สำหรับเขียนและอัปโหลดโค้ดไปยังบอร์ด MKR1000 ส่วน ThingsBoard ใช้สำหรับเก็บข้อมูล (Data Collection), ควบคุมอุปกรณ์ (Actuator Control) และส่งการแจ้งเตือนไปยังผู้ใช้
สำหรับการสื่อสารผ่าน MQTT ระหว่าง MKR1000 กับ ThingsBoard เราต้องกำหนดค่า Broker, Port, Topics และ Username ให้เรียบร้อยก่อน เพื่อส่งข้อมูลไปแสดงบนแดชบอร์ด เราจะสร้างกราฟหลายๆ แบบสำหรับแสดงภาพและเก็บข้อมูลที่รวบรวมมา และเพื่อควบคุมอุปกรณ์ (Actuator) เราจะสร้างวิดเจ็ตประเภท RPC ใน ThingsBoard
นอกจากเก็บข้อมูลและควบคุมอุปกรณ์แล้ว เรายังใช้ ThingsBoard ตั้งค่าการแจ้งเตือนผ่านอีเมลไปยังผู้ใช้เมื่อสัตว์เลี้ยงดื่มน้ำไม่เพียงพออีกด้วย
Hydration Monitoring
ชามน้ำอัจฉริยะตัวนี้จะคอยดูแลให้สัตว์เลี้ยงของคุณมีน้ำสะอาดดื่มตลอดเวลา พร้อมทั้งติดตามสุขภาพผ่านข้อมูลการดื่มน้ำ
- การวัดระดับน้ำ: ใช้ เซ็นเซอร์วัดระดับน้ำแบบไม่สัมผัส (Non-contact Water Level Sensor) หรือ เซ็นเซอร์อัลตราโซนิก HC-SR04 เพื่อตรวจสอบความลึกของน้ำ เมื่อระดับน้ำต่ำกว่าเกณฑ์ที่กำหนด Arduino จะสั่งให้ ปั๊มเพอริสตัลติก (Peristaltic Pump) ทำงานเพื่อเติมน้ำจากถังเก็บลงในชาม
- การชั่งน้ำหนัก: สำหรับการติดตามปริมาณการดื่มที่แม่นยำ เราใช้ โหลดเซลล์ (Load Cell) รุ่น HX711 วางรองรับชามน้ำไว้ โดยระบบจะคำนวณปริมาตรน้ำที่ดื่มไปได้อย่างแม่นยำจากการวัดน้ำหนักก่อนและหลังสัตว์เลี้ยงดื่มน้ำ
IoT & Cloud Reporting
- การเชื่อมต่อกับ ThingsBoard: ข้อมูลจะถูกส่งผ่าน WiFi (โดยใช้ ESP8266 หรือ ESP32) ไปยังแพลตฟอร์ม ThingsBoard
- การวิเคราะห์ข้อมูล: เจ้าของสามารถดูกราฟแสดงปริมาณการดื่มน้ำของสัตว์เลี้ยงในแต่ละวันหรือแต่ละสัปดาห์ได้ และสามารถตั้งการแจ้งเตือนอัตโนมัติไปยังโทรศัพท์ของเจ้าของได้ หากตรวจพบว่าปริมาณการดื่มน้ำลดลงอย่างรวดเร็ว ซึ่งอาจบ่งบอกถึงปัญหาสุขภาพได้
แผนภาพการทำงานของโค้ดแสดงดังด้านล่าง

วิดีโอด้านล่างแสดงการทำงานของอุปกรณ์ในการตรวจจับการดื่มน้ำ คำนวณปริมาณการดื่ม และเติมน้ำลงในชามอัตโนมัติ
*การทำงานทั่วไปของเครื่องจ่ายน้ำอัตโนมัติ*ด้านล่างนี้คือแดชบอร์ด ThingsBoard ที่ใช้เก็บและแสดงข้อมูลจากเครื่องจ่ายน้ำอัตโนมัติ ปุ่มสีน้ำเงินใช้สำหรับเปิด-ปิดปั๊มน้ำเพื่อเติมน้ำลงในชามด้วยตนเอง แกนวัดทั้งสามแสดงปริมาณการดื่มรวม จำนวนครั้งที่ดื่ม และจำนวนครั้งที่เติมน้ำในวันนั้น กราฟถัดไปประกอบด้วยการแจ้งเตือน (Alarms), ข้อมูลการดื่มน้ำ, ข้อมูลระยะห่างของน้ำ, การดื่มน้ำรายวัน และตารางแสดงข้อมูลแบบเรียลไทม์ที่ส่งมาจากบอร์ด Arduino

คลิปนี้จะเห็นว่าข้อมูลการดื่มน้ำถูกคำนวณและส่งผ่าน MQTT ไปแสดงผลบนแดชบอร์ด ThingsBoard เรียบร้อย
*ข้อมูลการดื่มน้ำถูกส่งไปยังแดชบอร์ด ThingsBoard*มาดูข้อมูลบนแดชบอร์ดแบบละเอียดกันดีกว่า เราเก็บข้อมูลกราฟระยะทางและปริมาณการดื่มมาเกือบสองวันเต็ม ในกราฟระยะทาง (รูปด้านล่าง) ยิ่งระยะทางมากแปลว่าชามน้ำว่างมากขึ้น จะเห็นว่ามันถูกเติมอัตโนมัติก่อนเที่ยงวัน ระดับน้ำก็ค่อยๆ ลดลงตลอดวันตามที่เจ้าน้องดื่มน้ำไป ตอนประมาณ 5 ทุ่มเราเติมน้ำเองก่อนนอน ระดับน้ำก็คงที่ตลอดคืน แล้วก็เริ่มลดลงอีกตอนเช้าตามที่เจ้าน้องดื่ม

ส่วนกราฟด้านล่างนี้คือข้อมูลการดื่มน้ำจริงๆ แต่ละแท่งสีฟ้าแสดงปริมาณน้ำที่เจ้าน้องดื่มในเวลานั้นๆ แท่งแรกนี่ตอนทดสอบ เราเทน้ำออกเองเลย

นอกจากดูข้อมูลแล้ว เรายังใช้ ThingsBoard ควบคุมปั๊มน้ำแบบ Manual ได้ด้วย ตามดูในคลิปนี้เลย
*เติมน้ำชามจากระยะไกล*เราตั้ง Alarm ไว้ด้วย ถ้าปริมาณการดื่มน้ำรายวันต่ำกว่า 500mL จะส่งอีเมลแจ้งเตือน (ค่า dailyconsumption จะถูกส่งทุก 24 ชั่วโมง) ตอนทดสอบจริง 24 ชั่วโมง ค่าที่ได้ไม่ต่ำกว่าเกณฑ์ เราก็เลยใช้ MQTTBox ส่งค่าปริมาณน้ำรายวันที่ต่ำกว่าเกณฑ์เข้าไปทดสอบระบบแทน

ThingsBoard ก็รับค่ามาได้ตามนี้:

Alarm ก็อัพเดทขึ้นแดชบอร์ด:

สุดท้าย คนเลี้ยงก็ได้รับอีเมลแจ้งเตือนปริมาณน้ำรายวันที่ต่ำกว่าเกณฑ์เรียบร้อย
สำหรับน้องๆ ที่สนใจอยากลองทำบ้าง เอกสารเหล่านี้มีประโยชน์มากตอนทำโปรเจคนี้:
Getting Started with ThingsBoard: https://thingsboard.io/docs/getting-started-guides/helloworld/
Setup ThingsBoard RPC widget: https://thingsboard.io/docs/user-guide/ui/widget-library/#rpc-control-widget
Sending Notifications: https://thingsboard.io/docs/user-guide/rule-engine-2-0/tutorials/send-email/