در سلسله آموزش های ماژول NEO6M، قسمت پنجم به دیگر پکت مهم و کلیدی این ماژول، GPGGA می پردازیم. در قسمت های قبلی به پکت های NMEA و توضیحات آن پرداختیم. در قسمت های پیشین به فرمت داده های GPRMC و GPGSV و فیلدهای اطلاعاتی آن را از نظر گذراندیم. در این قسمت از این سلسله آموزش، پکت GPGGA را بررسی می کنیم. این پکت حاوی فیلدهای اطلاعاتی حیاتی و کاربردی بوده که در این قسمت از سلسله آموزش به آن می پردازیم. مطابق آموزش های پیشین، ابتدا فیلدهای این پکت را تشریح کرده و سپس با ارائه یک مثال برنامه نویسی، نحوه استخراج پکت GPGGA را مورد بررسی قرار خواهیم داد. بنابراین در ادامه این آموزش، با مرجع تخصصی ماژول GPS به زبان فارسی، دیجی اسپارک همراه باشید.
پکت GPGGA و فیلدهای اطلاعاتی
یکی از پکت های بسیار مهم، پکت GPGGA است. این پکت داده های مشترک زیادی با پکت GPRMC داشته، اما به کمک این پکت می توانیم ارتفاع خود را از سطح دریا، بدست آوریم. به عنوان یک نمونه، پکت GPGGA به شکل زیر دریافت می گردد.
$GPGGA,092725.00,4717.11399,N,00833.91590,E,1,8,1.01,499.6,M,48.0,M,,0*5B
در ادامه به فیلدهای این پکت می پردازیم.
توضیح | مقدار فیلد |
هدر و یا پیشوند داده ها | $GPGGA |
این فیلد زمان(UTC) را به فرمت زیر نمایش می دهد.
hhmmss.sss در عبارت فوق h به معنای ساعت، m به معنای دقیقه و s به معنای ثانیه است. در این قسمت ساعت ۹ و ۲۷ دقیقه و ۲۵ ثانیه است.
|
۰۰٫۹۲۷۲۵۰ |
این فیلد عرض جغرافیایی را بر حسب دقیقه و درجه به شکل زیر نمایش می دهد.
ddmm.mmmm در عبارت فوق d به معنای درجه و m به معنای دقیقه است. در اینجا ۴۷ درجه و عبارات پس از آن دقیقه است. |
۴۷۱۷٫۱۱۳۹۹ |
این فیلد جهت در عرض جغرافیایی را نمایش می دهد. عبارت N شمال و S بیانگر جنوب است. | N |
این فیلد طول جغرافیایی را بر حسب درجه و دقیقه نمایش می دهد. طول جغرافیایی در این فیلد به فرمت زیر است.
dddmm.mmmm در اینجا ۰۰۸ درجه و پس از آن دقیقه است. |
۰۰۸۳۳٫۹۱۵۹۰ |
این فیلد جهت در طول جغرافیایی را نمایش می دهد. عبارت E شرق و W غرب است. | E |
این فیلد وضعیت فیکس به ماهواره را نمایش می دهد. مقادیر معتبر به همراه توضحیات عبارتند از:
۰: به ماهواره فیکس نشده ۱: به ماهواره متصل شده و در مد استاندارد مشغول به کار است. ۲: به ماهواره متصل شده، مشغول تصحیح خطا و در مد استاندارد(SPS) مشغول به کار است. ۶:در این مد ماژول در تلاش برای تصحیح خطا در محیط هایی با پوشش ضعیف نظیر تونل ها و مکان های مسقف مثل پارکینگ هاست. |
۱ |
این عدد تعداد ماهواره های استفاده شده را نمایش می دهد. در اینجا ۸ ماهواره استفاده شده است. | ۸ |
این عدد مقدار تعدیل دقت را به صورت افقی نمایش می دهد. | ۰۱۱٫ |
این متغیر ارتفاع از سطح دریا را بر حسب متر نمایش می دهد. | ۶٫۴۹۹ |
این عبارت بیان می کند که ارتفاع اندازه گیری شده بر حسب متر است. | M |
این پارامتر ارتفاع را از سطحی بیضوی اندازه می گیرد. برای اطلاعات بیشتر روی این لینک کلیک کنید. | ۰٫۴۸ |
این عبارت بیان می کند که ارتفاع از سطح بیضوی اندازه گیری شده بر حسب متر است. | M |
– | – |
عدد مربوط به شناسه(ID) ایستگاه GPS | ۰ |
فیلد مربوط به CHECK SUM خطا | *۵B |
پس از این قسمت نوبت به برنامه نویسی جهت استخراج داده ها می رسد. مطابق روال معمول، در قسمت بعدی نحوه فیلتر داده های NMEA را مشاهده کرده و در ادامه آن یک نمونه برنامه را مشاهده خواهیم کرد.
فیلتر کردن پکت های NMEA
همانطور که پیشتر مشاهده نمودید، ماژول GPS پکت ها را به صورت دائم در سریال قرار می دهد. زمانیکه بخواهید با میکروکنترلرها داده ها را بخوانید، از آنجاییکه ماژول GPS تمام پکت ها را با هم فرستاده و این مورد می تواند سبب پر شدن بافر سریال شود، بنابراین باید داده هایی که به آن ها احتیاج نیست فیلتر شوند. دستورات زیر سبب فیلتر شدن بافر از سایر داده ها شده و تنها داده های مربوط به GPGGA ارسال می شوند.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
با ارسال دستورات فوق به ماژول GPS، داده ها فیلتر شده و تنها داده های مربوط به GPGGA در بافر قرار می گیرند. بدین ترتیب روال برنامه نویسی ساده تر شده و بافر سریال سبک خواهد شد. در قسمت بعدی به یک نمونه کد جهت دریافت GPGGA و جداسازی داده های مربوط به طول و عرض جغرافیایی، می پردازیم.
نمونه برنامه خواندن پکت GPGGA
در این قسمت به بررسی یک نمونه برنامه می پردازیم. در این برنامه داده های NMEA به جز GPGGA را فیلتر می کنیم. سپس با خواندن سریال مانیتور، GPGGA را دریافت کرده و نمایش می دهیم.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
در کد فوق به کمک کتابخانه سریال نرم افزاری، از طریق پایه های ۸ و ۹ با ماژول GPS ارتباط برقرار می سازیم. سپس دستورات مربوط به غیر فعال سازی داده هایی غیر از GPGGA را ارسال می کنیم. در نهایت با دریافت GPGGA، آن را در سریال مانیتور نمایش می دهیم.
لوازم مورد نیاز
دیگر آموزشهای راه اندازی ماژول GPS
راه اندازی و کار با ماژول GPS مدل NEO6M: بخش اول معرفی
راه اندازی ماژول GPS مدل NEO6M: بخش دوم تغذیه و اتصال ماهواره
راه اندازی ماژول GPS مدل NEP6M: بخش سوم خواندن دیتای GPS GPRMC
راه اندازی و کار با ماژول GPS مدل NEO6M: بخش چهارم GPGSV
راه اندازی و کار با ماژول GPS مدل NEO6M: قسمت ششم پکت GSA
راه اندازی و کار با ماژول GPS مدل NEO6M: قسمت هفتم پکت GPVTG
راه اندازی ماژول GPS مدل NEO6M: قسمت هشتم نرم افزار UCENTER
راه اندازی و کار با ماژول GPS مدل NEO6M: قسمت نهم پروژه عملی
راه اندازی و کار با ماژول GPS شرکت U-BLOX: قسمت دهم مدل Neo8MN
کار با ماژولهای GPS شرکت U-BLOX: قسمت یازدهم: راه اندازی Neo8MN
کار با ماژولهای GPS شرکت U-BLOX: قسمت دوزادهم پروژه ردیاب با Neo8MN
جمع بندی
در سلسله آموزش های ماژول GPS قسمت چهارم به معرفی پکت GPGGA پرداختیم. پکت GPGGA یکی از پکت های بسیار مهم و کاربردی در استاندارد NMEA به شمار می رود. در این قسمت از سلسله آموزش، ضمن توضیح، تشریح و معرفی کاربردهای این پکت کلیدی، فیلدهای اطلاعاتی آن را که حاوی اطلاعات مهم و ارزشمند از دقت و وضعیت فیکس و سایر اطلاعات در رابطه با ماهواره هاست، بررسی نمودیم. همچنین در ادامه، به طراحی یک برنامه تحت آردوینو جهت دریافت و مشاهده این پکت بر روی سریال مانیتور پرداختیم. با مطالعه این کدها و الگو برداری از آن، شما می تواند در پلتفرم های مختلف نظیر ARM و AVR نیز ارتباط با GPS را فراهم کرده و داده های آن را بخوانید.
چنانچه مطالب این آموزش را گنک یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در مطالب درج شده و یا کدها وجود دارد میتوانید از همین طریق اطلاع رسانی کنید.