- Použité materiály
- Modul GPS NEO6M
- 1,3palcový I2C OLED displej
- Kruhový diagram
- Programování Arduino pro Arduino OLED rychloměr
Rychloměry se používají k měření rychlosti jízdy vozidla. Dříve jsme použili IR senzor a Hallovo čidlo k vytvoření analogového rychloměru a digitálního rychloměru. Dnes budeme k měření rychlosti jedoucího vozidla používat GPS. Rychloměry GPS jsou přesnější než standardní rychloměry, protože dokážou nepřetržitě lokalizovat vozidlo a mohou vypočítat rychlost. Technologie GPS je široce používána v chytrých telefonech a vozidlech pro navigaci a dopravní upozornění.
V tomto projektu postavíme GPS rychloměr Arduino pomocí GPS modulu NEO6M s OLED displejem.
Použité materiály
- Arduino Nano
- Modul GPS NEO6M
- 1,3palcový I2C OLED displej
- Nepájivá deska
- Připojení propojek
Modul GPS NEO6M
Zde používáme modul GPS NEO6M. Modul GPS NEO-6M je oblíbený přijímač GPS s vestavěnou keramickou anténou, který poskytuje silné možnosti satelitního vyhledávání. Tento přijímač má schopnost snímat polohy a sledovat až 22 satelitů a identifikovat místa kdekoli na světě. Pomocí palubního indikátoru signálu můžeme sledovat stav sítě modulu. Má záložní baterii dat, takže modul může ukládat data při náhodném vypnutí hlavního napájení.
![]()
Srdcem uvnitř modulu GPS přijímače je NEO-6M GPS čip od u-blox. Může sledovat až 22 satelitů na 50 kanálech a má velmi působivou úroveň citlivosti, která je -161 dBm. Tento 50kanálový poziční modul u-blox 6 se může pochlubit Time-To-First-Fix (TTFF) pod 1 sekundu. Tento modul podporuje přenosovou rychlost od 4800 do 230 400 b / s a má výchozí přenosovou rychlost 9600.
Funkce:
- Provozní napětí: (2,7-3,6) V DC
- Provozní proud: 67 mA
- Přenosová rychlost: 4800-230400 b / s (výchozí 9600)
- Komunikační protokol: NEMA
- Rozhraní: UART
- Externí anténa a vestavěná EEPROM.
Pinout modulu GPS:
![]()
- VCC: Pin vstupního napětí modulu
- GND: Zemnicí kolík
- RX, TX: Komunikační piny UART s mikrokontrolérem
Dříve jsme propojili GPS s Arduinem a stavěli jsme mnoho projektů pomocí GPS modulů včetně sledování vozidel.
1,3palcový I2C OLED displej
Termín OLED znamená „ Organic Light emitting diode“, používá stejnou technologii, která se používá ve většině našich televizorů, ale ve srovnání s nimi má méně pixelů. Je opravdu zábavné mít tyto skvěle vypadající zobrazovací moduly propojené s Arduino, protože díky nim budou naše projekty vypadat skvěle. Zde jsme se zabývali celým článkem o OLED displejích a jejich typech. Zde používáme černobílý 4kolíkový OLED displej SH1106 OLED 1,28 ”. Tento displej může pracovat pouze v režimu I2C.

Technické specifikace:
- Driver IC: SH1106
- Vstupní napětí: 3,3 V - 5 V DC
- Rozlišení: 128x64
- Rozhraní: I2C
- Odběr proudu: 8 mA
- Barva pixelu: modrá
- Pozorovací úhel:> 160 stupňů
Popis kolíku:
VCC: Vstupní napájecí zdroj 3,3-5V DC
GND: Zemnící referenční kolík
SCL: Pin hodin rozhraní I2C
SDA: Pin sériových dat rozhraní I2C
Komunita Arduino nám již poskytla mnoho knihoven, které lze přímo použít, aby to bylo mnohem jednodušší. Vyzkoušel jsem několik knihoven a zjistil jsem, že knihovna Adafruit_SH1106.h se velmi snadno používá a má několik grafických možností, proto v tomto tutoriálu použijeme totéž.
OLED vypadá velmi skvěle a lze jej snadno propojit s jinými mikrokontroléry a vytvořit tak několik zajímavých projektů:
- Propojení OLED displeje SSD1306 s Raspberry Pi
- Propojení OLED displeje SSD1306 s Arduino
- Internetové hodiny využívající ESP32 a OLED displej
- Automatický regulátor teploty střídavého proudu využívající Arduino, DHT11 a IR Blaster
Kruhový diagram
Schéma zapojení tohoto rychloměru Arduino GPS využívající OLED je uvedeno níže.

Kompletní nastavení bude vypadat níže:

Programování Arduino pro Arduino OLED rychloměr
Celý kód projektu je uveden ve spodní části tutoriálu. Zde vysvětlujeme celý kód po řádku.
Nejprve zahrňte všechny knihovny. Zde se používá knihovna TinyGPS ++. H k získání souřadnic GPS pomocí modulu přijímače GPS a Adafruit_SH1106.h se používá pro OLED.
#zahrnout
Poté je definována adresa OLED I2C, která může být buď OX3C nebo OX3D, zde je to v mém případě OX3C. Musí být také definován resetovací kolík displeje. V mém případě je definována jako -1, protože displej sdílí Arduino resetovací pin.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 displej Adafruit_SH1106 (OLED_RESET);
Dále jsou definovány objekty pro třídu TinyGPSPlus a Softwareserial, jak je znázorněno níže. Softwarová sériová třída potřebuje pin Arduino č. pro sériovou komunikaci, která je zde definována jako 2 a 3.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
Uvnitř setup () se inicializuje sériová komunikace a OLED. Výchozí přenosová rychlost pro softwarovou sériovou komunikaci je definována jako 9600. Zde se SH1106_SWITCHCAPVCC používá k internímu generování zobrazovacího napětí z 3,3 V a k inicializaci displeje se používá funkce display.begin .
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Uvnitř zatímco pravda loop, sériová přijatá data jsou potvrzeny, jsou-li přijat platný signál GPS, pak displayspeed () je volána pro zobrazení hodnoty rychlosti na OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displayspeed ();
Uvnitř displayspeed () funkce, údaje o rychlosti z GPS modulu je poté ověřena pomocí funkce gps.speed.isValid () a pokud se vrátí skutečnou hodnotu, pak se zobrazí hodnota rychlosti na OLED displeji. Zde je velikost textu na OLED definována pomocí funkce display.setTextSize a poloha kurzoru je definována pomocí funkce display.setCursor . Údaje o rychlosti z modulu GPS jsou dekódovány pomocí funkce gps.speed.kmph () a nakonec jsou zobrazeny pomocí display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Nakonec nahrajte kód do Arduino Uno a umístěte systém do jedoucího vozidla a na OLED displeji uvidíte rychlost, jak je znázorněno na následujícím obrázku.

Kompletní kód s ukázkovým videem je uveden níže.
