ข้ามไปที่เนื้อหา

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)

โค้ดนี้จะรับข้อมูลจาก 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);
  }
}

🚀 การพัฒนาต่อยอด

  1. MAVLink Library: ใช้ไลบรารี common/mavlink.h เพื่อถอดรหัส (Decode) ข้อความจริงๆ เช่น ดูค่าพิกัด GPS หรือระดับแบตเตอรี่
  2. WiFi Gateway: รวมโค้ด WebSocket หรือ MQTT เพื่อส่งข้อมูล Pixhawk ไปแสดงผลบน Dashboard แบบ Real-time
  3. Command Control: สร้างฟังก์ชันส่งคำสั่ง MAVLink ไปเพื่อสั่ง ARM, DISARM หรือสั่งให้หุ่นยนต์เดินทางไปตามพิกัด

ศึกษาเพิ่มเติม

ดูรายละเอียดทฤษฎี MAVLink ได้ที่ โปรโตคอลหุ่นยนต์