آموزش راه اندازی ماژول GPS ublox NEO-6M با آردوینو

آموزش راه اندازی ماژول GPS ublox NEO-6M با آردوینو

آیا تا به حال به فکر موقعیت یابی با آردوینو افتاده‌اید؟؟؟ اگر این فکر به سرتان زده است، پس حتما باید با ماژول GPS ublox NEO-6M و نحوه راه اندازی آن با آردوینو آشنا شوید.

این ماژول موقعیت یاب، می‌تواند تا 22 ماهواره را دنبال کند و هر محلی در هر نقطه‌ای از کره زمین را مشخص نماید. این ماژول حتی می‌تواند برای هر کسی که بخواهد به دنیای جی پی اس وارد شود، یک نقطه شروع عالی باشد.

این ماژول‌ها با توان پایین کار می‌کنند و برای دستگاه‌هایی که با باتری تغذیه می‌شوند، مناسب هستند. به علاوه، ارزانند و به‌راحتی می‌توان با آن‌ها ارتباط برقرار کرد. در ضمن، در بین کسانی که به دنبال سرگرمی هستند، خیلی خیلی محبوبند.

اگر با GPS آشنایی زیادی ندارید، حتما بخش بعدی را در ابتدا مطالعه کنید.

جی پی اس چگونه کار میکند؟

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

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

فرآیند سه گانه‌سازی که در آن گیرنده‌های جی پی اس فاصله‌ی خود از تعدادی ماهواره تشخیص می‌دهند.

پس از ارسال سیگنال توسط ماهواره، گیرنده با محاسبه مدت زمانی‌که طول کشیده تا سیگنال‌ها را دریافت کند، فاصله‌ی خود را از هر ماهواره محاسبه می‌کند. به محض اینکه گیرنده، اطلاعات مربوط به فاصله‌ی حداقل 3 ماهواره و موقعیت آن‌ها را در فضا پیدا کرد، می‌تواند مکان شما را روی زمین مشخص کند.

به این فرآیند، سه‌گانه‌سازی (Trilateration) می‌گویند.

نگاهی به مشخصات سخت افزاری ماژول GPS ublox NEO-6M

در این بخش تمامی اجزای ماژول موقعیت یاب ublox NEO-6M را همراه شما بررسی خواهیم کرد.

تراشه ی جی پی اس NEO-6M

در قلب ماژول، یک تراشه‌ی جی پی اس NEO-6M که محصول شرکت  u-blox است، وجود دارد. اگر این تراشه را از نزدیک ببیند، متوجه می‌شوید که اندازه‌ی آن کمتر از اندازه‌ی یک مُهر است، اما با برخلاف ابعاد کوچکش، ویژگی‌های اعجاب‌انگیزی بسیاری دارد.

در ادامه، این ویژگی‌های اعجاب انگیز را برای شما جمع‌آوری کرده‌ایم.

تراشه ی جی پی اس NEO-6M بر روی ماژول

ماژول GPS ublox NEO-6M می‌تواند تا 22 ماهواره را بر روی 50 کانال دنبال کند و به بالاترین سطح حساسیت در این صنعت دست پیدا کند. به عبارت دیگر تنها با مصرف 45 میلی‌آمپر جریان تغذیه می‌تواند حساسیت 161- دسی بل را ارائه کند.

بر خلاف سایر ماژول‌های جی پی اس، این ماژول می‌تواند در هر ثانیه 5 بار، موقعیت را با دقت افقی 2.5 متر به‌روزرسانی کند. همچنین موتور مکان یابی u-blox 6، دارای TTFF (زمان لازم برای تثبیت اولیه یا Time to First Fix) کمتر از یک ثانیه است.

یکی از بهترین ویژگی‌های این تراشه حالت ذخیره انرژی (PSM) آن می‌باشد. این ویژگی با روشن یا خاموش کردن حساب شده‌ی بخش‌های مختلف گیرنده، باعث کاهش توان مصرفی سیستم می‌شود. به گونه‌ای که توان مصرفی ماژول را به‌طور خارق‌العاده‌ای تا 11 میلی‌آمپر کاهش می‌دهد و آن را برای کاربردهایی که کم مصرف بودن اولویت دارد (مانند جی پی اس های مچی)، مناسب می‌سازد.  

