3.3 KiB
Nyahkod Data GPS - Perkakasan IoT Maya dan Raspberry Pi
Dalam bahagian pelajaran ini, anda akan nyahkod mesej NMEA yang dibaca daripada sensor GPS oleh Raspberry Pi atau Peranti IoT Maya, dan mengekstrak nilai latitud dan longitud.
Nyahkod Data GPS
Setelah data mentah NMEA dibaca daripada port serial, ia boleh dinyahkod menggunakan pustaka NMEA sumber terbuka.
Tugasan - nyahkod data GPS
Programkan peranti untuk nyahkod data GPS.
-
Buka projek aplikasi
gps-sensor
jika ia belum dibuka. -
Pasang pakej Pip
pynmea2
. Pakej ini mempunyai kod untuk nyahkod mesej NMEA.pip3 install pynmea2
-
Tambahkan kod berikut ke bahagian import dalam fail
app.py
untuk mengimport modulpynmea2
:import pynmea2
-
Gantikan kandungan fungsi
print_gps_data
dengan yang berikut: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')
Kod ini akan menggunakan pustaka
pynmea2
untuk menganalisis baris yang dibaca daripada port serial UART.Jika jenis ayat mesej adalah
GGA
, maka ini adalah mesej penetapan lokasi, dan ia akan diproses. Nilai latitud dan longitud dibaca daripada mesej dan ditukar kepada darjah perpuluhan daripada format NMEA(d)ddmm.mmmm
. Fungsidm_to_sd
melakukan penukaran ini.Arah latitud kemudian diperiksa, dan jika latitud adalah selatan, maka nilainya ditukar kepada nombor negatif. Begitu juga dengan longitud, jika ia adalah barat maka ia ditukar kepada nombor negatif.
Akhirnya, koordinat dicetak ke konsol, bersama dengan bilangan satelit yang digunakan untuk mendapatkan lokasi.
-
Jalankan kod. Jika anda menggunakan peranti IoT maya, pastikan aplikasi CounterFit sedang berjalan dan data GPS sedang dihantar.
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
💁 Anda boleh menemui kod ini dalam folder code-gps-decode/virtual-device, atau folder code-gps-decode/pi.
😀 Program sensor GPS anda dengan nyahkod data telah berjaya!
Penafian:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI Co-op Translator. Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.