- Naudotos medžiagos
- NEO6M GPS modulis
- 1,3 colių I2C OLED ekranas
- Grandinės schema
- „Arduino“ programavimas „Arduino OLED“ spidometrui
Spidometrai naudojami transporto priemonės važiavimo greičiui matuoti. Anksčiau mes naudojome IR jutiklį ir salės jutiklį, kad sukurtume atitinkamai analoginį ir skaitmeninį spidometrą. Šiandien naudosimės GPS matuodami važiuojančios transporto priemonės greitį. GPS spidometrai yra tikslesni nei standartiniai spidometrai, nes jie gali nuolat nustatyti transporto priemonės vietą ir apskaičiuoti greitį. GPS technologija plačiai naudojama išmaniuosiuose telefonuose ir transporto priemonėse navigacijai ir eismo įspėjimams.
Šiame projekte mes pastatysime „ Arduino“ GPS spidometrą, naudodami GPS modulį NEO6M su OLED ekranu.
Naudotos medžiagos
- „Arduino Nano“
- NEO6M GPS modulis
- 1,3 colių I2C OLED ekranas
- Bandomoji Lenta
- Džemperių sujungimas
NEO6M GPS modulis
Čia mes naudojame NEO6M GPS modulį. NEO-6M GPS modulis yra populiarus GPS imtuvas su įmontuota keramikine antena, suteikiančia stiprią palydovo paiešką. Šis imtuvas turi galimybę nustatyti vietas ir sekti iki 22 palydovų bei nustatyti vietas bet kurioje pasaulio vietoje. Naudodamiesi borto signalo indikatoriumi galime stebėti modulio tinklo būseną. Jame yra atsarginė duomenų baterija, kad modulis galėtų išsaugoti duomenis, kai netyčia išjungiama pagrindinė energija.
Pagrindinė širdis GPS imtuvo modulio viduje yra „N-6M“ GPS lustas iš „u-blox“. Jis gali stebėti iki 22 palydovų 50 kanalų ir turėti labai įspūdingą jautrumo lygį, kuris yra -161 dBm. Šis 50 kanalų „u-blox 6“ padėties nustatymo variklis gali būti trumpesnis nei 1 sekundė. Šis modulis palaiko duomenų perdavimo greitį nuo 4800–230400 bps, o numatytasis perdavimo greitis yra 9600.
Funkcijos:
- Darbinė įtampa: (2,7-3,6) V DC
- Darbinė srovė: 67 mA
- Duomenų perdavimo sparta: 4800–230400 bps (numatytasis 9600)
- Ryšio protokolas: NEMA
- Sąsaja: UART
- Išorinė antena ir įmontuota EEPROM.
GPS modulio prisegimas:
- VCC: modulio įėjimo įtampos kaištis
- GND: įžemintas kaištis
- RX, TX: UART ryšio kaiščiai su mikrovaldikliu
Anksčiau mes susiejome GPS su „Arduino“ ir sukūrėme daugybę projektų naudodami GPS modulius, įskaitant transporto priemonių sekimą.
1,3 colių I2C OLED ekranas
Terminas OLED reiškia „ organinis šviesos diodas“, jis naudoja tą pačią technologiją, kuri naudojama daugumoje mūsų televizorių, tačiau turi mažiau taškų, palyginti su jais. Labai smagu, kad šie šauniai atrodantys ekranų moduliai bus susieti su „Arduino“, nes tai leis mūsų projektams atrodyti šauniai. Čia apžvelgėme visą straipsnį apie OLED ekranus ir jo tipus. Čia mes naudojame vienspalvį 4 kontaktų SH1106 OLED 1.28 “OLED ekraną. Šis ekranas gali veikti tik su „I2C“ režimu.
Techninės specifikacijos:
- Vairuotojo IC: SH1106
- Įėjimo įtampa: 3.3V-5V DC
- Rezoliucija: 128x64
- Sąsaja: I2C
- Srovės suvartojimas: 8 mA
- Pikselių spalva: mėlyna
- Žiūrėjimo kampas:> 160 laipsnių
Smeigtuko aprašymas:
VCC: įvesties maitinimo šaltinis 3,3–5 V DC
GND: žemės atskaitos kaištis
SCL: I2C sąsajos laikrodžio kaištis
SDA: I2C sąsajos serijos duomenų kaištis
„Arduino“ bendruomenė jau suteikė mums daugybę bibliotekų, kurias galima tiesiogiai naudoti, kad būtų daug paprasčiau. Išbandžiau keletą bibliotekų ir sužinojau, kad „ Adafruit_SH1106.h“ biblioteka buvo labai paprasta naudotis ir joje buvo keletas grafinių parinkčių, todėl ir šioje instrukcijoje naudosime tas pačias.
OLED atrodo labai šaunus ir gali būti lengvai suderinamas su kitais mikrovaldikliais, kad būtų sukurti įdomūs projektai:
- Sąsajos SSD1306 OLED ekranas su „Raspberry Pi“
- Sąsajos SSD1306 OLED ekranas su „Arduino“
- Interneto laikrodis naudojant ESP32 ir OLED ekraną
- Automatinis kintamosios srovės temperatūros valdiklis, naudojant „Arduino“, DHT11 ir „IR Blaster“
Grandinės schema
Žemiau pateikiama šio „ Arduino“ GPS spidometro, naudojančio OLED, schema.
Visa sąranka atrodys taip:
„Arduino“ programavimas „Arduino OLED“ spidometrui
Visas projekto kodas pateikiamas mokymo programos apačioje. Čia mes paaiškiname visą kodą eilutėmis.
Pirmiausia įtraukite visas bibliotekas. Čia „TinyGPS ++. H“ biblioteka naudojama norint gauti GPS koordinates naudojant GPS imtuvo modulį, o „ Adafruit_SH1106.h “ naudojama OLED.
# įtraukti
Tada nustatomas OLED I2C adresas, kuris gali būti OX3C arba OX3D, mano atveju tai yra OX3C. Taip pat reikia apibrėžti ekrano atstatymo kaištį. Mano atveju jis apibrėžiamas kaip -1, nes ekranas dalijasi „Arduino“ atstatymo kaiščiu.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 „ Adafruit_SH1106“ ekranas (OLED_RESET);
Toliau „ TinyGPSPlus“ ir „ Softwareserial“ klasės objektai apibrėžiami taip, kaip parodyta žemiau. Programinės įrangos serijos klasei reikalingas „Arduino“ kaištis Nr. serijiniam ryšiui, kuris čia apibrėžiamas kaip 2 ir 3.
int RX = 2, TX = 3; „TinyGPSPlus“ GPS; „SoftwareSerial gpssoft“ (RX, TX);
Sąrankos viduje () atliekamas nuoseklaus ryšio ir OLED inicijavimas. Numatytasis programinės įrangos nuosekliojo ryšio perdavimo greitis apibrėžiamas kaip 9600. Čia SH1106_SWITCHCAPVCC naudojamas ekrano įtampai generuoti iš 3,3 V viduje ir „ display.begin“ funkcija naudojama ekrane inicializuoti.
negaliojanti sąranka () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Viduje o tiesa kilpa, gautos serijos duomenys yra patvirtinti, jei yra gautas galioja GPS signalai, tada displayspeed () yra vadinamas parodyti greičio vertę OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) rodo spartą ();
Viduje displayspeed () funkciją, greičio duomenis iš GPS modulio tikrinamas naudojant funkciją gps.speed.isValid () , ir jei ji grąžina tikrąją vertę, tada greitis vertė rodomas OLED ekrane. Čia teksto dydis OLED yra apibrėžtas naudojant display.setTextSize funkciją, o žymeklio padėtis - naudojant display.setCursor funkciją. Greičio duomenys iš GPS modulio yra dekoduojami naudojant funkciją gps.speed.kmph () ir galiausiai rodomi naudojant display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Galiausiai įkelkite kodą į „Arduino Uno“ ir įdėkite sistemą į judančią transporto priemonę, o greitį galite pamatyti OLED ekrane, kaip parodyta žemiau esančiame paveikslėlyje.
Visas kodas su demonstraciniu vaizdo įrašu pateikiamas žemiau.