- Brugte materialer
- NEO6M GPS-modul
- 1,3 tommer I2C OLED-skærm
- Kredsløbsdiagram
- Programmering Arduino til Arduino OLED Speedometer
Hastighedsmålere bruges til at måle køretøjets kørehastighed. Vi har tidligere brugt IR-sensoren og hall-sensoren til at bygge henholdsvis analogt speedometer og digitalt speedometer. I dag bruger vi GPS til at måle hastigheden på et køretøj i bevægelse. GPS-hastighedsmålere er mere nøjagtige end standard-hastighedsmålere, fordi det kontinuerligt kan lokalisere køretøjet og kan beregne hastigheden. GPS-teknologi bruges i vid udstrækning i smartphones og køretøjer til navigations- og trafikalarmer.
I dette projekt bygger vi et Arduino GPS-speedometer ved hjælp af et NEO6M GPS-modul med en OLED-skærm.
Brugte materialer
- Arduino Nano
- NEO6M GPS-modul
- 1,3 tommer I2C OLED-skærm
- Brødbræt
- Tilslutte trøjer
NEO6M GPS-modul
Her bruger vi NEO6M GPS-modulet. NEO-6M GPS-modulet er en populær GPS-modtager med en indbygget keramisk antenne, der giver en stærk satellitsøgefunktion. Denne modtager har evnen til at registrere placeringer og spore op til 22 satellitter og identificerer placeringer overalt i verden. Med den indbyggede signalindikator kan vi overvåge modulets netværksstatus. Det har et backup-batteri, så modulet kan gemme dataene, når hovedstrømmen slukkes ved et uheld.
Kernen i GPS-modtagermodulet er NEO-6M GPS-chip fra u-blox. Det kan spore op til 22 satellitter på 50 kanaler og har et meget imponerende følsomhedsniveau, som er -161 dBm. Denne 50-kanals u-blox 6 positioneringsmotor kan prale af en Time-To-First-Fix (TTFF) på under 1 sekund. Dette modul understøtter baudrate fra 4800-230400 bps og har standard baud på 9600.
Funktioner:
- Driftsspænding: (2,7-3,6) V DC
- Driftsstrøm: 67 mA
- Baudrate: 4800-230400 bps (9600 standard)
- Kommunikationsprotokol: NEMA
- Interface: UART
- Ekstern antenne og indbygget EEPROM.
Pinout af GPS-modul:
- VCC: Indgangsspændingsstift på modulet
- GND: Jordstift
- RX, TX: UART-kommunikationsnåle med Microcontroller
Vi har tidligere interfacet GPS med Arduino og opbygget mange projekter ved hjælp af GPS-moduler inklusive køretøjssporing.
1,3 tommer I2C OLED-skærm
Udtrykket OLED står for " Organisk lysemitterende diode", det bruger den samme teknologi, som bruges i de fleste af vores fjernsyn, men har færre pixels i forhold til dem. Det er rigtig sjovt at have disse seje displaymoduler, der skal forbindes med Arduino, da det får vores projekter til at se seje ud. Vi har dækket en komplet artikel om OLED-skærme og dens typer her. Her bruger vi en monokrom 4-polet SH1106 OLED 1,28 ”OLED-skærm. Denne skærm kan kun fungere i I2C-tilstand.
Tekniske specifikationer:
- Driver IC: SH1106
- Indgangsspænding: 3,3V-5V DC
- Opløsning: 128x64
- Interface: I2C
- Strømforbrug: 8 mA
- Pixelfarve: Blå
- Betragtningsvinkel:> 160 grader
Pin Beskrivelse:
VCC: Indgangsforsyning 3,3-5V DC
GND: Jordreferencestift
SCL: Clock pin i I2C interface
SDA: Serial Data pin i I2C interface
Arduino-samfundet har allerede givet os en masse biblioteker, som kan bruges direkte til at gøre dette meget enklere. Jeg prøvede et par biblioteker og fandt ud af, at Adafruit_SH1106.h- biblioteket var meget let at bruge og havde en håndfuld grafiske muligheder, derfor vil vi bruge det samme i denne vejledning.
OLED ser meget sejt ud og kan let interfaces med andre mikrocontrollere for at opbygge nogle interessante projekter:
- Interfacing SSD1306 OLED-skærm med Raspberry Pi
- Interfacing SSD1306 OLED-skærm med Arduino
- Internetur ved hjælp af ESP32 og OLED Display
- Automatisk AC temperaturregulator ved hjælp af Arduino, DHT11 og IR Blaster
Kredsløbsdiagram
Kredsløbsdiagram for dette Arduino GPS-speedometer ved hjælp af OLED er angivet nedenfor.
Den komplette opsætning vil se ud som nedenfor:
Programmering Arduino til Arduino OLED Speedometer
Den komplette kode for projektet findes nederst i vejledningen. Her forklarer vi den komplette kode linje for linje.
Først og fremmest inkludere alle bibliotekerne. Her bruges TinyGPS ++. H-biblioteket til at hente GPS-koordinaterne ved hjælp af GPS-modtagermodulet, og Adafruit_SH1106.h bruges til OLED.
#omfatte
Derefter defineres OLED I2C-adressen, som kan være enten OX3C eller OX3D, her er det OX3C i mit tilfælde. Desuden skal skærmens Nulstil-pin defineres. I mit tilfælde er det defineret som -1, da skærmen deler Arduinos Reset pin.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 display (OLED_RESET);
Dernæst defineres objekterne til TinyGPSPlus og softwareserial- klassen som vist nedenfor. Software seriel klasse har brug for Arduino pin nr. til seriel kommunikation, der er defineret som 2 og 3 her.
int RX = 2, TX = 3; TinyGPSPlus GPS; Software Seriel gpssoft (RX, TX);
Inside setup () foretages initialisering til seriel kommunikation og OLED. Standard baudrate for seriel kommunikation til software er defineret som 9600. Her bruges SH1106_SWITCHCAPVCC til at generere displayspænding fra 3,3 V internt og display.begin- funktionen bruges til at initialisere skærmen.
ugyldig opsætning () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Inde mens sand løkke, er de serielle data modtaget valideret, hvis gyldige GPS-signalerne modtages, så displayspeed () kaldes for at vise hastigheden værdi på OLED.
mens (gpssoft.available ()> 0) hvis (gps.encode (gpssoft.read ())) viser hastighed ();
Inde i displayspeed () -funktionen kontrolleres hastighedsdataene fra GPS-modulet ved hjælp af funktionen gps.speed.isValid (), og hvis de returnerer en ægte værdi, vises hastighedsværdien på OLED-displayet. Her defineres tekststørrelsen på OLED ved hjælp af display.setTextSize- funktionen og markørposition defineres ved hjælp af display.setCursor- funktionen. Hastighedsdataene fra GPS-modulet dekodes ved hjælp af gps.speed.kmph () -funktionen, og til sidst vises de ved hjælp af display.display () .
hvis (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Til sidst skal du uploade koden i Arduino Uno og sætte systemet i et køretøj i bevægelse, og du kan se hastigheden på OLED-skærmen som vist i nedenstående billede.
Komplet kode med en demo-video er angivet nedenfor.