4.9 KiB
Декодиране на GPS данни - Виртуален IoT хардуер и Raspberry Pi
В тази част от урока ще декодирате NMEA съобщенията, прочетени от GPS сензора чрез Raspberry Pi или Виртуално 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 сензор с декодиране на данни беше успешна!
Отказ от отговорност:
Този документ е преведен с помощта на AI услуга за превод Co-op Translator. Въпреки че се стремим към точност, моля, имайте предвид, че автоматизираните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.