Salta al contingut
ESP32 de 0 a 100
Components Recursos

Per tenir oberta a totes les classes

🆘 Xuleta

Quan alguna cosa no funciona: primer busca el símptoma a la taula. Si no hi és, segueix l'arbre de diagnosi pas a pas.

Si veus… en compilar o pujar

Si veus…Probablement…Prova…
No surt cap port /dev/cu.…El cable només és de càrrega, o falta el driverUn altre cable USB, de dades. Al WROVER, el driver CH340
No surt cap port, i el driver CH340 ja està instal·lat (macOS Sequoia o posterior)El driver està instal·lat però no activat*Configuració del Sistema › General › Ítems d'inici i extensions*: activa'l. El port es diu /dev/cu.wchusbserial… (M0·1)
Failed to connect · Timed out waiting for packet headerLa placa no ha entrat en mode de càrregaMantén premut BOOT, prem i deixa anar EN, i deixa anar BOOT quan comenci a pujar
Al Mac, la pujada falla a mig camí (WROVER)Velocitat de pujada massa alta per al CH340*Eines › Upload Speed* a 115200
Sketch too big · text section exceeds available spaceEl programa no cap a la partició per defecte (passa amb la càmera i el Bluetooth)*Eines › Partition Scheme* › Huge APP (M6·4)
port is busy · Resource busyEl monitor sèrie encara té el port obertTanca el monitor (Ctrl+C) i torna a pujar
expected ';' before …Falta un ;Mira la línia anterior a la que diu l'error
'xxx' was not declared in this scopeUn nom mal escrit, o falta un #include o una llibreriaRevisa majúscules i minúscules. Si és d'una llibreria, comprova que està instal·lada
'ledcSetup' was not declared (o ledcAttachPin)Codi d'un tutorial antic (paquet ESP32 2.x)Fes servir ledcAttach(pin, freq, bits) i ledcWrite(pin, duty) (M3·1)
Molts errors seguitsNormalment només n'hi ha un de debòArregla el primer i torna a compilar

Si veus… quan ja funciona

