- Materialer brukt
- NEO6M GPS-modul
- 1,3-tommers I2C OLED-skjerm
- Kretsdiagram
- Programmering Arduino for Arduino OLED Speedometer
Hastighetsmålere brukes til å måle kjørehastigheten til et kjøretøy. Vi brukte tidligere IR-sensoren og hallsensoren til å bygge henholdsvis Analog speedometer og digital speedometer. I dag skal vi bruke GPS til å måle hastigheten til et kjøretøy i bevegelse. GPS-hastighetsmålere er mer nøyaktige enn standard hastighetsmålere fordi det kontinuerlig kan finne kjøretøyet og kan beregne hastigheten. GPS-teknologi brukes mye i smarttelefoner og kjøretøyer for navigering og trafikkvarsler.
I dette prosjektet vil vi bygge et Arduino GPS-hastighetsmåler ved hjelp av en NEO6M GPS-modul med en OLED-skjerm.
Materialer brukt
- Arduino Nano
- NEO6M GPS-modul
- 1,3-tommers I2C OLED-skjerm
- Brettbrett
- Kobler gensere
NEO6M GPS-modul
Her bruker vi NEO6M GPS-modulen. NEO-6M GPS-modulen er en populær GPS-mottaker med en innebygd keramisk antenne, som gir en sterk satellitt-søkemulighet. Denne mottakeren har muligheten til å registrere steder og spore opptil 22 satellitter og identifiserer steder hvor som helst i verden. Med signalindikatoren ombord kan vi overvåke nettverksstatusen til modulen. Den har et data backup-batteri slik at modulen kan lagre dataene når hovedstrømmen slås av ved et uhell.
Kjernen i GPS-mottakermodulen er NEO-6M GPS-brikken fra u-blox. Den kan spore opptil 22 satellitter på 50 kanaler og har et veldig imponerende følsomhetsnivå som er -161 dBm. Denne 50-kanals u-blox 6 posisjoneringsmotoren har en Time-To-First-Fix (TTFF) på under 1 sekund. Denne modulen støtter baudrate fra 4800-230400 bps og har standard baud på 9600.
Funksjoner:
- Driftsspenning: (2,7-3,6) V DC
- Driftsstrøm: 67 mA
- Baudrate: 4800-230400 bps (9600 standard)
- Kommunikasjonsprotokoll: NEMA
- Grensesnitt: UART
- Ekstern antenne og innebygd EEPROM.
Pinout av GPS-modul:
- VCC: Inngangsspenning på modul
- GND: Jordpinne
- RX, TX: UART-kommunikasjonspinner med mikrokontroller
Vi har tidligere grensesnitt GPS med Arduino og bygger mange prosjekter ved hjelp av GPS-moduler, inkludert kjøretøysporing.
1,3-tommers I2C OLED-skjerm
Begrepet OLED står for “ Organic Light emitting diode”, den bruker den samme teknologien som brukes i de fleste av våre TV-er, men har færre piksler i forhold til dem. Det er veldig gøy å ha disse kule skjermmodulene som skal grensesnittet med Arduino, siden det vil gjøre prosjektene våre kule. Vi har dekket en full artikkel om OLED-skjermer og dens typer her. Her bruker vi en monokrom 4-pin SH1106 OLED 1,28 ”OLED-skjerm. Denne skjermen kan bare fungere med I2C-modus.
Tekniske spesifikasjoner:
- Driver IC: SH1106
- Inngangsspenning: 3,3V-5V DC
- Oppløsning: 128x64
- Grensesnitt: I2C
- Strømforbruk: 8 mA
- Pikselfarge: Blå
- Visningsvinkel:> 160 grader
Pin Beskrivelse:
VCC: Inngangsforsyning 3,3-5V DC
GND: Bakken referanse pin
SCL: Klokkepinne på I2C-grensesnittet
SDA: Seriell datapinne i I2C-grensesnittet
Arduino-samfunnet har allerede gitt oss mange biblioteker som kan brukes direkte til å gjøre dette mye enklere. Jeg prøvde noen få biblioteker og fant ut at biblioteket Adafruit_SH1106.h var veldig enkelt å bruke og hadde en håndfull grafiske alternativer, derfor vil vi bruke det samme i denne opplæringen.
OLED ser veldig kult ut og kan enkelt grensesnittes med andre mikrokontrollere for å bygge noen interessante prosjekter:
- Grensesnitt SSD1306 OLED-skjerm med Raspberry Pi
- Grensesnitt SSD1306 OLED-skjerm med Arduino
- Internett-klokke med ESP32 og OLED-skjerm
- Automatisk vekselstrømstemperaturregulator med Arduino, DHT11 og IR Blaster
Kretsdiagram
Kretsskjema for dette Arduino GPS-hastighetsmåleren ved hjelp av OLED er gitt nedenfor.
Hele oppsettet vil se ut som nedenfor:
Programmering Arduino for Arduino OLED Speedometer
Den komplette koden til prosjektet er gitt nederst i veiledningen. Her forklarer vi den komplette koden linje for linje.
Først og fremst inkluderer alle bibliotekene. Her brukes TinyGPS ++. H-biblioteket for å få GPS-koordinatene ved hjelp av GPS-mottakermodulen og Adafruit_SH1106.h brukes til OLED.
#inkludere
Deretter defineres OLED I2C-adressen, som kan være enten OX3C eller OX3D, her er det OX3C i mitt tilfelle. Også Reset pin på skjermen må defineres. I mitt tilfelle er det definert som -1, ettersom skjermen deler Arduinos tilbakestillingspinne.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 display (OLED_RESET);
Deretter defineres objektene for TinyGPSPlus og Softwareserial- klassen som vist nedenfor. Programvareserieklasse trenger Arduino pin-nr. for seriell kommunikasjon, som her er definert som 2 og 3.
int RX = 2, TX = 3; TinyGPSPlus GPS; ProgramvareSeriell gpssoft (RX, TX);
Inside setup () blir initialisering gjort for seriell kommunikasjon og OLED. Standard baudrate for programvareseriekommunikasjon er definert som 9600. Her brukes SH1106_SWITCHCAPVCC til å generere skjermspenning fra 3,3 V internt og display.begin- funksjonen brukes til å initialisere skjermen.
ugyldig oppsett () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Inne mens ekte sløyfe blir mottatt seriell data validert. Hvis gyldige GPS-signaler mottas, blir displayhastighet () kalt for å vise hastighetsverdien på OLED.
mens (gpssoft.available ()> 0) hvis (gps.encode (gpssoft.read ())) viser hastighet ();
Inne displayspeed () funksjon, blir hastighetsdata fra GPS-modulen kontrolleres ved hjelp av funksjon gps.speed.isValid () , og hvis den gir en korrekt verdi, da hastighetsverdien vises på OLED skjerm. Her defineres tekststørrelsen på OLED ved hjelp av display.setTextSize- funksjon og markørposisjon defineres ved hjelp av display.setCursor- funksjonen. Hastighetsdataene fra GPS-modulen blir dekodet ved hjelp av funksjonen gps.speed.kmph () og til slutt vises den ved hjelp av display.display () .
hvis (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Til slutt laster du opp koden i Arduino Uno og setter systemet i kjøretøy i bevegelse, og du kan se hastigheten på OLED-skjermen som vist på bildet nedenfor.
Fullstendig kode med en demo-video er gitt nedenfor.