پایه‌های داده‌ی لازم تراشه‌ی جی پی اس NEO-6M از طریق پین هدر استاندارد 0.1 اینچ در دسترس قرار گرفته‌اند که شامل پایه‌های لازم برای برقراری ارتباط با یک میکروکنترلر از طریق UART می‌باشد. این ماژول بادریت‌های  4800bps تا 230400bps را پشتیبانی می‌کند و بادریت پیش فرض آن 9600bps است.

مشخصات کامل چیپ را می‌توانید در جدول زیر مشاهده کنید:

نوع گیرنده50 channels, GPS L1(1575.42Mhz)
دقت افقی مکان یابی2.5m
نرخ به‌روزرسانی موقعیت1HZ (5Hz maximum)
زمان دریافت دادهCool start: 27sHot start: 1s
حساسیت مکان یابی161dBm-
پروتکل ارتباطی NMEA, UBX Binary, RTCM
باد ریت سریال 4800-230400 (default 9600)
دمای کاری-40°C ~ 85°C
ولتاژ کاری2.7V ~ 3.6V
جریان کاری45mA
آمپدانس TXD/RXD510Ω

LED نشانگر تثبیت موقعیت

محل LED نشانگر تثبیت موقعیت بر روی ماژول GPS ublox NEO-6M

بر روی ماژول موقعیت یاب GPS ublox NEO-6M ، یک LED وجود دارد که وضعیت تثبیت موقعیت را نشان می‌دهد. این LED بسته به حالتی که در آن قرار گرفته با نرخ‌های متعددی چشمک می‌زند:

  • حالت بدون چشمک زدن: در این حالت ماژول در حال شناسایی ماهواره‌ها است.
  • حالت چشمک زن با فرکانس 1 هرتز: در این حالت، موقعیت تثبیت شده پیدا شده است. (به عبارت دیگر ماژول به تعداد کافی، ماهواره شناسایی کرده است.)

رگولاتور 3.3v LDO

رگولاتور 3.3v LDO  موجود بر روی ماژول ublox NEO-6M

ولتاژ کاری تراشه‌ی  NEO-6M  از 2.7 ولت تا 3.6 ولت می‌باشد. اما خبر خوبی که می‌توانیم به شما دهیم این است که این ماژول موقعیت یاب دارای یک رگولاتور MIC5205 با ولتاژ خروجی 3.3 ولت با افت ولتاژ بسیار کم است و محصول شرکت MICREL می‌باشد. علاوه بر این، پایه‌های منطقی ماژول، تحمل ولتاژ 5 ولت را دارند. بنابراین، می‌توانیم به‌راحتی بدون استفاده از هیچ گونه تغییر سطح ولتاژ، این ماژول را به آردوینو یا هر میکروکنترلر 5 ولتی متصل کنیم.

باتری و حافظه‌ی EEPROM

باتری قابل شارژ و حافظه‌ی EEPROM ماژول ublox NEO-6M

حافظه این ماژول از یک EEPROM دو سیمه سریال HK24C32 تامین می‌شود. اندازه‌ی این حافظه 4 کیلوبایت است و با پروتکل  I2C به تراشه‌ی NEO-6M متصل شده است. همچنین شامل یک باتری سکه‌ای با قابلیت شارژ مجدد می‌باشد که همانند یک ابرخازن عمل می‌کند.

 یک حافظه‌ی EEPROM همراه یک باتری، به حفظ محتوای حافظه BBR کمک می‌کند. BBR شامل داده‌های زمان، آخرین موقعیت (مدار GNSS) و چیدمان ماژول است. با این حال، برای ذخیره سازی دائمی مورد استفاده قرار نمی‌‌گیرد.

در صورت حفظ زمان و آخرین موقعیت توسط باتری، TTFF ماژول، به‌طور قابل توجهی به یک ثانیه کاهش پیدا می‌کند. این ویژگی امکان تثبیت سریع‌تر موقعیت را فراهم می‌سازد.

 اگر جی پی اس از باتری استفاده نکند، همواره به‌صورت cold-start شروع به کار می‌کند و به همین دلیل، تثبیت اولیه‌ی جی پی اس زمان بیشتری می‌برد.  

 هنگامی‌که تغذیه به ماژول اعمال شود، باتری به‌طور خودکار شارژ می‌شود. این ماژول می‌تواند اطلاعات خود را تا 2 هفته بدون نیاز به تغذیه حفظ کند.

