Blog despre electronica, automatizare, project management și Software - “Rules for happiness: something to do, someone to love, something to hope for.” Immanuel Kant
Scopul acestui proiect este de a testa capacitatea plăcii ESP32-C6 de a comunica cu un LCD 16×2 prin intermediul protocolului I2C. Acest test va verifica conectivitatea hardware și funcționalitatea de bază a
afișajului LCD în cadrul unui mediu de dezvoltare ArduinoIDE pentru ESP32-C6.
Protocolul de comunicație I2C
Interfața de comunicație I2C (Inter-Integrated Circuit) este un protocol serial sincron de comunicație utilizat pentru transmiterea datelor între componente electronice pe o placă de circuit. I2C este un protocol de comunicație bidirecțional, ceea ce înseamnă că datele pot fi trimise și primite între mai multe dispozitive conectate la același bus I2C.
Iată cum funcționează interfața de comunicație I2C într-o diagramă simplificată:
Linia de date (SDA – Serial Data Line):
Linia de date este folosită pentru transmiterea și recepționarea datelor între dispozitivele conectate la busul I2C.
Datele sunt transmise pe această linie într-un format serial binar.
Linia de Clock (SCL – Serial Clock Line):
Linia de ceas este folosită pentru sincronizarea transmiterii și recepționării datelor între dispozitive.
Semnalul de ceas este generat de dispozitivul master și este utilizat pentru a sincroniza viteza de transfer a datelor.
Dispozitivul master:
Dispozitivul master inițiază și controlează comunicația pe busul I2C.
În cadrul unei transmisii, dispozitivul master inițiază cererea de comunicare și controlează sincronizarea transferului de date.
Dispozitivele slave:
Dispozitivele slave răspund la cererile de comunicare primite de la dispozitivul master.
Ele pot să trimită și să primească date în timpul comunicării, sub controlul dispozitivului master.
Protocolul de comunicare:
Comunicarea pe busul I2C implică trimiterea și recepționarea cadrelor de date.
Fiecare cadru de date include adrese de dispozitiv, comenzi și date efective.
Dispozitivele sunt selectate folosind adrese unice atribuite de către producător.
Arhitectura multimaster (opțională):
I2C suportă o arhitectură multimaster, ceea ce înseamnă că mai multe dispozitive master pot fi conectate la același bus I2C.
Protocolul I2C are mecanisme pentru evitarea coliziunilor și pentru gestionarea accesului simultan al mai multor dispozitive master la bus.
I2C este un protocol flexibil și eficient, ceea ce îl face potrivit pentru o gamă largă de aplicații, de la comunicații între senzori și microcontrolere până la controlul perifericelor și a dispozitivelor de stocare a datelor. Este utilizat frecvent în sistemele încorporate și în aplicațiile IoT datorită simplității sale și a capacității de a conecta mai multe dispozitive într-o rețea comună.
Viteza de transfer pentru I2C
Viteza maximă de transfer pentru I2C poate varia în funcție de modul și de specificațiile dispozitivelor implicate în comunicare. I2C permite utilizatorilor să aleagă diferite rate de transfer în funcție de necesitățile lor, dar există limite în ceea ce privește viteza maximă.
I2C este specificat pentru diferite rate de transfer, cum ar fi Standard Mode (100 kbit/s), Fast Mode (400 kbit/s), Fast Mode Plus (1 Mbit/s), și High-Speed Mode (3.4 Mbit/s). Mai există și moduri mai rapide, cum ar fi Ultra Fast Mode (5 Mbit/s) și Ultra Fast Mode Plus (10 Mbit/s), care sunt disponibile pe anumite dispozitive.
ESP32-C6
ESP32-C6 este primul SoC Wi-Fi 6 de la Espressif care integrează Wi-Fi 6 de 2,4 GHz, Bluetooth 5 (LE) și protocolul 802.15.4.ESP32-C6 atinge o performanță RF de vârf în industrie, cu caracteristici de securitate fiabile și resurse multiple de memorie pentru produsele IoT.
Este alcătuit dintr-un procesor RISC-V de 32 de biți de înaltă performanță (HP), care poate fi tactat până la 160 MHz și un procesor RISC-V de 32 de biți de putere redusă (LP), care poate fi tactat până la 20 deMHz.Are un ROM de 320KB, un SRAM de 512KB și funcționează cu flash extern.Vine cu 30 (QFN40) sau 22 (QFN32) GPIO-uri programabile, cu suport pentru SPI, UART, I2C, I2S, RMT, TWAI, PWM, SDIO, Motor Control PWM.De asemenea, include un ADC pe 12 biți și un senzor de temperatură.
ESP32-C6 are o interfață de magistrală I2C și LP I2C.I2C este utilizat pentru modul master sau slave I2C, în funcție în configurația dvs., în timp ce LP I2C este întotdeauna în modul master.Ambele interfețe acceptă:
Modul standard (100 Kbit/s)
Modul rapid (400 Kbit/s)
Până la 800 Kbit/s (constrâns de puterea de tragere SCL și SDA
Mod de adresare pe 7 și 10 biți
Mod de adresare dublă
Adresă de difuzare pe 7 biți
Se pot configura registrele de instrucțiuni pentru a controla interfața I2C pentru mai multă flexibilitate.
Liquid Cristal Display LCD
Un afișaj cu cristale lichide (LCD) este un dispozitiv electronic pasiv utilizat pentru afișarea informațiilor într-un format vizual.
Iată cum funcționează un LCD:
Stratul de cristale lichide (LC): LCD-ul conține un strat subțire de cristale lichide plasat între două substraturi de sticlă sau plastic. Cristalele lichide pot fi orientate în mod controlat de câmpuri electrice.
Matrice de pixeli: LCD-ul este format dintr-o matrice de pixeli, unde fiecare pixel este compus din celule de cristal lichid care pot fi controlate individual.
Lumina de fundal (backlight): Majoritatea LCD-urilor folosesc o sursă de lumină de fundal, cum ar fi LED-uri sau lumini fluorescente, pentru a ilumina ecranul și a face textul sau imaginile mai ușor de citit.
Electrozi: LCD-ul are electrozi plasați la intersecția fiecărui pixel. Prin aplicarea tensiunii corespunzătoare la anumite combinații de electrozi, cristalele lichide pot fi orientate pentru a bloca sau a permite trecerea luminii prin pixeli.
Controler LCD: LCD-urile sunt controlate de un circuit electronic sau un controler care interpretează semnalele de intrare și comandă orientarea cristalelor lichide pentru a afișa text, grafice sau alte informații pe ecran.
Procesul de afișare a informațiilor pe un LCD implică următoarele etape:
Setarea conținutului: Controlerul LCD primește comenzi sau date de la microcontroller sau de la o altă sursă de intrare.
Interpretarea comenzilor: Controlerul convertește comenzile primite în semnale adecvate pentru a controla orientarea cristalelor lichide în fiecare pixel.
Afișarea pe ecran: Cristalele lichide sunt orientate în funcție de semnalele primite, permitând sau blocând trecerea luminii prin pixeli pentru a afișa textul sau imaginile pe ecran.
Configurarea ESP32-C6 în Arduino IDE
Configurarea plăcii ESP32-C6 în Arduino IDE este un proces destul de simplu. Iată pașii pe care trebuie să îi urmezi:
Descărcarea și instalarea Arduino IDE:
Dacă nu ai deja Arduino IDE instalat pe computer, descarcă-l de pe site-ul oficial al Arduino și urmează instrucțiunile de instalare specifice sistemului de operare pe care îl folosești.
Instalarea suportului ESP32 în Arduino IDE:
Deschide Arduino IDE și mergi la meniul “File” -> “Preferences”.
În câmpul “Additional Board Manager URLs”, adaugă următoarele URL-uri:
Dacă ai deja alte URL-uri acolo, asigură-te că le separi prin virgulă.
Apasă pe butonul “OK” pentru a salva modificările.
Acum, mergi la meniul “Tools” -> “Board” -> “Boards Manager”.
Caută “esp32” și instalează “esp32” de la Espressif Systems.
Selectarea plăcii ESP32-C6:
După ce ai instalat suportul ESP32, mergi la meniul “Tools” -> “Board”.
Selectează “ESP32C6 Dev Module”
Alege parametrii suplimentari, cum ar fi frecvența procesorului, Flash Size, Upload Speed, etc., în funcție de cerințele proiectului tău.
Selectarea portului serial:
Conectează placa ESP32-C6 la computer folosind un cablu USB.
Mergi la meniul “Tools” -> “Port” și selectează portul serial corespunzător plăcii ESP32-C6. Portul ar trebui să fie afișat ca o opțiune disponibilă.
După ce ai configurat placa ESP32-C6 în Arduino IDE, poți începe să scrii și să încarci codul pe placă folosind mediul de dezvoltare familiar din Arduino IDE. Asigură-te că alegi bibliotecile corecte și că folosești documentația specifică pentru ESP32-C6 pentru a te ghida în procesul de programare și de dezvoltare a proiectelor. În cazul meu am avut nevoie de bibliotecile pentru Wire(comunicația pe I2C) , ESP32Time( RTC intern ESP32) și LCD (Liquid Cristal display).
Linkurile de la secțiunea “Componente” conțin adresa mea de afiliere la eMag.ro, iar dacă cumperi folosind aceste linkuri vei susține blogul meu. Mulțumesc!
eMag Genius:
Hai și tu în Genius! Abonează-te la Genius 12 luni și primești beneficii premium și 20 lei card cadou eMAG. Profită acum! eMag Genius
Mulțumesc pentru atenție!
Pentru întrebări și/sau consultanță tehnică vă stau la dispoziție pe blog mai jos în secțiunea de comentarii sau pe email simedruflorin@automatic-house.ro.