- Felhasznált anyagok
- NEO6M GPS modul
- 1,3 hüvelykes I2C OLED kijelző
- Kördiagramm
- Arduino programozása az Arduino OLED sebességmérőhöz
A sebességmérőket a jármű haladási sebességének mérésére használják. Korábban az IR-érzékelőt és a hall-érzékelőt használtuk analóg sebességmérő és digitális sebességmérő felépítéséhez. Ma GPS segítségével mérjük a mozgó jármű sebességét. A GPS-sebességmérők pontosabbak, mint a szokásos sebességmérők, mert folyamatosan képes megtalálni a járművet és kiszámítani a sebességet. A GPS technológiát széles körben használják az okostelefonokban és a járművekben navigációs és közlekedési riasztásokhoz.
Ebben a projektben egy Arduino GPS sebességmérőt építünk egy NEO6M GPS modul segítségével, OLED kijelzővel.
Felhasznált anyagok
- Arduino Nano
- NEO6M GPS modul
- 1,3 hüvelykes I2C OLED kijelző
- Kenyérlemez
- Ugrók csatlakoztatása
NEO6M GPS modul
Itt a NEO6M GPS modult használjuk. A NEO-6M GPS modul egy népszerű GPS-vevő beépített kerámia antennával, amely erős műholdas keresési lehetőséget biztosít. Ez a vevő képes érzékelni a helyeket és akár 22 műholdat is követni, és azonosítani tudja a helyeket a világ bármely pontján. A fedélzeti jelzővel figyelemmel kísérhetjük a modul hálózati állapotát. Adatmentő akkumulátorral rendelkezik, így a modul elmentheti az adatokat, ha véletlenül kikapcsolják a fő áramellátást.
A GPS vevő modul belsejében az u-blox NEO-6M GPS chipje található. 50 csatornán akár 22 műholdat is képes nyomon követni, és nagyon lenyűgöző érzékenységi szintje -161 dBm. Ez az 50 csatornás u-blox 6 pozicionáló motor 1 másodpercnél rövidebb idővel rendelkezik az első javításra (TTFF). Ez a modul támogatja az adatátviteli sebességet 4800-230400 bps között, alapértelmezett baudja pedig 9600.
Jellemzők:
- Üzemi feszültség: (2,7-3,6) V DC
- Üzemi áram: 67 mA
- Átviteli sebesség: 4800–230400 bps (9600 alapértelmezett)
- Kommunikációs protokoll: NEMA
- Interfész: UART
- Külső antenna és beépített EEPROM.
GPS modul kihúzása:
- VCC: A modul bemeneti feszültségű csapja
- GND: Földelt csap
- RX, TX: UART kommunikációs csapok a mikrokontrollerrel
Korábban összekapcsoltuk a GPS-t az Arduinóval, és számos projektet építettünk GPS-modulokkal, beleértve a járműkövetést is.
1,3 hüvelykes I2C OLED kijelző
Az OLED kifejezés „ Szerves fénykibocsátó dióda” rövidítése, ugyanazt a technológiát használja, amelyet a legtöbb televíziónkban használnak, de kevesebb pixel van hozzájuk képest. Igazán szórakoztató, hogy ezeket a hűvös megjelenésű modulokat összekapcsolják az Arduino-val, mivel ez remek megjelenést kölcsönöz a projektjeinknek. Itt egy teljes cikket ismertettünk az OLED kijelzőiről és típusairól. Itt monokróm 4 tűs SH1106 OLED 1.28 ”OLED kijelzőt használunk. Ez a kijelző csak az I2C üzemmóddal működik.
Műszaki adatok:
- Illesztőprogram IC: SH1106
- Bemeneti feszültség: 3,3 V-5 V DC
- Felbontás: 128x64
- Interfész: I2C
- Áramfelvétel: 8 mA
- Képpont színe: kék
- Látószög:> 160 fok
PIN leírás:
VCC: Bemeneti tápegység 3,3-5V DC
GND: Föld referencia csap
SCL: Az I2C interfész óratűje
SDA: Az I2C interfész soros adat tűje
Az Arduino közösség rengeteg könyvtárat adott már nekünk, amelyek közvetlenül felhasználhatók ennek egyszerűbbé tételéhez. Kipróbáltam néhány könyvtárat, és megállapítottam, hogy az Adafruit_SH1106.h könyvtár nagyon könnyen használható, és néhány grafikus opcióval rendelkezik, ezért ugyanezt fogjuk használni ebben az oktatóanyagban.
Az OLED nagyon klassznak tűnik, és könnyen összekapcsolható más mikrovezérlőkkel érdekes projektek építéséhez:
- Összekötő SSD1306 OLED kijelző és Raspberry Pi
- Összekötő SSD1306 OLED kijelző Arduinóval
- Internet óra az ESP32 és az OLED kijelző használatával
- Automatikus AC hőmérséklet-szabályozó Arduino, DHT11 és IR Blaster használatával
Kördiagramm
Az OLED- t használó Arduino GPS-sebességmérő kapcsolási rajza az alábbiakban látható.
A teljes beállítás az alábbiak szerint fog kinézni:
Arduino programozása az Arduino OLED sebességmérőhöz
A projekt teljes kódja az oktatóanyag alján található. Itt a teljes kódot soronként magyarázzuk.
Először is vegye fel az összes könyvtárat. Itt a TinyGPS ++. H könyvtárat használjuk a GPS koordináták megszerzéséhez a GPS vevő modul segítségével, az Adafruit_SH1106.h pedig az OLED használatához.
#include
Ezután meghatározzuk az OLED I2C címet, amely lehet OX3C vagy OX3D, itt ez az esetemben OX3C. Meg kell határozni a kijelző Reset gombját is. Esetemben -1-nek van definiálva, mivel a kijelző megosztja az Arduino Reset gombját.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 kijelző (OLED_RESET);
Ezután a TinyGPSPlus és a Softwareserial osztály objektumait az alábbiak szerint definiáljuk. A szoftveres sorozatosztálynak szüksége van az Arduino tűre. soros kommunikációhoz, amelyet itt 2 és 3ként definiálunk.
int RX = 2, TX = 3; TinyGPSPlus GPS; SoftwareSerial gpssoft (RX, TX);
A telepítésen belül () inicializálás történik a soros kommunikációhoz és az OLED-hez. Az alapértelmezett adatátviteli sebesség a szoftveres soros kommunikáció esetén 9600. Itt SH1106_SWITCHCAPVCC- t használnak a kijelző feszültségének 3,3 V-os belső előállításához, és a display.begin funkciót használja a kijelző inicializálásához.
void setup () { Soros.kezdés (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Belül míg igaz hurok, a soros adat érkezett érvényesítik, ha érvényes GPS jeleket, akkor displayspeed () hívják, hogy bemutassák a sebesség értékét OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
Belül displayspeed () függvény, a sebesség adatokat a GPS-modul segítségével ellenőrizzük funkció gps.speed.isValid () , és ha visszatér a valódi érték, akkor a sebesség érték jelenik meg az OLED kijelzőn. Itt az OLED szövegméretét a display.setTextSize függvénnyel, a kurzor pozícióját pedig a display.setCursor függvény segítségével határozzuk meg. A sebesség adatok GPS modul felhasználásával dekódolt gps.speed.kmph () függvény, végül segítségével kerül megjelenítésre display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Végül töltse fel a kódot az Arduino Uno programba, és helyezze a rendszert mozgó járműbe, és az OLED kijelzőn láthatja a sebességet, amint az az alábbi képen látható.
Az alábbiakban bemutatjuk a teljes kódot egy bemutató videóval.