พื้นหลัง
เพื่อนผมที่ทำฟาร์มเพาะพันธุ์ม้า เค้ามาขอให้ช่วยหาวิธีเตือนเวลาม้าตัวเมียของเค้าจะคลอดลูกน่ะ เราหาอุปกรณ์สำเร็จรูปในตลาดแล้ว ไม่เจออะไรที่เหมาะจะให้เค้าไปทำกิจกรรมอื่นได้สบายใจ แล้วยังเตือนได้ทุกเวลา โดยเฉพาะตอนไม่อยู่ฟาร์ม
ข้อกำหนดที่ต้องมี
1. อุปกรณ์ต้องส่งการแจ้งเตือนไปที่มือถือได้ ทั้งผ่าน SMS, อีเมล...
2. อุปกรณ์ต้องเข้าถึงเครือข่ายได้ตลอดเวลา
3. อุปกรณ์ต้องกันฝุ่นและความชื้นได้
4. อุปกรณ์ต้องทนต่อการกระแทก
5. อุปกรณ์ต้องสามารถติดตามการตั้งท้องได้อย่างน้อย 3 สัปดาห์
วิธีที่เราจัดการกับข้อกำหนดต่างๆ
1. อุปกรณ์ต้องส่งการแจ้งเตือนไปที่มือถือได้ ทั้งผ่าน SMS, อีเมล...
เวลาจะคลอดลูก ม้าตัวเมียจะนอนตะแคงข้าง กลยุทธ์ที่เราใช้คือตรวจจับการเปลี่ยนแปลงมุมนี่แหละเพื่อส่งสัญญาณเตือน
ช่วงมุมที่เราต้องการตรวจจับคือ 45 ถึง 90 องศา ตัดสินใจใช้เซ็นเซอร์วัดการเอียงแบบลูกบอล (ball tilt sensors) สองตัว ซึ่งช่วยลดการกินพลังงานของระบบด้วย
ตอนนี้ไม่ใช่ฤดูคลอด เลยต้องจำลองสถานการณ์ขึ้นมา
สัญญาณเตือนแรกจะถูกส่งถ้าม้านอนตะแคงติดกันอย่างน้อย 30 วินาที จากนั้นจะส่งเตือนอีกสองครั้ง ห่างกันหนึ่งนาทีและสองนาที เพื่อให้มั่นใจว่าเจ้าของฟาร์มเห็นข้อความแล้ว ตั้งเวลา 30 วิไว้เพื่อหลีกเลี่ยงการเตือนผิดพลาดจากท่าทางอื่นๆ ของม้า
Arduino MKRFox 1200 จะส่งข้อความ "HORSE" ไปที่ Sigfox backend
ผมสร้าง Callback ไปที่แพลตฟอร์ม Twilio เพื่อให้มันส่ง SMS ไปหาเจ้าของฟาร์ม
ฟานฟาน (ม้า) ไม่ค่อยให้ความร่วมมือเท่าไหร่ ดูวิธีทำงานจริงๆ กันเลยดีกว่า
2. อุปกรณ์ต้องเข้าถึงเครือข่ายได้ตลอดเวลา
สำหรับโปรเจคนี้ คอกม้าอยู่ห่างจากเสาสัญญาณ GSM ตัวที่ใกล้ที่สุด 6 กิโลเมตร สัญญาณจึงแย่มากถ้าจะใช้ Arduino กับการ์ด GSM แบบพกพา เพื่อแก้ปัญหานี้ เราจึงไปเช็คความครอบคลุมของ Sigfox แทน ภาพด้านล่างแสดงให้เห็นว่าสัญญาณ Sigfox ที่ใช้สถานี 3 แห่งนั้นใช้การได้ดีเลย


