# Розшифровка GPS-даних - Віртуальне IoT обладнання та Raspberry Pi У цій частині уроку ви розшифруєте повідомлення NMEA, отримані з GPS-сенсора за допомогою Raspberry Pi або Віртуального 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). Хоча ми прагнемо до точності, будь ласка, майте на увазі, що автоматичні переклади можуть містити помилки або неточності. Оригінальний документ на його рідній мові слід вважати авторитетним джерелом. Для критичної інформації рекомендується професійний людський переклад. Ми не несемо відповідальності за будь-які непорозуміння або неправильні тлумачення, що виникають у результаті використання цього перекладу.