Si veus…Probablement…Prova…
Monitor sèrie buit (S3)Falta CDCOnBoot=cdc, o el cable és al port que no tocaRevisa la configuració de la placa de la M5·1. Prova l'altre port USB-C
Caràcters estranys ⸮⸮⸮El monitor i el programa van a velocitats diferentsTots dos a 115200
Es reinicia en bucle (S3), amb errors de PSRAMTipus de PSRAM mal triatPSRAM=opi a la configuració de la placa (M5·1)
Brownout detector was triggeredLi falta corrent (sobretot quan el WiFi transmet)Un altre cable, o un port USB o una font de 500 mA o més, sense hub. No alimentis motors des de la placa
Guru Meditation ErrorEl programa ha fet alguna cosa prohibida (memòria, divisió per zero…)Copia el missatge sencer i mira'l amb ajuda
L'escàner I2C no troba resCablejat, alimentació o pinsSDA i SCL no estan creuats? GND connectat? 3,3 V? Els pins del Wire.begin() són els bons? Les soldadures?
El sensor dona nan o valors absurdsLa lectura ha fallat, o el llegeixes massa sovintRevisa el cablejat i l'adreça. El DHT11 només admet 1 lectura per segon (el DHT22, 1 cada 2 s). Comprova sempre isnan()
L'OLED no mostra res, però l'escàner la troba (0x3C)Falta enviar el dibuix a la pantallaCrida display.display() després de dibuixar
Un if es compleix sempreHas escrit = (assignar) en lloc de == (comparar)if (estat == HIGH)
El polsador funciona al revésAmb INPUT_PULLUP, premut = LOWÉs normal: compara amb LOW (M2·1)
Una entrada canvia solaPin flotant (a l'aire)INPUT_PULLUP, o una resistència de pull-up o pull-down
analogRead() sempre 0 o 4095Pin equivocat o cable fluixÉs un pin de l'ADC1? Mesura la tensió amb el multímetre (M2·2)
analogRead() deixa de funcionar amb WiFiÉs un pin de l'ADC2Canvia'l a un de l'ADC1 (taula de pins)
El LED no s'encénAl revés, sense GND o pin equivocatPota llarga al pin. Comprova pinMode() i el número de pin (M1·1)
Un pin no fa res, o la placa no arrenca amb el muntatgePin reservat o d'arrencadaMira la taula de pins i canvia de pin
No connecta al WiFiXarxa de 5 GHz, contrasenya o distànciaXarxa de 2,4 GHz. Revisa secrets.h. Mira la força del senyal, l'RSSI (M6·1)
Camera init failed (WROVER)Hi ha alguna cosa connectada als pins de la càmera, o falta la PSRAMDesconnecta-ho tot de la placa i comprova que la PSRAM està activada (M6·4)
Es penja i no fa res mésUn while o un delay() espera per sempreBusca bucles sense límit de temps

Arbre de diagnosi

Quan un muntatge no funciona i la taula no ho resol, descarta per ordre, del més simple al més complicat. No passis al pas següent fins que l'anterior estigui comprovat.

  1. Alimentació. La placa té el LED encès? El mòdul rep 3,3 V? (multímetre)Si no: cable, port USB, pins 3V3 i GND.
  2. GND comú. Tots els GND estan units?Si no: uneix-los.
  3. Cablejat. Coincideix amb l'esquema, cable a cable? Prova la continuïtat amb el multímetre.Si no: refés el cable o la soldadura.
  4. El mòdul sol. Funciona amb un programa d'exemple mínim, sense res més connectat?Si no: mòdul espatllat, adreça o pin equivocats.
  5. El programa. Posa un Serial.println() a cada pas per veure on es para.

Eines: el multímetre (tensions i continuïtat), el monitor sèrie, un LED de prova i l'escàner I2C.

Pins del Freenove WROVER mòduls M0–M4 i la càmera (M6·4)

PinsPer què
⚡ Alimentació3V3 · 5V · GND3V3: per als sensors. 5V: els 5 V de l'USB, per a un servo o un mòdul de 5 V, però mai cap a un GPIO. GND: el comú de tot
✅ Segurs4, 13, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33Per a LEDs, polsadors i sensors. Amb la càmera posada (M6·4) només en queden lliures el 13, el 32 i el 33
🔵 Només d'entrada34, 35, 36, 39No poden encendre res i no tenen pull-up interna (cal una resistència externa)
📈 ADC132–39Per a sensors analògics, també amb WiFi
📉 ADC20, 2, 4, 12–15, 25–27No funcionen amb el WiFi encès
🟡 Amb compte0, 2, 5, 12, 14, 15Decideixen com arrenca la placa (pins d'arrencada). El 12 a 1 en arrencar impedeix l'arrencada. El 2 té el LED blau
⛔ No tocar6–11Són de la memòria flash
⛔ No tocar16, 17Al WROVER els fa servir la PSRAM
⛔ No tocar1, 3Són el cable USB (TX i RX del monitor sèrie)
📷 Càmera4, 5, 18, 19, 21, 22, 23, 25, 26, 27, 34, 35, 36, 39Només si fas servir la càmera (M6·4): llavors estan ocupats. Font: tutorial de Freenove, «Notes for GPIO»

Pins de l'ESP32-S3 DevKitC-1 N16R8 del M5 en endavant

PinsPer què
✅ Segurs1, 2, 4–18, 21, 39–42, 47Per a tot. 8 (SDA) i 9 (SCL) són els de l'I2C per defecte
📈 ADC11–10Per a sensors analògics, també amb WiFi
📉 ADC211–20Millor evitar-los per a lectures analògiques amb WiFi
👆 Tàctils1–14El valor puja quan toques
🌈 LED RGB de la placa48 (o 38)Depèn de la versió: comprova-ho amb un Blink abans de fer-lo servir
🟡 Amb compte0, 3, 45, 46Decideixen com arrenca la placa (pins d'arrencada). El 0 és el botó BOOT
⛔ No tocar19, 20Són l'USB natiu
⛔ No tocar43, 44Són el port USB-UART (monitor sèrie)
⛔ No tocar35, 36, 37Els fa servir la PSRAM octal (i del 26 al 32, la flash: no surten a la placa)

Del WROVER a l'S3

WROVER (ESP32 clàssic)ESP32-S3
Processador2 nuclis Xtensa LX6, 240 MHz2 nuclis Xtensa LX7 (més nous), 240 MHz
Memòria4 MB flash + 8 MB PSRAM16 MB flash + 8 MB PSRAM octal
USBUn port, amb xip CH340Dos ports: USB natiu + USB-UART
Monitor sèrieFunciona sense res especialCal CDCOnBoot=cdc amb el port natiu
I2C per defecteSDA 21, SCL 22SDA 8, SCL 9 (escriu-los sempre a Wire.begin())
Pins d'arrencada0, 2, 5, 12, 150, 3, 45, 46
Pins només d'entrada34–39Cap
ADC132–391–10
Sortida analògica real (DAC)Sí (25 i 26)No
Canals PWM168
TàctilEl valor baixa quan toquesEl valor puja quan toques
BluetoothClàssic + BLE 4.2Només BLE 5
LED de la placaBlau, GPIO 2RGB adreçable, GPIO 48 o 38

Si alguna dada no quadra amb el que veus a la teva placa, mana la placa. Apunta-ho i corregim la xuleta.