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

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

  • خانه
  • الکترونیک
  • پرینت سه‌بعدی
  • حکاکی و برش لیزری
  • ابزار کارگاهی
  • پهپاد
  • ربات زمینی UGV
  • ربات پرنده UAV
  • صنایع دستی
  • آموزش
  • پروژه‌ها
  • درباره ما
خانه›آموزش›ناوبری بدون GPS در فضای بسته با UWB (DWM1000) — دقت ۱۰cm (فارسی)
آموزش ربات‌های زمینی (UGV)

ناوبری بدون GPS در فضای بسته با UWB (DWM1000) — دقت ۱۰cm (فارسی)

​ ژوئن 12, 2026 1 دقیقه مطالعه
UWB DWM1000 ناوبری داخل ساختمان UGV

UWB چیست و چرا از WiFi یا BLE دقیق‌تر است؟

UWB (Ultra-Wideband) یک تکنولوژی رادیویی است که پالس‌های بسیار کوتاه در طیف وسیع (۳.۱–۱۰.۶GHz) ارسال می‌کند. با اندازه‌گیری دقیق زمان رفت و برگشت پالس (ToF — Time of Flight) می‌توان فاصله را با دقت ۱۰–۳۰cm اندازه گرفت — در مقابل WiFi که ۱–۲m و BLE که ۵–۱۰m خطا دارد. iPhone 11 به بعد و AirTag از UWB استفاده می‌کنند.

ماژول DWM1000 ساخت Decawave (حالا Qorvo) یکی از ارزان‌ترین (~۳۵۰K) ماژول‌های UWB برای آردوینو است. برای ناوبری داخل ساختمان حداقل ۳ Anchor ثابت و یک Tag (Rover) لازم است.

🛠️ کارت پروژه

دقت موقعیت ~۱۰–۳۰cm در فضای باز، ۲۰–۵۰cm داخل
تعداد ماژول ۳ Anchor + ۱ Tag = ۴ ماژول DWM1000
بودجه ~۱.۵M تومان (۴ ماژول + Arduino)

معماری سیستم UWB Anchor/Tag

چیدمان Anchor در اتاق — Trilateration اتاق (۸ × ۶ متر) A0 0,0 A1 8,0 A2 4,6 Tag محل برخورد ۳ دایره = موقعیت Tag

کد Anchor — DWM1000

// کتابخانه: arduino-dw1000 (GitHub: thotro)
#include <DW1000.h>
#include <DW1000Ranging.h>

#define ANCHOR_ID "01:00:22:EA:82:60:3B:9C"

void setup(){
  DW1000Ranging.startAsAnchor(ANCHOR_ID, DW1000.MODE_LONGDATA_RANGE_LOWPOWER);
}

void loop(){
  DW1000Ranging.loop();
}

کد Tag + Trilateration

// موقعیت Anchorها (متر)
float ax[]={0, 8, 4};
float ay[]={0, 0, 6};
float d[3];  // فاصله از هر Anchor

void trilaterate(float &px, float &py){
  // Least Squares برای ۳ Anchor
  float A = 2*(ax[1]-ax[0]);
  float B = 2*(ay[1]-ay[0]);
  float C = d[0]*d[0]-d[1]*d[1]-ax[0]*ax[0]+ax[1]*ax[1]-ay[0]*ay[0]+ay[1]*ay[1];
  float D = 2*(ax[2]-ax[0]);
  float E = 2*(ay[2]-ay[0]);
  float F = d[0]*d[0]-d[2]*d[2]-ax[0]*ax[0]+ax[2]*ax[2]-ay[0]*ay[0]+ay[2]*ay[2];
  px = (C*E-F*B)/(A*E-D*B);
  py = (A*F-D*C)/(A*E-D*B);
}

  • کتابخانه arduino-dw1000 — GitHub
  • آپارات: UWB موقعیت‌یابی داخلی
برچسب‌ها: DWM1000 Indoor Navigation Trilateration UGV UWB آردوینو بدون GPS داخل ساختمان
​
مطلب بعدی Geofencing با GPS: محدود کردن ناحیه حرکت UGV با آردوینو (فارسی) مطلب قبلی ترکیب FPV و LoRa: کنترل تصویری و تله‌متری همزمان روی UGV (فارسی)
</> Make for Iran – بسازیم برای ایران

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

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

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

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

پیوندها

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

آخرین مطالب

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