پل MAVLink-LoRa چیست؟ (مبتدی)
ماژول تلهمتری RFD900 که معمولاً برای ارتباط MAVLink با ArduPilot استفاده میشود، حدود ۱۵۰-۲۰۰ دلار قیمت دارد. اما با یک ESP32 و دو ماژول E32-433T30D (LoRa، زیر ۲۰ دلار هر کدام) میتوان یک پل تلهمتری ارزان ساخت که MAVLink را از UART پهپاد گرفته، از طریق LoRa به GCS ارسال میکند.
این پل شفاف است — یعنی Mission Planner فکر میکند مستقیم با پهپاد صحبت میکند. پکتهای MAVLink (Heartbeat، GPS، Battery) بدون تغییر از طریق LoRa جابجا میشوند. در هر دو طرف (پهپاد و GCS) یک ESP32+E32 نیاز است.
محصولی که میسازید
پل تلهمتری MAVLink با LoRa 433MHz — جایگزین RFD900.
- هزینه: ۲ × ۲۰ دلار = ۴۰ دلار (در برابر ۱۵۰-۲۰۰ دلار)
- برد: تا ۳km با E32-433T30D
- تأخیر: ۲۰-۵۰ms
کد ESP32 — پل شفاف MAVLink
#include <HardwareSerial.h>
// طرف پهپاد: UART1 به FC، UART2 به E32
// طرف GCS: UART2 به E32، USB Serial به Mission Planner
HardwareSerial fcSerial(1); // UART1: ← FC (MAVLink)
HardwareSerial loraSerial(2); // UART2: ← E32 (LoRa)
// اندازه بافر LoRa E32 محدود است — پکتهای MAVLink را با دقت تقسیم کنید
uint8_t buf[256];
int bufLen = 0;
void setup() {
Serial.begin(115200); // USB Debug
fcSerial.begin(57600, SERIAL_8N1, 16, 17); // FC: Telem1
loraSerial.begin(9600, SERIAL_8N1, 26, 25); // E32 پیشفرض 9600
// تنظیم E32 روی 115200 (بهتر):
// loraSerial.println("AT+BAUD8"); // اگر از HC-12 مشابه باشد
}
void loop() {
// FC → LoRa (Forward to GCS):
while(fcSerial.available()) {
uint8_t b = fcSerial.read();
buf[bufLen++] = b;
if(bufLen >= 64 || bufLen == 0) {
loraSerial.write(buf, bufLen);
bufLen = 0;
}
}
// LoRa → FC (Commands from GCS):
while(loraSerial.available()) {
fcSerial.write(loraSerial.read());
}
}
چکلیست تنظیم
| بررسی | توضیح |
|---|---|
| Baud Rate FC = Baud E32؟ | هر دو ۵۷۶۰۰ یا ۹۶۰۰ |
| همان Channel و Address در E32ها؟ | AT Commands برای تنظیم |
| Heartbeat در Mission Planner؟ | هر ۱ ثانیه |
| GPS Location روی نقشه MP؟ | ☐ |