- Korišteni materijali
- GPS modul NEO6M
- 1,3-inčni I2C OLED zaslon
- Kružni dijagram
- Programiranje Arduina za Arduino OLED brzinomjer
Brzinomjeri se koriste za mjerenje brzine putovanja vozila. Prije smo koristili IR senzor i Hall senzor za izradu analognog brzinomera, odnosno digitalnog brzinomjera. Danas ćemo koristiti GPS za mjerenje brzine vozila u pokretu. GPS brzinomjeri precizniji su od standardnih brzinomjera jer mogu neprestano locirati vozilo i mogu izračunati brzinu. GPS tehnologija široko se koristi u pametnim telefonima i vozilima za navigaciju i upozorenja o prometu.
U ovom ćemo projektu izraditi Arduino GPS brzinomjer pomoću NEO6M GPS modula s OLED zaslonom.
Korišteni materijali
- Arduino Nano
- GPS modul NEO6M
- 1,3-inčni I2C OLED zaslon
- Breadboard
- Spajanje skakača
GPS modul NEO6M
Ovdje koristimo NEO6M GPS modul. GPS modul NEO-6M popularan je GPS prijamnik s ugrađenom keramičkom antenom, koji pruža snažnu mogućnost satelitskog pretraživanja. Ovaj prijemnik može prepoznati lokacije i pratiti do 22 satelita te identificira lokacije bilo gdje u svijetu. Pomoću ugrađenog indikatora signala možemo pratiti mrežno stanje modula. Ima rezervnu bateriju podataka, tako da modul može spremiti podatke kada se slučajno isključi glavno napajanje.

Srž jezgre unutar modula GPS prijamnika je GPS čip NEO-6M tvrtke u-blox. Može pratiti do 22 satelita na 50 kanala i ima vrlo impresivnu razinu osjetljivosti koja iznosi -161 dBm. Ovaj 50-kanalni u-blox 6 mehanizam za pozicioniranje može se pohvaliti time-to-first-fix (TTFF) kraćim od 1 sekunde. Ovaj modul podržava brzinu prijenosa od 4800 do 230400 bps i zadana je brzina prijenosa od 9600.
Značajke:
- Radni napon: (2,7-3,6) V DC
- Radna struja: 67 mA
- Brzina prijenosa: 4800-230400 bps (zadana 9600)
- Komunikacijski protokol: NEMA
- Sučelje: UART
- Vanjska antena i ugrađeni EEPROM.
Isječak GPS modula:

- VCC: Pin ulaznog napona modula
- GND: prizemni klin
- RX, TX: UART-ove komunikacijske igle s mikrokontrolerom
Prethodno smo povezali GPS s Arduinom i izgradili smo mnoge projekte koristeći GPS module, uključujući praćenje vozila.
1,3-inčni I2C OLED zaslon
Izraz OLED označava se kao " organska dioda koja emitira svjetlost", koristi istu tehnologiju koja se koristi u većini naših televizora, ali ima manje piksela u usporedbi s njima. Zaista je zabavno imati ove module zaslona u izgledu kako bi ih se povezalo s Arduinom, jer će naši projekti izgledati cool. Ovdje smo pokrili cijeli članak o OLED zaslonima i njihovim vrstama. Ovdje koristimo jednobojni 4-pinski OLED zaslon SH1106 OLED 1,28 ”. Ovaj zaslon može raditi samo u načinu I2C.

Tehničke specifikacije:
- IC upravljačkog programa: SH1106
- Ulazni napon: 3.3V-5V DC
- Rezolucija: 128x64
- Sučelje: I2C
- Potrošnja struje: 8 mA
- Boja piksela: plava
- Kut gledanja:> 160 stupnjeva
Opis pribadače:
VCC: Ulazno napajanje 3,3-5V DC
GND: Referentni pin za uzemljenje
SCL: Igla sata sučelja I2C
SDA: Pribadača za serijske podatke I2C sučelja
Zajednica Arduino već nam je dala puno knjižnica koje se mogu izravno koristiti da bi se ovo učinilo puno jednostavnijim. Isprobao sam nekoliko knjižnica i otkrio da je knjižnica Adafruit_SH1106.h vrlo jednostavna za upotrebu i da ima pregršt grafičkih opcija, stoga ćemo istu koristiti u ovom vodiču.
OLED izgleda vrlo cool i lako se može povezati s drugim mikrokontrolerima kako bi se stvorili neki zanimljivi projekti:
- Povezivanje SSD1306 OLED zaslona s Raspberry Pi
- Povezivanje SSD1306 OLED zaslona s Arduinom
- Internet sat pomoću ESP32 i OLED zaslona
- Automatski regulator temperature izmjenične struje koji koristi Arduino, DHT11 i IR Blaster
Kružni dijagram
Dijagram sklopa za ovaj Arduino GPS brzinomjer pomoću OLED- a dat je u nastavku.

Kompletna postavka izgledat će dolje:

Programiranje Arduina za Arduino OLED brzinomjer
Kompletni kod projekta nalazi se na dnu vodiča. Ovdje objašnjavamo kompletan kod redak po redak.
Prije svega, uključite sve knjižnice. Ovdje se knjižnica TinyGPS ++. H koristi za dobivanje GPS koordinata pomoću modula GPS prijamnika, a Adafruit_SH1106.h koristi se za OLED.
 #include
Zatim se definira OLED I2C adresa, koja može biti OX3C ili OX3D, ovdje je to OX3C u mom slučaju. Također, mora se definirati Reset pin zaslona. U mom slučaju, definirano je kao -1, jer zaslon dijeli Arduinoov Reset pin.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 display (OLED_RESET);
Dalje, objekti za klasu TinyGPSPlus i Softwareserial definirani su kako je prikazano u nastavku. Serijska klasa softvera treba Arduino pin br. za serijsku komunikaciju, koja je ovdje definirana kao 2 i 3.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
Unutar postavljanja () , inicijalizacija se vrši za serijsku komunikaciju i OLED. Zadana brzina prijenosa za serijsku komunikaciju softvera definirana je kao 9600. Ovdje se SH1106_SWITCHCAPVCC koristi za interno generiranje napona prikaza od 3,3 V, a funkcija display.begin koristi se za inicijalizaciju zaslona.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Unutar a istina petlje, serijski podaci primljeni su potvrđene, ako su primili valjani GPS signali, onda displayspeed () je pozvan pokazati vrijednost brzine na OLED.
dok je (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
Unutar displayspeed () funkciji, podaci brzine od GPS modula provjerava pomoću funkcije gps.speed.isValid () i ako se vraća pravu vrijednost, tada je brzina Vrijednost se prikazuje na OLED zaslonu. Ovdje se veličina teksta na OLED-u definira pomoću funkcije display.setTextSize, a položaj kursora određuje se pomoću funkcije display.setCursor . Podaci o brzini iz GPS modula dekodiraju se pomoću funkcije gps.speed.kmph () i na kraju se prikazuju pomoću display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Napokon, prenesite kôd u Arduino Uno i stavite sustav u vozilo u pokretu, a na OLED zaslonu možete vidjeti brzinu kao što je prikazano na donjoj slici.

Kompletni kôd s demo videom dat je u nastavku.

