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/bg/3-transport/lessons/1-location-tracking/single-board-computer-gps-d...

4.9 KiB

Декодиране на GPS данни - Виртуален IoT хардуер и Raspberry Pi

В тази част от урока ще декодирате NMEA съобщенията, прочетени от GPS сензора чрез Raspberry Pi или Виртуално IoT устройство, и ще извлечете ширина и дължина.

Декодиране на GPS данни

След като суровите NMEA данни бъдат прочетени от серийния порт, те могат да бъдат декодирани с помощта на библиотека с отворен код за NMEA.

Задача - декодиране на GPS данни

Програмирайте устройството да декодира GPS данните.

  1. Отворете проекта на приложението gps-sensor, ако вече не е отворен.

  2. Инсталирайте Pip пакета pynmea2. Този пакет съдържа код за декодиране на 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 сензор с декодиране на данни беше успешна!


Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.