آنتن

آنتن patch با حساسیت 161- دسی بل

برای اینکه بتوانید از ماژول برای هر شکلی از برقراری ارتباط بی‌سیم استفاده کنید، به آنتن نیاز خواهد داشت. به همین منظور، این ماژول، یک آنتن patch با حساسیت 161- دسی بل دارد که شما می‌توانید آن را در کانکتور  U.FL روی ماژول، محکم کنید.    

کانکتور  U.FL روی ماژول GPS ublox NEO-6M

استفاده از آنتن patch برای اکثر پروژه‌ها عالی است، اما اگر می‌خواهید حساسیت بیشتری برای ماژول خود به‌دست آورید یا آن را در یک محفظه‌ی فلزی بگذارید، می‌توانید هر آنتن 3 ولت اکتیو جی پی اس دیگری را هم از طریق کانکتور U.FL به برد متصل کنید.

توصیه:

کانکتورهای U.FL، کوچک و ظریف هستند و نسبت به کشش مقاوم نیستند. برای جلوگیری از آسیب به کانکتور  U.FL، به شما توصیه می‌کنیم که کابل U.FL را از طریق یکی از حفره‌های ایجاد شده در کناره‌های ماژول عبور داده و سپس، کانکتورهای U.FL را متصل کنید.

پایه‌های ماژول جی پی اس NEO-6M

پایه‌های ماژول GPS ublox NEO-6M

ماژول NEO-6M GPS در کل چهار پایه دارد که آن را با دنیای خارج مرتبط می‌کند. این پایه‌ها به شرح زیر هستند:

GND: پایه زمین است و باید به پایه GND برد آردوینو متصل شود.

TxD (فرستنده): از این پایه برای ارتباط سریال استفاده می‌شود.

RxD (گیرنده): از این پایه برای ارتباط سریال استفاده می‌شود.

VCC: تغذیه ماژول را تامین می‌کند. شما می‌توانید آن را به‌صورت مستقیم به 5 ولت روی آردوینو متصل کنید.

سیم‌کشی – راه اندازی ماژول GPS ublox NEO-6M با آردوینو

برای راه اندازی ماژول GPS ublox NEO-6M با آردوینو ، باید با اتصلات شروع کنیم. اما به قطعات زیر نیاز خواهید داشت:

در ابتدا، آنتن patch را به کانکتور U.FL متصل کنید. فراموش نکنید که کابل U.FL را از درون یکی از حفره‌های ایجاد شده در کناره‌های ماژول به‌منظور ایجاد اتصالی مستحکم عبور دهید.

معمولا پین هدرهای این ماژول لحیم نشده‌اند. بنابراین، شما باید آن‌ها را لحیم کنید.  

از آنجایی‌که از ارتباط سریال نرم‌افزاری برای فرمان دادن به ماژول استفاده خواهیم کرد، پایه‌های Tx و Rx روی ماژول را به ترتیب به پایه‌های 2 و 3 روی آردوینو متصل کنید.      

سپس، پایه VCC را به پایه 5V و پایه GND را به زمین برد آردوینو متصل کنید.

نحوه سیم‌کشی ماژول GPS ublox NEO-6M به آردوینو
اتصال ماژول به آردوینو

پس از انجام این اتصالات، مدار شما آماده است!

آردوینو و خواندن داده‌ی جی پی اس 

مهم‌ترین نکته مثبت در رابطه با گیرنده‌ها‌ی GPS این است که به محض اینکه شما آن‌ها را روشن می‌کنید، بدون نیاز به انجام تنظیمات یا ارسال فرمان، به سرعت شروع به ارسال داده می‌کنند. بهترین راه برای بررسی این داده‌ها، استفاده از آردوینو به عنوان مبدل USB به TTL است. برنامه‌ی زیر این کار را انجام می‌دهد.  

#include <SoftwareSerial.h>

// Choose two Arduino pins to use for software serial
int RXPin = 2;
int TXPin = 3;

//Default baud of NEO-6M is 9600
int GPSBaud = 9600;

// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  // Start the Arduino hardware serial port at 9600 baud
  Serial.begin(9600);

  // Start the software serial port at the GPS's default baud
  gpsSerial.begin(GPSBaud);
}

