- Υλικά που χρησιμοποιούνται
- Ενότητα GPS NEO6M
- Οθόνη OLED 1,3 ιντσών I2C
- Διάγραμμα κυκλώματος
- Προγραμματισμός Arduino για Arduino OLED Speedometer
Τα ταχύμετρα χρησιμοποιούνται για τη μέτρηση της ταχύτητας κίνησης ενός οχήματος. Χρησιμοποιήσαμε προηγουμένως τον αισθητήρα υπερύθρων και τον αισθητήρα αίθουσας για την κατασκευή αναλογικού ταχύμετρου και ψηφιακού ταχύμετρου αντίστοιχα. Σήμερα θα χρησιμοποιήσουμε το GPS για να μετρήσουμε την ταχύτητα ενός κινούμενου οχήματος. Τα ταχύμετρα GPS είναι πιο ακριβή από τα τυπικά ταχύμετρα επειδή μπορεί να εντοπίζει συνεχώς το όχημα και μπορεί να υπολογίζει την ταχύτητα. Η τεχνολογία GPS χρησιμοποιείται ευρέως σε smartphone και οχήματα για πλοήγηση και ειδοποιήσεις κυκλοφορίας.
Σε αυτό το έργο, θα κατασκευάσουμε ένα ταχύμετρο GPS Arduino χρησιμοποιώντας μια μονάδα GPS NEO6M με οθόνη OLED.
Υλικά που χρησιμοποιούνται
- Arduino Nano
- Ενότητα GPS NEO6M
- Οθόνη OLED 1,3 ιντσών I2C
- Ψωμί
- Συνδέοντας άλτες
Ενότητα GPS NEO6M
Εδώ χρησιμοποιούμε τη μονάδα NEO6M GPS. Η μονάδα GPS NEO-6M είναι ένας δημοφιλής δέκτης GPS με ενσωματωμένη κεραμική κεραία, η οποία παρέχει μια ισχυρή δυνατότητα αναζήτησης μέσω δορυφόρου. Αυτός ο δέκτης έχει τη δυνατότητα να ανιχνεύει τοποθεσίες και να παρακολουθεί έως και 22 δορυφόρους και να εντοπίζει τοποθεσίες οπουδήποτε στον κόσμο. Με την ενσωματωμένη ένδειξη σήματος, μπορούμε να παρακολουθούμε την κατάσταση δικτύου της μονάδας. Διαθέτει εφεδρική μπαταρία δεδομένων, έτσι ώστε η μονάδα να μπορεί να αποθηκεύσει τα δεδομένα όταν η κύρια τροφοδοσία απενεργοποιηθεί κατά λάθος.
Η καρδιά του πυρήνα μέσα στη μονάδα δέκτη GPS είναι το τσιπ GPS NEO-6M από το u-blox. Μπορεί να παρακολουθήσει έως και 22 δορυφόρους σε 50 κανάλια και να έχει ένα πολύ εντυπωσιακό επίπεδο ευαισθησίας που είναι -161 dBm. Αυτός ο κινητήρας τοποθέτησης 50 καναλιών u-blox 6 διαθέτει Time-To-First-Fix (TTFF) κάτω από 1 δευτερόλεπτο. Αυτή η μονάδα υποστηρίζει το ρυθμό baud από 4800-230400 bps και έχει το προεπιλεγμένο baud 9600.
Χαρακτηριστικά:
- Τάση λειτουργίας: (2.7-3.6) V DC
- Ρεύμα λειτουργίας: 67 mA
- Ρυθμός Baud: 4800-230400 bps (προεπιλογή 9600)
- Πρωτόκολλο επικοινωνίας: NEMA
- Διεπαφή: UART
- Εξωτερική κεραία και ενσωματωμένο EEPROM.
Pinout της μονάδας GPS:
- VCC: Πείρος τάσης εισόδου της μονάδας
- GND: Καρφίτσα γείωσης
- RX, TX: Καρφίτσες επικοινωνίας UART με μικροελεγκτή
Έχουμε προηγουμένως διασυνδέσει το GPS με το Arduino και κατασκευάζουμε πολλά έργα χρησιμοποιώντας μονάδες GPS, συμπεριλαμβανομένης της παρακολούθησης οχημάτων.
Οθόνη OLED 1,3 ιντσών I2C
Ο όρος OLED σημαίνει « Organic Light emitting diode», χρησιμοποιεί την ίδια τεχνολογία που χρησιμοποιείται στις περισσότερες τηλεοράσεις μας, αλλά έχει λιγότερα pixel σε σύγκριση με αυτές. Είναι πραγματικά διασκεδαστικό να έχουμε αυτές τις εντυπωσιακές ενότητες οθόνης για διασύνδεση με το Arduino καθώς θα κάνει τα έργα μας να φαίνονται δροσερά. Εδώ έχουμε καλύψει ένα πλήρες άρθρο σχετικά με τις οθόνες OLED και τους τύπους του. Εδώ, χρησιμοποιούμε μια οθόνη OLED Monochrome 4-pin SH1106 OLED 1,28 ”. Αυτή η οθόνη μπορεί να λειτουργήσει μόνο με τη λειτουργία I2C.
Τεχνικές προδιαγραφές:
- IC οδηγού: SH1106
- Τάση εισόδου: 3.3V-5V DC
- Ανάλυση: 128x64
- Διεπαφή: I2C
- Τρέχουσα κατανάλωση: 8 mA
- Χρώμα pixel: Μπλε
- Γωνία θέασης:> 160 μοίρες
Περιγραφή καρφίτσας:
VCC: Τροφοδοσία εισόδου 3.3-5V DC
GND: Καρφίτσα αναφοράς γείωσης
SCL: Καρφίτσα ρολογιού της διεπαφής I2C
SDA: Καρφίτσα σειριακών δεδομένων της διεπαφής I2C
Η κοινότητα του Arduino μας έχει ήδη δώσει πολλές βιβλιοθήκες που μπορούν να χρησιμοποιηθούν άμεσα για να το κάνουν πολύ πιο απλό. Δοκίμασα μερικές βιβλιοθήκες και διαπίστωσα ότι η βιβλιοθήκη Adafruit_SH1106.h ήταν πολύ εύκολη στη χρήση και είχα μια χούφτα γραφικών επιλογών, επομένως θα χρησιμοποιήσουμε το ίδιο σε αυτό το σεμινάριο.
Το OLED φαίνεται πολύ δροσερό και μπορεί εύκολα να συνδεθεί με άλλους μικροελεγκτές για να δημιουργήσει μερικά ενδιαφέροντα έργα:
- Οθόνη OLED διασύνδεσης SSD1306 με Raspberry Pi
- Οθόνη OLED διασύνδεσης SSD1306 με το Arduino
- Ρολόι Διαδικτύου με χρήση ESP32 και OLED Display
- Αυτόματος ελεγκτής θερμοκρασίας AC με χρήση Arduino, DHT11 και IR Blaster
Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος για αυτό το ταχύμετρο GPS Arduino χρησιμοποιώντας OLED δίνεται παρακάτω.
Η πλήρης ρύθμιση θα μοιάζει παρακάτω:
Προγραμματισμός Arduino για Arduino OLED Speedometer
Ο πλήρης κωδικός του έργου δίνεται στο κάτω μέρος του σεμιναρίου. Εδώ εξηγούμε τον πλήρη κώδικα γραμμής προς γραμμή.
Πρώτα απ 'όλα, συμπεριλάβετε όλες τις βιβλιοθήκες. Εδώ η βιβλιοθήκη TinyGPS ++. H χρησιμοποιείται για τη λήψη των συντεταγμένων GPS χρησιμοποιώντας τη μονάδα δέκτη GPS και το Adafruit_SH1106.h χρησιμοποιείται για OLED.
#περιλαμβάνω
Στη συνέχεια, ορίζεται η διεύθυνση OLED I2C, η οποία μπορεί να είναι είτε OX3C είτε OX3D, εδώ είναι η OX3C στην περίπτωσή μου. Επίσης, πρέπει να οριστεί ο πείρος επαναφοράς της οθόνης. Στην περίπτωσή μου, ορίζεται ως -1, καθώς η οθόνη μοιράζεται την καρφίτσα Επαναφοράς του Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 οθόνη (OLED_RESET);
Στη συνέχεια, τα αντικείμενα για την κατηγορία TinyGPSPlus και Softwareserial ορίζονται όπως φαίνεται παρακάτω. Το σειριακό μάθημα λογισμικού χρειάζεται τον αρ. Pin Arduino. για σειριακή επικοινωνία, η οποία ορίζεται ως 2 και 3 εδώ.
int RX = 2, TX = 3; TinyGPSPlus gps; ΛογισμικόSerial gpssoft (RX, TX);
Μέσα στην εγκατάσταση () , η προετοιμασία γίνεται για σειριακή επικοινωνία και OLED. Ο προεπιλεγμένος ρυθμός baud για σειριακή επικοινωνία λογισμικού ορίζεται ως 9600. Εδώ SH1106_SWITCHCAPVCC χρησιμοποιείται για τη δημιουργία τάσης οθόνης από 3.3V εσωτερικά και η λειτουργία display.begin χρησιμοποιείται για την αρχικοποίηση της οθόνης.
άκυρη ρύθμιση () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Στο εσωτερικό, ενώ ο αληθινός βρόχος, τα σειριακά δεδομένα που λαμβάνονται επικυρώνονται, εάν λαμβάνονται έγκυρα σήματα GPS, τότε η οθόνη ταχύτητας () καλείται για να εμφανίσει την τιμή ταχύτητας στο OLED.
ενώ (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
Μέσα displayspeed () λειτουργία, τα δεδομένα ταχύτητας από τη μονάδα GPS ελέγχεται χρησιμοποιώντας τη λειτουργία gps.speed.isValid () και αν επιστρέφει μια πραγματική τιμή, τότε εμφανίζεται η τιμή της ταχύτητας στην οθόνη OLED. Εδώ το μέγεθος κειμένου στο OLED ορίζεται χρησιμοποιώντας τη λειτουργία display.setTextSize και η θέση του δρομέα ορίζεται χρησιμοποιώντας τη λειτουργία display.setCursor . Τα δεδομένα ταχύτητας από τη μονάδα GPS αποκωδικοποιούνται χρησιμοποιώντας τη συνάρτηση gps.speed.kmph () και τελικά εμφανίζονται χρησιμοποιώντας το display.display () .
εάν (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Τέλος, ανεβάστε τον κωδικό στο Arduino Uno και τοποθετήστε το σύστημα σε κινούμενο όχημα, και μπορείτε να δείτε την ταχύτητα στην οθόνη OLED όπως φαίνεται στην παρακάτω εικόνα.
Ο πλήρης κώδικας με ένα δοκιμαστικό βίντεο δίνεται παρακάτω.