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

فهرست مطالب

ویژگی های ماژول مکان یاب GPS NEO-8M

ماژول موقعیت یاب GPS GY-NEO-8M، یک ماژول پیشرفته GPS با پشتیبانی از آنتن اکتیو و بر پایه uBlox M8N است. این ماژول دارای پروتکل ارتباطی UART می باشد که با استفاده از میکروکنترلر می‌توانید آن را راه اندازی کنید. این ماژول دارای باطری قابل شارژ بوده و همچنین می توان با استفاده از مبدل USB به TTL به صورت مستقیم آن را به کامپیوتر وصل کنید.

از ویژگی های این ماژول سرعت بالای دریافت اطلاعات و مکان یابی با دقت بسیار بالا و راه اندازی سریع می‌باشد. ماژول علاوه بر پشتیبانی از BeiDou, Galileo, GLONASS, GPS / QZSS، دارای حافظه داخلی به منظور ذخیره تنظیمات می باشد. NEO-8M با آردوینو سازگار بوده و قابل استفاده در هر پروژه ای می‌باشد

توجه

LED بر روی ماژول در زمان متصل شدن به ماهواره های موقعیت یاب شروع به چشمک زدن می کند.

جهت دریافت دیتاشیت ماژول مکان یاب NEO-8M اینجا کلیک کنید.

معرفی پایه ها (Pinout) ماژول مکان یاب GPS NEO-8M

ماژول NEO-8M دارای 4 پایه به شرح زیر است:

  • VIN: تغذیه ماژول – 5 ولت
  • GND: زمین
  • RX: دریافت اطلاعات از طریق پروتکل سریال
  • TX: ارسال اطلاعات از طریق پروتکل سریال

پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
ماژول مکان یاب GPS NEO-8M × 1
سیم جامپر × 1

نرم افزارهای مورد نیاز

آردوینو IDE

راه اندازی ماژول مکان یاب GPS NEO-8M با آردوینو

گام اول: سیم بندی

مطابق مدار زیر، ماژول را به آردوینو وصل کنید.

گام دوم: کد

ابتدا کتابخانه زیر را  بر آردوینوی خود نصب کنید. 

https://github.com/mikalhart/TinyGPSPlus

توجه

اگر نیاز به راهنمایی بیشتر برای نصب کتابخانه بر روی آردوینو دارید، می توانید به آموزش نصب کتابخانه بر آردوینو مراجعه کنید.

کد زیر را روی برد آردوینوی خود آپلود کنید.

 /*   
modified on Sep 27, 2020
Modified by MohammedDamirchi from https://github.com/mikalhart/TinyGPSPlus
Home
*/ #include <TinyGPS++.h> #include <SoftwareSerial.h> /* This sample demonstrates TinyGPS++'s capacity for extracting custom fields from any NMEA sentence. TinyGPS++ has built-in facilities for extracting latitude, longitude, altitude, etc., from the $GPGLL and $GPRMC sentences. But with the TinyGPSCustom type, you can extract other NMEA fields, even from non-standard NMEA sentences. It requires the use of SoftwareSerial, and assumes that you have a 9600-baud serial GPS device hooked up on pins 4(RX) and 3(TX). */ static const int RXPin = 4, TXPin = 3; static const uint32_t GPSBaud = 9600; // The TinyGPS++ object TinyGPSPlus gps; // The serial connection to the GPS device SoftwareSerial ss(RXPin, TXPin); /* By declaring TinyGPSCustom objects like this, we announce that we are interested in the 15th, 16th, and 17th fields in the $GPGSA sentence, respectively the PDOP (F("positional dilution of precision")), HDOP (F("horizontal...")), and VDOP (F("vertical...")). (Counting starts with the field immediately following the sentence name, i.e. $GPGSA. For more information on NMEA sentences, consult your GPS module's documentation and/or http://aprs.gids.nl/nmea/.) If your GPS module doesn't support the $GPGSA sentence, then you won't get any output from this program. */ TinyGPSCustom pdop(gps, "GNGLL", 1); // $GPGSA sentence, 15th element TinyGPSCustom hdop(gps, "GNGLL", 3); // $GPGSA sentence, 16th element void setup() { Serial.begin(115200); ss.begin(GPSBaud); Serial.println(F("UsingCustomFields.ino")); Serial.println(F("Demonstrating how to extract any NMEA field using TinyGPSCustom")); Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion()); Serial.println(F("by Mikal Hart")); Serial.println(); } void loop() { Serial.print(F(" LAT=")); Serial.print(atof(pdop.value())/100,7); Serial.print(F("\tLON=")); Serial.println(atof(hdop.value())/100,7); delay(100); while (ss.available() > 0) gps.encode(ss.read()); Serial.print(F(" Date/Time: ")); if (gps.date.isValid()) { Serial.print(gps.date.month()); Serial.print(F("/")); Serial.print(gps.date.day()); Serial.print(F("/")); Serial.print(gps.date.year()); } else { Serial.print(F("INVALID")); } Serial.print(F(" ")); if (gps.time.isValid()) { if (gps.time.hour() < 10) Serial.print(F("0")); Serial.print(gps.time.hour()); Serial.print(F(":")); if (gps.time.minute() < 10) Serial.print(F("0")); Serial.print(gps.time.minute()); Serial.print(F(":")); if (gps.time.second() < 10) Serial.print(F("0")); Serial.print(gps.time.second()); Serial.print(F(".")); if (gps.time.centisecond() < 10) Serial.print(F("0")); Serial.print(gps.time.centisecond()); } else { Serial.print(F("INVALID")); } Serial.println(); }

پس از آپلود کد سریال مانیتور دستگاه خود را باز کنید.

آموزش های مشابه

Comments (2)

  • امیرحسین Reply

    سلام، برای من خطای زیر رو میده:

    Date/Time: INVALID INVALID
    LAT=0.0000000 LON=0.0000000

    دسامبر 1, 2023 at 12:56 ب.ظ
    • محمد دمیرچی Reply

      با سلام،
      در صورت خطا گرفتن بر روی این ماژول امکان دارد لاین های دیتا را برعکس وصل کرده باشید.
      یک بار به صورت برعکس لاین های دیتا را وصل کنید و درصورتی که درست نشد، از روش های زیر استفاده کنید.
      در صورت داشتن برد آردوینو سری CH340 یا برد های ESP یا مبدل USB-TTL ماژول را به پایه های RX , TX این برد ها وصل کنید و (برای 2 مورد اول پایه EN یا Rst را به GND نیز وصل کنید) به سیستم وصل کنید و سریال مانیتور را باز کنید.
      در این زمان باید یکسری دیتا در سریال مانیتور نمایش داده شود، در صورتی که دیتا بهم ریخته بود بادریت را عوض کنید و درصورتی که دیتا نبود جای سیم ها را برعکس کنید.
      در صورتی که همچنان دیتا نداشتید امکان دارد مشکل از جای دیگری باشد
      در صورتی که با بادریت های دیگر دیتا دریافت کردید سیم کشی را به حالت قبلی برگردانید و در کد بادریت سمت این ماژول را درست کنید.

      دسامبر 2, 2023 at 9:52 ق.ظ

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

نشانی ایمیل شما منتشر نخواهد شد.