2. ภาพรวมระบบ
คอมพิวเตอร์ Arduino รีโมท และ Flight Controller ต่อกันอย่างไร
ก่อนเขียนโค้ดบรรทัดแรก ต้องรู้ก่อนว่าโค้ดของเราไปอยู่ตรงไหน และคำสั่งเดินทางยังไงกว่าจะถึงมอเตอร์ เรื่องนี้ตอบคำถามเรื่อง "ทำไมต้องมี Arduino" และ "ทำไมโดรนไม่ทำตามทันที"
1. ห้าชิ้นส่วน

1. คอมพิวเตอร์ เป็นที่เขียนโค้ดด้วย Arduino IDE แล้วอัปโหลดผ่านสาย USB Type-C ไปลง Arduino บนโดรน เสร็จแล้วถอดสายได้ โค้ดอยู่ในบอร์ดต่อไปแม้ปิดเครื่อง
2. Arduino (บนโดรน) เก็บโค้ดภารกิจของเรา เช่น "ไปข้างหน้า 250 ซม. แล้วปล่อยลูกบอล" มันไม่ได้ควบคุมมอเตอร์ตรงๆ แค่เขียนคำสั่งลงกล่องข้อความขนาด 6 ไบต์
3. Flight Controller (FC) ตัวกลางลำที่ติดเซ็นเซอร์ มาอ่านกล่องข้อความจาก Arduino ผ่านสาย I2C แล้วแปลงเป็นรอบมอเตอร์ ทรงตัวตลอดเวลา และส่งค่าความสูงกลับไปให้ Arduino
4. ESC + มอเตอร์ 4 ตัว ESC เป็นวงจรที่รับสัญญาณจาก FC แล้วจ่ายกำลังให้มอเตอร์ตามจังหวะที่ต้องการ
5. รีโมท ส่งคลื่น 2.4 GHz ไปหา FC ใช้บังคับเองหรือกดปุ่มเพื่อสั่งให้ Arduino เริ่มภารกิจ (KEY1–KEY14) ระยะสัญญาณสูงสุด 100 เมตร
2. คำสั่ง 1 บรรทัดเดินทางยังไง
เมื่อโค้ดเรียก drone.takeOff() จะเกิดสิ่งนี้ตามลำดับ
takeOff()เขียนเลขคำสั่งลงในอาร์เรย์ 6 ไบต์ในหน่วยความจำของ Arduino (m_i2cData) และบวกตัวนับ "คำสั่งใหม่" ขึ้นหนึ่ง- FC ทักมาที่ Arduino ทาง I2C เป็นระยะ อ่านอาร์เรย์นั้นไป เห็นตัวนับเปลี่ยนจึงรู้ว่ามีคำสั่งใหม่
- FC สั่งมอเตอร์ให้ขึ้นบิน โดยทรงตัวเองตลอดทาง
- โค้ดบรรทัดถัดไปของเรารันต่อทันที โดยไม่รอให้ขึ้นบินเสร็จ
ข้อ 4 คือเหตุผลที่โค้ดของชมรมต้องใส่ delay() เพื่อรอ หรือคำสั่งสั้นๆ จะซ้อนกันจนโดรนทำไม่ทัน อ่านรายละเอียดไบต์ต่อไบต์ได้ที่ แพ็กเก็ต I2C (บทขั้นสูง)
3. ทำไมโดรนไม่รู้ว่าไปถึงหรือยัง
คำสั่งอย่าง fw(250) ไม่ได้บอกว่า "ไปให้ถึง 250 ซม." แต่ทำงานเป็น "บินไปข้างหน้า แล้วนับเวลา ครบเวลาแล้วหยุด" (ระยะ = ความเร็ว × เวลา) โดรนไม่มีเซ็นเซอร์วัดว่าไกลแค่ไหนแล้ว นี่เป็นเหตุผลที่ต้องวัดค่าเวลาต่อเซนติเมตรเอง และเหตุผลที่ระยะคลาดสะสม อ่านต่อใน Dead reckoning
4. เซ็นเซอร์ที่ FC ใช้
| เซ็นเซอร์ | ใช้ทำอะไร |
|---|---|
| ไจโร / มาตรความเร่ง (IMU) | รู้ว่าเอียงเท่าไร หมุนเร็วแค่ไหน |
| LiDAR ใต้ท้อง | วัดระยะจากพื้น (ใช้ได้ถึง 8 เมตร) |
| บารอมิเตอร์ | วัดความสูงจากความกดอากาศ (ถึง 50 เมตร) |
| กล้อง Optical flow | ดูลายพื้นเพื่อรู้ว่าโดรนไถลไปทางไหน |
รายละเอียดอยู่ที่ เซ็นเซอร์