- Απαιτούμενα συστατικά:
- Ενότητα GPS και η λειτουργία του:
- Προετοιμασία του Raspberry Pi για επικοινωνία με GPS:
- Συνδέσεις για διασύνδεση μονάδας GPS Raspberry Pi:
- Δοκιμή πριν από το Python Script:
Μία από τις πιο όμορφες ενσωματωμένες πλατφόρμες όπως το Arduino έχει δώσει στους κατασκευαστές και τους DIYers τη δυνατότητα να λαμβάνουν εύκολα δεδομένα τοποθεσίας χρησιμοποιώντας τη μονάδα GPS και έτσι να δημιουργούν πράγματα που βασίζονται στην τοποθεσία. Με την ποσότητα ισχύος που τροφοδοτείται από το Raspberry Pi, σίγουρα θα είναι πολύ φοβερό να κατασκευάσετε έργα με βάση το GPS με τις ίδιες φθηνές μονάδες GPS και αυτό είναι το επίκεντρο αυτής της ανάρτησης. Σήμερα σε αυτό το έργο θα συνδέσουμε τη μονάδα GPS με το Raspberry Pi 3.
Ο στόχος αυτού του έργου είναι να συλλέξει δεδομένα τοποθεσίας (γεωγραφικό μήκος και πλάτος) μέσω του UART από μια μονάδα GPS και να τα εμφανίσει σε μια οθόνη LCD 16x2, οπότε αν δεν είστε εξοικειωμένοι με τον τρόπο λειτουργίας της οθόνης LCD 16x2 με το Raspberry Pi, αυτό είναι άλλο μεγάλη ευκαιρία για μάθηση.
Απαιτούμενα συστατικά:
- Raspberry Pi 3
- Ενότητα GPS Neo 6m v2
- LCD 16 x 2
- Πηγή ισχύος για το Raspberry Pi
- Καλώδιο LAN για σύνδεση του υπολογιστή στον υπολογιστή σας σε λειτουργία χωρίς κεφαλή
- Καλώδια Breadboard και Jumper
- Αντίσταση / ποτενσιόμετρο στην οθόνη LCD
- Κάρτα μνήμης 8 ή 16Gb με Raspbian Jessie
Εκτός από αυτό πρέπει να εγκαταστήσουμε τη βιβλιοθήκη GPS Daemon (GPSD), τη βιβλιοθήκη Adafruit LCD 16x2, την οποία εγκαθιστούμε αργότερα σε αυτό το σεμινάριο.
Εδώ χρησιμοποιούμε το Raspberry Pi 3 με το Raspbian Jessie OS. Όλες οι βασικές απαιτήσεις υλικού και λογισμικού συζητήθηκαν προηγουμένως, μπορείτε να το αναζητήσετε στην Εισαγωγή Raspberry Pi.
Ενότητα GPS και η λειτουργία του:
Το GPS σημαίνει Global Positioning System και χρησιμοποιείται για την ανίχνευση του γεωγραφικού πλάτους και μήκους οποιασδήποτε θέσης στη Γη, με ακριβή ώρα UTC (Universal Time Coordinated). Η μονάδα GPS είναι το κύριο συστατικό του έργου συστήματος παρακολούθησης οχημάτων. Αυτή η συσκευή λαμβάνει τις συντεταγμένες από τον δορυφόρο για κάθε δευτερόλεπτο, με ώρα και ημερομηνία.
Η μονάδα GPS στέλνει τα δεδομένα που σχετίζονται με τη θέση παρακολούθησης σε πραγματικό χρόνο και στέλνει τόσα πολλά δεδομένα σε μορφή NMEA (δείτε το στιγμιότυπο οθόνης παρακάτω). Η μορφή NMEA αποτελείται από πολλές προτάσεις, στις οποίες χρειαζόμαστε μόνο μία πρόταση. Αυτή η πρόταση ξεκινά από $ GPGGA και περιέχει τις συντεταγμένες, την ώρα και άλλες χρήσιμες πληροφορίες. Αυτό το GPGGA αναφέρεται σε δεδομένα επιδιόρθωσης συστήματος καθολικής τοποθέτησης. Μάθετε περισσότερα για την ανάγνωση δεδομένων GPS και τις συμβολοσειρές του εδώ.
Μπορούμε να εξαγάγουμε συντεταγμένες από συμβολοσειρά $ GPGGA μετρώντας τα κόμματα στη συμβολοσειρά. Ας υποθέσουμε ότι βρείτε τη συμβολοσειρά $ GPGGA και την αποθηκεύετε σε έναν πίνακα, τότε το Latitude μπορεί να βρεθεί μετά από δύο κόμματα και το μήκος μπορεί να βρεθεί μετά από τέσσερα κόμματα. Τώρα αυτά τα γεωγραφικά πλάτη και μήκος μπορούν να τοποθετηθούν σε άλλους πίνακες.
Ακολουθεί η συμβολοσειρά $ GPGGA, μαζί με την περιγραφή της:
$ GPGGA, 104534.000.7791.0381, N, 06727.4434, E, 1,08,0,9,510,4, M, 43,9, M,, * 47
$ GPGGA, HHMMSS.SSS, γεωγραφικό πλάτος, N, γεωγραφικό μήκος, E, FQ, NOS, HDP, υψόμετρο, M, ύψος, M,, δεδομένα αθροίσματος
Αναγνωριστικό |
Περιγραφή |
$ GPGGA |
Δεδομένα διόρθωσης συστήματος καθολικής τοποθέτησης |
HHMMSS.SSS |
Μορφή χρόνου σε δευτερόλεπτα λεπτών και χιλιοστών του δευτερολέπτου |
Γεωγραφικό πλάτος |
Γεωγραφικό πλάτος (Συντεταγμένος) |
Ν |
Κατεύθυνση N = Βόρεια, S = Νότια |
Γεωγραφικό μήκος |
Γεωγραφικό μήκος (Συντεταγμένος) |
μι |
Κατεύθυνση E = Ανατολή, Δ = Δυτικά |
FQ |
Διορθώστε τα δεδομένα ποιότητας |
NOS |
Αριθμός δορυφόρων που χρησιμοποιούνται |
HPD |
Οριζόντια αραίωση ακριβείας |
Υψόμετρο |
Υψόμετρο από την επιφάνεια της θάλασσας |
Μ |
Μετρητής |
Υψος |
Υψος |
Checksum |
Δεδομένα Checksum |
Μπορείτε να ελέγξετε τα άλλα έργα μας GPS:
- Vehicle Tracker με βάση το Arduino χρησιμοποιώντας GPS και GSM
- Σύστημα ειδοποίησης ατυχήματος με βάση το Arduino χρησιμοποιώντας GPS, GSM και Accelerometer
- Πώς να χρησιμοποιήσετε το GPS με το Arduino
- Παρακολουθήστε ένα όχημα στους Χάρτες Google χρησιμοποιώντας Arduino, ESP8266 & GPS
Προετοιμασία του Raspberry Pi για επικοινωνία με GPS:
Εντάξει, λοιπόν, για να μπω, έτσι δεν θα βαρεθεί, θα υποθέσω ότι γνωρίζετε ήδη πολλά για το Raspberry Pi, αρκετό για να εγκαταστήσετε το λειτουργικό σας σύστημα, να αποκτήσετε τη διεύθυνση IP, να συνδεθείτε σε τερματικό λογισμικό όπως στόκος και άλλα πράγματα για το ΠΙ. Εάν έχετε κάποιο πρόβλημα να κάνετε κάτι από τα παραπάνω, χτυπήστε με κάτω από την ενότητα σχολίων και θα χαρώ να σας βοηθήσω.
Το πρώτο πράγμα που πρέπει να κάνουμε για να ξεκινήσουμε αυτό το έργο είναι να προετοιμάσουμε το Raspberry Pi 3 για να μπορέσουμε να επικοινωνήσουμε με τη μονάδα GPS μέσω UART, πιστέψτε με, είναι αρκετά δύσκολο και προσπάθησε να το κάνεις σωστό, αλλά αν το ακολουθήσεις ο οδηγός μου προσεκτικά θα το πάρετε με τη μία, αυτό είναι το πιο δύσκολο μέρος του έργου. Εδώ χρησιμοποιήσαμε το Neo 6m v2 GPS Module.
Για να βουτήξετε, εδώ είναι μια μικρή εξήγηση για το πώς λειτουργεί το Raspberry Pi 3 UART.
Το Raspberry Pi διαθέτει δύο ενσωματωμένα UART, ένα PL011 και ένα mini UART. Εφαρμόζονται χρησιμοποιώντας διαφορετικά μπλοκ υλικού, ώστε να έχουν ελαφρώς διαφορετικά χαρακτηριστικά. Ωστόσο, στο raspberry pi 3, η μονάδα ασύρματης σύνδεσης / Bluetooth συνδέεται με το PLO11 UART, ενώ το mini UART χρησιμοποιείται για το linux console ouptut. Ανάλογα με το πώς το βλέπετε, θα ορίσω το PLO11 ως το καλύτερο από τα δύο UART λόγω του επιπέδου εφαρμογής του. Έτσι, για αυτό το έργο θα απενεργοποιήσουμε τη μονάδα Bluetooth από το PLO11 UART χρησιμοποιώντας μια επικάλυψη διαθέσιμη στην ενημερωμένη τρέχουσα έκδοση του Raspbian Jessie.
Βήμα 1: Ενημέρωση του Raspberry Pi:
Το πρώτο πράγμα που μου αρέσει να κάνω πριν ξεκινήσω κάθε έργο είναι η ενημέρωση του βατόμουρου pi. Ας κάνουμε λοιπόν το συνηθισμένο και εκτελέστε τις παρακάτω εντολές.
sudo apt-get ενημέρωση sudo apt-get αναβάθμιση
στη συνέχεια επανεκκινήστε το σύστημα με;
επανεκκίνηση sudo
Βήμα 2: Ρύθμιση του UART στο Raspberry Pi:
Το πρώτο πράγμα που θα κάνουμε σε αυτό είναι να επεξεργαστούμε το αρχείο /boot/config.txt . Για να το κάνετε αυτό, εκτελέστε τις παρακάτω εντολές:
sudo nano /boot/config.txt
στο κάτω μέρος του αρχείου config.txt, προσθέστε τις ακόλουθες γραμμές
dtparam = spi = on dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
ctrl + x για έξοδο και πατήστε y και enter για αποθήκευση.
Βεβαιωθείτε ότι δεν υπάρχουν τυπογραφικά λάθη ή σφάλματα με διπλό έλεγχο, καθώς ένα σφάλμα με αυτό ενδέχεται να αποτρέψει την εκκίνηση του pi
Ποιοι είναι οι λόγοι για αυτές τις εντολές, το force_turbo επιτρέπει στο UART να χρησιμοποιεί τη μέγιστη συχνότητα πυρήνα που θέτουμε σε αυτήν την περίπτωση να είναι 250. Ο λόγος για αυτό είναι να διασφαλιστεί η συνέπεια και η ακεραιότητα των σειριακών δεδομένων που έχουν ληφθεί. Είναι σημαντικό να σημειωθεί σε αυτό το σημείο ότι η χρήση force_turbo = 1 θα ακυρώσει την εγγύηση του σμέουρου pi σας, αλλά επιπλέον, είναι αρκετά ασφαλές.
Το dtoverlay = pi3-disable-bt αποσυνδέει το bluetooth από το ttyAMA0 , αυτό μας επιτρέπει να χρησιμοποιήσουμε την πλήρη ισχύ UART που διατίθεται μέσω του ttyAMAO αντί του mini UART ttyS0.
Το δεύτερο βήμα σε αυτήν την ενότητα ρύθμισης UART είναι να επεξεργαστείτε το boot / cmdline.txt
Θα σας προτείνω να δημιουργήσετε ένα αντίγραφο του cmdline.txt και να το αποθηκεύσετε πρώτα πριν το επεξεργαστείτε, ώστε να μπορείτε να το επιστρέψετε αργότερα, αν χρειαστεί. Αυτό μπορεί να γίνει χρησιμοποιώντας:
sudo cp boot / cmdline.txt boot / cmdline_backup.txt sudo nano /boot.cmdline.txt
Αντικαταστήστε το περιεχόμενο με;
dwc_otg.lpm_enable = 0 κονσόλα = tty1 root = / dev / mmcblk0p2 rootfstype = ext4 elevator = deadline fsck.repair = yes rootwait silent splash plymouth.ignore-serial-consoles
Αποθήκευση και έξοδος.
Με αυτό, τότε θα χρειαστεί να επανεκκινήσουμε ξανά το σύστημα για να πραγματοποιήσουμε αλλαγές ( επανεκκίνηση sudo ).
Βήμα 3: Απενεργοποίηση της υπηρεσίας Raspberry Pi Serial Getty
Το επόμενο βήμα είναι να απενεργοποιήσετε τη σειρά get της υπηρεσίας getty , η εντολή θα την αποτρέψει από την εκκίνηση ξανά κατά την επανεκκίνηση:
sudo systemctl stop [email protected] sudo systemctl απενεργοποιήστε το [email protected]
Οι ακόλουθες εντολές μπορούν να χρησιμοποιηθούν για να την ενεργοποιήσουν ξανά αν χρειαστεί
sudo systemctl ενεργοποίηση [email protected] sudo systemctl έναρξη [email protected]
Επανεκκινήστε το σύστημα.
Βήμα 4: Ενεργοποίηση ttyAMAO:
Απενεργοποιήσαμε το ttyS0, το επόμενο πράγμα είναι να ενεργοποιήσουμε το ttyAMAO .
sudo systemctl ενεργοποιήστε το [email protected]
Βήμα 5: Εγκαταστήστε το Minicom και το pynmea2:
Θα είμαστε ελάχιστοι για να συνδεθούμε με τη μονάδα GPS και να κατανοήσουμε τα δεδομένα. Είναι επίσης ένα από τα εργαλεία που θα χρησιμοποιήσουμε για να ελέγξουμε ότι η μονάδα GPS λειτουργεί καλά. Μια εναλλακτική λύση στο minicom είναι το λογισμικό δαίμονα GPSD.
sudo apt-get εγκατάσταση minicom
Για να αναλύσουμε εύκολα τα ληφθέντα δεδομένα, θα χρησιμοποιήσουμε τη βιβλιοθήκη pynmea2 . Μπορεί να εγκατασταθεί χρησιμοποιώντας?
sudo pip εγκατάσταση pynmea2
Μπορείτε να βρείτε την τεκμηρίωση της βιβλιοθήκης εδώ
Βήμα 6: Εγκατάσταση της βιβλιοθήκης LCD:
Για αυτό το σεμινάριο θα χρησιμοποιήσουμε τη βιβλιοθήκη AdaFruit. Η βιβλιοθήκη δημιουργήθηκε για οθόνες AdaFruit, αλλά λειτουργεί επίσης για πίνακες προβολής χρησιμοποιώντας HD44780 Εάν η οθόνη σας βασίζεται σε αυτό, τότε θα πρέπει να λειτουργεί χωρίς προβλήματα.
Νιώθω καλύτερα να κλωνοποιώ τη βιβλιοθήκη και να την εγκαθιστώ απλώς. Για να εκτελέσετε κλωνοποίηση;
git clone
αλλάξτε στον κλωνοποιημένο κατάλογο και εγκαταστήστε τον
cd./Adafruit_Python_CharLCD sudo python setup.py εγκατάσταση
Σε αυτό το στάδιο, θα προτείνω μια άλλη επανεκκίνηση, ώστε να είμαστε έτοιμοι να συνεχίσουμε τη σύνδεση των στοιχείων.
Συνδέσεις για διασύνδεση μονάδας GPS Raspberry Pi:
Συνδέστε τη μονάδα GPS και την οθόνη LCD στο Raspberry Pi όπως φαίνεται στο παρακάτω διάγραμμα κυκλώματος.
Δοκιμή πριν από το Python Script:
Πιστεύω ότι είναι σημαντικό να δοκιμάσω τη σύνδεση της μονάδας GPS πριν προχωρήσουμε στο σενάριο python. Θα χρησιμοποιήσουμε το minicom για αυτό. Εκτελέστε την εντολή:
sudo minicom -D / dev / ttyAMA0 -b9600
όπου το 9600 αντιπροσωπεύει τον ρυθμό baud με τον οποίο επικοινωνεί η μονάδα GPS. Αυτό μπορεί να χρησιμοποιηθεί για μια φορά που είμαστε σίγουροι για την επικοινωνία δεδομένων μεταξύ του GPS και του RPI, ήρθε η ώρα να γράψουμε το σενάριο python.
Το τεστ μπορεί επίσης να γίνει χρησιμοποιώντας γάτα
sudo cat / dev / ttyAMA0
Στο παράθυρο, μπορείτε να δείτε προτάσεις NMEA που έχουμε συζητήσει νωρίτερα.
Το σενάριο Python για αυτό το σεμινάριο για το Raspberry Pi GPS παρέχεται παρακάτω στην ενότητα Code
Με όλα όσα ειπώθηκαν και έγιναν, ήρθε η ώρα να δοκιμάσετε ολόκληρο το σύστημα. Είναι σημαντικό να διασφαλίσετε ότι το GPS σας έχει μια καλή επιδιόρθωση, αφαιρώντας το, τα περισσότερα GPS απαιτούν από τρεις έως 4 δορυφόρους για να επιδιορθώσετε, αν και ο δικός μου δούλευε εσωτερικά.
Λειτουργεί σωστά; Μάλιστα…
Έχετε ερωτήσεις ή σχόλια; Τοποθετήστε τα στην ενότητα σχολίων.
Το βίντεο επίδειξης δίνεται παρακάτω, όπου έχουμε δείξει την τοποθεσία σε γεωγραφικό πλάτος και μήκος σε οθόνη LCD χρησιμοποιώντας GPS και Raspberry Pi.