3.3 KiB
GPS Verilerini Çözümleme - Sanal IoT Donanımı ve Raspberry Pi
Bu dersin bu bölümünde, Raspberry Pi veya Sanal IoT Cihazı tarafından GPS sensöründen okunan NMEA mesajlarını çözümleyecek ve enlem ile boylam bilgilerini çıkaracaksınız.
GPS Verilerini Çözümleme
Ham NMEA verileri seri porttan okunduktan sonra, açık kaynaklı bir NMEA kütüphanesi kullanılarak çözümlenebilir.
Görev - GPS verilerini çözümleme
Cihazı GPS verilerini çözümleyecek şekilde programlayın.
-
gps-sensor
uygulama projesini henüz açmadıysanız açın. -
pynmea2
Pip paketini yükleyin. Bu paket, NMEA mesajlarını çözümlemek için kod içerir.pip3 install pynmea2
-
app.py
dosyasındaki importlara aşağıdaki kodu ekleyerekpynmea2
modülünü içe aktarın:import pynmea2
-
print_gps_data
fonksiyonunun içeriğini aşağıdaki kodla değiştirin: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')
Bu kod, UART seri portundan okunan satırı çözümlemek için
pynmea2
kütüphanesini kullanır.Mesajın cümle türü
GGA
ise, bu bir konum sabitleme mesajıdır ve işlenir. Mesajdan enlem ve boylam değerleri okunur ve NMEA(d)ddmm.mmmm
formatından ondalık dereceye dönüştürülür.dm_to_sd
fonksiyonu bu dönüşümü gerçekleştirir.Daha sonra enlemin yönü kontrol edilir ve eğer enlem güneyde ise, değer negatif bir sayıya dönüştürülür. Aynı şekilde, boylam batıda ise negatif bir sayıya dönüştürülür.
Son olarak, koordinatlar konsola yazdırılır ve konumu belirlemek için kullanılan uydu sayısı da gösterilir.
-
Kodu çalıştırın. Eğer sanal bir IoT cihazı kullanıyorsanız, CounterFit uygulamasının çalıştığından ve GPS verilerinin gönderildiğinden emin olun.
pi@raspberrypi:~/gps-sensor $ python3 app.py 47.6423109,-122.1390293 - from 3 satellites
💁 Bu kodu code-gps-decode/virtual-device klasöründe veya code-gps-decode/pi klasöründe bulabilirsiniz.
😀 GPS sensör programınız veri çözümleme ile başarıyla tamamlandı!
Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluğu sağlamak için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.