12 KiB
Ανάγνωση δεδομένων GPS - Εικονικό IoT Υλικό
Σε αυτό το μέρος του μαθήματος, θα προσθέσετε έναν αισθητήρα GPS στη συσκευή IoT σας και θα διαβάσετε δεδομένα από αυτόν.
Εικονικό Υλικό
Η εικονική συσκευή IoT θα χρησιμοποιήσει έναν προσομοιωμένο αισθητήρα GPS που είναι προσβάσιμος μέσω UART μέσω μιας σειριακής θύρας.
Ένας φυσικός αισθητήρας GPS διαθέτει κεραία για να λαμβάνει ραδιοκύματα από δορυφόρους GPS και να μετατρέπει τα σήματα GPS σε δεδομένα GPS. Η εικονική έκδοση προσομοιώνει αυτή τη λειτουργία επιτρέποντάς σας είτε να ορίσετε γεωγραφικό πλάτος και μήκος, να στείλετε ακατέργαστες προτάσεις NMEA, είτε να ανεβάσετε ένα αρχείο GPX με πολλαπλές τοποθεσίες που μπορούν να επιστραφούν διαδοχικά.
🎓 Οι προτάσεις NMEA θα καλυφθούν αργότερα σε αυτό το μάθημα.
Προσθήκη του αισθητήρα στο CounterFit
Για να χρησιμοποιήσετε έναν εικονικό αισθητήρα GPS, πρέπει να τον προσθέσετε στην εφαρμογή CounterFit.
Εργασία - προσθήκη του αισθητήρα στο CounterFit
Προσθέστε τον αισθητήρα GPS στην εφαρμογή CounterFit.
-
Δημιουργήστε μια νέα εφαρμογή Python στον υπολογιστή σας σε έναν φάκελο που ονομάζεται
gps-sensor
με ένα μόνο αρχείο που ονομάζεταιapp.py
και ένα εικονικό περιβάλλον Python, και προσθέστε τα πακέτα pip του CounterFit.⚠️ Μπορείτε να ανατρέξετε στις οδηγίες για τη δημιουργία και ρύθμιση ενός έργου Python CounterFit στο μάθημα 1, αν χρειαστεί.
-
Εγκαταστήστε ένα επιπλέον πακέτο Pip για να εγκαταστήσετε ένα CounterFit shim που μπορεί να επικοινωνεί με αισθητήρες που βασίζονται σε UART μέσω σειριακής σύνδεσης. Βεβαιωθείτε ότι το εγκαθιστάτε από ένα τερματικό με ενεργοποιημένο το εικονικό περιβάλλον.
pip install counterfit-shims-serial
-
Βεβαιωθείτε ότι η εφαρμογή ιστού CounterFit εκτελείται.
-
Δημιουργήστε έναν αισθητήρα GPS:
-
Στο πλαίσιο Create sensor στον πίνακα Sensors, ανοίξτε το αναπτυσσόμενο μενού Sensor type και επιλέξτε UART GPS.
-
Αφήστε τη Θύρα ρυθμισμένη σε /dev/ttyAMA0.
-
Επιλέξτε το κουμπί Add για να δημιουργήσετε τον αισθητήρα GPS στη θύρα
/dev/ttyAMA0
.
Ο αισθητήρας GPS θα δημιουργηθεί και θα εμφανιστεί στη λίστα αισθητήρων.
-
Προγραμματισμός του αισθητήρα GPS
Η εικονική συσκευή IoT μπορεί τώρα να προγραμματιστεί για να χρησιμοποιεί τον εικονικό αισθητήρα GPS.
Εργασία - προγραμματισμός του αισθητήρα GPS
Προγραμματίστε την εφαρμογή του αισθητήρα GPS.
-
Βεβαιωθείτε ότι η εφαρμογή
gps-sensor
είναι ανοιχτή στο VS Code. -
Ανοίξτε το αρχείο
app.py
. -
Προσθέστε τον παρακάτω κώδικα στην κορυφή του
app.py
για να συνδέσετε την εφαρμογή στο CounterFit:from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)
-
Προσθέστε τον παρακάτω κώδικα κάτω από αυτό για να εισαγάγετε κάποιες απαραίτητες βιβλιοθήκες, συμπεριλαμβανομένης της βιβλιοθήκης για τη σειριακή θύρα του CounterFit:
import time import counterfit_shims_serial serial = counterfit_shims_serial.Serial('/dev/ttyAMA0')
Αυτός ο κώδικας εισάγει τη μονάδα
serial
από το πακέτο Pipcounterfit_shims_serial
. Στη συνέχεια, συνδέεται στη σειριακή θύρα/dev/ttyAMA0
- αυτή είναι η διεύθυνση της σειριακής θύρας που χρησιμοποιεί ο εικονικός αισθητήρας GPS για τη θύρα UART. -
Προσθέστε τον παρακάτω κώδικα κάτω από αυτό για να διαβάσετε από τη σειριακή θύρα και να εκτυπώσετε τις τιμές στην κονσόλα:
def print_gps_data(line): print(line.rstrip()) while True: line = serial.readline().decode('utf-8') while len(line) > 0: print_gps_data(line) line = serial.readline().decode('utf-8') time.sleep(1)
Ορίζεται μια συνάρτηση που ονομάζεται
print_gps_data
, η οποία εκτυπώνει τη γραμμή που της δίνεται στην κονσόλα.Στη συνέχεια, ο κώδικας εκτελεί έναν ατέρμονο βρόχο, διαβάζοντας όσες γραμμές κειμένου μπορεί από τη σειριακή θύρα σε κάθε επανάληψη. Καλεί τη συνάρτηση
print_gps_data
για κάθε γραμμή.Αφού διαβαστούν όλα τα δεδομένα, ο βρόχος κάνει παύση για 1 δευτερόλεπτο και στη συνέχεια προσπαθεί ξανά.
-
Εκτελέστε αυτόν τον κώδικα, διασφαλίζοντας ότι χρησιμοποιείτε διαφορετικό τερματικό από αυτό στο οποίο εκτελείται η εφαρμογή CounterFit, ώστε η εφαρμογή CounterFit να παραμείνει σε λειτουργία.
-
Από την εφαρμογή CounterFit, αλλάξτε την τιμή του αισθητήρα GPS. Μπορείτε να το κάνετε με έναν από τους παρακάτω τρόπους:
-
Ορίστε την Πηγή σε
Lat/Lon
και ορίστε ένα συγκεκριμένο γεωγραφικό πλάτος, μήκος και αριθμό δορυφόρων που χρησιμοποιούνται για τη λήψη της θέσης GPS. Αυτή η τιμή θα σταλεί μόνο μία φορά, οπότε επιλέξτε το πλαίσιο Repeat για να επαναλαμβάνονται τα δεδομένα κάθε δευτερόλεπτο. -
Ορίστε την Πηγή σε
NMEA
και προσθέστε κάποιες προτάσεις NMEA στο πλαίσιο κειμένου. Όλες αυτές οι τιμές θα σταλούν, με καθυστέρηση 1 δευτερολέπτου πριν από κάθε νέα πρόταση GGA (θέση).Μπορείτε να χρησιμοποιήσετε ένα εργαλείο όπως το nmeagen.org για να δημιουργήσετε αυτές τις προτάσεις σχεδιάζοντας σε έναν χάρτη. Αυτές οι τιμές θα σταλούν μόνο μία φορά, οπότε επιλέξτε το πλαίσιο Repeat για να επαναλαμβάνονται ένα δευτερόλεπτο μετά την αποστολή όλων.
-
Ορίστε την Πηγή σε GPX αρχείο και ανεβάστε ένα αρχείο GPX με τοποθεσίες διαδρομής. Μπορείτε να κατεβάσετε αρχεία GPX από διάφορους δημοφιλείς ιστότοπους χαρτογράφησης και πεζοπορίας, όπως το AllTrails. Αυτά τα αρχεία περιέχουν πολλαπλές τοποθεσίες GPS ως διαδρομή, και ο αισθητήρας GPS θα επιστρέφει κάθε νέα τοποθεσία σε διαστήματα του 1 δευτερολέπτου.
Αυτές οι τιμές θα σταλούν μόνο μία φορά, οπότε επιλέξτε το πλαίσιο Repeat για να επαναλαμβάνονται ένα δευτερόλεπτο μετά την αποστολή όλων.
Αφού ρυθμίσετε τις παραμέτρους GPS, επιλέξτε το κουμπί Set για να αποθηκεύσετε αυτές τις τιμές στον αισθητήρα.
-
-
Θα δείτε την ακατέργαστη έξοδο από τον αισθητήρα GPS, κάτι σαν το παρακάτω:
$GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67
💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο code-gps/virtual-device.
😀 Το πρόγραμμα του αισθητήρα GPS σας ήταν επιτυχές!
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.