- Mi az I2C kommunikációs protokoll?
- Szükséges anyagok
- I2C modul
- Kördiagramm
- Kód az I2C vezérlő címének megtalálásához
- ESP32 kód
A korábbi oktatóanyagban az OLED az ESP32-hez kapcsolódik az 5 érintkezőt használó SPI kommunikáció segítségével. Ebben az oktatóanyagban az I2C kommunikáció segítségével 16x2 LCD-t csatlakoztatunk az ESP32-hez, csak 2 érintkezõ segítségével. Csökkenti az ESP32 által használt csapok számát, így több ESP32 tű marad szabadon a különböző érzékelők összekapcsolásához.
Mi az I2C kommunikációs protokoll?
Az I2C kifejezés az „ Inter Integrated Circuits” kifejezést jelenti. Általában IIC vagy I négyzet C- ként jelöljük, vagy helyenként akár 2-vezetékes interfész protokollként (TWI) is, de mindez ugyanazt jelenti. Az I2C egy szinkron kommunikációs protokoll, ami azt jelenti, hogy az információt megosztó mindkét eszköznek közös órajelet kell használnia. Csak két vezetéke van, az SDA és az SCL az információk megosztására, amelyek közül az SCL az órajel, az SDA pedig az adatok küldésére és fogadására szolgál.
Vásárolhat I2C LCD modult, amelyben az I2C1602 LCD vezérlő be van építve, vagy egyszerűen vásárolhat I2C vezérlőt a 16x2 LCD interfészhez az ESP32-vel.
Szükséges anyagok
- ESP32
- 16 * 2 LCD kijelző
- I2C LCD vezérlő
- Vezetékek
- Kenyérlemez
I2C modul
Az I2C vezérlő rendelkezik egy PCF8574 IC-vel, amely általános célú távoli I / O bővítést biztosít a kétvezetékes kétirányú I2C-busz soros órán (SCL) és a soros adatokon (SDA) keresztül. Nagyon hasznos IC, és használható LED-es táblákban, kijelzőkben, Billentyűzetekben, Ipari vezérlésben stb..
Az LCD vezérlőpanel beépített potenciométerrel rendelkezik az LCD kontrasztjának szabályozására.
Az IC és az LCD vezérlő csapdiagramjai az alábbiakban láthatók.
Kördiagramm
Az LCD és az ESP32 összekapcsolásának csatlakozásait az alábbiakban adjuk meg
- csatlakoztassa az I2C modul 1-16 érintkezőjét az LCD kijelző 1-16 tűjéhez.
- Az I2C modul SDA csapja -> ESP32 azaz D21 SDA csapja
- Az I2C modul SCL-csapja -> ESP32, azaz a D22 SCL-csapja
Van csatlakoztatott 3v a ESP32 5V I2C demonstrációs csak, de szükségünk van 5V táplálás a I2C modul display adatok megfelelő, mert ESP32 csak így 3,3 V, ami alacsony a I2C modul és az adatok nem láthatók tisztán. Tehát jobb, ha külső 5V-os tápegységet használ.
Szükségünk van táblafájlokra az ESP32 számára, ezért ha még nem ismeri az ESP32 alkalmazást, akkor először kövesse az Első lépések az ESP32 bemutatóval leírást, majd ugorjon ide vissza. Az LCD-t I2C nélkül is csatlakoztathatja az ESP32-hez, de ehhez több ESP32-csap szükséges.
Kód az I2C vezérlő címének megtalálásához
Mielőtt belépnénk a főkódba, először meg kell találnunk az I2C modul címét.
Az I2C vezérlő beépített ADDRESS bitet tartalmaz, amelyet az I2C busz vezérlésére használnak. Az alapértelmezett CÍM 0x27, de bizonyos esetekben 0x3f is lehet. Tehát az I2C vezérlő címének ellenőrzéséhez csatlakoztassa az áramkört a fent látható módon, töltse fel az alább megadott kódot, és nyissa meg a soros monitort. A címet hexadecimálisan fogja látni.
#include
Ne feledje, hogy ezt a címet az LCD interfész kódunkban használjuk.
Az I2C vezérlőben, amint láthatja, három jumper / forrasztópárna található A0, A1 és A2 felirattal. Ezeket a modul címének megváltoztatására használják. Így változik a cím az alapértelmezett 0x27 vagy 0x3F értékhez képest, ha összekapcsolja a címlapokat. (1 = Nincs csatlakoztatva. 0 = Csatlakozva):
A0 |
A1 |
A2 |
HEX cím |
1 |
1 |
1 |
0x27 |
0 |
1 |
1 |
0x26 |
1 |
0 |
1 |
0x25 |
0 |
0 |
1 |
0x24 |
1 |
1 |
0 |
0x23 |
0 |
1 |
0 |
0x22 |
1 |
0 |
0 |
0x21 |
0 |
0 |
0 |
0x20 |
ESP32 kód
Először szükségünk van egy LiquidCrystal_I2C könyvtárra az I2C LCD modulhoz. A szokásos Liquidcrsytal könyvtár nem fog működni, mert itt I2C-t használunk.
Töltse le a könyvtárat innen:
A kódot úgy írják, hogy bármi legyen beírva a soros monitorra, az megjelenjen az LCD-n. Az Arduino IDE-t használtuk kódunk megírásához és feltöltéséhez.
Először is be kell építenünk az I2C kommunikációhoz vezetékes könyvtárat, amely az Arduino IDE-hez tartozik.
#include
Ezután az I2C LCD-hez használja a korábban letöltött LiquidCrystal_I2C.h fájlt.
#include
Ezután állítsa az LCD I2C címet 0x27-re, vagy arra a címre, amelyet a fent megadott szkennerkód futtatásával kapott egy 16 karakteres 2 soros kijelzőhöz
LiquidCrystal_I2C lcd (0x27, 16,2);
A beállítási funkcióban inicializálja a soros kommunikációt és az LCD-t 16 karakter 2 sorra, és kapcsolja be a háttérvilágítást. Ha ki szeretné kapcsolni a háttérvilágítást, használja az lcd .noBacklight () elemet, és módosítsa a setCursor () funkciót az Ön igényei szerint.
void setup () { Soros.kezdés (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0,0); lcd.print ("Helló, világ!"); késés (1000); lcd.setCursor (0,1); lcd.print ("circuitdigest.com"); késés (3000);
Az LCD először a Serial Monitor használatára vonatkozó utasításokat jeleníti meg, és beírja a megjelenítendő karaktereket.
Állítsa a Serial Monitor opciót "Nincs sor vége" értékre
lcd.clear (); lcd.setCursor (0,0); lcd.print ("Ser. Monitor használata"); lcd.setCursor (0,1); lcd.print ("Megjelenítendő típus"); }
A loop funkció a Serial.available () függvény segítségével folyamatosan ellenőrzi a soros portról érkező soros adatokat. Ha van üzenet, várjon egy másodpercet, és kinyomtatja az üzenetet az LCD-re az lcd .write () és a Serial.read () függvényekkel.
void loop () {{// amikor a karakterek a soros porton keresztül érkeznek… if (Serial.available ()) {delay (100); // várj egy kicsit, amíg az egész üzenet megérkezik lcd.clear (); // törölje a képernyőt, miközben (Serial.available ()> 0) {// olvassa el az összes elérhető karaktert lcd.write (Serial.read ()); // az egyes karakterek megjelenítése az LCD-n}}}}
A Verseny kód az alábbiakban található, ezért töltse fel a kódot, és nyissa meg a soros monitort. Ezután írja be az üzenetet és nyomja meg az Enter billentyűt. Üzenete megjelenik az LCD-n.
Ha nem kap megfelelő választ vagy nem reagál az LCD-re, akkor ellenőrizze az I2C vezérlő címét, vagy szkennelje be újra a fenti kóddal a helyes cím megszerzéséhez.