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

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

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

Geofencing با GPS: محدود کردن ناحیه حرکت UGV با آردوینو (فارسی)

​ ژوئن 12, 2026 1 دقیقه مطالعه
Geofencing GPS UGV آردوینو محدوده حرکت

Geofencing — حصار جغرافیایی دیجیتال

Geofencing یعنی تعریف یک منطقه جغرافیایی (با مختصات GPS) و تعیین قانون برای رفتار UGV وقتی از آن منطقه خارج می‌شود — مثلاً توقف، بازگشت به خانه، یا ارسال هشدار. کاربردها: کشاورزی دقیق (UGV فقط در مزرعه خودت بماند)، تحویل ربات (فقط در محوطه مجاز)، و ایمنی عمومی.

الگوریتم Ray Casting (Point-in-Polygon) تعیین می‌کند آیا نقطه فعلی GPS داخل چند ضلعی تعریف‌شده است یا خارج — روشی ساده و کارآمد حتی برای آردوینو.

الگوریتم Ray Casting — کد آردوینو

#include <TinyGPS++.h>

// ===== تعریف مرز Geofence (چند ضلعی ۴ گوشه — مثال) =====
const int NUM_VERTS = 4;
double fenceLat[] = {35.7120, 35.7135, 35.7135, 35.7120};
double fenceLng[] = {51.4050, 51.4050, 51.4070, 51.4070};

bool pointInPolygon(double lat, double lng){
  bool inside = false;
  for(int i=0, j=NUM_VERTS-1; ilat) != (fenceLat[j]>lat)) &&
       (lng < (fenceLng[j]-fenceLng[i])*(lat-fenceLat[i])/(fenceLat[j]-fenceLat[i])+fenceLng[i])){
      inside = !inside;
    }
  }
  return inside;
}

TinyGPSPlus gps;

void loop(){
  while(Serial1.available()) gps.encode(Serial1.read());

  if(gps.location.isValid()){
    bool safe = pointInPolygon(gps.location.lat(), gps.location.lng());
    if(!safe){
      // مرز نقض شد!
      stopMotors();
      sendLoRaAlert("GEOFENCE BREACH!");
    }
  }
}

void stopMotors(){
  analogWrite(ENA, 0); analogWrite(ENB, 0);
}

void sendLoRaAlert(String msg){
  LoRa.beginPacket();
  LoRa.print(msg);
  LoRa.endPacket();
}

تعریف مرز از Google Earth

  1. در Google Earth Pro روی محدوده مورد نظر یک Polygon بکش.
  2. کلیک‌راست → Properties → Coordinates را کپی کن.
  3. مقادیر lat/lng را در آرایه‌های fenceLat و fenceLng قرار بده.
  4. دقت GPS ~۲.۵m است — مرز را حداقل ۱۰m از موانع واقعی دورتر تعریف کن.

جدول رفتار در نقض مرز

سناریو رفتار توصیه‌شده
نزدیک مرز (۵m) کاهش سرعت به ۵۰٪
روی مرز توقف کامل
خارج از مرز توقف + هشدار LoRa + بازگشت به خانه

  • WR Franklin: الگوریتم PNPOLY — مرجع اصلی
  • آپارات: محدوده جغرافیایی GPS
برچسب‌ها: Geofencing GPS LoRa NEO-6M Point-in-Polygon UGV آردوینو مرز
​
مطلب بعدی ExpressLRS (ELRS) برای UGV — کمترین تأخیر، بیشترین برد با آردوینو (فارسی) مطلب قبلی ناوبری بدون GPS در فضای بسته با UWB (DWM1000) — دقت ۱۰cm (فارسی)
</> Make for Iran – بسازیم برای ایران

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

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

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

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

پیوندها

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

آخرین مطالب

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