- Što je I2C komunikacijski protokol?
- Potrebni materijali
- I2C modul
- Kružni dijagram
- Kod za pronalaženje adrese I2C kontrolera
- Šifra za ESP32
U prethodnom vodiču OLED je povezan s ESP32 koristeći SPI komunikaciju koja koristi 5 pinova. U ovom uputstvu povezujemo LCD 16x2 s ESP32, koristeći samo 2 pina, uz pomoć I2C komunikacije. Smanjuje broj pinova koje koristi ESP32 tako da veći broj ESP32 pinova ostaje slobodan za povezivanje različitih senzora.
Što je I2C komunikacijski protokol?
Izraz I2C označava " Inter integrirani krugovi". Obično se na nekim mjestima označava kao IIC ili I na kvadrat C ili čak kao dvožični protokol sučelja (TWI), ali sve to znači isto. I2C je sinkroni komunikacijski protokol, što znači da oba uređaja koji dijele informacije moraju dijeliti zajednički signal sata. Ima samo dvije žice, SDA i SCL za razmjenu informacija, od kojih se SCL koristi za signal sata, a SDA koristi za slanje i primanje podataka.
Možete kupiti I2C LCD modul u kojem je ugrađen I2C1602 LCD kontroler ili možete jednostavno kupiti I2C kontroler za povezivanje LCD-a 16x2 s ESP32.
Potrebni materijali
- ESP32
- LCD zaslon od 16 * 2
- I2C LCD kontroler
- Žice
- Breadboard
I2C modul
I2C kontroler ima IC PCF8574 koji pruža općenito daljinsko proširenje I / O putem dvožičnog dvosmjernog I2C sabirničkog serijskog sata (SCL) i serijskih podataka (SDA). Vrlo je koristan IC i može se koristiti u pločama sa LED znakovima, zaslonima, pločicama za ključeve, industrijskim upravljanjem itd. Postoji 8 I / O pinova, 3 pina (A0, A1, A2) za adresu I2C sabirnice i SDA, SCL pinove.
Ploča LCD kontrolera ima ugrađeni potenciometar za kontrolu kontrasta LCD-a.
Dijagrami pin-a IC i LCD kontrolera dani su u nastavku.


Kružni dijagram
Priključci za povezivanje LCD-a s ESP32 dani su u nastavku
- spojite pin 1-16 modula I2C na pin 1-16 LCD zaslona.
- SDA pin I2C modula -> SDA pin ESP32 tj. D21
- SCL pin I2C modula -> SCL pin ESP32 tj. D22

Spojio sam 3v ESP32 na 5v I2C samo za demonstraciju, ali treba nam napajanje od 5V kako bi I2C modul pravilno prikazivao podatke, jer ESP32 može dati samo 3,3 volta što je malo za I2C modul i podaci neće biti jasno vidljivi. Dakle, bolje je koristiti vanjsko napajanje od 5V.
Trebaju nam datoteke na ploči za ESP32, pa ako ste novi u ESP32, prvo slijedite Uvod u početne korake za ESP32, a zatim se vratite ovdje. Također možete povezati LCD s ESP32 bez I2C, ali trebat će vam više pinova ESP32.

Kod za pronalaženje adrese I2C kontrolera
Prije ulaska u glavni kod prvo moramo pronaći adresu I2C modula.
I2C kontroler ima ugrađeni ADDRESS bit koji se koristi za upravljanje I2C sabirnicom. Zadana ADRESA je 0x27, ali u nekim slučajevima može biti 0x3f. Dakle, da biste provjerili adresu I2C kontrolera, spojite krug kao što je prikazano gore, prenesite dolje navedeni kod i otvorite serijski monitor, vidjet ćete adresu u heksadecimalnom obliku.
#include

Imajte na umu da ovu adresu koristimo u kodu LCD sučelja.
Kao što vidite, u I2C kontroleru postoje tri kratkospojnika / pločice za lemljenje označene kao A0, A1 i A2. Oni se koriste za promjenu adrese modula. Evo kako se adresa mijenja od zadane vrijednosti 0x27 ili 0x3F, ako međusobno povežete adresne pločice. (1 = Nije povezano. 0 = Povezano):
|
A0 |
A1 |
A2 |
HEX adresa |
|
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 |
Šifra za ESP32
Prvo nam treba knjižnica LiquidCrystal_I2C za I2C LCD modul. Uobičajena knjižnica Liquidcrsytal neće raditi jer ovdje koristimo I2C.
Preuzmite biblioteku s ove
Kôd je napisan na takav način da će se sve što se upiše na serijski monitor prikazati na LCD-u. Arduino IDE korišten je za pisanje i prijenos našeg koda.
Prvo, moramo uključiti žičanu knjižnicu za I2C komunikaciju koja dolazi s Arduino IDE-om.
#include
Zatim za I2C LCD uključite LiquidCrystal_I2C.h koji je ranije preuzet.
#include
Zatim postavite LCD I2C adresu na 0x27 ili adresu koju ste dobili pokretanjem gore navedenog koda skenera za prikaz s 16 redaka u 2 retka
LCD LiquidCrystal_I2C (0x27, 16,2);
U funkciji postavljanja , inicijalizirajte serijsku komunikaciju i LCD zaslon za 16 znakova u 2 retka i uključite pozadinsko osvjetljenje. Ako želite isključiti pozadinsko osvjetljenje, upotrijebite lcd .noBacklight () i promijenite funkciju setCursor () prema vašim željama.
void setup () { Serial.begin (9600); lcd.init (); lcd.pozadinsko svjetlo (); lcd.setCursor (0,0); lcd.print ("Zdravo, svijet!"); kašnjenje (1000); lcd.setCursor (0,1); lcd.print ("circuitdigest.com"); kašnjenje (3000);
LCD će prvo prikazati upute za upotrebu serijskog monitora i upisati znakove za prikaz.
Postavite opciju Serial Monitor na "No Line Ending"
lcd.clear (); lcd.setCursor (0,0); lcd.print ("Koristi Ser. Monitor"); lcd.setCursor (0,1); lcd.print ("Tip za prikaz"); }
Funkcija petlje kontinuirano će provjeravati ima li dolaznih serijskih podataka iz serijskog priključka pomoću funkcije Serial.available (). Ako postoji poruka, pričekajte sekundu i ispišite je na LCD pomoću funkcija lcd .write () i Serial.read ().
void loop () {{// kada znakovi stignu preko serijskog porta… if (Serial.available ()) {delay (100); // pričekajte malo da stigne cijela poruka lcd.clear (); // očistite zaslon dok je (Serial.available ()> 0) {// pročitajte sve dostupne znakove lcd.write (Serial.read ()); // prikaz svakog znaka na LCD-u}}}}
Kôd za natjecanje naveden je u nastavku, zato prenesite kôd i otvorite serijski monitor. Zatim upišite poruku i pritisnite Enter. Vaša će se poruka prikazati na LCD-u.
Ako na LCD-u ne dobijete pravilan odgovor ili nema odgovora, provjerite adresu svog I2C kontrolera ili ga ponovo skenirajte s gore navedenim kodom da biste dobili ispravnu adresu.
