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

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

  • خانه
  • الکترونیک
  • پرینت سه‌بعدی
  • حکاکی و برش لیزری
  • ابزار کارگاهی
  • پهپاد
  • ربات زمینی UGV
  • ربات پرنده UAV
  • صنایع دستی
  • آموزش
  • پروژه‌ها
  • درباره ما
خانه›آموزش›ساخت GPS Data Logger با Arduino Nano و SD Card: ضبط مسیر و تحلیل داده (فارسی)
آموزش ربات‌های زمینی (UGV)

ساخت GPS Data Logger با Arduino Nano و SD Card: ضبط مسیر و تحلیل داده (فارسی)

​ ژوئن 10, 2026 2 دقیقه مطالعه
GPS Data Logger با Arduino

GPS و Data Logger یعنی چه؟ (برای مبتدی)

GPS (Global Positioning System) یک سیستم ناوبری ماهواره‌ای است که موقعیت دقیق شما را روی زمین با استفاده از سیگنال‌های چند ماهواره محاسبه می‌کند. محبوب‌ترین ماژول GPS برای پروژه‌های آردوینو، NEO-6M ساخت شرکت u-blox سوئیس است. این ماژول داده‌های موقعیت را در قالب رشته‌های متنی استاندارد به نام NMEA ارسال می‌کند — مثلاً عرض و طول جغرافیایی، سرعت، ارتفاع و زمان UTC.

Data Logger یعنی دستگاهی که داده‌ها را در طول زمان ضبط و ذخیره می‌کند. وقتی GPS Logger می‌سازید، مختصات موقعیت‌تان را هر چند ثانیه یک‌بار روی یک فایل CSV روی کارت حافظه ذخیره می‌کنید. بعد می‌توانید این فایل را در Google Earth یا نرم‌افزار GPS Visualizer باز کنید و مسیر طی‌شده را روی نقشه ببینید — دقیقاً مثل ردیاب‌های حرفه‌ای.

این پروژه یک ابزار واقعاً کاربردی است: می‌توانید آن را روی UGV، دوچرخه، یا حتی اتومبیل قرار دهید و مسیر را ثبت کنید.

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

یک GPS Data Logger کوچک و مستقل که مختصات، سرعت، ارتفاع و زمان را روی کارت MicroSD ذخیره می‌کند. با یک باتری ۹V کار می‌کند و برای تست UGV/UAV ایده‌آل است.

  • زمان ساخت: ۲ تا ۳ ساعت
  • هزینه: ۶۰۰ هزار تا ۱ میلیون تومان
  • دقت GPS: ~۲.۵ متر (NEO-6M)
  • فرمت ذخیره: CSV قابل باز شدن در Excel و Google Earth

Arduino Nano مغز پروژه NEO-6M GPS UART TX/RX MicroSD Module SPI — ذخیره CSV LED وضعیت Fix / No Fix GPS → داده NMEA → Arduino → تجزیه → ذخیره در SD Card

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

قطعه مدل نقش
میکروکنترلر Arduino Nano V3 پردازش داده
ماژول GPS NEO-6M با آنتن سرامیکی موقعیت + زمان
ماژول SD Card MicroSD SPI Module ذخیره داده
کارت حافظه MicroSD 4GB یا بیشتر FAT32 رسانه ذخیره
LED آبی یا سبز ۵mm نشانگر Fix GPS
مقاومت ۲۲۰ اهم محدودکننده جریان LED
باتری + کلیپس 9V + کانکتور PP3 تغذیه مستقل

اتصالات سیم‌کشی

قطعه پین قطعه پین Arduino Nano
NEO-6M GPS TX D4 (SoftwareSerial RX)
NEO-6M GPS RX D3 (SoftwareSerial TX)
NEO-6M GPS VCC / GND 3.3V / GND
SD Module MOSI D11
SD Module MISO D12
SD Module SCK D13
SD Module CS D10
LED وضعیت آند (+ مقاومت ۲۲۰) D8