void loop()
{
  // Displays information when new sentence is available.
  while (gpsSerial.available() > 0)
    Serial.write(gpsSerial.read());
}

برنامه را آپلود کنید و سریال مانیتور IDE آردوینو را باز کنید. فراموش نکنید که بادریت را روی 9600bps تنظیم نمایید.

باید متنی شبیه متن زیر را مشاهده کنید:  

خروجی نمونه کد برای خواندن داده‌های جی پی اس بر روی سریال مانیتور

در واقع اطلاعاتی که شما از طریق رابط سریال، در حال دریافت آن هستید، sentence-NMEAها هستند.  

NMEA مخفف National-Marine-Electronics-Association می‌باشد که یک قالب استاندارد پیام برای همه‌ی گیرنده‌های جی پی اس است.  

استاندارد NMEA در خطوط داده‌ای به نام  sentence شکل می‌گیرد. هر sentence با کاراکتر کاما، جدا می‌شود تا تفسیر آن برای کامپیوترها و میکروکنترلرها ساده‌تر شود.

این sentence-NMEAها با سرعتی به نام << نرخ به‌روز‌رسانی >> ارسال می‌شوند.

ماژول جی پی اس ublox NEO-6M ، داده‌های خود را با نرخ پیش فرض یکبار در ثانیه (فرکانس 1 هرتز) به‌روزرسانی می‌کند. با این حال، شما می‌توانید آن را تا نرخ 5 هرتز افزایش دهید.

تفسیر sentenceNMEAها

Sentenceهای زیادی در استاندارد NMEA وجود دارد که رایج‌ترین آن‌ها عبارتند از:

  • :GPRMC زمان، تاریخ، عرض جغرافیایی، طول جغرافیایی، ارتفاع از سطح دریا و سرعت تخمینی را ارائه می‌کند.
  • GPGGA: داده‌ی لازم و تثبیت شده برای موقعیت سه بعدی و دقت داده را نشان می‌دهد.

بیایید یک مثال از  GPRMC-NMEA-sentence را از یک گیرنده‌ی جی پی اس باهم بررسی کنیم.

$GPRMC, 123519, A, 4807.038, N, 01131.000, E,022.4, 084.4, 230394, 003.1, W*6A

شروع NMEA – sentence $
سیستم داده‌ی عمومی تثبیت شده‌ی موقعیت یابیGlobal Positioning System Fix Data
زمان جاری در UTC
12:35:19
123519
A حالت فعال یا V حالت بی اثرA
عرض جغرافیایی 48deg 07.038′ N4807.038N
طول جغرافیایی 11deg 31.000′ E01131.000E
سرعت روی زمین با یکای knot022.4
زاویه دنبال کردن یکای درجه 084.4
تاریخ جاری: 22 مارس 2018220318
تغییرات مغناطیسی 003.1W
داده‌ی تشخیص صحت 6A*
داده‌ی تشخیص صحت در GPRMC همواره با کاراکتر * آغاز می‌شود.

حال بیایید یک مثال از NMEA-sentence-GPGGA را بررسی کنیم.

$GPGGA, 123519, 4807.038, N, 01131.000, E, 1, 08, 0.9, 545.4, M, 46.9, M, , *47

شروع NMEA – sentence $
سیستم داده‌ی عمومی تثبیت شده‌ی موقعیت یابیGlobal Positioning System Fix Data
زمان جاری در UTC
12:35:19
123519
عرض جغرافیایی 48deg 07.038′ N 4807.038N
طول جغرافیایی 11deg 31.000′ E 01131.000E
تثبیت جی پی اس1
تعداد ماهواره‌هایی که دنبال می‌شوند08
تضعیف افقی موقعیت 0.9
فاصله از سطح دریا با یکای متر 545.4M
میانیگین ارتفاع از سطح دریا46.9M
زمان سپری شده از آخرین به‌روزرسانی DGPSخالی
شماره ID ایستگاه DGPS خالی
داده تشخیص صحت 47*
داده‌ی تشخیص صحت در GPGGA همواره با کاراکتر * آغاز می‌شود.

کد آردوینو و کتابخانه TinyGPS برای راه اندازی ماژول GPS ublox NEO-6M