3. อุปกรณ์ต้องกันฝุ่นและความชื้นได้
ม้าอาจจะอยู่ข้างนอกได้ ดังนั้นวัสดุสำหรับทำตัวเรือน (housing) อุปกรณ์จึงถูกเลือกมาให้ทนต่อสภาพแวดล้อมกลางแจ้ง
4. อุปกรณ์ต้องทนต่อการกระแทก
เราเลือกวัสดุทำตัวเรือนให้มีความทนทานสูง อย่างไรก็ตาม ม้าเป็นสัตว์ที่มีพลังมาก และเราไม่สามารถรับประกันได้ว่าตัวเรือนจะทนต่อการถูกขย้ำทุกกรณี เพื่อหลีกเลี่ยงความเสี่ยงเรื่องแบตเตอรี่ลุกไหม้หากถูกกระแทก เราจึงตัดสินใจห้ามใช้แบตเตอรี่ Li-ion หรือ LiPo ไปเลย
เราไม่ใช้เซ็นเซอร์ลูกบอลปรอทนะน้อง เดี๋ยวแตกแล้วม้าจะเป็นอันตราย
5. อุปกรณ์ต้องสามารถติดตามการตั้งท้องได้อย่างน้อย 3 สัปดาห์
คนเลี้ยงจะรู้วันคลอดคร่าวๆ อยู่แล้ว การติดตาม 3 สัปดาห์สุดท้ายก่อนคลอดนี่แหละสำคัญ Arduino MKR Fox 1200 ตัวนี้กินไฟแค่ 650μAh ตอนสแตนด์บาย ใช้แบตเตอรี่ AAA 1250mAh สองก้อน ก็จะอยู่ได้ตั้ง 80 วันเลยทีเดียว งานนี้ชิลล์
ลงลึกเทคนิค: Motion Vectors กับระบบ Low-Power Telemetry
โปรเจคนี้จะเผยให้เห็นเลเยอร์ที่ซ่อนอยู่เบื้องหลังการทำงานง่ายๆ ตั้งแต่เซ็นเซอร์ไปจนถึงคลาวด์:
- เลเยอร์ตรวจจับ (Identification layer): เซ็นเซอร์จับการเอียง (Tilt Sensors) ทำหน้าที่เป็นตัวจุดชนวนหลัก ตรวจจับการเปลี่ยนท่าทางของม้าเพื่อประสานงานส่งสัญญาณเตือน
- เลเยอร์แปลงสัญญาณ (Conversion layer): ระบบใช้พินอินพุตดิจิทัลรับการเปลี่ยนแปลงสถานะจากเซ็นเซอร์ เพื่อประสานงานงานสำคัญๆ ในการตรวจจับ
- เลเยอร์เชื่อมต่อคลาวด์ (Cloud Interface layer): Sigfox Backend ทำหน้าที่เป็นแดชบอร์ดสำหรับดูสถานะของอุปกรณ์ (เช่น จำนวนข้อความที่ส่ง, ความแรงสัญญาณ)
- ตรรกะการประมวลผล (Processing Logic): โค้ด Arduino ใช้กลยุทธ์ "threshold-dispatch" คือมันจะตีความสถานะเซ็นเซอร์ที่เปลี่ยนไปตามเวลา แล้วจับคู่กับสถานะเตือนต่างๆ เพื่อให้การติดตามปศุสัตว์เป็นไปอย่างปลอดภัยและมีจังหวะ
- ลูปการสื่อสาร (Communication Dialogue Loop): สถานะบิตต่างๆ จะถูกส่งเป็นจังหวะไปที่ Serial Monitor ตอนเริ่มต้นปรับเทียบระบบ เพื่อประสานสถานะของระบบ
โครงสร้างพื้นฐานฮาร์ดแวร์-ม้า (Hardware-Equine Infrastructure)
- Arduino MKR Fox 1200: คือ "สมอง" ของโปรเจค จัดการการอ่านค่าจากเซ็นเซอร์หลายตัวและประสานการซิงค์ข้อมูลกับ Sigfox Cloud
- เซ็นเซอร์จับการเอียง (Tilt Sensors): ให้ "ลิงก์จุดชนวน" ที่ชัดเจนและน่าเชื่อถือสำหรับตรวจจับการล้มตัวลงนอนของม้า
- โมดูล Sigfox (แบบอินทิเกรต): ให้อินเทอร์เฟซทางกายภาพที่มีความจุสูงและน่าเชื่อถือสำหรับ "ภารกิจส่งสัญญาณเตือน" ระยะไกล
- แบตเตอรี่ AAA: สำคัญมากสำหรับการจ่ายไฟที่ชัดเจนและประหยัดพลังงานสำหรับการติดตามเคลื่อนที่แบบยาวๆ เลือกใช้แทน Li-Po เพื่อความปลอดภัยในงานนี้
- กล่องกันน้ำ (Weatherproof Enclosure): ให้อินเทอร์เฟซทางกายภาพที่ดูโปรและชัดเจนสำหรับงานภาคสนาม และปกป้องชิ้นส่วนภายในในสภาพแวดล้อมคอกม้า
- สาย Micro-USB: ใช้สำหรับโปรแกรม Arduino และเป็นอินเทอร์เฟซหลักสำหรับตัวควบคุมระบบ
การต่อบอร์ดและสาย


