5.5 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 με αποκωδικοποίηση δεδομένων ήταν επιτυχές!
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.