ESP32 — ce face fiecare pin
ESP32 are 30+ pini, dar nu toți fac orice. Înveți care-s pini de alimentare, care-s digitali, care-s doar input, și care-s capcanele care-ți strică placa la boot.
Ce înveți
- Ce e un microcontroller și prin ce diferă de un computer
- Care sunt pinii de alimentare (3.3V, 5V, GND)
- Ce-i un pin strapping și de ce contează
- Care pini sunt doar pentru citire (ADC input-only)
- Ce înseamnă ADC, PWM, I2C, SPI, UART
Ce ai nevoie
Ce-i un microcontroller
ESP32 nu e un computer întreg. Un PC are sistem de operare, hard disk, RAM gigabit, ecran. ESP32 are doar atât cât îi trebuie ca să execute un program și să controleze pini:
- CPU: 240MHz dual-core (un PC are 3-5GHz)
- RAM: 320KB (un PC are 16-32GB — adică de 100.000 ori mai mult)
- Flash: 4MB (unde stă codul tău compilat)
- WiFi + Bluetooth integrate (asta-i magia ESP32-ului)
Nu pornește Windows pe el. Dar exact d-aia-i fain: e mic, ieftin (vreo 30 de lei), consumă puțin, și-i făcut să controleze lucruri.
Pinii de alimentare
Pe placă găsești:
- 3.3V — output regulat din placă. De aici alimentezi senzori (OLED, microfon, buton). Maximum ~600mA.
- 5V (sau VIN) — vine direct din USB. Folosit pentru module care cer 5V (rar).
- GND — masa, minus. Sunt mai multe pini GND, toți conectați intern. Folosește oricare.
Regulă: orice modul trebuie să aibă GND-ul lui legat la GND-ul ESP32-ului, altfel nu se înțeleg la semnale.
Pinii digitali generali (GPIO)
GPIO = General Purpose Input/Output. Astea-s pini care pot fi orice vrei tu: input (citește buton) sau output (aprinde LED).
Pini buni pentru orice:
GPIO 4, 5, 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
Cu ei nu ai surprize — pot fi INPUT sau OUTPUT, fac PWM, fac ce vrei.
Pinii “strapping” — capcana
Patru pini sunt speciali: GPIO 0, 2, 12, 15. Placa se uită la ei când pornește ca să decidă în ce mod să intre (rulează program normal sau intră în mod download).
Dacă ai un modul care trage GPIO 0 la LOW la pornire → placa intră în download mode și codul tău nu mai rulează. Asta confundă mulți începători.
| Pin | Ce face la boot |
|---|---|
| GPIO 0 | LOW = download mode, HIGH = rulează program |
| GPIO 2 | trebuie să fie LOW sau float la boot |
| GPIO 12 | influențează voltajul flash (atenție) |
| GPIO 15 | controlează ce mesaje apar pe Serial la boot |
Regula: evită strapping pins pentru senzori care trag pinul la HIGH/LOW imediat la pornire. Pentru LED-uri sau butoane normale merg ok.
Pinii doar-input (ADC2 input-only)
Patru pini nu pot fi output — pot doar citi semnale analoge:
GPIO 34, 35, 36, 39
Nu au rezistor pull-up/pull-down intern. Buni pentru: microfoane, senzori analogi, joystick-uri. Nu poți aprinde un LED pe ei.
Funcții speciale
I2C — pentru OLED, senzori cu adresă
- SDA = GPIO 21 (date)
- SCL = GPIO 22 (ceas)
Standard pe ESP32. Așa conectezi OLED-ul SSD1306.
SPI — comunicație rapidă
Folosit pentru carduri SD, ecrane mari. 4 pini: MOSI, MISO, SCK, CS.
UART — comunicație serială
- TX = GPIO 1, RX = GPIO 3 — NU le folosi pentru altceva! Sunt folosite de Serial Monitor și pentru upload cod. Dacă pui un senzor pe ele, vezi gunoi în Serial Monitor.
ADC — citire analogă
ESP32 are 12 pini cu ADC. Citește tensiune 0-3.3V și-ți dă un număr 0-4095 (12-bit). Util pentru: potențiometre, senzori de lumină, baterii.
Atenție: nu pune niciodată mai mult de 3.3V pe un pin — îl arzi.
PWM — output pulsat
Orice GPIO digital poate face PWM. PWM = aprinzi și stingi foarte repede ca să simulezi o tensiune între 0 și 3.3V. Folosit pentru:
- Reglare luminozitate LED (de la slab la tare)
- Control viteză motor
- Generare sunete pe buzzer
RTC — supraviețuiesc deep sleep
Dacă pui ESP32-ul să doarmă (consum 10µA), majoritatea pinilor se sting. Doar pinii RTC pot trezi placa: GPIO 0, 2, 4, 12-15, 25-27, 32-39.
Provocare — proiectul VIA
În VIA folosim:
- GPIO 4 — buton
- GPIO 5 — LED-uri WS2812
- GPIO 21 + 22 — OLED prin I2C
- GPIO 14 + 15 + 32 — microfon INMP441 prin I2S
Întrebare: care din pinii ăștia e strapping?
Răspuns: GPIO 15. Microfonul INMP441 are pe-acolo semnalul WS (word select). Dacă microfonul îl trage LOW exact la pornire, placa nu mai afișează mesaje pe Serial Monitor (dar pornește). Dacă-l trage la 12V din greșeală — arzi placa. Atenție la ce conectezi pe strapping pins.
Ce ai învățat
- ESP32 e microcontroller, nu computer — mic, rapid, ieftin, cu WiFi.
- Alimentare: 3.3V pentru module, 5V din USB, GND comun.
- GPIO 4-33 (cei mai mulți) merg pentru orice.
- GPIO 34-39 sunt doar input.
- GPIO 0, 2, 12, 15 sunt strapping — atenție la ce conectezi pe ei.
- I2C pe 21/22, UART pe 1/3 (ocupați de Serial), PWM oriunde, ADC pe 12 pini.
Pas următor
Acum că știi pinii, cablezi primul senzor: butonul. Lecția următoare: buton cu pull-up →
După lecția asta, poți
- Citești pinout-ul oricărui ESP32 fără să confunzi GPIO cu pinul fizic
- Eviți pinii speciali (strapping, boot, JTAG) care strică flash-ul sau boot-ul
- Știi care pini pot fi INPUT, care PWM, care I2C/SPI built-in — alegi corect din prima
- Pui o piesă pe pinul corect din prima, nu prin trial-and-error