- Izmantotie materiāli
- NEO6M GPS modulis
- 1,3 collu I2C OLED displejs
- Ķēdes shēma
- Arduino programmēšana Arduino OLED spidometram
Spidometrus izmanto, lai izmērītu transportlīdzekļa braukšanas ātrumu. Iepriekš mēs izmantojām IR sensoru un zāles sensoru, lai izveidotu attiecīgi analogo spidometru un digitālo spidometru. Šodien mēs izmantosim GPS, lai izmērītu braucoša transportlīdzekļa ātrumu. GPS spidometri ir precīzāki par standarta spidometriem, jo tie var nepārtraukti atrast transportlīdzekli un aprēķināt ātrumu. GPS tehnoloģija tiek plaši izmantota viedtālruņos un transportlīdzekļos navigācijas un satiksmes brīdinājumiem.
Šajā projektā mēs izveidosim Arduino GPS spidometru, izmantojot NEO6M GPS moduli ar OLED displeju.
Izmantotie materiāli
- Arduino Nano
- NEO6M GPS modulis
- 1,3 collu I2C OLED displejs
- Maizes dēlis
- Džemperu savienošana
NEO6M GPS modulis
Šeit mēs izmantojam NEO6M GPS moduli. NEO-6M GPS modulis ir populārs GPS uztvērējs ar iebūvētu keramikas antenu, kas nodrošina spēcīgu satelīta meklēšanas iespēju. Šis uztvērējs spēj noteikt atrašanās vietas un izsekot līdz pat 22 satelītiem, kā arī noteikt atrašanās vietas visā pasaulē. Izmantojot borta signāla indikatoru, mēs varam uzraudzīt moduļa tīkla statusu. Tam ir datu rezerves akumulators, lai modulis varētu saglabāt datus, ja nejauši tiek izslēgta galvenā barošana.
Galvenā sirds GPS uztvērēja moduļa iekšpusē ir NEO-6M GPS mikroshēma no u-blox. Tas var izsekot līdz pat 22 satelītiem 50 kanālos, un tam ir ļoti iespaidīgs jutības līmenis, kas ir -161 dBm. Šis 50 kanālu u-blox 6 pozicionēšanas dzinējs var lepoties ar laiku līdz pirmajam labojumam (TTFF), kas nepārsniedz 1 sekundi. Šis modulis atbalsta datu pārraides ātrumu no 4800–230400 bps, un noklusējuma bauds ir 9600.
Iespējas:
- Darba spriegums: (2,7-3,6) V DC
- Darba strāva: 67 mA
- Pārraides ātrums: 4800–230400 bps (noklusējums: 9600)
- Komunikācijas protokols: NEMA
- Saskarne: UART
- Ārējā antena un iebūvēta EEPROM.
GPS moduļa pinout:
- VCC: moduļa ieejas sprieguma tapa
- GND: Zemes tapa
- RX, TX: UART sakaru kontakti ar mikrokontrolleru
Mēs iepriekš esam saskarnē GPS ar Arduino un izveidojām daudzus projektus, izmantojot GPS moduļus, ieskaitot transportlīdzekļu izsekošanu.
1,3 collu I2C OLED displejs
Termins OLED nozīmē “ organisko gaismu izstarojošais diods”, un tajā tiek izmantota tā pati tehnoloģija, kas tiek izmantota lielākajā daļā mūsu televizoru, taču salīdzinājumā ar tiem ir mazāk pikseļu. Ir patiešām jautri, ka šie atdzistos displeja moduļus var sasaistīt ar Arduino, jo tas mūsu projektiem izskatīsies forši. Šeit esam apskatījuši pilnu rakstu par OLED displejiem un to veidiem. Šeit mēs izmantojam vienkrāsainu 4 kontaktu SH1106 OLED 1.28 ”OLED displeju. Šis displejs var darboties tikai ar I2C režīmu.
Tehniskās specifikācijas:
- Vadītāja IC: SH1106
- Ieejas spriegums: 3.3V-5V DC
- Izšķirtspēja: 128x64
- Saskarne: I2C
- Pašreizējais patēriņš: 8 mA
- Pikseļu krāsa: zila
- Skata leņķis:> 160 grādi
Piespraudes apraksts:
VCC: ieejas barošanas avots 3,3-5V DC
GND: Zemes atskaites tapa
SCL: I2C saskarnes pulksteņa tapa
SDA: I2C saskarnes sērijas datu tapa
Arduino kopiena jau ir devusi mums daudz bibliotēku, kuras var tieši izmantot, lai padarītu to daudz vienkāršāku. Es izmēģināju dažas bibliotēkas un atklāju, ka Adafruit_SH1106.h bibliotēku bija ļoti viegli izmantot un tajā bija nedaudz grafisko iespēju, tāpēc mēs to izmantosim arī šajā apmācībā.
OLED izskatās ļoti foršs, un to var viegli sasaistīt ar citiem mikrokontrolleriem, lai izveidotu dažus interesantus projektus:
- Saskarīgs SSD1306 OLED displejs ar Raspberry Pi
- Saskarīgs SSD1306 OLED displejs ar Arduino
- Interneta pulkstenis, izmantojot ESP32 un OLED displeju
- Automātiskais maiņstrāvas temperatūras kontrolieris, izmantojot Arduino, DHT11 un IR Blaster
Ķēdes shēma
Šī Arduino GPS spidometra shēma, izmantojot OLED, ir dota zemāk.
Pilnīga iestatīšana izskatīsies šādi:
Arduino programmēšana Arduino OLED spidometram
Pilns projekta kods ir norādīts apmācības apakšā. Šeit mēs izskaidrojam pilnu kodu pa rindām.
Pirmkārt, iekļaujiet visas bibliotēkas. Šeit TinyGPS ++. H bibliotēku izmanto, lai iegūtu GPS koordinātas, izmantojot GPS uztvērēja moduli, un Adafruit_SH1106.h tiek izmantots OLED.
# iekļaut
Tad tiek definēta OLED I2C adrese, kas var būt vai nu OX3C, vai OX3D, manā gadījumā tā ir OX3C. Tāpat ir jādefinē displeja atiestatīšanas tapa. Manā gadījumā tas tiek definēts kā -1, jo displejā tiek kopīgota Arduino atiestatīšanas tapa.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 displejs (OLED_RESET);
Pēc tam TinyGPSPlus un programmatūras sērijas objekti tiek definēti, kā parādīts zemāk. Programmatūras sērijas klasei ir nepieciešams Arduino pin nr. sērijveida sakariem, kas šeit ir definēti kā 2 un 3.
int RX = 2, TX = 3; TinyGPSPlus GPS; SoftwareSerial gpssoft (RX, TX);
Iestatīšanas iekšpusē () tiek veikta inicializācija sērijveida sakariem un OLED. Noklusējuma datu pārraides ātrums programmatūras sērijveida sakariem ir definēts kā 9600. Šeit SH1106_SWITCHCAPVCC tiek izmantots, lai iekšēji ģenerētu displeja spriegumu no 3,3 V, un displeja inicializēšanai tiek izmantota funkcija display.begin .
void setup () { Sērijas.sākt (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Inside bet taisnība cilpa, saņemtie sērijas dati tiek apstiprinātas, ja ir saņemts derīgs GPS signāli, tad displayspeed () sauc, lai parādītu ātruma vērtību OLED.
kamēr (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
Inside displayspeed () funkciju, ātruma dati no GPS moduļa tiek pārbaudīts, izmantojot funkciju gps.speed.isValid () un, ja tas atgriež patieso vērtību, tad ātrums vērtība tiek parādīts OLED displeju. Šeit teksta lielums OLED tiek definēts, izmantojot display.setTextSize funkciju, un kursora pozīcija tiek definēta, izmantojot display.setCursor funkciju. Ātruma dati no GPS moduļa tiek atšifrēti, izmantojot funkciju gps.speed.kmph (), un visbeidzot tie tiek parādīti, izmantojot display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Visbeidzot, augšupielādējiet kodu Arduino Uno un ievietojiet sistēmu kustīgā transportlīdzeklī, un OLED displejā jūs varat redzēt ātrumu, kā parādīts zemāk esošajā attēlā.
Pilns kods ar demonstrācijas video ir norādīts zemāk.