اگر به ساخت ردیاب، پهپاد، دیتالاگر مسیر یا حتی یک ساعت دقیق با آردوینو فکر کردهاید، اولین قطعهی فهرست خرید شما احتمالاً یک گیرندهی GPS است. ماژول u-blox NEO-6M-0-001 یکی از محبوبترین انتخابها برای شروع است: ارزان، فراوان، خوشمستند و بهاندازهی کافی دقیق. در این راهنما از صفر شروع میکنیم؛ ابتدا میبینیم گیرنده چطور موقعیت را پیدا میکند، بعد سختافزار و پینهای ماژول را میشناسیم، سیمکشی را انجام میدهیم و در نهایت با دو کد آماده به مختصات، سرعت و زمان دقیق میرسیم.
🎓 این مقاله برای چه کسی نوشته شده است؟
برای دانشجو، دانشآموز، سازندهی پروژههای DIY و هر کسی که میخواهد برای اولین بار یک ماژول GPS را راه بیندازد. فقط کافی است با آردوینو و محیط Arduino IDE آشنایی مقدماتی داشته باشید؛ بقیهی مسیر را قدمبهقدم پیش میبریم.
در این آموزش چه چیزهایی یاد میگیرید؟
- منطق کار GPS و مفهوم سهگانهسازی (Trilateration) بدون فرمولهای پیچیده
- شناخت تراشه، آنتن، باتری پشتیبان، حافظه و LED وضعیت روی برد
- سیمکشی صحیح ماژول به آردوینو UNO و رعایت نکتهی سطح ولتاژ در پایه RXD
- خواندن دادههای خام NMEA و درک معنی فیلدهای جملههای
$GPRMCو$GPGGA - استخراج عرض و طول جغرافیایی، ارتفاع، سرعت، تعداد ماهواره و زمان UTC با کتابخانه TinyGPS++
- پیکربندی ماژول با نرمافزار u-center و عیبیابی خطاهای رایج
🛰️ قبل از شروع، این را بدانید
GPS یک گیرندهی منفعل است؛ نه به اینترنت نیاز دارد و نه چیزی به ماهواره ارسال میکند. اما برای دیدن ماهواره باید «آسمان را ببیند». اگر ماژول را داخل اتاق، زیر میز یا داخل جعبهی فلزی تست کنید، احتمالاً هیچ موقعیتی دریافت نمیکنید — این خرابی نیست، محدودیت ذاتی امواج رادیویی است.
این مقاله بخشی از مجموعهی آموزشهای فنی وبلاگ پارس دیجیتال است. اگر بعد از مطالعه به قطعه یا ماژول دیگری نیاز داشتید، سری به فروشگاه تکنولوژی پارس دیجیتال بزنید.
GPS چگونه کار میکند؟
برخلاف تصور رایج، گیرندهی GPS هیچ سیگنالی به ماهواره نمیفرستد و ماهواره هم نمیداند شما کجا هستید. تمام کار در سمت گیرنده انجام میشود و تنها ورودی آن، سیگنالهای یکطرفهی ماهوارهها است. هر ماهواره بهطور مداوم دو اطلاعات کلیدی را پخش میکند: موقعیت دقیق خودش در مدار و زمان دقیق ارسال پیام. گیرنده با دانستن این دو، فاصلهی خود تا ماهواره را حساب میکند.
از تأخیر زمانی تا فاصله
سیگنال رادیویی با سرعت نور حرکت میکند؛ حدود ۳۰۰٬۰۰۰ کیلومتر بر ثانیه. اگر گیرنده بتواند اختلاف زمان ارسال و دریافت را با دقت نانوثانیه اندازه بگیرد، فاصله را از رابطهی سادهی «سرعت × زمان» به دست میآورد. به این ترتیب هر ماهواره یک کرهی فرضی دور گیرنده رسم میکند که شعاع آن، فاصلهی اندازهگیریشده است.
- با یک ماهواره، شما روی سطح یک کره هستید؛ هنوز موقعیت مشخص نیست.
- با دو ماهواره، محل تلاقی دو کره یک دایره میسازد.
- با سه ماهواره، دایره با کرهی سوم در دو نقطه قطع میشود؛ یکی از آنها معمولاً غیرمنطقی است.
- با چهار ماهواره، علاوه بر سه بُعد مکانی، خطای ساعت داخلی گیرنده هم حل میشود.
به همین دلیل است که میگویند برای موقعیت سهبعدی حداقل به چهار ماهواره نیاز دارید. در عمل، گیرندهها برای پایداری و کاهش خطا معمولاً با ۶ تا ۱۰ ماهواره کار میکنند. به این فرآیند سهگانهسازی میگویند؛ نه مثلثبندی. در مثلثبندی از زاویه استفاده میشود، اما در GPS از فاصله.
هر ماهواره یک دایرهی فاصله رسم میکند؛ محل تلاقی این دایرهها، موقعیت گیرنده روی زمین است.
Cold Start، Warm Start و Hot Start
ماژول برای محاسبهی موقعیت به دادههای مداری ماهوارهها (Ephemeris و Almanac) نیاز دارد. این دادهها از خود سیگنالها دریافت میشوند و نگهداشتنشان زمان میبرد. به همین دلیل، زمان رسیدن به اولین تثبیت موقعیت یا TTFF در سه حالت متفاوت است:
مقایسهی حالتهای شروع ماژول NEO-6M
| حالت | شرایط | زمان تقریبی TTFF |
|---|---|---|
| Cold Start | بدون دادهی قبلی؛ مثل اولین روشن شدن یا بعد از خالی شدن باتری پشتیبان | حدود ۲۷ ثانیه در فضای باز |
| Warm Start | دادهی تقویم مداری موجود است، اما موقعیت و زمان تقریبی بهروز نیست | حدود ۲۷ ثانیه (شرایط متوسط) |
| Hot Start | باتری پشتیبان سالم است و آخرین موقعیت و زمان ذخیره شدهاند | حدود ۱ ثانیه |
⏳ «چرا بار اول طول میکشد؟»
اگر ماژول تازه از کارتن درآمده یا مدت طولانی بدون تغذیه مانده باشد، در حالت Cold Start است. یک تا سه دقیقه صبر در فضای باز، کاملاً طبیعی است. بعد از اولین Fix، اگر باتری پشتیبان شارژ بماند، شروعهای بعدی بسیار سریعتر خواهند بود.
شناخت ماژول و اجزای آن
ماژولی که در این آموزش استفاده میکنیم، برد آمادهی GY-NEO6MV2 است که تراشهی NEO-6M شرکت سوئیسی u-blox را روی یک PCB کوچک با رگولاتور، حافظه، باتری و کانکتور آنتن قرار داده است. همین برد ساده، کار را برای آردوینو بسیار راحت میکند؛ چون تراشهی خام به ولتاژ ۳.۳ ولت، آنتن RF و مدارهای جانبی حساس نیاز دارد.
تراشهی NEO-6M؛ قلب ماژول
NEO-6M یک گیرندهی GPS تکسیستمی با ۵۰ کانال موازی است که روی باند L1 و فرکانس ۱۵۷۵.۴۲ مگاهرتز کار میکند. حساسیت ردیابی آن به -۱۶۱ دسیبلمیلیوات میرسد؛ عددی که در زمان معرفی این تراشه بسیار چشمگیر بود و هنوز هم برای پروژههای آموزشی و ردیابی عمومی کافی است. دقت افقی معمول آن ۲.۵ متر است و میتواند موقعیت را تا پنج بار در ثانیه بهروزرسانی کند.
- مصرف کم: حدود ۴۵ میلیآمپر در حالت عادی و حدود ۱۱ میلیآمپر در حالت ذخیرهی انرژی (PSM)
- پروتکلهای انعطافپذیر: NMEA 0183 برای خواندن ساده، UBX برای تنظیمات پیشرفته و RTCM برای کاربردهای دقیق
- AssistNow Autonomous: نگهداشتن دادههای مداری تا حدود سه روز برای شروع سریعتر
- محدودیتهای دینامیکی: ارتفاع تا ۵۰٬۰۰۰ متر، سرعت تا ۵۰۰ متر بر ثانیه و شتاب تا 4g
اجزای اصلی برد و مسیر سیگنال: آنتن وارد تراشه میشود، داده از UART خارج میشود و تغذیه توسط رگولاتور تأمین میگردد.
LED وضعیت؛ سادهترین ابزار عیبیابی
روی برد یک LED کوچک وجود دارد که وضعیت گیرنده را نشان میدهد. وقتی ماژول در حال جستجوی ماهواره است، LED خاموش میماند یا با ریتم نامنظم چشمک میزند. به محض اینکه موقعیت تثبیت شود، LED با فرکانس حدود یک هرتز (یک چشمک در ثانیه) شروع به چشمک زدن منظم میکند. این رفتار ساده، اولین چیزی است که در عیبیابی باید بررسی کنید.
اگر LED منظم چشمک میزند اما کد شما داده نشان نمیدهد، مشکل تقریباً همیشه در سیمکشی یا بادریت است، نه در ماهواره.
رگولاتور ۳.۳ ولت و نکتهی سطح ولتاژ
تراشهی NEO-6M حداکثر تا ۳.۶ ولت کار میکند، اما برد ماژول یک رگولاتور کمافت (معمولاً MIC5205 یا معادل آن) دارد که ورودی ۵ ولت آردوینو را به ۳.۳ ولت پایدار تبدیل میکند. بنابراین پایهی VCC را میتوانید با خیال راحت به ۵ ولت وصل کنید.
اما یک نکتهی مهم که در بسیاری از آموزشها نادیده گرفته میشود: سطح منطقی پایههای داده ۳.۳ ولت است. خروجی TXD ماژول (۳.۳ ولت) توسط آردوینو ۵ ولتی بهعنوان HIGH خوانده میشود و مشکلی ندارد. در جهت مقابل، پایهی RXD ماژول باید حداکثر ۳.۶ ولت ببیند. اتصال مستقیم پایهی D3 آردوینو (۵ ولت) به RXD در کوتاهمدت معمولاً کار میکند، اما برای پایداری بلندمدت بهتر است از یک مقسم مقاومتی ۱ کیلو/۲ کیلو یا مبدل سطح منطقی استفاده کنید.
⚠ هرگز ۵ ولت را به پایههای RX/TX تراشهی خام ندهید
این هشدار دربارهی تراشهی بدون برد است. اگر ماژول شما روی برد آماده با رگولاتور است، فقط پایهی VCC را به ۵ ولت بزنید و هرگز تغذیهی ۵ ولت را به پایههای داده تزریق نکنید. همچنین هرگز دو منبع تغذیه را همزمان به VCC وصل نکنید.
حافظه EEPROM و باتری پشتیبان
روی برد یک EEPROM سریال از نوع HK24C32 با ظرفیت ۴ کیلوبایت قرار دارد که از طریق I2C به تراشه متصل است. کنار آن، یک باتری سکهای قابل شارژ (معمولاً MS621FE) دیده میشود. این ترکیب، محتوای حافظهی BBR را نگه میدارد: آخرین موقعیت، زمان و تنظیمات مداری. نتیجهاش شروع سریعتر در دفعات بعدی است.
وقتی تغذیه وصل میشود، باتری بهآرامی شارژ میشود و میتواند اطلاعات را تا حدود دو هفته نگه دارد. اگر باتری خالی یا معیوب باشد، ماژول هر بار Cold Start میکند و زمان گرفتن Fix بیشتر میشود. این باتری برای ذخیرهسازی دائمی دادههای کاربردی طراحی نشده است؛ اگر میخواهید مسیر را ذخیره کنید، از حافظهی SD یا EEPROM آردوینو استفاده کنید.
آنتن و کانکتور U.FL
بستهی ماژول معمولاً شامل یک آنتن پچ سرامیکی ۲۵×۲۵ میلیمتری با حساسیت -۱۶۱ دسیبل است که با کابل به کانکتور U.FL روی برد وصل میشود. آنتن باید رو به آسمان باشد؛ سطح سرامیکی معمولاً سمت بالاست و صفحهی فلزی پشت آن، نقش زمین را بازی میکند.
کانکتور U.FL بسیار ظریف است و تحمل کشش ندارد. قبل از اتصال، کابل را از یکی از سوراخهای کناری برد عبور دهید تا فشار مکانیکی روی کانکتور نیفتد. اگر ماژول را داخل جعبهی فلزی میگذارید، حتماً آنتن را بیرون جعبه و با کابل مناسب نصب کنید. برای افزایش حساسیت میتوانید از آنتن اکتیو ۳ ولت با کانکتور U.FL استفاده کنید؛ ماژول تغذیهی بایاس آنتن را فراهم میکند.
![]() نمای برد و تراشه | ![]() آنتن پچ و کابل U.FL | ![]() پینهای تغذیه و UART |
🛒 ماژول اصل را با اطمینان تهیه کنید
بردهای ارزانقیمت بازار گاهی تراشهی بازسازیشده یا آنتن بیکیفیت دارند. ماژول NEO-6M-0-001 پارس دیجیتال با ضمانت اصالت و دیتاشیت رسمی عرضه میشود.
پیناوت و مشخصات فنی
برد ماژول فقط چهار پایهی کاربردی دارد و همین سادگی، کار با آن را برای مبتدیها ایدهآل میکند. با این حال، ترتیب قرار گرفتن پینها در نسخههای مختلف برد ممکن است متفاوت باشد؛ همیشه برچسب سفید روی PCB را مبنا بگیرید و به ترتیب ظاهری اعتماد نکنید.
چهار پین اصلی ماژول. نام پایهها روی برد چاپ شده است؛ قبل از سیمکشی آن را با ذرهبین یا دوربین گوشی بخوانید.
راهنمای اتصال پینهای ماژول به آردوینو UNO
| پین ماژول | نوع | اتصال به آردوینو | توضیح |
|---|---|---|---|
VCC | ورودی تغذیه | 5V | رگولاتور داخلی، ولتاژ را به ۳.۳ ولت تبدیل میکند |
RXD | ورودی داده | D3 | فرمانها از آردوینو به ماژول میروند (سطح ۳.۳ ولت) |
TXD | خروجی داده | D2 | دادهی NMEA از ماژول به آردوینو میآید |
GND | زمین | GND | زمین مشترک الزامی است |
🔁 منطق کراسشدن TX و RX
در ارتباط سریال، خروجی یک طرف به ورودی طرف دیگر میرود. پس TXD ماژول به پین RX آردوینو (در کد ما D2) و RXD ماژول به پین TX آردوینو (D3) وصل میشود. اگر این دو را جابهجا ببندید، ماژول روشن میشود ولی هیچ دادهای دریافت نمیکنید.
جدول مشخصات کامل
مشخصات فنی تراشه و برد NEO-6M
| پارامتر | مقدار |
|---|---|
| تراشه | u-blox NEO-6M-0-001 |
| کانالهای دریافت | ۵۰ کانال موازی |
| فرکانس کاری | GPS L1، ۱۵۷۵.۴۲ مگاهرتز |
| دقت افقی | ۲.۵ متر (CEP 50%) |
| حساسیت | -۱۶۱ dBm در حالت ردیابی، -۱۴۷ dBm در شروع سرد |
| نرخ بهروزرسانی | ۱ هرتز پیشفرض، تا ۵ هرتز |
| زمان تثبیت اولیه | Hot حدود ۱ ثانیه، Cold حدود ۲۷ ثانیه |
| ولتاژ تراشه | ۲.۷ تا ۳.۶ ولت |
| ولتاژ برد | ۳.۳ تا ۵ ولت (به لطف رگولاتور) |
| جریان مصرفی | حدود ۴۵ میلیآمپر؛ حدود ۱۱ میلیآمپر در PSM |
| رابطها | UART، USB، SPI و DDC (I2C) |
| پروتکلها | NMEA 0183، UBX و RTCM |
| بادریت پیشفرض | ۹۶۰۰ bps (قابل تنظیم تا ۲۳۰۴۰۰) |
| آنتن | کانکتور U.FL، آنتن پچ اکتیو یا پسیو |
| ابعاد تراشه | ۱۶ × ۱۲.۲ × ۲.۴ میلیمتر (بستهبندی LCC) |
| دمای کاری | -۴۰ تا ۸۵ درجه سانتیگراد |
برای مطالعهی دقیقتر، فایل دیتاشیت NEO-6M را از صفحه محصول پارس دیجیتال دانلود کنید.
قطعات لازم و سیمکشی
برای این آموزش به یک آردوینو UNO (یا Nano)، ماژول NEO-6M، چند سیم جامپر و یک کابل USB نیاز دارید. بردبورد اختیاری است اما کار را مرتبتر میکند. اگر میخواهید اتصال پایهی RXD را استاندارد انجام دهید، دو مقاومت ۱ کیلواهم و ۲ کیلواهم هم کنار بگذارید.
- ماژول GPS u-blox NEO-6M-0-001
- برد آردوینو UNO R3 یا Nano
- بردبورد کوچک و سیم جامپر
- کابل USB مناسب برد آردوینو
- مقاومت ۱k و ۲k (اختیاری، برای RXD)
- آنتن پچ با کابل U.FL (همراه ماژول)
مراحل اتصال
- آنتن را وصل کنید کابل U.FL را با احتیاط به کانکتور برد بزنید. قبل از آن، کابل را از سوراخ کناری برد عبور دهید تا فشار روی کانکتور نیفتد.
- تغذیه را برقرار کنید پایه VCC ماژول را به 5V آردوینو و GND را به GND وصل کنید. LED برد باید روشن شود.
- خط دادهی ماژول به آردوینو پایه TXD ماژول را به D2 آردوینو وصل کنید. این خط، دادههای NMEA را به آردوینو میآورد.
- خط فرمان آردوینو به ماژول پایه RXD ماژول را به D3 وصل کنید. برای پایداری بلندمدت، مقسم ۱k/۲k را بین D3 و RXD قرار دهید.
- اتصال را بررسی کنید GND مشترک را فراموش نکنید؛ بدون زمین مشترک، ارتباط سریال برقرار نمیشود. سپس ماژول را در فضای باز و رو به آسمان قرار دهید.
- کابل USB را وصل کنید برد را به کامپیوتر بزنید و منتظر شناسایی پورت COM بمانید. اگر برد کلون است، ممکن است به درایور CH340 نیاز داشته باشید.
اتصال چهار سیمهی ماژول به آردوینو. توجه کنید که TXD ماژول به D2 و RXD ماژول به D3 میرود.
⚡ دو اشتباه پرهزینه
اول: وصل کردن TXD و RXD بهصورت مستقیم به پینهای ۰ و ۱ آردوینو. این پینها به USB و آپلود کد مربوطاند و باعث خطای آپلود میشوند؛ به همین دلیل از D2 و D3 استفاده میکنیم. دوم: روشن کردن ماژول بدون آنتن برای مدت طولانی؛ هرچند آنتننداشتن معمولاً به تراشه آسیب نمیزند، اما دریافت سیگنال تقریباً صفر میشود و شما را بیدلیل سردرگم میکند.
نکتهی تغذیه و نویز
ماژول جریان کمی میکشد، اما به نویز تغذیه حساس است. اگر از آردوینو با USB کامپیوتر تغذیه میکنید، معمولاً مشکلی نیست. در پروژههای خودرویی یا صنعتی، از یک رگولاتور ۵ ولت با خازنهای فیلتر استفاده کنید و سیم تغذیه را از سیمهای موتور و رله دور نگه دارید. سیمهای طولانی و بدون شیلد نیز میتوانند کیفیت سیگنال و ارتباط را کاهش دهند.
نصب کتابخانه TinyGPS++
دادههای خام GPS متنی و پر از فیلدهای تکراریاند. برای اینکه خودتان درگیر تجزیهی رشتهها نشوید، از کتابخانهی محبوب TinyGPS++ نوشتهی Mikal Hart استفاده میکنیم. این کتابخانه دادههای NMEA را میخواند، اعتبار آنها را بررسی میکند و مقادیری مثل عرض جغرافیایی، ارتفاع، سرعت و زمان را در اختیار شما میگذارد.
روش اول: Library Manager
- Arduino IDE را باز کنید نسخهی ۲.x یا جدیدتر پیشنهاد میشود.
- مدیر کتابخانه را باز کنید از منوی
Sketch ← Include Library ← Manage Librariesیا آیکون کتاب در نوار کناری. - جستجو و نصب عبارت
TinyGPSPlusرا جستجو کنید، گزینهی ساختهی Mikal Hart را انتخاب و Install را بزنید. - از نصب مطمئن شوید در کد، خط
#include <TinyGPSPlus.h>باید بدون خطا کامپایل شود.
روش دوم: نصب از فایل ZIP
اگر کامپیوتر شما به اینترنت دسترسی ندارد یا نسخهی خاصی را میخواهید، کتابخانه را از مخزن GitHub پروژه دانلود کنید و از مسیر Sketch ← Include Library ← Add .ZIP Library فایل ZIP را انتخاب کنید. بعد از نصب، IDE را یکبار ببندید و دوباره باز کنید.
📚 کدام کتابخانه را انتخاب کنیم؟
کتابخانههای قدیمیتر مثل TinyGPS هنوز کار میکنند، اما TinyGPSPlus رابط تمیزتر، پشتیبانی از جملههای سفارشی و مدیریت بهتر خطا دارد. برای پروژههای جدید همان TinyGPSPlus را انتخاب کنید.
در ادامه دو کد داریم: کد اول فقط دادهی خام را نمایش میدهد تا مطمئن شویم سختافزار درست کار میکند؛ کد دوم با TinyGPS++ مقادیر قابل استفاده تولید میکند. توصیه میکنیم هر دو را به ترتیب اجرا کنید.
کد ۱: خواندن دادهی خام GPS
اولین قدم همیشه این است که ببینیم ماژول اصلاً حرف میزند یا نه. در این مرحله آردوینو را به یک پل ساده تبدیل میکنیم: هر بایتی که از ماژول میرسد را مستقیم به USB و سریال مانیتور میفرستیم. هیچ کتابخانهای لازم نیست و فقط پورت سریال نرمافزاری کافی است.
raw_nmea.ino
#include <SoftwareSerial.h>
// TXD ماژول به D2 و RXD ماژول به D3 وصل میشود
const int GPS_RX_PIN = 2;
const int GPS_TX_PIN = 3;
const long GPS_BAUD = 9600; // بادریت پیشفرض NEO-6M
SoftwareSerial gpsPort(GPS_RX_PIN, GPS_TX_PIN);
void setup() {
Serial.begin(9600); // ارتباط با کامپیوتر
gpsPort.begin(GPS_BAUD); // ارتباط با ماژول GPS
Serial.println(F("NEO-6M raw NMEA bridge ready"));
}
void loop() {
// هر بایت دریافتی را بدون تغییر به سریال مانیتور بفرست
while (gpsPort.available() > 0) {
char c = gpsPort.read();
Serial.write(c);
}
}بادریت هر دو پورت ۹۶۰۰ است. در سریال مانیتور هم ۹۶۰۰ را انتخاب کنید؛ در غیر این صورت کاراکترهای نامفهوم میبینید.
اجرای کد و انتظار چه چیزی
- کد را آپلود کنید برد و پورت صحیح را انتخاب کنید. اگر پورت COM دیده نمیشود، درایور USB برد را نصب کنید.
- سریال مانیتور را باز کنید بادریت را روی
9600بگذارید و ماژول را در فضای باز قرار دهید. - چند ثانیه صبر کنید در ابتدا ممکن است فقط باینریهای عجیب یا جملههای ناقص ببینید. این طبیعی است؛ ماژول در حال پیدا کردن ماهواره است.
- به دنبال GGA و RMC بگردید وقتی خطوطی شروع شدند با
$GPGGAیا$GPRMC، مسیر درست است.
نمونه خروجی سریال
$GPGGA,081437.00,3541.3520,N,05123.3425,E,1,08,0.92,1187.4,M,-20.5,M,,*45
$GPRMC,081437.00,A,3541.3520,N,05123.3425,E,0.18,84.2,021126,,,A*54
$GPGSA,A,3,12,15,18,24,25,29,31,32,,,,,1.42,0.92,1.08*00
$GPGSV,3,1,11,12,48,073,42,15,31,221,38,18,62,312,45,24,12,155,33*7Aاین خروجی نمونه است؛ اعداد واقعی به موقعیت جغرافیایی، زمان و تعداد ماهوارههای قابل مشاهده بستگی دارد.
🧩 اگر هیچ دادهای نیامد
سه چیز را به ترتیب بررسی کنید: (۱) بادریت ۹۶۰۰ باشد، (۲) TXD ماژول واقعاً به D2 رفته باشد و GND مشترک باشد، (۳) LED ماژول روشن باشد. اگر LED خاموش است، مشکل تغذیه است؛ اگر روشن است ولی داده نمیآید، مشکل سیم داده یا بادریت است. در بخش عیبیابی جدول کامل را آوردهایم.
تحلیل جملههای NMEA
NMEA 0183 یک استاندارد متنی برای تبادل دادههای دریایی و موقعیتیابی است. هر خط داده که با $ شروع میشود، یک جمله (Sentence) نام دارد و فیلدهای آن با کاما از هم جدا شدهاند. این ساختار ساده، خواندنش را برای انسان و میکروکنترلر آسان میکند. ماژول NEO-6M بهطور پیشفرض چند جملهی مختلف را با نرخ یک هرتز ارسال میکند.
هر فیلد جملهی GPRMC چه معنایی دارد. چکسام در انتهای خط، صحت داده را تأیید میکند.
جملهی $GPRMC
این جمله مهمترین دادههای ناوبری را دارد: زمان، تاریخ، موقعیت، سرعت و جهت حرکت. حرف A بعد از زمان یعنی داده معتبر است و V یعنی داده هنوز معتبر نیست (Void). اگر سرعت صفر و جهت خالی باشد، معمولاً یعنی گیرنده ثابت است یا هنوز حرکت واقعی را تشخیص نداده است.
فیلدهای نمونه جمله $GPRMC
| نمونه | معنی |
|---|---|
$GPRMC | شناسهی جمله؛ GP یعنی GPS و RMC یعنی Recommended Minimum Navigation Information |
123519 | زمان UTC به شکل ساعتدقیقهثانیه; یعنی ۱۲:۳۵:۱۹ |
A | وضعیت داده: A معتبر، V بیاعتبار |
4807.038,N | عرض جغرافیایی ۴۸ درجه و ۰۷.۰۳۸ دقیقه شمالی |
01131.000,E | طول جغرافیایی ۱۱ درجه و ۳۱.۰۰۰ دقیقه شرقی |
022.4 | سرعت روی زمین بر حسب گره (هر گره ≈ ۱.۸۵۲ کیلومتر بر ساعت) |
084.4 | جهت حرکت نسبت به شمال، بر حسب درجه |
230394 | تاریخ: ۲۳ مارس ۱۹۹۴ |
003.1,W | میل مغناطیسی و جهت آن |
*6A | چکسام؛ نتیجهی XOR کاراکترهای بین $ و * |
جملهی $GPGGA
GGA دادههای تثبیت موقعیت سهبعدی را میدهد: کیفیت Fix، تعداد ماهوارهها، مقدار HDOP و ارتفاع. این جمله برای تشخیص «آیا موقعیت قابل اعتماد است؟» بسیار کاربردیتر از RMC است.
$GPGGA
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47ترتیب فیلدها: زمان، عرض، شمال/جنوب، طول، شرق/غرب، کیفیت Fix، تعداد ماهواره، HDOP، ارتفاع، واحد، جدایی ژئوئید، واحد، سن DGPS، شناسه ایستگاه، چکسام.
مقدار کیفیت Fix در جمله GGA
| مقدار | معنی |
|---|---|
0 | بدون Fix؛ داده معتبر نیست |
1 | Fix معمولی GPS |
2 | DGPS؛ دقت بهبودیافته با ایستگاه مرجع |
4 | RTK Fix؛ دقت سانتیمتری (در NEO-6M معمول نیست) |
5 | RTK Float |
عدد HDOP هرچه کوچکتر باشد بهتر است: زیر ۱ عالی، بین ۱ تا ۲ خوب و بالای ۲ نشانهی هندسهی ضعیف ماهوارهها یا محیط شهری است. تعداد ماهوارهی ۸ تا ۱۲ در فضای باز طبیعی است. عدد ارتفاع هم نسبت به سطح دریا است و ممکن است با ارتفاع نقشههای محلی چند متر اختلاف داشته باشد.
💡 نرخ ارسال را مدیریت کنید
در حالت پیشفرض ۱ هرتز، حجم داده برای سریال نرمافزاری آردوینو کاملاً قابل مدیریت است. اگر نرخ را به ۵ هرتز افزایش دهید، حجم جملهها زیاد میشود و ممکن است بافر نرمافزاری پر شود. در این حالت یا جملههای غیرضروری (مثل GSV) را غیرفعال کنید یا از پورت سریال سختافزاری بردهایی مثل Mega و Leonardo استفاده کنید.
کد ۲: دریافت مختصات با TinyGPS++
حالا نوبت کد اصلی است. این برنامه دادهها را میخواند، اعتبار آنها را بررسی میکند و هر یک ثانیه یک گزارش خوانا روی سریال مانیتور چاپ میکند. از delay() استفاده نمیکنیم تا حلقهی اصلی همیشه در حال خواندن بایتهای ورودی باشد؛ این نکته در نرخهای بالاتر و پروژههای واقعی اهمیت زیادی دارد.
gps_neo6m.ino
#include <TinyGPSPlus.h>
#include <SoftwareSerial.h>
const int GPS_RX_PIN = 2; // TXD ماژول
const int GPS_TX_PIN = 3; // RXD ماژول
const long GPS_BAUD = 9600;
TinyGPSPlus gps;
SoftwareSerial gpsPort(GPS_RX_PIN, GPS_TX_PIN);
unsigned long lastPrint = 0;
bool warned = false;
void setup() {
Serial.begin(115200); // سریال مانیتور
gpsPort.begin(GPS_BAUD); // سریال ماژول
Serial.println(F("Pars Digital | NEO-6M GPS"));
Serial.println(F("Waiting for satellites..."));
}
void loop() {
// هر کاراکتر باید به کتابخانه داده شود
while (gpsPort.available() > 0) {
gps.encode(gpsPort.read());
}
// هر ۱۰۰۰ میلیثانیه یک گزارش، بدون توقف حلقه
if (millis() - lastPrint >= 1000) {
lastPrint = millis();
printStatus();
}
// اگر بعد از ۸ ثانیه هیچ کاراکتری نیامده باشد (فقط یکبار هشدار میدهیم)
if (!warned && millis() > 8000 && gps.charsProcessed() < 10) {
warned = true;
Serial.println(F("No GPS data: check TXD->D2, GND and baud rate."));
}
}
void printStatus() {
Serial.print(F("Fix: "));
Serial.println(gps.location.isValid() ? F("YES") : F("NO"));
Serial.print(F("Lat: "));
if (gps.location.isValid()) Serial.print(gps.location.lat(), 6);
else Serial.print(F("--"));
Serial.println();
Serial.print(F("Lng: "));
if (gps.location.isValid()) Serial.print(gps.location.lng(), 6);
else Serial.print(F("--"));
Serial.println();
Serial.print(F("Altitude: "));
Serial.print(gps.altitude.meters(), 1);
Serial.println(F(" m"));
Serial.print(F("Speed: "));
Serial.print(gps.speed.kmph(), 1);
Serial.println(F(" km/h"));
Serial.print(F("Course: "));
Serial.print(gps.course.deg(), 1);
Serial.println(F(" deg"));
Serial.print(F("Satellites: "));
Serial.println(gps.satellites.value());
Serial.print(F("HDOP: "));
Serial.println(gps.hdop.hdop(), 2);
Serial.print(F("Date: "));
if (gps.date.isValid()) {
Serial.print(gps.date.day());
Serial.print('/');
Serial.print(gps.date.month());
Serial.print('/');
Serial.print(gps.date.year());
} else {
Serial.print(F("--/--/----"));
}
Serial.println();
Serial.print(F("Time UTC: "));
if (gps.time.isValid()) {
print2(gps.time.hour()); Serial.print(':');
print2(gps.time.minute()); Serial.print(':');
print2(gps.time.second());
} else {
Serial.print(F("--:--:--"));
}
Serial.println();
Serial.print(F("Data age: "));
Serial.print(gps.location.age());
Serial.println(F(" ms"));
Serial.println(F("------------------------------"));
}
void print2(int value) {
if (value < 10) Serial.print('0');
Serial.print(value);
}اگر برد شما چند پورت سختافزاری دارد (مثل Mega یا Leonardo)، بهجای SoftwareSerial از Serial1 استفاده کنید و پینهای ۱۹ و ۱۸ را برای TX/RX در نظر بگیرید.
خروجی نمونه
Serial Monitor · 115200
Pars Digital | NEO-6M GPS
Waiting for satellites...
Fix: NO
Lat: --
Lng: --
Altitude: 0.0 m
Speed: 0.0 km/h
Satellites: 0
HDOP: 0.00
Date: --/--/----
Time UTC: --:--:--
Data age: 4294967295 ms
------------------------------
Fix: YES
Lat: 35.689198
Lng: 51.389042
Altitude: 1210.4 m
Speed: 0.2 km/h
Course: 0.0 deg
Satellites: 8
HDOP: 0.92
Date: 2/11/2026
Time UTC: 08:14:37
Data age: 980 ms
------------------------------تا قبل از اولین Fix، مقدار age ممکن است عددی بسیار بزرگ باشد؛ این طبیعی است و به معنی معتبر نبودن داده است.
کد چطور کار میکند؟
- ساخت شیء:
TinyGPSPlus gps;یک پردازشگر میسازد که با هر کاراکتر ورودی تغذیه میشود و جملههای کامل را تشخیص میدهد. - تغذیهی کاراکتری:
gps.encode(gpsPort.read())باید برای تکتک بایتها صدا زده شود؛ اگر بخشی از داده را دور بریزید، جمله ناقص میشود. - زمانبندی غیرمسدودکننده: بهجای
delay(1000)از اختلافmillis()استفاده کردهایم تا خواندن داده در فاصلهی چاپها متوقف نشود. - بررسی اعتبار: هر مقدار یک متد
isValid()دارد. تا وقتی Fix نشده باشد، مختصات را نمایش نمیدهیم تا دادهی بیمعنی به پروژه ندهیم. - تشخیص قطعی: اگر
charsProcessed()بعد از چند ثانیه هنوز نزدیک صفر باشد، یعنی هیچ کاراکتری از ماژول نرسیده است.
توابع پرکاربرد TinyGPS++
مهمترین مقادیری که از کتابخانه میگیرید
| کد | خروجی |
|---|---|
gps.location.lat() | عرض جغرافیایی با ۶ رقم اعشار |
gps.location.lng() | طول جغرافیایی با ۶ رقم اعشار |
gps.altitude.meters() | ارتفاع از سطح دریا به متر |
gps.speed.kmph() | سرعت به کیلومتر بر ساعت |
gps.course.deg() | جهت حرکت نسبت به شمال |
gps.satellites.value() | تعداد ماهوارههای درگیر در Fix |
gps.hdop.hdop() | شاخص کاهش دقت افقی |
gps.location.age() | مدت زمان گذشته از آخرین بهروزرسانی (میلیثانیه) |
gps.charsProcessed() | تعداد کاراکترهای پردازششده؛ برای تشخیص قطعی اتصال |
gps.date و gps.time | تاریخ و ساعت UTC بهصورت فیلدهای جداگانه |
TinyGPSCustom | استخراج مستقیم یک فیلد از هر جملهی دلخواه NMEA |
🕒 تبدیل زمان UTC به وقت محلی
ماژول همیشه زمان UTC میدهد. برای نمایش ساعت تهران، سه ساعت و نیم به آن اضافه کنید (UTC+3:30). اگر پروژهتان ساعت محلی و تغییرات daylight saving ندارد، همین جمع ساده کافی است؛ برای پروژههای دقیقتر، زمان را از ماژول بگیرید و با منطقهی زمانی محلی مدیریت کنید.
تنظیمات پیشرفته با u-center
وقتی مطمئن شدید ماژول درست کار میکند، میتوانید با نرمافزار رایگان u-center از شرکت u-blox تنظیمات عمیقتر را تغییر دهید: بادریت، نرخ بهروزرسانی، فعال یا غیرفعال کردن جملههای NMEA و مشاهدهی گرافیکی ماهوارهها. این نرمافزار فقط برای ویندوز ارائه شده است و از سایت رسمی u-blox قابل دانلود است.
اتصال ماژول به کامپیوتر
برای این کار به یک مبدل USB به TTL (مثل CH340، CP2102 یا PL2303) نیاز دارید. ماژول را مستقیم به USB کامپیوتر نزنید؛ پایههای آن USB نیستند (البته تراشه USB دارد، اما روی این برد معمولاً به کانکتور دسترسی ندارید). سیمکشی مبدل به ماژول به این شکل است:
اتصال ماژول به مبدل USB-TTL برای u-center
| مبدل USB-TTL | ماژول NEO-6M | نکته |
|---|---|---|
TX | RXD | داده از کامپیوتر به ماژول |
RX | TXD | داده از ماژول به کامپیوتر |
GND | GND | زمین مشترک الزامی |
5V یا 3.3V | VCC | اگر مبدل خروجی ۵ ولت دارد، به VCC برد بدهید |
🔌 قبل از باز کردن پورت، اتصال را چک کنید
اگر TX و RX را جابهجا ببندید، نرمافزار پورت را باز میکند اما هیچ دادهای نمیبیند. اگر مبدل شما فقط ۳.۳ ولت میدهد، ماژول کار میکند اما آنتن اکتیو ممکن است تغذیهی کافی نداشته باشد. در نهایت، هرگز همزمان آردوینو و مبدل USB-TTL را به پینهای داده ماژول وصل نکنید.
کار با نرمافزار
- پورت را انتخاب کنید در نوار ابزار Communication، فلش کنار آیکون را بزنید و پورت COM مبدل را انتخاب کنید. بادریت پیشفرض ۹۶۰۰ است.
- داده را ببینید در پنجرهی Text Console جملههای NMEA بهصورت خام نمایش داده میشوند. اگر کاراکترهای عجیب دیدید، بادریت را تغییر دهید.
- ماهوارهها را ببینید در بخش Satellite View، آسمان و موقعیت ماهوارهها با رنگ و شماره نمایش داده میشود. سبز بودن میلهها یعنی سیگنال دریافت شده است.
- موقعیت را روی نقشه ببینید بعد از Fix، نمای Map موقعیت را روی نقشهی آنلاین یا نقشهی کالیبرهشده نشان میدهد.
- تنظیمات را تغییر دهید از منوی View به Configuration بروید؛ میتوانید نرخ بهروزرسانی را به ۵ هرتز، بادریت را به ۱۱۵۲۰۰ و جملههای غیرضروری را غیرفعال کنید.
- ذخیره کنید تغییرات را در حافظهی ماژول ذخیره کنید تا بعد از قطع تغذیه باقی بمانند. سپس بادریت کد آردوینو را با بادریت جدید هماهنگ کنید.
🧠 تغییر بادریت را فراموش نکنید
اگر در u-center بادریت را به ۱۱۵۲۰۰ تغییر دهید و ذخیره کنید، کد آردوینو با ۹۶۰۰ دیگر داده نمیخواند. همیشه بعد از تغییر تنظیمات، مقدار GPS_BAUD را در کد بهروز کنید یا با u-center به حالت قبلی برگردید.
عیبیابی و گرفتن Fix
بیشتر مشکلات GPS در همان دقیقهی اول خودشان را نشان میدهند و تقریباً همیشه یکی از این سه دستهاند: تغذیه، سیمکشی داده یا محل نصب. جدول زیر بر اساس تجربهی پشتیبانی پارس دیجیتال تنظیم شده است.
عیبیابی سریع مشکلات رایج NEO-6M
| نشانه | علت احتمالی | راهحل |
|---|---|---|
| LED ماژول اصلاً روشن نمیشود | تغذیه قطع است یا GND وصل نیست | VCC را به 5V و GND را به GND بزنید؛ با مولتیمتر ولتاژ ۳.۳ ولت روی برد را چک کنید |
| LED روشن است اما هیچ دادهای نمیآید | TXD و RXD جابهجا شده یا بادریت اشتباه است | TXD ماژول را به D2 و RXD را به D3 وصل کنید؛ بادریت را ۹۶۰۰ بگذارید |
| کاراکترهای نامفهوم روی سریال | عدم تطابق بادریت سریال مانیتور و کد | هر دو را روی یک عدد (معمولاً ۹۶۰۰) تنظیم کنید |
مقدار Location: Not Available برای مدت طولانی | عدم دید آسمان یا Cold Start | ماژول را در فضای باز و رو به آسمان بگذارید و ۱ تا ۳ دقیقه صبر کنید |
| Fix میشود اما مختصات میپرد | HDOP بالا، محیط شهری یا آنتن ضعیف | آنتن را بالاتر ببرید؛ دادههای با HDOP بالای ۲ را فیلتر کنید |
| تاریخ ۲۰۰۰ و ساعت ۰۰:۰۰ | هنوز Fix نشده است | زمان و تاریخ فقط بعد از دریافت اولین Fix معتبر میشوند |
| کد آپلود نمیشود | استفاده از پینهای ۰ و ۱ یا اشغال پورت | از D2 و D3 استفاده کنید؛ هنگام آپلود ماژول را از پینهای داده جدا کنید |
| بعد از چند دقیقه ارتباط قطع میشود | افت ولتاژ USB یا سیمهای بلند | تغذیهی پایدار ۵ ولت با خازن و سیم کوتاه استفاده کنید |
| LED چشمک منظم دارد ولی کد داده ندارد | مشکل فقط در مسیر داده است | سیم TXD، پین D2 و GND مشترک را دوباره بررسی کنید |
محل نصب، بیشتر از هر تنظیمی روی کیفیت دریافت اثر دارد. آنتن باید دید مستقیم به آسمان داشته باشد.
چکلیست هفتقدمی برای گرفتن Fix
- آنتن را چک کنید کابل U.FL کامل جا افتاده باشد و آنتن رو به بالا باشد.
- ماژول را بیرون ببرید پشت شیشه یا داخل اتاق، شانس Fix را بهشدت کم میکند.
- تغذیهی پایدار بدهید از پورت USB ضعیف یا پاوربانک کمجریان استفاده نکنید.
- یک تا سه دقیقه صبر کنید مخصوصاً اگر ماژول مدتها خاموش بوده است.
- خروجی خام را ببینید با کد اول مطمئن شوید جملههای NMEA میآیند.
- HDOP را بررسی کنید اگر بالای ۲ است، موقعیت را برای پروژههای حساس قبول نکنید.
- تنظیمات را تغییر ندهید تا وقتی همهچیز با تنظیمات پیشفرض کار کند؛ بعد سراغ u-center بروید.
🚫 اگر ماژول روی خودرو نصب میکنید
بدنهی فلزی خودرو سیگنال را مسدود میکند. آنتن را زیر شیشهی جلو (نه زیر آهن)، روی داشبورد یا روی سقف نصب کنید و کابل را از مسیرهای پرنویز مثل سیمهای جرقه و موتور دور نگه دارید. تغذیه را نیز از یک مبدل ۱۲ به ۵ ولت با فیوز بگیرید.
پروژههای پیشنهادی با NEO-6M
بعد از اینکه مختصات را روی سریال دیدید، بهترین راه تثبیت یادگیری، ساختن یک پروژهی کوچک است. این پنج ایده از ساده به پیشرفته مرتب شدهاند:
۱. دیتالاگر مسیر با کارت SD
هر ۵ ثانیه مختصات، سرعت و زمان را در فایل CSV روی کارت SD ذخیره کنید. بعداً میتوانید مسیر را در Google Earth یا QGIS رسم کنید. فقط به ماژول SD، یک رگولاتور ۳.۳ ولت و دقت در سطح ولتاژ پینها نیاز دارید.
۲. سرعتسنج و کورسمتر
با gps.speed.kmph() و gps.course.deg() یک سرعتسنج ساده بسازید و روی نمایشگر OLED نشان دهید. برای پروژههای دوچرخه و ربات عالی است. مقالهی راهاندازی نمایشگر OLED کمکتان میکند.
۳. ساعت دقیق GPS
ماژول زمان UTC دقیق را از ماهواره میگیرد و نیازی به RTC ندارد. با یک نمایشگر و چند خط کد، ساعتی بسازید که حتی بعد از قطع برق هم دقیق است. فقط توجه کنید که بدون Fix، زمان معتبر نیست.
۴. ردیاب خودرو یا موتور با GSM
مختصات را با ماژول GSM مثل SIM800L یا ماژولهای 4G به سرور بفرستید. این پروژه به مدیریت تغذیه، سیمکارت داده و یک سرویس دریافت داده نیاز دارد. برای نسخهی حرفهای، بهجای ارسال مداوم، از حالتهای خواب و ارسال دورهای استفاده کنید.
۵. ژئوفنس و هشدار خروج از محدوده
یک محدودهی دایرهای با مرکز و شعاع تعریف کنید و با فاصلهی محاسبهشده از کتابخانه، هر بار خروج از محدوده را تشخیص دهید. این ایده برای ردیاب کودک، حیوان خانگی یا تجهیزات ارزشمند مناسب است.
🧰 برای پروژههای جدیتر
اگر پروژهی شما به دقت بالاتر، چند سیستم ماهوارهای (GPS+GLONASS) یا نرخ ۱۰ هرتز نیاز دارد، NEO-6M ممکن است کافی نباشد. در بخش بعدی مقایسهی کوتاهی آوردهایم. برای انتخاب قطعهی مناسب پروژه، میتوانید از مشاورهی فروشگاه تکنولوژی پارس دیجیتال هم استفاده کنید.
مقایسه و انتخاب ماژول
NEO-6M در سالهای اخیر جای خود را به نسلهای جدیدتر داده است، اما هنوز برای یادگیری، پروژههای دانشگاهی و ردیابی عمومی انتخاب اقتصادی و منطقی است. جدول زیر به شما کمک میکند بفهمید چه زمانی باید سراغ گزینهی دیگری بروید.
مقایسهی کلی NEO-6M با چند گزینهی رایج
| ویژگی | u-blox NEO-6M | u-blox NEO-M8N | ماژولهای چندسیستمهی اقتصادی |
|---|---|---|---|
| سیستمهای ماهوارهای | GPS | GPS، GLONASS، Galileo، BeiDou | معمولاً GPS + BeiDou |
| تعداد کانال | ۵۰ | ۷۲ | حدود ۳۲ |
| حداکثر نرخ بهروزرسانی | ۵ هرتز | ۱۰ هرتز | ۱ تا ۱۰ هرتز (وابسته به مدل) |
| دقت افقی معمول | ۲.۵ متر | حدود ۲.۵ متر | حدود ۲.۵ متر |
| قیمت | اقتصادی | بالاتر | اقتصادی |
| مناسب برای | آموزش، پروژهی دانشگاهی، ردیاب ساده | پروژههای حرفهای، چندسیستمه، دقت بالاتر | پروژههای ارزان با نیاز به چند سیستم |
جمعبندی انتخاب: اگر اولین پروژهی GPS شماست یا میخواهید مفهوم NMEA و سیمکشی سریال را یاد بگیرید، NEO-6M انتخاب درستی است. اگر قرار است محصول نهایی بسازید و به دریافت پایدار در محیط شهری، چند سیستم ماهوارهای و نرخ بالاتر نیاز دارید، سراغ NEO-M8N یا ماژولهای چندسیستمه بروید.
📌 یک نکتهی مهم دربارهی «دقت»
عدد ۲.۵ متر یک مقدار معمول در شرایط ایدهآل است. در خیابانهای پر ساختمان، زیر درخت و داخل خودرو، خطا میتواند چند برابر شود. هیچ ماژول GPS ارزانی دقت سانتیمتری ندارد؛ برای آن به RTK و اصلاحات خاص نیاز است.
پرسشهای متداول
آیا ماژول GPS به اینترنت یا سیمکارت نیاز دارد؟
نه. گیرندهی GPS کاملاً مستقل است و سیگنال را مستقیم از ماهوارهها میگیرد. اینترنت یا سیمکارت فقط وقتی لازم میشود که بخواهید موقعیت را به سرور بفرستید؛ مثلاً در یک ردیاب GSM.
چرا داخل خانه یا کنار پنجره موقعیت تثبیت نمیشود؟
سیگنال GPS بسیار ضعیف است و دیوار، سقف و شیشهی رنگشده آن را بهشدت کم میکنند. برای دریافت پایدار باید آنتن دید مستقیم به آسمان داشته باشد. کنار پنجره ممکن است گاهی چند ماهواره ببیند، اما زمان Fix طولانی و دقت پایین خواهد بود.
دقت واقعی NEO-6M چقدر است؟
دقت افقی معمول آن حدود ۲.۵ متر در فضای باز است. در محیط شهری با ساختمانهای بلند، خطا میتواند به ۵ تا ۱۰ متر یا بیشتر برسد. برای پروژههای آموزشی و ردیابی عمومی این دقت کافی است، اما برای نقشهبرداری دقیق مناسب نیست.
آیا میتوانم آنتن دیگری به ماژول وصل کنم؟
بله. هر آنتن GPS اکتیو ۳ ولت با کانکتور U.FL یا آنتن پسیو سازگار قابل استفاده است. برای مسیرهای طولانی یا نصب روی سقف خودرو، آنتن اکتیو با کابل بلندتر گزینهی بهتری است. کانکتور U.FL را با احتیاط جابهجا کنید.
حداقل چند ماهواره برای موقعیتیابی لازم است؟
برای موقعیت سهبعدی حداقل چهار ماهواره لازم است. در عمل گیرنده برای پایداری و کاهش خطا با ۶ تا ۱۰ ماهواره کار میکند. اگر تعداد ماهوارهها کم و HDOP بالا باشد، مختصات ممکن است بپرد.
تفاوت NEO-6M با NEO-M8N چیست؟
NEO-M8N نسل جدیدتر است و از چند سیستم ماهوارهای (GPS، GLONASS، Galileo و BeiDou)، کانال بیشتر و نرخ بالاتر پشتیبانی میکند. NEO-6M سادهتر و ارزانتر است و برای یادگیری و پروژههای عمومی انتخاب اقتصادی محسوب میشود.
چرا تاریخ ۲۰۰۰ و ساعت ۰۰:۰۰ نمایش داده میشود؟
تا زمانی که گیرنده به Fix نرسیده باشد، دادهی تاریخ و ساعت معتبر نیست. TinyGPS++ در این حالت مقدار پیشفرض نشان میدهد. بعد از دریافت اولین Fix و چند ثانیه صبر، زمان UTC درست نمایش داده میشود.
آیا برای ردیاب خودرو مناسب است؟
بله، به شرطی که آنتن در محل مناسبی نصب شود و تغذیهی پایدار داشته باشید. NEO-6M بهتنهایی فقط موقعیت میدهد؛ برای ارسال داده به سرور به ماژول GSM/4G، سیمکارت داده و مدیریت توان نیاز دارید. برای محصول تجاری، ماژولهای چندسیستمه و طراحی صنعتی را جدی بگیرید.
جمعبندی و خرید
در این آموزش از مفهوم سهگانهسازی شروع کردیم، سختافزار ماژول NEO-6M را شناختیم، چهار سیم را درست وصل کردیم و در دو مرحله به دادهی خام NMEA و سپس مختصات قابل استفاده رسیدیم. اگر مراحل را دنبال کرده باشید، حالا یک گیرندهی GPS کارآمد دارید که میتواند پایهی پروژههای بزرگتر باشد.
سه نکته را همیشه به خاطر بسپارید: آنتن باید آسمان را ببیند، GND مشترک فراموش نشود و بادریت دو طرف ارتباط یکی باشد. تقریباً همهی مشکلاتی که کاربران گزارش میکنند به همین سه موضوع برمیگردد.
ماژول GPS NEO-6M را از پارس دیجیتال تهیه کنیدماژول u-blox NEO-6M-0-001 با ضمانت اصالت، دیتاشیت رسمی و پشتیبانی فنی، آمادهی ارسال به سراسر کشور است. اگر در انتخاب قطعه یا راهاندازی پروژه شک دارید، قبل از خرید از ما بپرسید.🛒 خرید و مشاهده مشخصات فروشگاه تکنولوژی مقالات آموزشی بیشتر
اگر این مقاله برایتان مفید بود، آن را برای دوستانتان بفرستید یا در شبکههای اجتماعی به اشتراک بگذارید. سوال فنی دارید؟ در بخش نظرات همین مقاله یا از طریق صفحهی تماس پارس دیجیتال بپرسید تا تیم فنی پاسخ دهد.
تیم فنی پارس دیجیتال
تأمین قطعات الکترونیک، طراحی و پشتیبانی پروژههای IoT، ردیابی و سختافزار. این مقاله بخشی از مجموعهی آموزشهای ماژول در وبلاگ فنی پارس دیجیتال است.
مشاهدهی همهی مقالات ←
مقالات مرتبط

راهاندازی نمایشگر OLED با آردوینو





