Antenna Tracker چیست؟ (برای مبتدی)
وقتی پهپاد FPV به فاصله ۲+ کیلومتر میرود، آنتن جهتدار (مثل Patch یا Helical) برد بسیار بهتری از آنتن Omni میدهد — اما باید همیشه به سمت پهپاد باشد. Antenna Tracker یک سیستم Pan-Tilt مکانیکی است که به صورت خودکار آنتن را به سمت پهپاد میچرخاند — بر اساس موقعیت GPS پهپاد که از طریق Telemetry LoRa دریافت میشود.
سیستم از دو بخش تشکیل میشود: یک گیرنده GPS روی پهپاد که موقعیت را از طریق LoRa به زمین میفرستد، و یک مکانیزم Pan-Tilt با دو سرووموتور روی زمین که Arduino موقعیت آنتن را محاسبه و سروها را هدایت میکند.
محصولی که میسازید
یک Antenna Tracker دو محوره که آنتن Patch 5.8GHz را خودکار به سمت پهپاد تا ۳ کیلومتر نگه میدارد.
- زمان ساخت: ۵ تا ۷ ساعت
- هزینه: ۱ تا ۲ میلیون تومان
قطعات لازم (BOM)
| قطعه | نقش |
|---|---|
| Arduino Nano × ۲ | کنترلر پهپاد و زمین |
| ماژول LoRa Ra-02 × ۲ | ارسال/دریافت GPS |
| GPS NEO-6M × ۱ (روی پهپاد) | موقعیت پهپاد |
| GPS NEO-6M × ۱ (زمین) | موقعیت Tracker |
| سرووموتور MG996R × ۲ | Pan و Tilt |
| آنتن Patch 5.8GHz | دریافت ویدئو FPV |
کد Arduino Tracker (زمین)
#include <SPI.h>
#include <LoRa.h>
#include <Servo.h>
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
Servo panServo, tiltServo;
TinyGPSPlus gpsHome;
SoftwareSerial gpsSerial(4, 5);
double homeLat, homeLon;
double calcBearing(double lat1, double lon1, double lat2, double lon2) {
double dLon = radians(lon2 - lon1);
double x = sin(dLon) * cos(radians(lat2));
double y = cos(radians(lat1)) * sin(radians(lat2)) -
sin(radians(lat1)) * cos(radians(lat2)) * cos(dLon);
double bearing = degrees(atan2(x, y));
return fmod(bearing + 360.0, 360.0);
}
void setup() {
panServo.attach(9);
tiltServo.attach(10);
gpsSerial.begin(9600);
LoRa.begin(433E6);
Serial.begin(115200);
}
void loop() {
// خواندن GPS زمین
while (gpsSerial.available()) gpsHome.encode(gpsSerial.read());
if (gpsHome.location.isValid()) {
homeLat = gpsHome.location.lat();
homeLon = gpsHome.location.lng();
}
// دریافت GPS پهپاد از LoRa
int pktSize = LoRa.parsePacket();
if (pktSize && homeLat != 0) {
String data = "";
while (LoRa.available()) data += (char)LoRa.read();
// فرمت: "lat,lon,alt"
int c1 = data.indexOf(','), c2 = data.lastIndexOf(',');
double uavLat = data.substring(0, c1).toDouble();
double uavLon = data.substring(c1+1, c2).toDouble();
double bearing = calcBearing(homeLat, homeLon, uavLat, uavLon);
int panAngle = (int)bearing; // 0-360
panServo.write(panAngle > 180 ? 180 : panAngle);
tiltServo.write(15); // تیلت ثابت برای این نسخه ساده
Serial.print("Pan: "); Serial.println(panAngle);
}
}
چکلیست تست
| تست | نتیجه |
|---|---|
| GPS زمین Fix گرفته؟ | بله — LED چشمکزن |
| LoRa GPS پهپاد را دریافت میکند؟ | بله — Serial Monitor |
| سرو Pan با حرکت شما میچرخد؟ | بله |