مکان یاب GPS

راه اندازی و کار با ماژول GPS مدل NEO6M: قسمت نهم پروژه عملی

gps-neo6m-tutorial-step-nine-arduino-project-digispark
نوشته شده توسط معین صابری

در سلسله آموزش های ماژول GPS مدل NEO6M، قسمت نهم و پس از بررسی پکت های NMEA، به اجرای یک مثال ساده می پردازیم. در این قسمت با یک برنامه تحت زبان برنامه نویسی آردوینو، اطلاعات جغرافیایی نظیر طول، عرض، سرعت و ارتفاع را از پکت های مختلف استخراج کرده و در سریال مانیتور نمایش می دهیم. البته در نظر داشته باشید که برای کار با این ماژول، کتابخانه ای تحت آردوینو توسعه یافته که با کلیک بر روی این لینک می توانید آن را مطالعه نمایید. البته در این سلسه آموزش هدف اصلی کار و برنامه نویسی بر روی پکت های این ماژول بوده تا در تمام میکروکنترلرها باتوان از این ماژول استفاده نمود. در ادامه این آموزش با مرجع تخصصی ماژول GPS به زبان فارسی، دیجی اسپارک همراه باشید.


شماتیک و اتصالات پروژه


در این قسمت به بررسی شماتیک و اتصالات این پروژه می پردازیم. در ابتدا به تصویر زیر که نمایی کلی از شماتیک نشان می دهد، دقت کنید.

پروژه با ماژول GPS و برد آردوینو - دیجی اسپارک

در ادامه اتصالات مدار را به شکل زیر اجرا کنید.

  • اتصال پایه VCC ماژول به پایه ۵V آردوینو
  • اتصال پایه GND ماژول به پایه GND آردوینو
  • اتصال پایه TX ماژول به پایه ۸ آردوینو
  • اتصال پایه RX ماژول به پایه ۹ آردوینو

 


کدهای پروژه


در این قسمت به بررسی کدهای پروژه می پردازیم. این کدها را بر روی برد آردوینو آپلود کرده و برنامه را اجرا کنید.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 


اجرای پروژه


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

سریال مانیتور پروژه با ماژول GPS - دیجی اسپارک

 

توجه داشته باشید که برای تست، در زمان هایی که فیکس به ماهواره صورت نمی گیرد، می توانید از یک رشته آزمایشی که درون کدهای برنامه قرار گرفته و راجع به آن در همان جا توضیح داده شده، استفاده نمایید.

 


تحلیل کدهای پروژه


پس از اجرای پروژه نوبت به تحلیل کدهای به کار رفته می رسد. البته درون این کدها به ازای هر خط کامنت(توضیح) درج شده و در این جا نیز به شرح موضوع می پردازیم. در ابتدا به کمک کتابخانه سریال نرم افزاری، یک ارتباط سریال روی پایه های ۸ و ۹ می سازیم.

 

پس از این قسمت، در تابع setup می بایست باودریت این ارتباط سریال را که نام آن gps انتخاب شده، تعیین کنیم. برای این منظور، از دستور زیر استفاده می کنیم.

 

پس از این مرحله، به کمک دستورات ماژول NEO6M، داده های غیر لازم را فیلتر می کنیم. این دستورات پیشتر در آموزش های پیشین توضیح و تشریح شده اند. پس از این قسمت، در حلقه تکرار، به کمک دستور زیر قرارگرفتن کاراکتر در سریال بافر نرم افزاری را کنترل می کنیم.

 

در دستور فوق، تا زمانیکه داده ای بر روی سریال نرم افزاری قرار دارد، آن را دریافت کرده و به کمک تابع concat که یک تابع جهت افزودن کاراکتر به رشته است، درون رشته ذخیره می کنیم. دقت داشته باشید که داده های NMEA توسط ماژول GPS هر یک ثانیه یکبار در بافر قرار می گیرند که با دستور زیر آن را کارامتر به کاراکتر، در رشته ذخیره می کنیم.

پس از این مرحله، به کمک تابع parse_gprmc، پکت GPRMC دریافت شده را مورد پردازش رشته ای قرار می دهیم. مطابق آنچه که پیشتر در رابطه با این پکت گفته شد، این پکت اطلاعاتی نظیر طول و عرض و سرعت را به همراه جهت در اختیار ما قرار می دهد. در ادامه، به کمک پردازش رشته ای، فیلد های اطلاعاتی را از هم جدا می کنیم. همانطور که پیشتر گفتیم، پکت RMC با فیلد VALID، تعیین کننده اعتبار داده هاست.  ما درتابع parse_gprmc، اقدام به یافت این متغیر و پردازش رشته از این کاراکتر به بعد می کنیم.  در رابطه با پردازش رشته ای و نحوه جداساز فیلدهای اطلاعاتی، درون کدهای برنامه به توضیح کامل پرداخته ایم که با مطالعه آن ها می توانید رله کلی کار را دریابید. پس از جداسازی رشته ای، خروجی را در سریال مانیتور نمایش خواهیم داد.

 


لوازم مورد نیاز


برد آردوینو UNO

آنتن GPS اکتیو

مبدل UFL به SMA آنتن

ماژول GPS مدل NEO6M

 


جمع بندی


در سلسله آموزش های ماژول GPS مدل NEO6M، قسمت نهم و پس از بررسی قابلیت ها و داده های قابل دریافت از این ماژول، به ارائه یک برنامه عملی جهت دریافت داده های مهم جغرافیایی پرداخیتم. در این برنامه داده هایی شامل طول، عرض و سرعت را از پکت GPRMC جداسازی و نمایش دادیم. این سه پارامتر در پروژه های مختلفی نظیر طراحی ردیاب های خودرو، ضروری هستند. برای این منظور، ابتدا داده ها را از بافر سریال دریافت کرده و سپس به کمک تابعی که به این منظور طراحی کرده ایم، داده ها را جدا کرده و نمایش می دهیم.

 

چنانچه مطالب این آموزش را گنک یافتید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در مطالب درج شده و یا کدها وجود دارد می‌توانید از همین طریق اطلاع رسانی کنید.

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه