# رمزگشایی داده‌های GPS - سخت‌افزار مجازی IoT و رزبری پای در این بخش از درس، پیام‌های NMEA که از حسگر GPS توسط رزبری پای یا دستگاه مجازی IoT خوانده شده‌اند را رمزگشایی کرده و عرض و طول جغرافیایی را استخراج خواهید کرد. ## رمزگشایی داده‌های GPS پس از خواندن داده‌های خام NMEA از پورت سریال، می‌توان آن‌ها را با استفاده از یک کتابخانه متن‌باز NMEA رمزگشایی کرد. ### وظیفه - رمزگشایی داده‌های GPS دستگاه را برنامه‌ریزی کنید تا داده‌های GPS را رمزگشایی کند. 1. پروژه اپلیکیشن `gps-sensor` را باز کنید، اگر هنوز باز نشده است. 1. بسته Pip به نام `pynmea2` را نصب کنید. این بسته شامل کدی برای رمزگشایی پیام‌های NMEA است. ```sh pip3 install pynmea2 ``` 1. کد زیر را به بخش واردات در فایل `app.py` اضافه کنید تا ماژول `pynmea2` وارد شود: ```python import pynmea2 ``` 1. محتوای تابع `print_gps_data` را با کد زیر جایگزین کنید: ```python 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` این تبدیل را انجام می‌دهد. سپس جهت عرض جغرافیایی بررسی می‌شود و اگر عرض جغرافیایی جنوبی باشد، مقدار به عدد منفی تبدیل می‌شود. همین‌طور برای طول جغرافیایی، اگر غربی باشد، به عدد منفی تبدیل می‌شود. در نهایت، مختصات همراه با تعداد ماهواره‌هایی که برای تعیین موقعیت استفاده شده‌اند، در کنسول چاپ می‌شوند. 1. کد را اجرا کنید. اگر از یک دستگاه مجازی IoT استفاده می‌کنید، مطمئن شوید که اپلیکیشن CounterFit در حال اجرا است و داده‌های GPS ارسال می‌شوند. ```output pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites ``` > 💁 می‌توانید این کد را در پوشه [code-gps-decode/virtual-device](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/virtual-device) یا پوشه [code-gps-decode/pi](../../../../../3-transport/lessons/1-location-tracking/code-gps-decode/pi) پیدا کنید. 😀 برنامه حسگر GPS شما با رمزگشایی داده‌ها با موفقیت اجرا شد! **سلب مسئولیت**: این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.