</> Make for Iran – بسازیم برای ایران

پروژه‌ها، آموزش‌ها و ابزارها برای سازندگان و علاقه‌مندان الکترونیک

  • خانه
  • الکترونیک
  • پرینت سه‌بعدی
  • حکاکی و برش لیزری
  • ابزار کارگاهی
  • پهپاد
  • ربات زمینی UGV
  • ربات پرنده UAV
  • صنایع دستی
  • آموزش
  • پروژه‌ها
  • درباره ما
خانه›آموزش›ساخت سیستم Geo-Fencing با GPS و LoRa: هشدار خروج از محدوده برای پهپاد (فارسی)
آموزش ربات‌های پرنده (UAV)

ساخت سیستم Geo-Fencing با GPS و LoRa: هشدار خروج از محدوده برای پهپاد (فارسی)

​ ژوئن 10, 2026 2 دقیقه مطالعه
سیستم Geo-Fencing GPS LoRa برای UAV

Geo-Fencing و GPS یعنی چه؟ (برای مبتدی)

Geo-Fencing (حصار جغرافیایی) یعنی تعریف یک محدوده فضایی روی نقشه و تشخیص خودکار ورود یا خروج از آن. وقتی یک UAV یا UGV از این محدوده خارج می‌شود، سیستم هشدار می‌دهد یا دستور RTL صادر می‌کند.

GPS (Global Positioning System) یک سیستم ناوبری ماهواره‌ای است. ماژول NEO-6M در ایران بسیار رایج است — با دقت ۲.۵ متر CEP موقعیت را گزارش می‌دهد. ماژول GPS از طریق UART با آردوینو ارتباط برقرار می‌کند و داده‌های NMEA (مثل $GPRMC و $GPGGA) می‌فرستد که حاوی طول و عرض جغرافیایی هستند.

در این پروژه محاسبه فاصله از مرکز Geo-Fence با فرمول Haversine انجام می‌شود — این فرمول فاصله دقیق بین دو نقطه روی کره زمین را بر اساس عرض و طول جغرافیایی حساب می‌کند.

محصولی که می‌سازید

یک سیستم Geo-Fence که وقتی UAV بیشتر از ۱۰۰ متر از نقطه پرواز دور می‌شود، از طریق LoRa هشدار ارسال می‌کند.

  • زمان ساخت: ۳ تا ۴ ساعت
  • هزینه: ۶۰۰ تا ۹۰۰ هزار تومان

نقطه پرواز Geo-Fence R=100m UAV داخل ✅ UAV خارج! ⚠ ۱۱۰m UAV داخل محدوده OK — خارج از محدوده → هشدار LoRa

قطعات لازم (BOM)

قطعه تعداد
Arduino Nano ۲ عدد
GPS NEO-6M ۱ عدد (روی UAV)
ماژول LoRa Ra-02 ۲ عدد
بازر Buzzer ۱ عدد (زمین)
LED قرمز ۱ عدد (هشدار بصری)

کد Arduino — فرستنده روی UAV


#include <SPI.h>
#include <LoRa.h>
#include <TinyGPS++.h>
#include <SoftwareSerial.h>

TinyGPSPlus gps;
SoftwareSerial gpsSerial(4, 3);  // RX, TX

void setup() {
  gpsSerial.begin(9600);
  LoRa.begin(433E6);
  LoRa.setSpreadingFactor(9);
}

void loop() {
  while (gpsSerial.available()) gps.encode(gpsSerial.read());
  if (gps.location.isUpdated()) {
    String msg = String(gps.location.lat(), 6) + "," + String(gps.location.lng(), 6);
    LoRa.beginPacket();
    LoRa.print(msg);
    LoRa.endPacket();
  }
  delay(1000);
}

کد Arduino — گیرنده زمین (Geo-Fence Check)


#include <SPI.h>
#include <LoRa.h>
#include <math.h>

const double HOME_LAT = 35.6892;   // عرض جغرافیایی نقطه پرواز
const double HOME_LON = 51.3890;   // طول جغرافیایی
const double FENCE_RADIUS = 100.0; // متر
const int BUZZER = 6, LED = 7;

double haversine(double lat1, double lon1, double lat2, double lon2) {
  const double R = 6371000;
  double dlat = radians(lat2 - lat1);
  double dlon = radians(lon2 - lon1);
  double a = sin(dlat/2)*sin(dlat/2) + cos(radians(lat1))*cos(radians(lat2))*sin(dlon/2)*sin(dlon/2);
  return R * 2 * atan2(sqrt(a), sqrt(1-a));
}

void setup() {
  pinMode(BUZZER, OUTPUT); pinMode(LED, OUTPUT);
  LoRa.begin(433E6);
  LoRa.setSpreadingFactor(9);
  Serial.begin(115200);
}

void loop() {
  int pkt = LoRa.parsePacket();
  if (pkt) {
    String data = "";
    while (LoRa.available()) data += (char)LoRa.read();
    int comma = data.indexOf(',');
    double lat = data.substring(0, comma).toDouble();
    double lon = data.substring(comma+1).toDouble();
    double dist = haversine(HOME_LAT, HOME_LON, lat, lon);
    Serial.print("Distance: "); Serial.print(dist); Serial.println(" m");
    if (dist > FENCE_RADIUS) {
      digitalWrite(BUZZER, 1); digitalWrite(LED, 1);
      Serial.println("⚠ FENCE BREACH!");
    } else {
      digitalWrite(BUZZER, 0); digitalWrite(LED, 0);
    }
  }
}

چک‌لیست تست

تست نتیجه
GPS Fix گرفته؟ (چند ماهواره؟) حداقل ۶ ماهواره
Serial Monitor فاصله درست نشان می‌دهد؟ با Google Maps بسنجید
در ۱۱۰ متر بازر کار می‌کند؟ بله
در داخل ۸۰ متر بازر خاموش است؟ بله

GPS NEO-6M روی UAV LoRa TX/RX 433MHz Arduino زمین Haversine Buzzer + LED هشدار خروج Geo-Fence — GPS + LoRa + Haversine = هشدار محدوده

ویدئوهای آموزشی


منابع بیشتر

  • آپارات: GPS Geo-Fence آردوینو فارسی
  • TinyGPS++ GitHub
  • Haversine Formula Calculator
برچسب‌ها: Geo-Fence GPS LoRa UAV آردوینو آموزش گام‌به‌گام محدوده هشدار
​
مطلب بعدی ساخت زیردریایی RC کوچک: ROV DIY با ESP32 و پمپ آب (فارسی) مطلب قبلی ساخت سیستم پخش صدا بی‌سیم با LoRa و DAC: اینترکام دو‌طرفه برد بلند (فارسی)
</> Make for Iran – بسازیم برای ایران

پروژه‌ها، آموزش‌ها و ابزارها برای سازندگان و علاقه‌مندان الکترونیک

یاد بگیر، بساز، به اشتراک بگذار. جامعه‌ای برای سازندگان، مهندسان و علاقه‌مندان به فناوری در ایران.

دسته‌بندی‌ها

  • پروژه‌ها
  • ربات‌های پرنده (UAV)
  • آموزش
  • ربات‌های زمینی (UGV)
  • الکترونیک
  • پهپاد و مولتی‌روتور

پیوندها

  • خانه
  • درباره ما
  • تماس
  • فید RSS

آخرین مطالب

  • خلاصه دوره ArduPilot/iNAV و گام‌های بعدی (فارسی)
  • رادیو تله‌متری در مقابل LTE/4G برای کنترل از راه دور (فارسی)
  • Ground Station روی موبایل و تبلت — QGroundControl و Solex (فارسی)
  • راه‌اندازی Ground Station با Mission Planner (فارسی)
© 2026 Make for Iran – بسازیم برای ایران. تمامی حقوق محفوظ است.
ساخته شده با ❤️ برای سازندگان ایران  |  ورود