اغلب اوقات برای پروژه‌ها، به تفسیر sentence-NMEA یک داده‌ی مفید نیاز داریم. برای اینکه کارمان ساده‌تر شود، از کتابخانه‌ی ++TinyGPS استفاده می‌کنیم.  

این کتابخانه، بسیاری از عملیات‌های سنگین که برای دریافت داده از ماژول‌های جی پی اس لازم است، مانند خواندن و استخراج اطلاعات را انجام می‌دهد. بنابراین، نیازی نیست با فرایند تفسیر داده‌ها درگیر شوید.  

ابتدا با رفتن به GitHub repo کتابخانه را دانلود کنید یا اینکه بر روی لینک زیر کلیک کنید و کتابخانه را دریافت نمایید:


اما برای نصب این کتابخانه، برنامه‌ی آردوینو را باز کنید و از قسمت file، به مسیر زیر بروید.

Sketch > Include Library > Add .ZIP Library 

بعد از اینکه این مسیر را طی کردید، فایل زیپ TinyGPSPlus را که کمی قبل‌تر دانلود کردید، انتخاب کنید.

وقتی کتابخانه را نصب کردید، می‌توانید کد زیر را در نرم‌افزار آردوینو خود کپی کنید.

کد زیر اطلاعات موقعیت (شامل عرض و طول جغرافیایی و ارتفاع از سطح دریا) و زمان بین المللی UTC (شامل تاریخ و ساعت) را روی سریال مانیتور نشان می‌دهد.

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

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

// Choose two Arduino pins to use for software serial
int RXPin = 2;
int TXPin = 3;

int GPSBaud = 9600;

// Create a TinyGPS++ object
TinyGPSPlus gps;

// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  // Start the Arduino hardware serial port at 9600 baud
  Serial.begin(9600);

  // Start the software serial port at the GPS's default baud
  gpsSerial.begin(GPSBaud);
}

void loop()
{
  // This sketch displays information every time a new sentence is correctly encoded.
  while (gpsSerial.available() > 0)
    if (gps.encode(gpsSerial.read()))
      displayInfo();

  // If 5000 milliseconds pass and there are no characters coming in
  // over the software serial port, show a "No GPS detected" error
  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println("No GPS detected");
    while(true);
  }
}

void displayInfo()
{
  if (gps.location.isValid())
  {
    Serial.print("Latitude: ");
    Serial.println(gps.location.lat(), 6);
    Serial.print("Longitude: ");
    Serial.println(gps.location.lng(), 6);
    Serial.print("Altitude: ");
    Serial.println(gps.altitude.meters());
  }
  else
  {
    Serial.println("Location: Not Available");
  }
  
  Serial.print("Date: ");
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print("/");
    Serial.print(gps.date.day());
    Serial.print("/");
    Serial.println(gps.date.year());
  }
  else
  {
    Serial.println("Not Available");
  }

  Serial.print("Time: ");
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(":");
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(":");
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(".");
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.println(gps.time.centisecond());
  }
  else
  {
    Serial.println("Not Available");
  }

  Serial.println();
  Serial.println();
  delay(1000);
}

در تصویر زیر می‌توانید نتیجه‌ی کد بالا را روی سریال مانیتور ببینید.

خروجی کدی که اطلاعات موقعیت و زمان بین المللی UTC را بر روی سریال مانیتور نشان می‌دهد.

شرح قسمتهای مختلف کد:

و اما توضیحات کدی که در آردوینو آپلود کردیم.

همان‌طور که مشخص است کد با include کردن کتابخانه‌ی ++TinyGPS و کتابخانه‌ی ارتباط سریال نرم‌افزاری شروع می‌شود.

پس از این کار، ما پایه‌های آردوینو را که به ماژول متصل هستند، تعریف می‌کنیم. علاوه بر این، متغیری را تعریف می‌کنیم که مقدار پیش فرض بادریت جی پی اس را در خود ذخیره دارد.

در ادامه، ساختن شیء TinyGPSPlus به ما کمک می‌کند تا به توابع خاصی که مرتبط به کتابخانه‌ی ++TinyGPS هستند، دسترسی داشته باشیم.

در مرحله بعد، یک پورت سریال نرم‌افزاری به نام gpsSerial می‌سازیم که از طریق آن با ماژول ارتباط برقرار کنیم.

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

