- Kaj je komunikacijski protokol I2C?
- Potrebni materiali
- I2C modul
- Shema vezja
- Koda za iskanje naslova krmilnika I2C
- Koda za ESP32
V prejšnji vadnici je OLED povezan z ESP32 s pomočjo komunikacije SPI, ki uporablja 5 nožic. V tej vadnici 16x2 LCD povežemo z ESP32 z uporabo samo 2 nožic s pomočjo komunikacije I2C. Zmanjšuje število zatičev, ki jih uporablja ESP32, tako da ostane večje število zatičev ESP32 prostih za povezovanje različnih senzorjev.
Kaj je komunikacijski protokol I2C?
Izraz I2C pomeni " Inter integrirana vezja". Običajno je označen kot IIC ali I na kvadrat C ali celo kot dvožični vmesniški protokol (TWI), ponekod pa vseeno pomeni enako. I2C je sinhroni komunikacijski protokol, kar pomeni, da morata obe napravi, ki si delita informacije, deliti skupni signal ure. Ima le dve žici, SDA in SCL za izmenjavo informacij, od katerih se SCL uporablja za signal ure, SDA pa za pošiljanje in sprejemanje podatkov.
Lahko kupite I2C LCD modul, v katerem je vgrajen krmilnik LCD I2C1602, ali pa preprosto kupite I2C krmilnik za povezavo 16x2 LCD z ESP32.
Potrebni materiali
- ESP32
- 16 * 2 LCD zaslon
- Krmilnik LCD I2C
- Žice
- Breadboard
I2C modul
Krmilnik I2C ima IC PCF8574, ki omogoča splošno razširjeno daljinsko razširitev V / I prek dvožične dvosmerne serijske ure vodila I2C-vodila (SCL) in serijskih podatkov (SDA). Je zelo uporaben IC in se lahko uporablja na tablah z LED-znaki, prikazovalnikih, blazinicah tipk, industrijskem krmiljenju itd. Obstaja 8 I / O zatičev, 3 zatiči (A0, A1, A2) za naslov vodila I2C in zatiči SDA, SCL.
Krmilna plošča LCD ima vgrajen potenciometer za nadzor kontrasta LCD.
Sheme pinov krmilnika IC in LCD so podane spodaj.
Shema vezja
Povezave za povezovanje LCD-ja z ESP32 so podane spodaj
- priključite pin 1-16 modula I2C na pin 1-16 LCD zaslona.
- SDA pin modula I2C -> SDA pin ESP32, tj. D21
- Zatič SCL modula I2C -> Zatič SCL ESP32, tj. D22
Priključil sem 3v ESP32 na 5v I2C samo za predstavitev, vendar za pravilno prikazovanje podatkov potrebujemo napajalnik 5V za modul I2C, ker lahko ESP32 oddaja le 3,3 volta, kar je malo za modul I2C in podatki ne bodo jasno vidni. Zato je bolje uporabiti zunanje napajanje 5V.
Za ESP32 potrebujemo datoteke na plošči, zato, če ste novi v ESP32, najprej sledite Uvodu za začetek uporabe ESP32 in nato skočite nazaj sem. LCD lahko povežete tudi z ESP32 brez I2C, vendar bo potrebovalo več nožic ESP32.
Koda za iskanje naslova krmilnika I2C
Preden gremo v glavno kodo, moramo najprej najti naslov modula I2C.
I2C krmilnik ima vgrajen ADDRESS bit, ki se uporablja za nadzor vodila I2C. Privzeti NASLOV je 0x27, v nekaterih primerih pa je lahko 0x3f. Torej, če želite preveriti naslov krmilnika I2C, priključite vezje, kot je prikazano zgoraj, naložite spodnjo kodo in odprite serijski monitor, naslov boste videli v šestnajstiški številki.
#include
Upoštevajte, da ta naslov uporabljamo v kodi vmesnika LCD.
Kot lahko vidite v krmilniku I2C, obstajajo trije mostički / spajkalne blazinice, označene z A0, A1 in A2. Uporabljajo se za spreminjanje naslova modula. Evo, kako se naslov spremeni od privzete vrednosti 0x27 ali 0x3F, če naslovne ploščice povežete skupaj. (1 = ni povezan. 0 = povezan):
A0 |
A1 |
A2 |
HEX naslov |
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 |
Koda za ESP32
Najprej potrebujemo knjižnico LiquidCrystal_I2C za modul LCD I2C. Navadna knjižnica Liquidcrsytal ne bo delovala, ker tukaj uporabljamo I2C.
Prenesite knjižnico s te
Koda je napisana tako, da bo na LCD-prikazovalniku prikazano vse, kar je vneseno na serijski monitor. Arduino IDE je bil uporabljen za pisanje in nalaganje naše kode.
Najprej moramo vključiti žično knjižnico za komunikacijo I2C, ki je priložena Arduino IDE.
#include
Nato za I2C LCD vključite LiquidCrystal_I2C.h, ki je bil prenesen prej.
#include
Nato nastavite naslov LCD I2C na 0x27 ali naslov, ki ste ga dobili tako, da zaženete zgoraj navedeno kodo optičnega bralnika za 16-znakovni dvovrstični zaslon
LCD LiquidCrystal_I2C (0x27, 16,2);
V nastavitveni funkciji inicializirajte serijsko komunikacijo in LCD za 16 znakov 2 vrstici in vklopite osvetlitev ozadja. Če želite izklopiti osvetlitev ozadja, uporabite lcd .noBacklight () in spremenite funkcijo setCursor () glede na vaše želje.
void setup () { Serial.begin (9600); lcd.init (); lcd. backlight (); lcd.setCursor (0,0); lcd.print ("Pozdravljen, svet!"); zamuda (1000); lcd.setCursor (0,1); lcd.print ("circuitdigest.com"); zamuda (3000);
LCD bo najprej prikazal navodila za uporabo serijskega monitorja in vtipkal znake za prikaz.
Nastavite možnost Serial Monitor na "No Line Ending"
lcd.clear (); lcd.setCursor (0,0); lcd.print ("Uporabi Ser. Monitor"); lcd.setCursor (0,1); lcd.print ("Tip za prikaz"); }
Funkcija zanke bo neprekinjeno preverjala morebitne vhodne serijske podatke iz serijskih vrat s funkcijo Serial.available (). Če je sporočilo, počakajte na drugo in ga natisnite na LCD z uporabo funkcij lcd .write () in Serial.read ().
void loop () {{// ko znaki prispejo čez serijska vrata… if (Serial.available ()) {delay (100); // počakamo malo, da prispe celotno sporočilo lcd.clear (); // počistite zaslon, medtem ko (Serial.available ()> 0) {// preberite vse razpoložljive znake lcd.write (Serial.read ()); // prikaz vsakega znaka na LCD-ju}}}}
Koda za konkurenco je navedena spodaj, zato naložite kodo in odprite serijski monitor. Nato vnesite sporočilo in pritisnite Enter. Vaše sporočilo bo prikazano na LCD-prikazovalniku.
Če na LCD-prikazovalniku ne dobite pravilnega odgovora ali se ne odzove, preverite naslov krmilnika I2C ali ga znova optično preberite z zgornjo kodo, da dobite pravilen naslov.