ESP32 MAVLink Bridge (WiFi to Serial)
ในการควบคุมหุ่นยนต์ผ่าน Dashboard เราจะใช้ ESP32 เป็นตัวกลางในการสื่อสาร (Gateway) เพื่อนำข้อมูลจาก WiFi ไปส่งต่อให้ Pixhawk ผ่านทาง Serial
🔌 การเชื่อมต่อ (Wiring)
| ESP32 Pin | Pixhawk Port (TELEM1) |
|---|---|
| GND | Pin 6 (GND) |
| GPIO 27 (TX) | Pin 3 (RX) |
| GPIO 34 (RX) | Pin 2 (TX) |
| VIN (5V) | Pin 1 (VCC 5V) |
💻 โค้ดพื้นฐาน (MAVLink Passthrough)
โค้ดนี้จะรับข้อมูลจาก Serial1 (MAVLink) มาส่งออกทาง Serial0 (Debug) และสามารถขยายผลเพื่อส่งผ่าน WebSocket ได้
#include <HardwareSerial.h>
// กำหนดพอร์ต Serial สำหรับคุยกับ Pixhawk
HardwareSerial PixSerial(1);
void setup() {
Serial.begin(115200); // สำหรับ Debug ในคอมพิวเตอร์
// Pixhawk TELEM1 ปกติใช้ 57600 Baud
PixSerial.begin(57600, SERIAL_8N1, 34, 27);
Serial.println("ESP32 MAVLink Bridge Started");
}
void loop() {
// รับข้อมูลจาก Pixhawk แล้วส่งออก Debug
while (PixSerial.available() > 0) {
uint8_t c = PixSerial.read();
Serial.write(c);
}
// รับข้อมูลจาก Debug (Dashboard จำลอง) แล้วส่งเข้า Pixhawk
while (Serial.available() > 0) {
uint8_t c = Serial.read();
PixSerial.write(c);
}
}
🚀 การพัฒนาต่อยอด
- MAVLink Library: ใช้ไลบรารี
common/mavlink.hเพื่อถอดรหัส (Decode) ข้อความจริงๆ เช่น ดูค่าพิกัด GPS หรือระดับแบตเตอรี่ - WiFi Gateway: รวมโค้ด WebSocket หรือ MQTT เพื่อส่งข้อมูล Pixhawk ไปแสดงผลบน Dashboard แบบ Real-time
- Command Control: สร้างฟังก์ชันส่งคำสั่ง MAVLink ไปเพื่อสั่ง
ARM,DISARMหรือสั่งให้หุ่นยนต์เดินทางไปตามพิกัด
ศึกษาเพิ่มเติม
ดูรายละเอียดทฤษฎี MAVLink ได้ที่ โปรโตคอลหุ่นยนต์