สร้างโดรนควบคุมด้วยมือ
ภาพรวมโครงการ
"ESPcopter ควบคุมด้วยมือ" เป็นโปรเจกต์โดรนแบบโมดูลาร์ขั้นสูงที่ใช้ประโยชน์จาก ESP8266 WiFi SoC เพื่อสร้างแพลตฟอร์มการบินแบบอินเทอร์แอคทีฟที่ตั้งโปรแกรมได้ แตกต่างจากโดรนสำหรับผู้บริโภคทั่วไปที่เป็นแบบปิดซอร์ส ESPcopter ได้รับการออกแบบมาสำหรับนักพัฒนา ด้วยการเพิ่ม Multi-ranger Shield โดรนจะรับรู้สภาพแวดล้อมได้ 360 องศาผ่านเซ็นเซอร์เลเซอร์สี่ตัว โปรเจกต์นี้สาธิตวิธีการนำ "virtual bumper" หรือโหมด "hand-follow" มาใช้งาน ซึ่งช่วยให้นักบินสามารถผลักหรือบังคับโดรนได้ง่ายๆ เพียงแค่ขยับมือเข้าใกล้โดรน ในขณะที่คอมพิวเตอร์ออนบอร์ดจะจัดการกับตรรกะการบินที่ซับซ้อนในการรักษาสมดุลและหลีกเลี่ยงสิ่งกีดขวาง
ในปัจจุบัน เราได้เห็นโดรนจำนวนมากที่มีคุณสมบัติการหลีกเลี่ยงสิ่งกีดขวางและการควบคุมด้วยมือ ไม่ว่าจะเป็นโดรนของเล่นหรือโดรนสำหรับถ่ายวิดีโอ เบื้องหลังของผลิตภัณฑ์เหล่านี้มีอัลกอริทึมการเขียนโปรแกรมจำนวนมาก แต่เราไม่สามารถดูหรือแก้ไขอัลกอริทึมเหล่านี้ได้ ซึ่งแตกต่างจากตลาดโดรนทั่วไป ESP8266-Powered Mini Drone: **ESPcopter** สามารถตั้งโปรแกรมได้ด้วย **Arduino** และยังเป็นโดรนแบบโมดูลาร์อีกด้วย ผู้ใช้สามารถเพิ่มคุณสมบัติใหม่ๆ ได้โดยใช้ expansion shields
เจาะลึกทางเทคนิค
- VL53L0X Time-of-Flight (ToF) Sensors: Multi-ranger shield ใช้เซ็นเซอร์ VL53L0X สี่ตัว ซึ่งแตกต่างจากเซ็นเซอร์อินฟราเรดแบบดั้งเดิมที่ขึ้นอยู่กับความเข้มของสัญญาณ เซ็นเซอร์ ToF จะวัดเวลาบินจริงของพัลส์เลเซอร์ สิ่งนี้ให้ความแม่นยำระดับมิลลิเมตรที่แม่นยำไม่ว่าสีหรือการสะท้อนแสงของสิ่งกีดขวางจะเป็นอย่างไร (สูงสุด 1000 มม.) โค้ดใช้
tcaselect()เพื่อจัดการ I2C multiplexer ทำให้ ESP8266 สามารถอ่านค่าจากเซ็นเซอร์แต่ละตัวตามลำดับโดยไม่มีปัญหา address conflict - Sensor Fusion & Median Filtering: ข้อมูลเซ็นเซอร์ดิบจากโดรนมีสัญญาณรบกวนสูงมากเนื่องจากการสั่นสะเทือนของมอเตอร์และกระแสลม เฟิร์มแวร์ได้นำ Median Filter มาใช้โดยใช้อัลกอริทึม Bubble Sort โดยการเก็บตัวอย่าง 5 ค่าต่อเนื่องกันและเลือกค่ากลาง ระบบจะกำจัด "spikes" และ "outliers" ที่อาจทำให้เกิดการปรับการบินที่ผิดปกติได้อย่างมีประสิทธิภาพ
- Complementary Control Filter: หลังจากพบค่ามัธยฐานแล้ว จะมีการใช้ Complementary/Low-pass filter (
calSensor) คณิตศาสตร์นี้ช่วยให้มั่นใจว่าโดรนจะเคลื่อนที่ได้อย่างราบรื่นแทนที่จะกระตุก มันจะอัปเดตค่าDistanceปัจจุบันให้เข้าใกล้ค่าtargetอย่างค่อยเป็นค่อยไป โดยใช้ค่าคงที่alphaที่สามารถกำหนดค่าได้ เพื่อสร้างสมดุลระหว่างการตอบสนองและความเสถียร - Closed-Loop PID Integration: ค่าระยะทางที่ผ่านการปรับให้เรียบจะถูกป้อนเข้าสู่ลูปควบคุม PID (Proportional-Integral-Derivative) ของ ESPcopter โดยตรง ตัวอย่างเช่น หากเซ็นเซอร์ด้านขวาตรวจจับมือได้ที่ระยะ 100 มม. ตัวควบคุม PID จะคำนวณข้อผิดพลาด Roll เชิงลบ โดยสั่งการให้มอเตอร์เคลื่อนย้ายโดรนไปทางซ้ายจนกว่าระยะทางสมดุลจะกลับคืนมา
วิศวกรรมและการออกแบบแบบโมดูลาร์
- Modular Architecture: ESPcopter สร้างขึ้นบนปรัชญาของ open-hardware expansion shields (เช่น Multi-ranger, BME280) สามารถเสียบเข้ากับโครงหลักได้โดยตรง และ ESPcopter SDK มีรูทีนการรักษาเสถียรภาพการบินที่คอมไพล์ไว้ล่วงหน้า สิ่งนี้ช่วยให้นักเรียนมุ่งเน้นไปที่ตรรกะ "High-Level" เช่น อัลกอริทึมสำหรับแอร์ฮอกกี้ หรือการนำทางเขาวงกตอัตโนมัติ โดยไม่จำเป็นต้องคำนวณ quaternion rotations ด้วยตนเอง
- Hardware Efficiency: การใช้ ESP8266 ช่วยให้สามารถทำ Over-the-Air (OTA) updates และการส่งข้อมูลทางไกลผ่านสมาร์ทโฟนได้ โครงสร้างขนาดเล็กและอัตราส่วนกำลังต่อน้ำหนักสูงของ brushed motors ทำให้ปลอดภัยสำหรับการใช้งานในห้องปฏิบัติการในร่ม โดยเป็นแพลตฟอร์มที่เสถียรสำหรับการทดสอบทฤษฎีการหลีกเลี่ยงการชนกันในพื้นที่ 3D จริง