ขั้นตอนการทำงานอัตโนมัติและการโต้ตอบ
กระบวนการแจ้งเตือนการคลอดลูกม้าถูกออกแบบให้มีประสิทธิภาพสูง:
- เตรียมพื้นที่ทำงาน (Initialize Workspace): ตั้งค่าเซ็นเซอร์จับการเอียงในสายคอให้ถูกต้อง และต่อเข้ากับพินของ Arduino ตามแผนภาพการต่อสายด้านบนให้เรียบร้อย
- ตั้งค่าการซิงค์ความเร็วสูง (Setup High-Speed Sync): ในแดชบอร์ด Sigfox ให้เริ่มต้นใช้งานอุปกรณ์และกำหนดคุณสมบัติ callback เพื่อประสานการส่งข้อความเตือน
- ลูปการสื่อสารภายใน (Internal Dialogue Loop): อุปกรณ์จะตรวจสอบสถานะของเซ็นเซอร์อย่างต่อเนื่องตามเวลา และอัปเดตสถานะแบบเรียลไทม์ตามตรรกะการทำงานที่กำหนดไว้
- การผสานการตอบรับภาพและข้อมูล (Visual and Data Feedback Integration): คอยดู SMS เตือนบนมือถือคุณ ซึ่งทำหน้าที่เป็นสัญญาณสถานะที่ส่งมาเป็นจังหวะ สะท้อนกิจกรรมของแม่ม้าในคอก
Twilio
น้องต้องสร้างบัญชี Twilio ก่อนนะ
จากนั้นก็กรอกเบอร์โทรศัพท์ที่จะรับการแจ้งเตือนลงไป

Sigfoxbackend
สร้างบัญชี Sigfox ของคุณและเชื่อมโยงกับ Arduino MKRFox1200 ของคุณซะ

เลือกประเภทของอุปกรณ์

เลือก CALLBACKS, New, Custom callback
กรอกข้อมูลตามนี้เลย:
Type : DATA, UPLINK
Channel : URL
Url pattern : https://AccountSID:AuthToken@api.twilio.com/2010-04-01/Accounts/AccountSID/Messages.json
ค่า AccountSID กับ AuthToken เอามาจากบัญชี Twilio ของคุณนั่นแหละ
ไอเดียสำหรับอนาคต (ถ้าอยากอัพเกรด)
- OLED Identity Dashboard Integration: เอา OLED จอเล็กๆ ติดข้างๆ เพื่อแสดง "Battery %" หรือข้อความสถานะอื่นๆ ดูเท่ดี
- Multi-sensor Climate Sync Synchronization: เชื่อมต่อเซ็นเซอร์วัดอัตราการเต้นหัวใจแบบพิเศษ เพื่อติดตามสุขภาพแม่ม้าด้วยความแม่นยำสูงผ่านระบบคลาวด์
- Cloud Interface Registration Support Synchronization: สร้างเว็บแดชบอร์ดเฉพาะทางที่เข้าถึงผ่านมือถือได้ เพื่อติดตามและบันทึกประวัติการคลอดลูกม้าได้อย่างละเอียด
- Advanced Velocity Profile Customization Support: เพิ่มลอจิก Machine Learning เพื่อให้ระบบปรับค่า Trigger อัตโนมัติตามพฤติกรรมเฉพาะตัวของแม่ม้าแต่ละตัว
[!IMPORTANT] ฟังรุ่นพี่นะ! เพื่อให้ตรวจจับได้แม่นยำ อย่าลืมทำ static calibration ของค่า timing thresholds ในโค้ดด้วย และที่สำคัญ ต้องมี Fail-Safe flag ในลูปไว้เสมอ เผื่อแบตเตอรี่ต่ำจะได้ไม่พัง! ห้ามช็อตนะตัวนี้
ทีมงานผู้ช่วยเหลือ
ขอบคุณเจนนิเฟอร์, แฟนตาเซีย, โซอี้, เดลฟีน และเอเลน่า สำหรับความช่วยเหลือทั้งหมดครับพี่น้อง