مشکل تغییر تاریخ در ماژول‌های GPS

مشکل تغییر تاریخ در ماژول‌های GPS

مشکل تغییر تاریخ در ماژول‌های GPS
مشکل تغییر تاریخ در ماژول‌های GPS

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

سال ۱۹۷۸ اولین ماهواره GPS در مدار قرار گرفت (۴۴ سال پیش) البته در ابتدا کاربرد نظامی داشته و بعد از چند سال به‌صورت عمومی برای همه قابل‌استفاده شده (توی موضوعات High tech غالباً همین‌طور هست و در ابتدا یه تکنولوژی موردنیاز در بحث نظامی توسعه داده میشه و بعد از مدتی ممکنه به‌صورت عمومی هم در دسترس قرار بگیره) البته شاید اون زمان خود آمریکایی‌ها هم‌فکر نمی‌کردند که سیستم GPS قراره این‌همه سال استفاده بشه و این باعث شده که یکسری مشکلاتی برای استفاده طولانی‌مدت از اون به وجود بیاد.

 

تاریخ مبهم

ماهواره‌های GNSS سیگنال‌های مختلفی رو ارسال می‌کنند تا گیرنده‌های GNSS اونها رو دریافت کرده و پردازش کنند، سیگنال L1 C/A یکی از این سیگنال‌ها هست که دیتای تاریخ اون مبهم هست و هر ۱۹٫۶ سال یکبار صفر میشه و باعث میشه ماژول‌هایی که از این دیتا استفاده می‌کنند تاریخشون ۲۰ یا ۴۰ سال قبل رو نشون بده.

 

مشکل تغییر تاریخ GPS چگونه بوجود میاد؟

همانطور که گفتیم سیستم GPS تعداد هفته‌های گذشته از تاریخ ۶ ژانویه ۱۹۸۰ رو ارسال میکنه و گیرنده‌های GPS برای محاسبه زمان دقیق از این پارامتر استفاده می‌کنند. تعداد هفته‌های گذشته از ۰ تا ۱۰۲۳ شمرده میشند و بعد از اون شمارش دوباره از ۰ شروع میشه اولین بار که این اتفاق افتاد در آگوست ۱۹۹۹ بوده و جدیداً در آوریل ۲۰۱۹ این اتفاق بار دیگه رخ داده و زمان بعدی در نوامبر ۲۰۳۸ دوباره این مقدار ۰ شروع میشه.

البته ماژول‌ها اکثراً از سیگنال‌های دیگه‌ای‌ هم استفاده می‌کنند مثل دیتای ماهواره‌های GLONASS, Galileo, GPS L2C, GPS L5 و این خطا رو تصحیح می‌کنند. اما اگر که ماژول‌ GPS شما فقط از دیتای GPS L1 C/A استفاده کنه متوجه نمیشه که تعداد هفته، از سال ۱۹۸۰ هست یا ۱۹۹۹ یا ۲۰۱۹ و تاریخ رو به شما ۴۰ یا ۲۰ سال عقب‌تر نشون می‌ده. البته این مشکل فقط باعث خطا در تاریخی که ماژول‌ GPS به شما میده میشه و باعث اختلال در دیتاهای ناوبری ماژول نمیشه (حداقل در ماژول های شرکت u-blox به گفته این شرکت).

 

چه ماژول هایی این مشکل رو دارند؟

  • ماژول sim908 از شرکت simcom
  • ماژول های  u-blox 5, 6, 7, 8, M8 از شرکت u blox
  • و کلا ماژول هایی که فقط از سیگنال GPS L1 C/A برای دریافت موقعیت استفاده می‌کنند.

اگر شما هم ماژول هایی رو می‌شناسید که این مشکل رو دارند توی کامنت برامون بگید.

 

چطور میشه این مشکل رو برطرف کرد؟

نکته اول اینکه شرکت ublox از آخر سال ۲۰۰۷ هر ماژولی که تولید کرده داخل فریمورش به‌صورت پیش‌فرض اومده و تعداد هفته‌های گذشته از ۶ ژانویه ۱۹۸۰ رو تا روز تولید ماژول رو ذخیره کرده و ماژول با تطبیق این عدد با عددی که ماژول از ماهواره دریافت میکنه دیرتر به این مشکل برمی‌خوره، توی جدول پایین میتونید تاریخ دقیق این موضوع رو ببینید.

همچنین شرکت ublox برای برطرف کردن این مشکل توی ماژول های خودش سه تا راه حل پیشنهاد داده:

روش اول

در این روش شما باید با اضافه کردن یک تکه کد به برنامتون تشخیص بدید که الان توی کدوم یکی از این بازه‌های ۱۹٫۶ ساله هستید و تاریخ خودتون رو اصلاح کنید. در ادامه میتونید این کد رو بررسی کنید:

 

روش دوم

روش دوم تغییر تعداد هفته‌های گذشته از ۱۹۸۰ هست که ماژول با جمع اون با دیتای دریافتی از ماهواره عدد صحیح رو پیدا کنه، با کمک دستور UBX-CFG-NAVX5 میتونید تعداد هفته‌های گذشته رو به ماژول بدید. ارسال این دیتا باید بعد از هر بار ریست شدن ماژول اتفاق بیوفته چون ماژول چیزی ذخیره نمیکنه.

مثلاً شما الان میخواید محصولتون رو آماده کنید پس باید ۲۰۴۷ رو برای ماژول ارسال کنید که میشه دو بازه ۱۹٫۶ سالی. تکه کد پایین به شما کمک می‌کنه که دیتا رو برای ارسال توسط دستور UBX-CFG-NAVX5 آماده کنید.

 

روش سوم

روش سوم هم‌تغییر فریمور ماژول به آخرین نسخه هست که باعث میشه تا حدود ۲۰ سال از آخرین نسخه فریمور ماژولتون دیتای درست بده (خیلی باید خفن باشید که محصولتون ۲۰ سال بدون هیچ تغییری کار بده و اصلاً تا ۲۰ سال دیگه کارایی داشته باشه ?)

 

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

برای نوشتن این مقاله از این داکیومنت شرکت ublox کمک گرفته شده.

0 نفر

پــــســنــدیـده انـد

توجه

Mahdi.h  
Mahdi.h  

علاقه مند به سیستم های امبدد

دیدگاه ها

0 دیدگاه

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 3 سال پیش
راه اندازی LCD گرافیکی Nokia 1661

راه اندازی LCD گرافیکی Nokia 1661

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش
ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش
همه چیز درباره ریموت کنترل‌های هاپینگ

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش
مسابقه سوم: استخراج داده از رشته ها در زبان C

مسابقه سوم: استخراج داده از رشته ها در زبان C

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

Zeus ‌ Zeus ‌
  • 2 سال پیش
مسابقه ششم: بزن میکروکنترلر را بسوزون!

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 1 سال پیش
آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش
ساخت ماینر با FPGA و ARM

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش
کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

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

Mahdi.h   Mahdi.h  
  • 3 سال پیش
مسابقه چهارم: کدام حلقه سریع‌تر است؟

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک