- Verwendete Materialien
- NEO6M GPS-Modul
- 1,3 Zoll I2C OLED-Display
- Schaltplan
- Programmieren von Arduino für Arduino OLED-Tachometer
Tachometer werden verwendet, um die Fahrgeschwindigkeit eines Fahrzeugs zu messen. Wir haben zuvor den IR-Sensor und den Hallsensor verwendet, um einen analogen Tachometer bzw. einen digitalen Tachometer zu bauen. Heute werden wir GPS verwenden, um die Geschwindigkeit eines fahrenden Fahrzeugs zu messen. GPS-Tachometer sind genauer als Standard-Tachometer, da sie das Fahrzeug kontinuierlich lokalisieren und die Geschwindigkeit berechnen können. Die GPS-Technologie wird häufig in Smartphones und Fahrzeugen für Navigations- und Verkehrswarnungen verwendet.
In diesem Projekt werden wir einen Arduino GPS-Tacho mit einem NEO6M-GPS-Modul mit OLED-Display bauen.
Verwendete Materialien
- Arduino Nano
- NEO6M GPS-Modul
- 1,3 Zoll I2C OLED-Display
- Steckbrett
- Jumper anschließen
NEO6M GPS-Modul
Hier verwenden wir das NEO6M GPS-Modul. Das NEO-6M GPS-Modul ist ein beliebter GPS-Empfänger mit einer eingebauten Keramikantenne, die eine starke Satellitensuchfunktion bietet. Dieser Empfänger kann Standorte erfassen und bis zu 22 Satelliten verfolgen und Standorte überall auf der Welt identifizieren. Mit der integrierten Signalanzeige können wir den Netzwerkstatus des Moduls überwachen. Es verfügt über eine Datensicherungsbatterie, damit das Modul die Daten speichern kann, wenn die Hauptstromversorgung versehentlich abgeschaltet wird.
Das Herzstück des GPS-Empfängermoduls ist der NEO-6M GPS-Chip von u-blox. Es kann bis zu 22 Satelliten auf 50 Kanälen verfolgen und hat eine sehr beeindruckende Empfindlichkeit von -161 dBm. Dieser 50-Kanal-U-Blox-6-Positionierungsmotor verfügt über eine Time-To-First-Fix (TTFF) von unter 1 Sekunde. Dieses Modul unterstützt die Baudrate von 4800-230400 Bit / s und hat die Standardbaudrate von 9600.
Eigenschaften:
- Betriebsspannung: (2,7-3,6) V DC
- Betriebsstrom: 67 mA
- Baudrate: 4800-230400 bps (9600 Standard)
- Kommunikationsprotokoll: NEMA
- Schnittstelle: UART
- Externe Antenne und eingebautes EEPROM.
Pinbelegung des GPS-Moduls:
- VCC: Eingangsspannungsstift des Moduls
- GND: Erdungsstift
- RX, TX: UART-Kommunikationspins mit Mikrocontroller
Wir haben zuvor GPS mit Arduino verbunden und viele Projekte mit GPS-Modulen einschließlich Fahrzeugverfolgung erstellt.
1,3 Zoll I2C OLED-Display
Der Begriff OLED steht für „ Organic Light Emitting Diode“. Er verwendet dieselbe Technologie wie die meisten unserer Fernseher, weist jedoch im Vergleich zu diesen weniger Pixel auf. Es macht wirklich Spaß, diese cool aussehenden Anzeigemodule mit dem Arduino zu verbinden, da dadurch unsere Projekte cool aussehen. Wir haben hier einen vollständigen Artikel über OLED-Displays und ihre Typen behandelt. Hier verwenden wir ein monochromes 4-poliges SH1106 OLED 1,28 ”OLED-Display. Dieses Display kann nur im I2C-Modus verwendet werden.
Technische Spezifikationen:
- Treiber-IC: SH1106
- Eingangsspannung: 3,3V-5V DC
- Auflösung: 128 x 64
- Schnittstelle: I2C
- Stromaufnahme: 8 mA
- Pixelfarbe: Blau
- Betrachtungswinkel:> 160 Grad
Pin Beschreibung:
VCC: Eingangsstromversorgung 3,3-5 V DC
GND: Erdungsreferenzstift
SCL: Clock-Pin der I2C-Schnittstelle
SDA: Serial Data Pin der I2C-Schnittstelle
Die Arduino-Community hat uns bereits viele Bibliotheken zur Verfügung gestellt, die direkt verwendet werden können, um dies viel einfacher zu machen. Ich habe einige Bibliotheken ausprobiert und festgestellt, dass die Adafruit_SH1106.h- Bibliothek sehr einfach zu verwenden ist und über eine Handvoll grafischer Optionen verfügt. Daher werden wir diese in diesem Tutorial verwenden.
OLED sieht sehr cool aus und kann leicht mit anderen Mikrocontrollern verbunden werden, um einige interessante Projekte zu erstellen:
- Schnittstelle zwischen SSD1306 OLED-Display und Raspberry Pi
- Verbindung des SSD1306 OLED-Displays mit Arduino
- Internetuhr mit ESP32 und OLED-Display
- Automatischer AC-Temperaturregler mit Arduino, DHT11 und IR Blaster
Schaltplan
Das Schaltbild für diesen Arduino GPS-Tachometer mit OLED ist unten angegeben.
Das komplette Setup sieht wie folgt aus:
Programmieren von Arduino für Arduino OLED-Tachometer
Der vollständige Code des Projekts ist am Ende des Tutorials angegeben. Hier erklären wir den vollständigen Code Zeile für Zeile.
Schließen Sie zunächst alle Bibliotheken ein. Hier wird die TinyGPS ++. H-Bibliothek verwendet, um die GPS-Koordinaten mithilfe des GPS-Empfängermoduls abzurufen, und Adafruit_SH1106.h wird für OLED verwendet.
#einschließen
Dann wird die OLED-I2C-Adresse definiert, die entweder OX3C oder OX3D sein kann, hier ist es in meinem Fall OX3C. Außerdem muss der Reset-Pin des Displays definiert werden. In meinem Fall ist es als -1 definiert, da das Display den Reset-Pin von Arduino gemeinsam nutzt.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106-Anzeige (OLED_RESET);
Als Nächstes werden die Objekte für die Klassen TinyGPSPlus und Softwareserial wie unten gezeigt definiert. Die Software-Serienklasse benötigt den Arduino-Pin Nr. für die serielle Kommunikation, die hier als 2 und 3 definiert ist.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
Innerhalb von setup () erfolgt die Initialisierung für die serielle Kommunikation und die OLED. Die Standardbaudrate für die serielle Software-Kommunikation ist als 9600 definiert. Hier wird SH1106_SWITCHCAPVCC verwendet, um intern eine Anzeigespannung von 3,3 V zu erzeugen, und die Funktion display.begin wird verwendet, um die Anzeige zu initialisieren.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }}
Innerhalb während wahre Schleife empfangenen seriellen Daten validiert werden, wenn gültige GPS - Signale empfangen werden, dann displayspeed () aufgerufen, um den Geschwindigkeitswert auf OLED zu zeigen.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
Innerhalb displayspeed () Funktion werden die Geschwindigkeitsdaten aus dem GPS - Modul mit der Funktion geprüft gps.speed.isValid () , und wenn es einen wahren Wert zurückgibt, dann wird der Geschwindigkeitswert auf OLED - Display angezeigt. Hier wird die Textgröße auf OLED mit der Funktion display.setTextSize und die Cursorposition mit der Funktion display.setCursor definiert. Die Geschwindigkeitsdaten vom GPS-Modul werden mit der Funktion gps.speed.kmph () dekodiert und schließlich mit display.display () angezeigt.
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }}
Laden Sie abschließend den Code in Arduino Uno hoch und setzen Sie das System in ein fahrendes Fahrzeug. Die Geschwindigkeit wird auf dem OLED-Display angezeigt (siehe Abbildung unten).
Der vollständige Code mit einem Demo-Video ist unten angegeben.