- Použité materiály
- Modul GPS NEO6M
- 1,3-palcový I2C OLED displej
- Schéma zapojenia
- Programovanie Arduina pre Arduino OLED rýchlomer
Rýchlomery sa používajú na meranie rýchlosti jazdy vozidla. Predtým sme na výrobu analógového rýchlomeru použili digitálny rýchlomer a Hallov senzor. Dnes budeme na meranie rýchlosti idúceho vozidla používať GPS. GPS rýchlomery sú presnejšie ako štandardné rýchlomery, pretože dokážu nepretržite lokalizovať vozidlo a vypočítať rýchlosť. Technológia GPS sa často používa v smartfónoch a vozidlách na navigáciu a varovanie pred dopravou.
V tomto projekte postavíme rýchlomer Arduino GPS pomocou GPS modulu NEO6M s OLED displejom.
Použité materiály
- Arduino Nano
- Modul GPS NEO6M
- 1,3 palcový I2C OLED displej
- Nepál
- Prepojovacie prepojky
Modul GPS NEO6M
Tu používame modul GPS NEO6M. Modul GPS NEO-6M je populárny prijímač GPS so zabudovanou keramickou anténou, ktorý poskytuje silné možnosti satelitného vyhľadávania. Tento prijímač má schopnosť snímať polohy a sledovať až 22 satelitov a identifikovať miesta kdekoľvek na svete. Pomocou palubného indikátora signálu môžeme monitorovať stav siete modulu. Má záložnú batériu pre dáta, aby modul mohol uchovať dáta pri náhodnom vypnutí hlavného napájania.
![]()
Srdcom vo vnútri modulu prijímača GPS je čip GPS NEO-6M od spoločnosti u-blox. Môže sledovať až 22 satelitov na 50 kanáloch a má veľmi pôsobivú úroveň citlivosti, ktorá je -161 dBm. Tento 50-kanálový pozičný modul u-blox 6 sa môže pochváliť funkciou Time-To-First-Fix (TTFF) pod 1 sekundou. Tento modul podporuje prenosovú rýchlosť od 4800 do 230 400 b / s a má predvolenú prenosovú rýchlosť 9600.
Vlastnosti:
- Prevádzkové napätie: (2,7 - 3,6) V ss
- Prevádzkový prúd: 67 mA
- Prenosová rýchlosť: 4800-230 400 b / s (predvolená hodnota 9 600)
- Komunikačný protokol: NEMA
- Rozhranie: UART
- Externá anténa a vstavaná EEPROM.
Pinout modulu GPS:
![]()
- VCC: Pin vstupného napätia modulu
- GND: Uzemňovací kolík
- RX, TX: Komunikačné piny UART s mikrokontrolérom
Predtým sme prepojili GPS s Arduino a stavali sme veľa projektov pomocou GPS modulov vrátane sledovania vozidiel.
1,3-palcový I2C OLED displej
Pojem OLED znamená „ organická dióda vyžarujúca svetlo“. Používa rovnakú technológiu, ktorá sa používa vo väčšine našich televízorov, ale má v porovnaní s nimi menej pixelov. Je skutočná zábava mať tieto skvelo vyzerajúce zobrazovacie moduly prepojené s Arduino, pretože vďaka nim budú naše projekty vyzerať skvele. Celý článok o OLED displejoch a ich typoch sme prebrali tu. Tu používame monochromatický 4-pinový OLED displej SH1106 OLED 1,28 ”. Tento displej môže pracovať iba v režime I2C.

Technické špecifikácie:
- Driver IC: SH1106
- Vstupné napätie: 3,3 V - 5 V DC
- Rozlíšenie: 128x64
- Rozhranie: I2C
- Spotreba prúdu: 8 mA
- Farba pixelov: modrá
- Pozorovací uhol:> 160 stupňov
Popis kolíka:
VCC: Vstupné napájanie 3,3-5V DC
GND: referenčný kolík uzemnenia
SCL: Hodinový pin rozhrania I2C
SDA: Pin sériových údajov rozhrania I2C
Komunita Arduino nám už poskytla veľa knižníc, ktoré je možné priamo použiť na ďalšie zjednodušenie. Vyskúšal som niekoľko knižníc a zistil som, že knižnica Adafruit_SH1106.h sa používa veľmi ľahko a má niekoľko grafických možností, preto ich v tomto návode použijeme rovnako.
OLED vyzerá veľmi dobre a dá sa ľahko prepojiť s inými mikrokontrolérmi, aby sa vytvorili zaujímavé projekty:
- Prepojovací OLED displej SSD1306 s Raspberry Pi
- Prepojovací OLED displej SSD1306 s Arduino
- Internetové hodiny využívajúce ESP32 a OLED displej
- Automatický regulátor teploty striedavého prúdu využívajúci Arduino, DHT11 a IR Blaster
Schéma zapojenia
Schéma zapojenia tohto rýchlomera Arduino GPS využívajúca OLED je uvedená nižšie.

Kompletné nastavenie bude vyzerať takto:

Programovanie Arduina pre Arduino OLED rýchlomer
Celý kód projektu je uvedený v spodnej časti tutoriálu. Tu vysvetľujeme celý kód po riadku.
Najskôr zahrňte všetky knižnice. Tu sa používa knižnica TinyGPS ++. H na získanie súradníc GPS pomocou modulu prijímača GPS a pre OLED sa používa Adafruit_SH1106.h .
#include
Potom je definovaná adresa OLED I2C, ktorá môže byť buď OX3C, alebo OX3D, tu je to v mojom prípade OX3C. Musí byť tiež definovaný resetovací kolík displeja. V mojom prípade je to definované ako -1, pretože displej zdieľa resetovací pin Arduina.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 displej Adafruit_SH1106 (OLED_RESET);
Ďalej sú definované objekty pre triedy TinyGPSPlus a Softwareserial, ako je znázornené nižšie. Softvérová sériová trieda potrebuje pin Arduino č. pre sériovú komunikáciu, ktorá je tu definovaná ako 2 a 3.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftvérSériový gpssoft (RX, TX);
Vo vnútri setup () sa inicializuje sériová komunikácia a OLED. Predvolená prenosová rýchlosť pre sériovú komunikáciu softvéru je definovaná ako 9600. Tu sa SH1106_SWITCHCAPVCC používa na interné generovanie zobrazovacieho napätia z 3,3 V a na inicializáciu displeja sa používa funkcia display.begin .
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Vnútri zatiaľ čo pravda loop, sériová prijaté dáta sú potvrdené, ak sú prijatý platný signál GPS, potom displayspeed () je volaná pre zobrazenie hodnoty rýchlosti na OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displayspeed ();
Vnútri displayspeed () funkcie, údaje o rýchlosti z GPS modulu je potom overená pomocou funkcie gps.speed.isValid () a ak sa vráti skutočnú hodnotu, potom sa zobrazí hodnota rýchlosti na OLED displeji. Tu je veľkosť textu na OLED definovaná pomocou funkcie display.setTextSize a poloha kurzora je definovaná pomocou funkcie display.setCursor . Údaje o rýchlosti z GPS modulu sú dekódované pomocou funkcie gps.speed.kmph () a nakoniec sú zobrazené pomocou display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Nakoniec nahrajte kód do Arduino Uno a umiestnite systém do pohybujúceho sa vozidla. Na OLED displeji môžete vidieť rýchlosť, ako je to znázornené na obrázku nižšie.

Kompletný kód s ukážkovým videom je uvedený nižšie.
