10 KiB
Ανάγνωση δεδομένων GPS - Wio Terminal
Σε αυτό το μέρος του μαθήματος, θα προσθέσετε έναν αισθητήρα GPS στο Wio Terminal σας και θα διαβάσετε δεδομένα από αυτόν.
Υλικό
Το Wio Terminal χρειάζεται έναν αισθητήρα GPS.
Ο αισθητήρας που θα χρησιμοποιήσετε είναι ο Grove GPS Air530 sensor. Αυτός ο αισθητήρας μπορεί να συνδεθεί σε πολλαπλά συστήματα GPS για γρήγορη και ακριβή λήψη σήματος. Ο αισθητήρας αποτελείται από 2 μέρη - τα βασικά ηλεκτρονικά του αισθητήρα και μια εξωτερική κεραία που συνδέεται με ένα λεπτό καλώδιο για να λαμβάνει τα ραδιοκύματα από τους δορυφόρους.
Πρόκειται για έναν αισθητήρα UART, οπότε στέλνει δεδομένα GPS μέσω UART.
Σύνδεση του αισθητήρα GPS
Ο αισθητήρας Grove GPS μπορεί να συνδεθεί στο Wio Terminal.
Εργασία - σύνδεση του αισθητήρα GPS
Συνδέστε τον αισθητήρα GPS.
-
Εισάγετε το ένα άκρο ενός καλωδίου Grove στην υποδοχή του αισθητήρα GPS. Θα μπει μόνο με έναν συγκεκριμένο τρόπο.
-
Με το Wio Terminal αποσυνδεδεμένο από τον υπολογιστή σας ή άλλη πηγή τροφοδοσίας, συνδέστε το άλλο άκρο του καλωδίου Grove στην αριστερή υποδοχή Grove του Wio Terminal, όπως κοιτάτε την οθόνη. Αυτή είναι η υποδοχή που βρίσκεται πιο κοντά στο κουμπί τροφοδοσίας.
-
Τοποθετήστε τον αισθητήρα GPS έτσι ώστε η συνδεδεμένη κεραία να έχει ορατότητα προς τον ουρανό - ιδανικά δίπλα σε ένα ανοιχτό παράθυρο ή έξω. Είναι πιο εύκολο να λάβετε καθαρό σήμα χωρίς εμπόδια μπροστά από την κεραία.
-
Τώρα μπορείτε να συνδέσετε το Wio Terminal στον υπολογιστή σας.
-
Ο αισθητήρας GPS έχει 2 LED - ένα μπλε LED που αναβοσβήνει όταν μεταδίδονται δεδομένα και ένα πράσινο LED που αναβοσβήνει κάθε δευτερόλεπτο όταν λαμβάνονται δεδομένα από δορυφόρους. Βεβαιωθείτε ότι το μπλε LED αναβοσβήνει όταν ενεργοποιείτε το Wio Terminal. Μετά από λίγα λεπτά, το πράσινο LED θα αρχίσει να αναβοσβήνει - αν όχι, ίσως χρειαστεί να επανατοποθετήσετε την κεραία.
Προγραμματισμός του αισθητήρα GPS
Το Wio Terminal μπορεί τώρα να προγραμματιστεί για να χρησιμοποιεί τον συνδεδεμένο αισθητήρα GPS.
Εργασία - προγραμματισμός του αισθητήρα GPS
Προγραμματίστε τη συσκευή.
-
Δημιουργήστε ένα νέο έργο Wio Terminal χρησιμοποιώντας το PlatformIO. Ονομάστε αυτό το έργο
gps-sensor
. Προσθέστε κώδικα στη συνάρτησηsetup
για να διαμορφώσετε τη σειριακή θύρα. -
Προσθέστε την παρακάτω οδηγία
include
στην κορυφή του αρχείουmain.cpp
. Αυτή περιλαμβάνει ένα αρχείο κεφαλίδας με συναρτήσεις για τη διαμόρφωση της αριστερής θύρας Grove για UART.#include <wiring_private.h>
-
Κάτω από αυτό, προσθέστε την παρακάτω γραμμή κώδικα για να δηλώσετε μια σύνδεση σειριακής θύρας με τη θύρα UART:
static Uart Serial3(&sercom3, PIN_WIRE_SCL, PIN_WIRE_SDA, SERCOM_RX_PAD_1, UART_TX_PAD_0);
-
Πρέπει να προσθέσετε λίγο κώδικα για να ανακατευθύνετε ορισμένους εσωτερικούς χειριστές σημάτων σε αυτή τη σειριακή θύρα. Προσθέστε τον παρακάτω κώδικα κάτω από τη δήλωση
Serial3
:void SERCOM3_0_Handler() { Serial3.IrqHandler(); } void SERCOM3_1_Handler() { Serial3.IrqHandler(); } void SERCOM3_2_Handler() { Serial3.IrqHandler(); } void SERCOM3_3_Handler() { Serial3.IrqHandler(); }
-
Στη συνάρτηση
setup
, κάτω από τη διαμόρφωση της θύραςSerial
, διαμορφώστε τη σειριακή θύρα UART με τον παρακάτω κώδικα:Serial3.begin(9600); while (!Serial3) ; // Wait for Serial3 to be ready delay(1000);
-
Κάτω από αυτόν τον κώδικα στη συνάρτηση
setup
, προσθέστε τον παρακάτω κώδικα για να συνδέσετε την υποδοχή Grove με τη σειριακή θύρα:pinPeripheral(PIN_WIRE_SCL, PIO_SERCOM_ALT);
-
Προσθέστε την παρακάτω συνάρτηση πριν από τη συνάρτηση
loop
για να στείλετε τα δεδομένα GPS στον σειριακό παρακολουθητή:void printGPSData() { Serial.println(Serial3.readStringUntil('\n')); }
-
Στη συνάρτηση
loop
, προσθέστε τον παρακάτω κώδικα για να διαβάσετε από τη σειριακή θύρα UART και να εκτυπώσετε την έξοδο στον σειριακό παρακολουθητή:while (Serial3.available() > 0) { printGPSData(); } delay(1000);
Αυτός ο κώδικας διαβάζει από τη σειριακή θύρα UART. Η συνάρτηση
readStringUntil
διαβάζει μέχρι έναν χαρακτήρα τερματισμού, σε αυτή την περίπτωση μια νέα γραμμή. Αυτό θα διαβάσει μια ολόκληρη πρόταση NMEA (οι προτάσεις NMEA τερματίζονται με έναν χαρακτήρα νέας γραμμής). Όσο υπάρχουν δεδομένα που μπορούν να διαβαστούν από τη σειριακή θύρα UART, διαβάζονται και αποστέλλονται στον σειριακό παρακολουθητή μέσω της συνάρτησηςprintGPSData
. Όταν δεν υπάρχουν άλλα δεδομένα για ανάγνωση, ηloop
καθυστερεί για 1 δευτερόλεπτο (1.000ms). -
Δημιουργήστε και ανεβάστε τον κώδικα στο Wio Terminal.
-
Μόλις ανεβεί, μπορείτε να παρακολουθήσετε τα δεδομένα GPS χρησιμοποιώντας τον σειριακό παρακολουθητή.
> Executing task: platformio device monitor < --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time --- More details at http://bit.ly/pio-monitor-filters --- Miniterm on /dev/cu.usbmodem1201 9600,8,N,1 --- --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H --- $GNGGA,020604.001,4738.538654,N,12208.341758,W,1,3,,164.7,M,-17.1,M,,*67 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $BDGSA,A,1,,,,,,,,,,,,,,,*0F $GPGSV,1,1,00*79 $BDGSV,1,1,00*68
💁 Μπορείτε να βρείτε αυτόν τον κώδικα στον φάκελο code-gps/wio-terminal.
😀 Το πρόγραμμα του αισθητήρα GPS ολοκληρώθηκε με επιτυχία!
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.