- Kas ir I2C sakaru protokols?
- Nepieciešamie materiāli
- I2C modulis
- Shēmas shēma
- Kods I2C kontroliera adreses atrašanai
- ESP32 kods
Iepriekšējā apmācībā OLED ir saskarne ar ESP32, izmantojot SPI sakarus, kas izmanto 5 tapas. Šajā apmācībā mēs ar I2C sakaru palīdzību saskarnē 16x2 LCD saskaramies ar ESP32, izmantojot tikai 2 tapas. Tas samazina ESP32 izmantoto tapu skaitu tā, ka vairāk ESP32 tapu paliek brīvi dažādu sensoru saskarnēm.
Kas ir I2C sakaru protokols?
Termins I2C nozīmē “ Inter Integrated Circuits”. To parasti apzīmē kā IIC vai I kvadrātu C vai pat kā 2 vadu interfeisa protokolu (TWI) dažās vietās, bet tas viss nozīmē to pašu. I2C ir sinhrona sakaru protokols, tas nozīmē, ka abām ierīcēm, kas koplieto informāciju, ir jābūt kopīgam pulksteņa signālam. Tam ir tikai divi vadi - SDA un SCL, lai apmainītos ar informāciju, no kuriem SCL tiek izmantots pulksteņa signālam, bet SDA - datu sūtīšanai un saņemšanai.
Jūs varat iegādāties I2C LCD moduli, kurā iebūvēts I2C1602 LCD kontrolieris, vai arī vienkārši iegādāties I2C kontrolieri, lai saskarnē 16x2 LCD ar ESP32.
Nepieciešamie materiāli
- ESP32
- 16 * 2 LCD displejs
- I2C LCD kontrolieris
- Vadi
- Maizes dēlis
I2C modulis
I2C kontrolierim ir IC PCF8574, kas nodrošina vispārēju tālvadības I / O paplašināšanu, izmantojot divu vadu divvirzienu I2C kopnes sērijveida pulksteni (SCL) un sērijas datus (SDA). Tas ir ļoti noderīgs IC, un to var izmantot LED izkārtnēs, displejos, taustiņu blokos, rūpnieciskajā kontrolē utt. I2C kopnes adresei ir 8 I / O tapas, 3 tapas (A0, A1, A2) un SDA, SCL tapām.
LCD kontroliera panelī ir iebūvēts potenciometrs, lai kontrolētu LCD kontrastu.
IC un LCD kontroliera tapu diagrammas ir norādītas zemāk.
Shēmas shēma
Savienojumi LCD saskarnei ar ESP32 ir norādīti zemāk
- savienojiet I2C moduļa tapu 1-16 ar LCD displeja tapu 1-16.
- I2C moduļa SDA tapa -> ESP32, ti, D21, SDA tapa
- I2C moduļa SCL tapa -> ESP32, ti, D22, SCL tapa
Esmu pievienojis 3 V ESP32 un 5 V I2C tikai demonstrēšanai, taču mums ir nepieciešams 5 V padeve, lai I2C modulis pareizi parādītu datus, jo ESP32 var dot tikai 3,3 voltus, kas ir maz I2C modulim, un dati nebūs skaidri redzami. Tātad, labāk ir izmantot ārējo 5V barošanu.
Mums ir nepieciešami ESP32 dēļu faili, tādēļ, ja esat jauns ESP32 lietotājs, vispirms sekojiet Darba sākšana ar ESP32 apmācību un pēc tam atgriezieties šeit. Jūs varat arī savienot LCD ar ESP32 bez I2C, taču tam būs nepieciešami vairāk ESP32 tapu.
Kods I2C kontroliera adreses atrašanai
Pirms iedziļināšanās galvenajā kodā mums vispirms jāatrod I2C moduļa adrese.
I2C kontrolierim ir iebūvēts ADDRESS bits, kas tiek izmantots I2C kopnes vadībai. Noklusējuma ADDRESS ir 0x27, bet dažos gadījumos tas var būt 0x3f. Tātad, lai pārbaudītu I2C kontroliera adresi, pievienojiet ķēdi, kā parādīts iepriekš, augšupielādējiet zemāk norādīto kodu un atveriet sērijas monitoru. Jūs redzēsiet adresi heksadecimālā.
# iekļaut
Ņemiet vērā, ka mēs šo adresi izmantojam mūsu LCD saskarnes kodā.
I2C kontrolierī, kā redzat, ir trīs džemperi / lodēšanas spilventiņi, kas apzīmēti kā A0, A1 un A2. Tos izmanto, lai mainītu moduļa adresi. Lūk, kā adrese mainās no noklusējuma vērtības 0x27 vai 0x3F, ja adrešu spilventiņus savienojat kopā. (1 = nav savienots. 0 = savienots):
A0 |
A1 |
A2 |
HEX adrese |
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 kods
Vispirms mums ir nepieciešama bibliotēka LiquidCrystal_I2C I2C LCD modulim. Parastā Liquidcrsytal bibliotēka nedarbosies, jo mēs šeit izmantojam I2C.
Lejupielādējiet bibliotēku šajā vietnē
Kods ir rakstīts tā, ka viss, kas ierakstīts sērijveida monitorā, tiks parādīts LCD. Arduino IDE ir izmantots, lai uzrakstītu un augšupielādētu mūsu kodu.
Pirmkārt, mums ir jāiekļauj vadu bibliotēka I2C saziņai, kas nāk ar Arduino IDE.
# iekļaut
Pēc tam I2C LCD iekļaujiet iepriekš lejupielādēto LiquidCrystal_I2C.h.
# iekļaut
Pēc tam iestatiet LCD I2C adresi uz 0x27 vai adresi, kuru saņēmāt, palaižot iepriekš norādīto skenera kodu 16 rindu 2 rindu displejam
LiquidCrystal_I2C lcd (0x27, 16,2);
Pēc iestatīšanas funkciju, inicializēt sērijas komunikāciju un LCD 16 simboliem 2 līnijas un ieslēgt apgaismojumu. Ja vēlaties izslēgt fona apgaismojumu, izmantojiet lcd .noBacklight () un mainiet funkciju setCursor () atbilstoši jūsu vēlmēm.
void setup () { Sērijas.sākt (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0,0); lcd.print ("Sveika, pasaule!"); kavēšanās (1000); lcd.setCursor (0,1); lcd.print ("circuitdigest.com"); kavēšanās (3000);
LCD vispirms parādīs norādījumus par seriālā monitora lietošanu un ierakstīs rakstzīmes, kuras parādīt.
Iestatiet opciju Serial Monitor uz “No Line Ending”
lcd.clear (); lcd.setCursor (0,0); lcd.print ("Use Ser. Monitor"); lcd.setCursor (0,1); lcd.print ("Rādīt veidu"); }
cilpa funkcija nepārtraukti pārbaudīs visus ienākošos sērijas datus no sērijas porta, izmantojot funkciju Serial.available (). Ja ir ziņojums, tas gaida sekundi un izdrukā ziņojumu LCD, izmantojot funkcijas lcd .write () un Serial.read ().
void loop () {{// kad rakstzīmes nonāk pa seriālo portu… if (Serial.available ()) {delay (100); // mazliet pagaidiet, līdz pienāk viss ziņojums lcd.clear (); // notīriet ekrānu, kamēr (Serial.available ()> 0) {// lasīt visas pieejamās rakstzīmes lcd.write (Serial.read ()); // rādīt katru rakstzīmi LCD ekrānā}}}}
Konkursa kods ir norādīts zemāk, tāpēc augšupielādējiet kodu un atveriet sērijas monitoru. Pēc tam ierakstiet ziņojumu un nospiediet taustiņu Enter. Jūsu ziņojums tiks parādīts LCD ekrānā.
Ja LCD ekrānā netiek saņemta pareiza atbilde vai netiek saņemta atbilde, pārbaudiet savu I2C kontroliera adresi vai skenējiet to vēlreiz, izmantojot iepriekš norādīto kodu, lai iegūtu pareizo adresi.