کد کامل GPS Data Logger


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

SoftwareSerial gpsSerial(4, 3);  // RX=D4, TX=D3
TinyGPSPlus gps;
File logFile;

const int SD_CS   = 10;
const int LED_PIN = 8;

void setup() {
  Serial.begin(9600);
  gpsSerial.begin(9600);
  pinMode(LED_PIN, OUTPUT);

  if (!SD.begin(SD_CS)) {
    Serial.println("SD init failed!");
    while (1) { digitalWrite(LED_PIN, HIGH); delay(100); digitalWrite(LED_PIN, LOW); delay(100); }
  }

  logFile = SD.open("gpslog.csv", FILE_WRITE);
  if (logFile) {
    logFile.println("Date,Time,Lat,Lon,Altitude_m,Speed_kmh,Satellites");
    logFile.close();
    Serial.println("Log file created.");
  }
}

void loop() {
  while (gpsSerial.available() > 0) gps.encode(gpsSerial.read());

  if (gps.location.isUpdated() && gps.location.isValid()) {
    digitalWrite(LED_PIN, HIGH);

    String row = "";
    row += String(gps.date.day())   + "/" + String(gps.date.month()) + "/" + String(gps.date.year()) + ",";
    row += String(gps.time.hour())  + ":" + String(gps.time.minute()) + ":" + String(gps.time.second()) + ",";
    row += String(gps.location.lat(), 6) + ",";
    row += String(gps.location.lng(), 6) + ",";
    row += String(gps.altitude.meters(), 1) + ",";
    row += String(gps.speed.kmph(), 1) + ",";
    row += String(gps.satellites.value());

    logFile = SD.open("gpslog.csv", FILE_WRITE);
    if (logFile) { logFile.println(row); logFile.close(); }

    Serial.println(row);
    delay(1000);
    digitalWrite(LED_PIN, LOW);
  }

  if (millis() > 10000 && gps.charsProcessed() < 10) {
    Serial.println("No GPS data — check wiring!");
  }
}

کتابخانه‌های مورد نیاز

  • TinyGPS++ — از Arduino Library Manager نصب کنید: جستجو «TinyGPSPlus» توسط Mikal Hart
  • SD — از پیش نصب است در Arduino IDE
  • SoftwareSerial — از پیش نصب است

چک‌لیست تست

تست نتیجه مشکل احتمالی
Serial Monitor پیام «Log file created» نشان می‌دهد؟ بله SD فرمت FAT32 نیست یا CS پین اشتباه
بعد از ۲ دقیقه در فضای باز LED روشن شد؟ بله — GPS Fix گرفت آنتن سرامیکی رو به آسمان باشد
فایل gpslog.csv روی SD کارت دارای داده است؟ بله کارت را در Excel باز کنید
مختصات در Google Maps درست است؟ دقت ~۲-۵ متر بین ساختمان‌ها دقت کمتر است

ماهواره GPS NEO-6M دریافت کرد → Arduino پردازش کرد → SD ذخیره کرد فایل CSV → Excel / Google Earth → مسیر روی نقشه

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


منابع بیشتر

  • آپارات: GPS آردوینو
  • TinyGPS++ Library GitHub
  • GPS Visualizer: نمایش مسیر روی نقشه
برچسب‌ها: Arduino Data Logger GPS NEO-6M SD Card UAV UGV آموزش گام‌به‌گام مبتدی
​
مطلب بعدی راهنمای کامل باتری LiPo برای پهپاد و UGV: شارژ ایمن، نگهداری، تخلیه و دفع (فارسی) مطلب قبلی ساخت ردیاب GPS با SIM800L و ارسال موقعیت از طریق SMS: راهنمای کامل مبتدی (فارسی)
</> Make for Iran – بسازیم برای ایران

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

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

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

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

پیوندها

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

آخرین مطالب

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