در سلسله آموزش های ماژول GPS مدل NEO6M، قسمت نهم و پس از بررسی پکت های NMEA، به اجرای یک مثال ساده می پردازیم. در این قسمت با یک برنامه تحت زبان برنامه نویسی آردوینو، اطلاعات جغرافیایی نظیر طول، عرض، سرعت و ارتفاع را از پکت های مختلف استخراج کرده و در سریال مانیتور نمایش می دهیم. البته در نظر داشته باشید که برای کار با این ماژول، کتابخانه ای تحت آردوینو توسعه یافته که با کلیک بر روی این لینک می توانید آن را مطالعه نمایید. البته در این سلسه آموزش هدف اصلی کار و برنامه نویسی بر روی پکت های این ماژول بوده تا در تمام میکروکنترلرها باتوان از این ماژول استفاده نمود. در ادامه این آموزش با مرجع تخصصی ماژول GPS به زبان فارسی، دیجی اسپارک همراه باشید.
شماتیک و اتصالات پروژه
در این قسمت به بررسی شماتیک و اتصالات این پروژه می پردازیم. در ابتدا به تصویر زیر که نمایی کلی از شماتیک نشان می دهد، دقت کنید.
در ادامه اتصالات مدار را به شکل زیر اجرا کنید.
- اتصال پایه VCC ماژول به پایه ۵V آردوینو
- اتصال پایه GND ماژول به پایه GND آردوینو
- اتصال پایه TX ماژول به پایه ۸ آردوینو
- اتصال پایه RX ماژول به پایه ۹ آردوینو
کدهای پروژه
در این قسمت به بررسی کدهای پروژه می پردازیم. این کدها را بر روی برد آردوینو آپلود کرده و برنامه را اجرا کنید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
اجرای پروژه
پس از اجرای پروژه، داده ها بر روی سریال مانیتور نمایش داده می شوند. این داده ها شامل طول، عرض و سرعت حرکت هستند. همانطور که در قسمت های پیشین هم بیان شد، اتصال ماژول به ماهواره نیازمند رعایت نکات خاصی است. استفاده از آنتن مناسب، قرار دادن آن در فضای باز و تست هنگام حرکت از جمله عوامل تاثیر گذار در فیکس سریع و افزایش دقت به شمار می روند.
توجه داشته باشید که برای تست، در زمان هایی که فیکس به ماهواره صورت نمی گیرد، می توانید از یک رشته آزمایشی که درون کدهای برنامه قرار گرفته و راجع به آن در همان جا توضیح داده شده، استفاده نمایید.
تحلیل کدهای پروژه
پس از اجرای پروژه نوبت به تحلیل کدهای به کار رفته می رسد. البته درون این کدها به ازای هر خط کامنت(توضیح) درج شده و در این جا نیز به شرح موضوع می پردازیم. در ابتدا به کمک کتابخانه سریال نرم افزاری، یک ارتباط سریال روی پایه های ۸ و ۹ می سازیم.
SoftwareSerial gps(8, 9)
پس از این قسمت، در تابع setup می بایست باودریت این ارتباط سریال را که نام آن gps انتخاب شده، تعیین کنیم. برای این منظور، از دستور زیر استفاده می کنیم.
gps.begin(9600)
پس از این مرحله، به کمک دستورات ماژول NEO6M، داده های غیر لازم را فیلتر می کنیم. این دستورات پیشتر در آموزش های پیشین توضیح و تشریح شده اند. پس از این قسمت، در حلقه تکرار، به کمک دستور زیر قرارگرفتن کاراکتر در سریال بافر نرم افزاری را کنترل می کنیم.
while (gps.available() > 0)
در دستور فوق، تا زمانیکه داده ای بر روی سریال نرم افزاری قرار دارد، آن را دریافت کرده و به کمک تابع concat که یک تابع جهت افزودن کاراکتر به رشته است، درون رشته ذخیره می کنیم. دقت داشته باشید که داده های NMEA توسط ماژول GPS هر یک ثانیه یکبار در بافر قرار می گیرند که با دستور زیر آن را کارامتر به کاراکتر، در رشته ذخیره می کنیم.
data.concat(char(gps.read()))
پس از این مرحله، به کمک تابع parse_gprmc، پکت GPRMC دریافت شده را مورد پردازش رشته ای قرار می دهیم. مطابق آنچه که پیشتر در رابطه با این پکت گفته شد، این پکت اطلاعاتی نظیر طول و عرض و سرعت را به همراه جهت در اختیار ما قرار می دهد. در ادامه، به کمک پردازش رشته ای، فیلد های اطلاعاتی را از هم جدا می کنیم. همانطور که پیشتر گفتیم، پکت RMC با فیلد VALID، تعیین کننده اعتبار داده هاست. ما درتابع parse_gprmc، اقدام به یافت این متغیر و پردازش رشته از این کاراکتر به بعد می کنیم. در رابطه با پردازش رشته ای و نحوه جداساز فیلدهای اطلاعاتی، درون کدهای برنامه به توضیح کامل پرداخته ایم که با مطالعه آن ها می توانید رله کلی کار را دریابید. پس از جداسازی رشته ای، خروجی را در سریال مانیتور نمایش خواهیم داد.
لوازم مورد نیاز
جمع بندی
در سلسله آموزش های ماژول GPS مدل NEO6M، قسمت نهم و پس از بررسی قابلیت ها و داده های قابل دریافت از این ماژول، به ارائه یک برنامه عملی جهت دریافت داده های مهم جغرافیایی پرداخیتم. در این برنامه داده هایی شامل طول، عرض و سرعت را از پکت GPRMC جداسازی و نمایش دادیم. این سه پارامتر در پروژه های مختلفی نظیر طراحی ردیاب های خودرو، ضروری هستند. برای این منظور، ابتدا داده ها را از بافر سریال دریافت کرده و سپس به کمک تابعی که به این منظور طراحی کرده ایم، داده ها را جدا کرده و نمایش می دهیم.
دیگر آموزشهای راه اندازی ماژول GPS
راه اندازی و کار با ماژول GPS مدل NEO6M: بخش اول معرفی
راه اندازی ماژول GPS مدل NEO6M: بخش دوم تغذیه و اتصال ماهواره
راه اندازی ماژول GPS مدل NEP6M: بخش سوم خواندن دیتای GPS GPRMC
راه اندازی و کار با ماژول GPS مدل NEO6M: بخش چهارم GPGSV
راه اندازی و کار با ماژول GPS مدل NEO6M: قسمت پنجم پکت GPGGA
راه اندازی و کار با ماژول GPS مدل NEO6M: قسمت ششم پکت GSA
راه اندازی و کار با ماژول GPS مدل NEO6M: قسمت هفتم پکت GPVTG
راه اندازی ماژول GPS مدل NEO6M: قسمت هشتم نرم افزار UCENTER
راه اندازی و کار با ماژول GPS شرکت U-BLOX: قسمت دهم مدل Neo8MN
کار با ماژولهای GPS شرکت U-BLOX: قسمت یازدهم: راه اندازی Neo8MN
کار با ماژولهای GPS شرکت U-BLOX: قسمت دوزادهم پروژه ردیاب با Neo8MN
چنانچه مطالب این آموزش را گنک یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در مطالب درج شده و یا کدها وجود دارد میتوانید از همین طریق اطلاع رسانی کنید.