int RXPin = 2;
int TXPin = 3;
int GPSBaud = 9600;

TinyGPSPlus gps;
SoftwareSerial gpsSerial(RXPin, TXPin);

در تابع setup، باید ارتباط سریال میان کامپیوتر و ماژول جی پی اس را تنظیم و شروع کنیم.

void setup()
{
  Serial.begin(9600);
  gpsSerial.begin(GPSBaud);
}

در تابع ،loopتابع ()displayInfo را صدا می‌زنیم که اطلاعات مربوط به موقعیت (شامل طول و عرض جغرافیایی و ارتفاع از سطح دریا) و زمان بین‌المللی UTC (شامل تاریخ و ساعت) را روی سریال مانیتور نمایش می‌دهد. در واقع هر موقع که اطلاعات نمایش داده می‌شود، یک NMEA-Sentence جدید به‌طور صحیح کدگذاری می‌شود. اگر 5000 میلی ثانیه بگذرد و هیچ کاراکتری روی پورت سریال نرم‌افزاری دریافت نشود، خطای “No GPS detected” را نمایش می‌دهیم.

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

  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected"));
    while(true);
  }
}

توابع کاربردی دیگر در کتابخانه‌ی ++TinyGPS

تعدادی توابع کاربردی وجود دارند که شما می‌توانید با شیء ++TinyGPS از آن‌ها استفاده کنید. که برخی از آن‌ها در زیر لیست شده‌اند:

  • ()gps.speed.value : این تابع، سرعت حرکت روی زمین را بر حسب صدم knot برمی‌گرداند.
  • ()gps.course.value : این تابع، جهت حرکت روی زمین را بر حسب صدم درجه برمی‌گرداند.
  • ()gps.satellites.value : این تابع، تعداد ماهواره‌های قابل مشاهده‌ای را که در تشخیص موقعیت شرکت می‌کنند، برمی‌گرداند.
  • ()gps.hdop.value : این تابع، میزان کاهش دقت افقی را برمی‌گرداند.
  • اگر می‌خواهید مدت زمانی را که از انتشار یک داده گذشته است بدانید، متد ()age را فراخوانی کنید. این تابع مدت زمانی (برحسب میلی ثانیه) را که از آخرین به‌روزرسانی یک داده گذشته است، برمی‌گرداند. اگر این تابع مقداری بیشتر از 1500 برگرداند، ممکن است نشانه وجود مشکلی مانند عدم تثبیت باشد.
  • اگر می خواهید اطلاعات هر NMEA-Sentence دیگری را استخراج کنید، می‌توانید با ارائه‌ی نام و شماره‌ی Sentence مورد نظرتان به  ++TinyGPS از عملکرد مخصوص استخراج این کتابخانه استفاده کنید. روش این کار به صورت زیر می‌باشد:

TinyGPSCustom magneticVariation(gps, “GPRMC”, 10)

در ضمن، شما می‌توانید مانند بقیه توابع اطلاعات موردنظر خود را درخواست کنید:

()magneticVariation.value

نرم افزار U-center

نرم‌افزار U-center که از شرکت u-blox است، ابزاری قدرتمند برای سنجش، تحلیل عملکرد و کانفیگ کردن گیرنده‌های جی پی اس u-blox از جمله NEO-6M می‌باشد. با اینکه این نرم‌افزار رایگان است، اما تنها برای سیستم‌عامل ویندوز در دسترس قرار گرفته است.

این نرم‌افزار می‌تواند اطلاعات لحظه‌ای طبقه‌بندی شده و نمای گرافیکی به دست آمده از هر گیرنده‌ی جی پی اس را نمایش دهد. برخی از این گیرنده‌ها عبارت‌اند از:

  • نمای مختصر از ماهواره
  • نمای مختصر از موقعیت‌یابی
  • قطب نما، سرعت سنج، ارتفاع سنج
  • نموداری از هر دو متغیر مورد نظر
  • ذخیره سازی داده و عملکرد بازیابی

نرم افزار U-center از شرکت U-blox را می‌توانید از سایت همین شرکت دانلود کنید.

اتصال ماژول ublox NEO-6M به U-center

برای اینکه از نرم‌افزار U-center استفاده کنید باید با استفاده از مبدل USB به TTL، ماژول ublox NEO-6M خود را به کامپیوتر متصل کنید.

