- 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.