You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ru/3-transport/lessons/1-location-tracking/single-board-computer-gps-d...

5.2 KiB

Расшифровка данных GPS - Виртуальное IoT-устройство и Raspberry Pi

В этой части урока вы расшифруете сообщения NMEA, полученные от GPS-датчика с помощью Raspberry Pi или виртуального IoT-устройства, и извлечете широту и долготу.

Расшифровка данных GPS

После того как необработанные данные NMEA были считаны с последовательного порта, их можно расшифровать с помощью библиотеки NMEA с открытым исходным кодом.

Задача - расшифровать данные GPS

Программируйте устройство для расшифровки данных GPS.

  1. Откройте проект приложения gps-sensor, если он еще не открыт.

  2. Установите пакет pynmea2 через Pip. Этот пакет содержит код для расшифровки сообщений NMEA.

    pip3 install pynmea2
    
  3. Добавьте следующий код в раздел импорта в файле app.py, чтобы импортировать модуль pynmea2:

    import pynmea2
    
  4. Замените содержимое функции 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 выполняет это преобразование.

    Затем проверяется направление широты, и если широта находится в южном полушарии, значение преобразуется в отрицательное число. То же самое происходит с долготой: если она находится в западном полушарии, то преобразуется в отрицательное число.

    Наконец, координаты выводятся в консоль вместе с количеством спутников, использованных для определения местоположения.

  5. Запустите код. Если вы используете виртуальное 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. Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.