تصویر زیر ماژول متصل شده به کامپیوتر توسط مبدل USB به TTL PL2303 را نشان می‌دهد.

اتصال ماژول GPS ublox NEO-6M به  کامپیوتر به‌وسیله‌ی مبدل USB به TTL

استفاده از نرم افزار U-center

بعد از نصب موفق نرم افزار، می‌توانید آن را از مسیر Start Menu (All Programs -> u-blox-> u-center -> u-center) اجرا کنید و صفحه آغازین آن‌ را به شکل زیر ببینید.

صفحه آغازین نرم افزار U-center

نوار ابزار communication را در برنامه پیدا کنید و بر روی فلش کنار آیکون کلیک کنید. این کار، یک لیست از تمام پورت‌های COM قابل دسترسی را نمایش می‌دهد. پورت متناظر با جایی را که گیرنده متصل شده است، انتخاب کنید.

لیست پورت‌های قابل دسترس در نوار ابزار Communication

گزینه‌ی NMEA-Sentence ،Text-consoleها را به‌صورت خام نمایش می‌دهد. این کار برای وارسی سریع کدهای ASCII قابل مشاهده که با USB از ماژول دریافت می‌شود، مفید است.

نحوه عملکرد گزینه Text-console در نرم‌افزار

نرم افزار U-center می‌تواند موقعیت‌ها را روی نقشه‌های از پیش کالیبره شده یا نقشه‌های آنلاین Google نمایش دهد.

موقعیت‌های مختلف بر روی نقشه‌های از پیش کالیبره شده با نرم افزار U-center

حرف آخر

راه اندازی ماژول GPS ublox NEO-6M با آردوینو را باهم در این مقاله انجام دادیم. همان‌طور که قبلا هم گفتیم، برای اینکه بتوانید بیشتر با جی پی اس آشنا بشید و بتوانید پروژه‌های بیشتری را انجام دهید، حتما با این پروژه را اجرا کنید. اگر سوالی در این مورد داشتید هم می‌توانید برای ما بنویسید.

Tags: آردوینو

مقالات مشابه

۲۲ دیدگاه. Leave new

  • سلام
    من ميخوام داده هاي جي پي اس هر يك ثانيه نمايش داده بشه. از تابع delay كه قطعا نميشه استفاده كرد ولي از تابع millis هم كه استفاده ميكنم يا خطا در آپلود دارم يا جي پي اس مقداري نمايش نميده

    دليل بروز اين مشكل كتابخانه software serial هست كه نميدونم بايد چكار كنم

    پاسخ
    • سلام پوریای عزیز،
      کدی که قرار دادیم داده‌ها رو هر یک ثانیه یک بار نمایش میده و از delay استفاده می‌کنه.

      پاسخ
  • عالی بود

    پاسخ
  • سلام برای من مقادیر زیر رو پرینت میکنه مشکل کجاست (از کد دومی استفاده کردم)
    Location: Not Available
    Date: 0/0/2000
    Time: 00:00:00.00

    پاسخ
    • سلام حسین عزیز،
      اتصالات رو بررسی کن، ماژول رو در فضای آزاد و رو به آسمان تست کن و بعد از اتصال تغذیه حداقل ۱ دقیقه زمان بده تا موقعیتش رو فیکس کنه،
      می‌تونی با کد اول دیتای خام ارسالی از سمت ماژول رو بررسی کنی.
      مشاهده وضعیت LED روی برد هم می‌تونه به مانیتور کردن وضعیت عملکرد ماژول کمک کنه.

      پاسخ
  • سلام وقت بخیر من دو عدد از این ماژول دارم یکی رو مستقیم وصل کردم به آردوینو و هیچ تغییری در LED رخ نداد یعنی اصلا LED روشن نمیشه ماژول دوم هم مستقیم به منبع تغذیه وصل کردم بازهم هیچ اتفاقی نمیافته و LED خاموشه

    پاسخ
    • درود برشما حسین عزیز
      همانطور که داخل مقاله گفته شده، LED نشانگر ماژول تا زمانی که ماهواره‌ها را پیدا نکرده و موقعیتش تثبیت نشده، به شکل چشمک زن در نخواهد آمد. این پروسه ممکن است تا چند دقیقه هم طول بکشد و همچنین هنگام استفاده ماژول باید به سمت آسمان گرفته شود و زیر سقف و… نباشد تا ارتباط به درستی صورت گیرد.

      پاسخ
  • احسان زارعی
    خرداد ۱۹, ۱۴۰۲ ۱۸:۰۰

    سلام
    من می خوان با این ماژول یک نوع سنسور سرعت بسازم
    چه تابعی سرعت تخمینی از ماژول رو نمایش میده؟
    با تشکر بابت مطالب و سایت خوبتون

    پاسخ
  • خسته نباشید ، خواستم ببینم که میشه از این مدار برای ردیابی خودرو استفاده کرد؟

    و سرعت رو هم نشون میده یا نه؟

    پاسخ
    • ممنونیم ازت پارسای عزیز
      بله برای ردیابی خودرو هم قابل استفاده‌ست اما دقت کن که آنتن ماژول باید در موقعیت مناسبی قرار بگیره که بتونه امواج gps را به درستی دریافت کنه.

      پاسخ
  • سلام وقت بخیر
    من یه مشکلی دارم وقتی تمام مراحل رو انجام میدم تو سریال مانیتور اینو میاره :
    Location: Not Available
    Date : 18/7/2023
    Time: 20:18:21:00
    کد و کابل ها هم به درستی فعال شدند و چراغ چشمک زن GPS هم هر ۱ ثانیه کار میکنه .

    پاسخ
    • سلام و درود خدمت شما مهدی عزیز
      باتوجه به این‌که تاریخ و زمان رو دریافت می‌کنید ظاهراً مشکل سخت‌افزار یا نرم‌افزاری ندارید. بنابراین ممکنه مشکل از منطقه شما باشه و بهتره در یک منطقه متفاوت و حتماً در فضای باز، ماژول رو تست کنید.

      پاسخ
  • واقعا ممنون راهنماییتون خیلی کمکم کرد ماژولو به پشت بوم بردم کار کرد .
    پشتیبانی سایتتون خیلی عالیه .

    پاسخ
    • این خیلی عالیه، بهت تبریک میگیم بابت انجام این پروژه و گرفتن این نتیجه خوب، واقعا کارت حرف نداره
      بی‌شک اگر انگیزه و همراهی خودت نبود به این مرحله نمی‌رسیدی،
      ما هم ممنونیم ازت که برای ارتقای مهارت خودت سایت ما رو انتخاب کردی، این باعث افتخار ماست.

      پاسخ
    • سلام خسته نباشید ممنون از آموزش شما آگه خواسته باشم به ماژول sim 800c متصل شود از چه پایه های استفاده کنم برنامه هم بزارید

      پاسخ
  • سلام وقت بخیر
    من میخام با استفاده از این ماژول کلیومتر شمار ماشین بسازم که مسافت رو سنجش کنه این ماژول به درد میخوره ؟ و اینکه یه راهنمایی درمورد ساخت کلومتر شمار با اردیونو بسازم

    پاسخ
    • درود برشما مهدی عزیز
      بله. با دریافت latitude و longitude از ماژول GPS و انجام یکسری محاسبات این کار امکان‌پذیر هست. برای اطلاعات بیشتر لینک زیر رو مطالعه کنید:
      https://www.movable-type.co.uk/scripts/latlong.html
      روش دیگری که وجود داره سنجش سرعت لحظه‌ای و محاسبه مسافت با رابطه سرعت، زمان، مسافت هست.
      اما اگر الزامی به استفاده از ماژول GPS ندارید، بهینه‌ترین کار اینه که تعداد دور چرخش یکی از چرخ‌های خودرو را به دست بیارید (با یک آهن یا آهنربا و سنسور اثر هال به سادگی قابل پیاده‌سازی هست، اگر نیازه بیشتر توضیح بدم) و در محیط چرخ ضرب کنید تا مسافت به دست بیاد.

      پاسخ
      • سلام مارول کانفیت شده دارید برای فروش با تمام لوازم آمده نصب چند می شود؟

        پاسخ
        • سلام وقت بخیر
          این ماژول نیاز به کانفیگ خاصی ندارد و فقط نیاز به برنامه‌ریزی آردوینو هست که این کار جزو خدمات فروشگاه نیست.

          پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات