4.6 KiB
رمزگشایی دادههای GPS - سختافزار مجازی IoT و رزبری پای
در این بخش از درس، پیامهای NMEA که از حسگر GPS توسط رزبری پای یا دستگاه مجازی IoT خوانده شدهاند را رمزگشایی کرده و عرض و طول جغرافیایی را استخراج خواهید کرد.
رمزگشایی دادههای GPS
پس از خواندن دادههای خام NMEA از پورت سریال، میتوان آنها را با استفاده از یک کتابخانه متنباز NMEA رمزگشایی کرد.
وظیفه - رمزگشایی دادههای GPS
دستگاه را برنامهریزی کنید تا دادههای GPS را رمزگشایی کند.
-
پروژه اپلیکیشن
gps-sensor
را باز کنید، اگر هنوز باز نشده است. -
بسته Pip به نام
pynmea2
را نصب کنید. این بسته شامل کدی برای رمزگشایی پیامهای NMEA است.pip3 install pynmea2
-
کد زیر را به بخش واردات در فایل
app.py
اضافه کنید تا ماژولpynmea2
وارد شود:import pynmea2
-
محتوای تابع
print_gps_data
را با کد زیر جایگزین کنید:msg = pynmea2.parse(line) if msg.sentence_type == 'GGA': lat = pynmea2.dm_to_sd(msg.lat) lon = pynmea2.dm_to_sd(msg.lon) if msg.lat_dir == 'S': lat = lat * -1 if msg.lon_dir == 'W': lon = lon * -1 print(f'{lat},{lon} - from {msg.num_sats} satellites')
این کد از کتابخانه
pynmea2
برای تجزیه خطی که از پورت سریال UART خوانده شده استفاده میکند.اگر نوع جمله پیام
GGA
باشد، این پیام یک موقعیتیابی است و پردازش میشود. مقادیر عرض و طول جغرافیایی از پیام خوانده شده و از فرمت NMEA(d)ddmm.mmmm
به درجههای اعشاری تبدیل میشوند. تابعdm_to_sd
این تبدیل را انجام میدهد.سپس جهت عرض جغرافیایی بررسی میشود و اگر عرض جغرافیایی جنوبی باشد، مقدار به عدد منفی تبدیل میشود. همینطور برای طول جغرافیایی، اگر غربی باشد، به عدد منفی تبدیل میشود.
در نهایت، مختصات همراه با تعداد ماهوارههایی که برای تعیین موقعیت استفاده شدهاند، در کنسول چاپ میشوند.
-
کد را اجرا کنید. اگر از یک دستگاه مجازی IoT استفاده میکنید، مطمئن شوید که اپلیکیشن CounterFit در حال اجرا است و دادههای GPS ارسال میشوند.
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
💁 میتوانید این کد را در پوشه code-gps-decode/virtual-device یا پوشه code-gps-decode/pi پیدا کنید.
😀 برنامه حسگر GPS شما با رمزگشایی دادهها با موفقیت اجرا شد!
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه حرفهای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.