- Čo je komunikačný protokol I2C?
- Potrebné materiály
- Modul I2C
- Schéma zapojenia
- Kód na vyhľadanie adresy radiča I2C
- Kód pre ESP32
V predchádzajúcom tutoriáli je OLED prepojený s ESP32 pomocou SPI komunikácie, ktorá využíva 5 pinov. V tomto tutoriáli sme pomocou komunikácie I2C prepojili 16x2 LCD s ESP32 pomocou iba 2 pinov. Znižuje počet pinov používaných programom ESP32, takže väčší počet pinov ESP32 zostáva voľný pre prepojenie rôznych senzorov.
Čo je komunikačný protokol I2C?
Pojem I2C znamená „ integrované obvody“. Normálne sa na niektorých miestach označuje ako IIC alebo I na druhú C alebo dokonca ako 2-vodičový protokol rozhrania (TWI), ale všetko znamená to isté. I2C je synchrónny komunikačný protokol, čo znamená, že obe zariadenia, ktoré zdieľajú informácie, musia zdieľať spoločný hodinový signál. Má iba dva vodiče, SDA a SCL na zdieľanie informácií, z ktorých sa SCL používa na hodinový signál a SDA sa používa na odosielanie a prijímanie údajov.
Môžete si kúpiť I2C LCD modul, v ktorom je zabudovaný LCD radič I2C1602, alebo si môžete jednoducho kúpiť I2C radič na rozhranie 16x2 LCD s ESP32.
Potrebné materiály
- ESP32
- 16 * 2 LCD displej
- Ovládač I2C LCD
- Drôty
- Nepál
Modul I2C
Kontrolér I2C má IC PCF8574, ktorý poskytuje všeobecné vzdialené rozširovanie I / O prostredníctvom dvojvodičových obojsmerných sériových hodín I2C-bus (SCL) a sériových dát (SDA). Je to veľmi užitočné IC a možno ho použiť na výveskách LED, displejoch, klávesniciach, priemyselnom ovládaní atď. K dispozícii je 8 I / O pinov, 3 piny (A0, A1, A2) pre adresu I2C zbernice a SDA, SCL piny.
Ovládacia doska LCD má zabudovaný potenciometer na riadenie kontrastu LCD.
Schémy pinov radiča IC a LCD sú uvedené nižšie.
Schéma zapojenia
Pripojenia na prepojenie LCD s ESP32 sú uvedené nižšie
- pripojte pin 1-16 modulu I2C k pin 1-16 LCD displeja.
- Pin SDA modulu I2C -> Pin SDA ESP32 tj D21
- SCL pin modulu I2C -> SCL pin ESP32 tj D22
Pripojil som 3v ESP32 na 5v I2C iba na ukážku, ale aby sme správne zobrazili údaje, potrebujeme napájanie 5V pre modul I2C, pretože ESP32 môže dať iba 3,3 voltu, čo je pre modul I2C nízke a dáta nebudú zreteľne viditeľné. Je teda lepšie použiť externé napájanie 5V.
Potrebujeme súbory palubných dosiek pre ESP32, takže ak ste v ESP32 nováčikom, postupujte najskôr podľa príručky Začíname s ESP32 a potom skočte sem. Môžete tiež pripojiť LCD s ESP32 bez I2C, ale bude to trvať viac pinov ESP32.
Kód na vyhľadanie adresy radiča I2C
Pred vstupom do hlavného kódu musíme najskôr zistiť adresu I2C modulu.
Radič I2C má zabudovaný bit ADDRESS, ktorý sa používa na riadenie zbernice I2C. Predvolená ADRESA je 0x27, ale v niektorých prípadoch môže byť 0x3f. Ak chcete skontrolovať adresu radiča I2C, pripojte obvod, ako je to znázornené vyššie, nahrajte nižšie uvedený kód a otvorte sériový monitor. Adresa sa zobrazí v šestnástkovej sústave.
#include
Upozorňujeme, že túto adresu používame v našom kóde rozhrania LCD.
Ako vidíte, v ovládači I2C sú tri prepojky / spájkovacie doštičky označené ako A0, A1 a A2. Slúžia na zmenu adresy modulu. Tu je ukážka toho, ako sa adresa zmení z predvolenej hodnoty 0x27 alebo 0x3F, ak adresy prepojíte dohromady. (1 = nepripojené. 0 = pripojené):
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 |
Kód pre ESP32
Najskôr potrebujeme knižnicu LiquidCrystal_I2C pre I2C LCD modul. Obyčajná knižnica Liquidcrsytal nebude fungovať, pretože tu používame I2C.
Stiahnite si knižnicu z tejto
Kód je napísaný tak, že všetko, čo sa napíše na sériovom monitore, sa zobrazí na LCD. Arduino IDE bolo použité na zápis a nahranie nášho kódu.
Najprv musíme zahrnúť knižnicu drôtov pre komunikáciu I2C, ktorá sa dodáva s Arduino IDE.
#include
Pre I2C LCD potom zahrňte LiquidCrystal_I2C.h, ktorý sa stiahne skôr.
#include
Potom nastavte adresu LCD I2C na 0x27 alebo adresu, ktorú získate spustením vyššie uvedeného kódu skenera pre 16-znakový dvojriadkový displej
LiquidCrystal_I2C lcd (0x27, 16,2);
Vo funkcii nastavenia inicializujte sériovú komunikáciu a LCD pre 16 znakov 2 riadky a zapnite podsvietenie. Ak chcete vypnúť podsvietenie, použite lcd .noBacklight () a zmeňte funkciu setCursor () podľa svojich preferencií.
void setup () { Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0,0); lcd.print („Ahoj, svet!“); oneskorenie (1 000); lcd.setCursor (0,1); lcd.print ("circuitdigest.com"); oneskorenie (3 000);
Na displeji LCD sa najskôr zobrazia pokyny na používanie sériového monitora a zadajú sa znaky, ktoré sa majú zobraziť.
Nastavte možnosť Sériový monitor na „Žiadny koniec riadku“
lcd.clear (); lcd.setCursor (0,0); lcd.print ("Použiť sériový monitor"); lcd.setCursor (0,1); lcd.print ("Typ na zobrazenie"); }
funkcia slučky bude nepretržite kontrolovať všetky prichádzajúce sériové údaje zo sériového portu pomocou funkcie Serial.available (). Ak existuje správa, počkajte chvíľu a vytlačte ju na LCD pomocou funkcií lcd .write () a Serial.read ().
void loop () {{// keď znaky prídu cez sériový port… if (Serial.available ()) {delay (100); // chvíľu počkajte, kým dorazí celá správa lcd.clear (); // vyčistiť obrazovku while (Serial.available ()> 0) {// prečítať všetky dostupné znaky lcd.write (Serial.read ()); // zobraziť každý znak na displeji LCD}}}}
Súťažný kód je uvedený nižšie, takže nahrajte kód a otvorte sériový monitor. Potom napíšte správu a stlačte kláves Enter. Vaša správa sa zobrazí na LCD displeji.
Ak na LCD displeji nedostanete správnu alebo žiadnu odpoveď, skontrolujte adresu radiča I2C alebo ju znova naskenujte pomocou vyššie uvedeného kódu, aby ste získali správnu adresu.