ESP32 DevKit V1 pinout: every pin, and which ones to avoid
Principiante
- 503componentes en el banco de trabajo
- 44placas funcionando ahora
- 1.00xtiempo real, en todas las placas
Este es el pinout del ESP32 DevKit V1 de 30 pines, la placa DOIT con un módulo ESP32-WROOM-32 que traen la mayoría de los kits. Cada orificio de sus dos headers está en la tabla de abajo con su número GPIO, lo que puede hacer y a qué debes prestar atención. Después de la tabla vienen los pines de alimentación, los pines de arranque que deciden si la placa arranca, los pines solo de entrada, los pines que toman el USB y la flash, y una lista de qué pin usar para qué.
El circuito de arriba es esa placa funcionando en Mokxi: un potenciómetro en D32, que es el canal 4 del ADC1, atenúa un LED en D4 e imprime la lectura cruda. Mokxi modela la placa de 30 pines, no la DevKitC de 38, y los números de esta página se leen del mismo modelo que ejecuta el simulador. Donde el simulador hace menos que el chip, la página lo dice en la fila.
Cada pin del header
La serigrafía llama "Dn" al GPIO n, así que D23 es el GPIO 23 y digitalWrite(23, HIGH) lo maneja. Algunos orificios se nombran por su función: VP y VN son los GPIO 36 y 39, TX0 y RX0 son los GPIO 1 y 3, y TX2 y RX2 son los GPIO 17 y 16. La tabla baja por el header izquierdo de EN a VIN, y luego por el derecho de D23 a 3V3, con el conector USB abajo.
El orden de los orificios es la lectura de Mokxi de la placa DOIT, y los clones difieren en los últimos. Muchas placas de 30 pines no tienen orificio D0 y ponen un segundo GND a la derecha, y en muchas el header izquierdo termina en D12, D13, GND, VIN. Guíate por las letras impresas en tu placa. Los números GPIO, que son los que usa tu código, no cambian.
El táctil, el DAC y el ADC2 están en la tabla porque el chip los tiene y los tutoriales los usan. Mokxi no modela ninguno de los tres, y cada fila lo dice.
| Pin | GPIO | Qué puede hacer | Ten cuidado con |
|---|---|---|---|
| EN | - | Habilitación del chip, que es el reinicio. En bajo mantiene el chip en reinicio; el botón EN hace eso. | Not a GPIO. |
| VP | 36 | ADC1_CH0. Solo entrada. | Sin driver de salida ni pull-up o pull-down interno. |
| VN | 39 | ADC1_CH3. Solo entrada. | Sin driver de salida ni pull-up o pull-down interno. |
| D34 | 34 | ADC1_CH6. Solo entrada. | Sin driver de salida ni pull-up o pull-down interno. |
| D35 | 35 | ADC1_CH7. Solo entrada. | Sin driver de salida ni pull-up o pull-down interno. |
| D32 | 32 | ADC1_CH4. PWM. Táctil T9 (no modelado). | Un pin seguro para todo. |
| D33 | 33 | ADC1_CH5. PWM. Táctil T8 (no modelado). | Un pin seguro para todo. |
| D25 | 25 | PWM. DAC1 y ADC2_CH8 en el chip (no modelado). | El ADC2 deja de funcionar mientras el WiFi está encendido. |
| D26 | 26 | PWM. DAC2 y ADC2_CH9 en el chip (no modelado). | El ADC2 deja de funcionar mientras el WiFi está encendido. |
| D27 | 27 | PWM. ADC2_CH7 y táctil T7 en el chip (no modelado). | El ADC2 deja de funcionar mientras el WiFi está encendido. |
| D14 | 14 | PWM. ADC2_CH6 y táctil T6 en el chip (no modelado). | El ADC2 deja de funcionar mientras el WiFi está encendido. |
| D12 | 12 | PWM. ADC2_CH5 y táctil T5 en el chip (no modelado). | Pin de arranque: en alto al reiniciar y la placa no arranca. |
| GND | - | Ground. | - |
| D13 | 13 | PWM. ADC2_CH4 y táctil T4 en el chip (no modelado). | El ADC2 deja de funcionar mientras el WiFi está encendido. |
| VIN | - | El riel de 5 V del USB. Pon 5 V aquí para alimentar la placa sin cable. | Not a GPIO. |
| D23 | 23 | PWM. SPI MOSI (por defecto). | - |
| D22 | 22 | PWM. I2C SCL (por defecto). | - |
| TX0 | 1 | TX de UART0: Serial, y el chip USB a serie. | Déjalo libre, o la carga y el monitor serie fallan. |
| RX0 | 3 | RX de UART0: Serial, y el chip USB a serie. | Déjalo libre, o la carga y el monitor serie fallan. |
| D21 | 21 | PWM. I2C SDA (por defecto). | - |
| D19 | 19 | PWM. SPI MISO (por defecto). | - |
| D18 | 18 | PWM. SPI SCK (por defecto). | - |
| D5 | 5 | PWM. SPI SS (por defecto). | Pin de arranque: déjalo sin carga al encender. |
| TX2 | 17 | PWM. TX de UART2 en los tutoriales del núcleo 2.x: Serial2.begin(9600, SERIAL_8N1, 16, 17). | El núcleo 3.x pone Serial2 en 4 y 25 si no se indican los pines. |
| RX2 | 16 | PWM. RX de UART2 en los tutoriales del núcleo 2.x: Serial2.begin(9600, SERIAL_8N1, 16, 17). | El núcleo 3.x pone Serial2 en 4 y 25 si no se indican los pines. |
| D4 | 4 | PWM. ADC2_CH0 y táctil T0 en el chip (no modelado). | Una salida segura; los ejemplos ponen un LED aquí. |
| D0 | 0 | PWM. ADC2_CH1 y táctil T1 en el chip (no modelado). El botón BOOT. | Pin de arranque: en bajo al reiniciar espera una carga. |
| D2 | 2 | PWM. ADC2_CH2 y táctil T2 en el chip (no modelado). El LED azul, encendido con HIGH. | Pin de arranque: debe estar en bajo o flotante para cargar. |
| D15 | 15 | PWM. ADC2_CH3 y táctil T3 en el chip (no modelado). | Pin de arranque: en bajo al reiniciar silencia los mensajes de arranque. |
| 3V3 | - | La salida de 3.3 V del regulador. | Not a GPIO. |
Pines de alimentación y sus límites
VIN es el riel de 5 V del conector USB. Sin cable puedes alimentar la placa poniendo 5 V en VIN, y el regulador genera 3.3 V a partir de ahí. 3V3 es la salida de ese regulador: alimenta al ESP32 y lo que le conectes, así que un sensor está bien y un servo o un motor no. GND es tierra.
Todos los GPIO son de 3.3 V y ninguno tolera 5 V. La salida de un sensor de 5 V necesita un divisor o un convertidor de nivel antes de llegar a un pin. La hoja de datos de Espressif da a un pin unos 40 mA cuando entrega corriente con la configuración de manejo más fuerte. Tómalo como un techo, no como una meta, y limita un LED a 10 a 20 mA con su resistencia.
Pines de arranque: los que impiden que una placa arranque
El chip lee cinco pines en el instante en que sale del reinicio, y lo que leen decide cómo arranca: GPIO 0, 2, 5, 12 y 15. Una vez que tu sketch corre son pines normales, así que el problema solo aparece cuando algo conectado a uno lo mantiene en el estado equivocado al encender.
El GPIO 0 es el botón BOOT. En bajo al reiniciar, el chip espera un programa nuevo en lugar de ejecutar el tuyo, así que un botón o módulo que baje D0 parece una placa que nunca arranca. El GPIO 2 debe estar en bajo o flotante para cargar. El GPIO 12 es el que más muerde: en alto al reiniciar le dice al chip que su flash funciona a 1.8 V, la flash de un WROOM-32 necesita 3.3 V, y la placa no arrancará hasta que lo que mantiene el 12 en alto lo suelte. El GPIO 15 en bajo al reiniciar silencia los mensajes de arranque en el puerto serie, lo cual es inofensivo pero confuso.
Mokxi no modela el arranque. La placa simulada inicia lo que haya en esos pines, así que un circuito que corre aquí aún puede negarse a arrancar en un escritorio si sube D12 o baja D0. Mejor conecta a un pin seguro cualquier cosa que tenga su propio pull-up o pull-down.
Pines solo de entrada: GPIO 34, 35, 36 y 39
Los GPIO 34 a 39 tienen un búfer de entrada y nada más: sin driver de salida ni pull-up o pull-down interno. Cuatro están en este header: D34, D35, VP y VN. Sirven como buenas entradas analógicas, todas en el ADC1, y no pueden ser salidas. pinMode(34, OUTPUT) no hace nada en el chip, y INPUT_PULLUP tampoco, así que un botón en uno de ellos necesita una resistencia propia de 10 k.
Mokxi rechaza una salida en estos pines como lo hace el chip, cuenta cada intento y pone una pequeña marca ámbar en la placa, para que un sketch no crea que está manejando uno.
El LED integrado y los botones BOOT y EN
El LED azul está en el GPIO 2 y se enciende cuando el pin está en HIGH. LED_BUILTIN es 2. Como el GPIO 2 es un pin de arranque, que el LED brille mientras la placa arranca varía de una placa a otra; se estabiliza en cuanto corre pinMode. El otro LED en la mayoría de las placas es la luz de encendido y no está en ningún pin.
BOOT baja el GPIO 0 mientras lo mantienes presionado, por eso D0 lee LOW al presionarlo. EN es el botón de reinicio. En Mokxi puedes hacer clic en cualquiera de los dos sobre la placa.
Pines que usan el USB y la flash
TX0 y RX0 son la UART0, conectada al chip USB a serie de la placa, y llevan cada Serial.print y cada carga. Si conectas algo a ellos, las cargas fallan o el monitor serie se llena de basura, así que déjalos libres. En Mokxi, Serial llega directo al monitor serie, así que el simulador no mostrará ese conflicto; un escritorio sí.
Los GPIO 6 a 11 son la flash SPI de la que corre el programa, y no están en este header, lo cual es bueno. La DevKitC de 38 pines los saca, como D0 a D3, CMD y CLK, y son los pines que nunca debes usar. TX2 y RX2 son donde va UART2 en la mayoría de los tutoriales. Arduino-esp32 3.x movió los pines por defecto de Serial2 a 4 y 25, así que nómbralos: Serial2.begin(9600, SERIAL_8N1, 16, 17);. Mokxi modela UART1 y UART2 bit a bit en los pines que les da begin(), así que un GPS o una segunda placa en 16 y 17 los escucha, aquí como en el escritorio.
Analógico, PWM, I2C y SPI
Solo el ADC1 es seguro en un proyecto con WiFi: en un ESP32 real la radio usa el ADC2, y analogRead en un pin del ADC2 falla mientras el WiFi está encendido. El ADC1 está en seis orificios aquí: VP, VN, D32, D33, D34 y D35. Mokxi modela solo el ADC1, de doce bits, con la curva de una pieza real a los 11 dB por defecto: un potenciómetro conectado a 3.3 V llega a 4095 a unos 3.1 V, un poco antes del final de su recorrido, y lee unos 1890 a la mitad.
El PWM es LEDC, y cualquier pin con driver de salida puede tenerlo: analogWrite asocia un canal la primera vez que se llama. Mokxi modela los ocho canales de alta velocidad, ocho bits a 1 kHz por defecto; el chip tiene dieciséis en total. Wire.begin() usa D21 para SDA y D22 para SCL, y el SPI usa D18, D19, D23 y D5 para SCK, MISO, MOSI y SS. En Mokxi ambos buses corren por software en esos pines, porque los controladores I2C y SPI del chip no están modelados.
Preguntas
¿Qué pin del ESP32 debo usar para un botón?
D4, D13, D14, D18, D19, D21 a D23, D25 a D27, D32 o D33, con `INPUT_PULLUP` y el botón a tierra. D34, D35, VP y VN funcionan solo con un pull-up de 10 k propio, y D0, D2, D12 y D15 son pines de arranque.
¿Qué pin del ESP32 debo usar para un sensor analógico?
Un pin del ADC1: D32, D33, D34, D35, VP o VN. Siguen funcionando con el WiFi encendido. Mantén la señal por debajo de 3.3 V; la escala completa nominal de 3.9 V del atenuador es un rango de medición, no una entrada segura.
¿Cuáles pines son I2C en un ESP32 DevKit V1?
SDA es D21 y SCL es D22, los pines que usa `Wire.begin()`. `Wire.begin(sda, scl)` mueve el bus a otros dos pines de salida cualesquiera.
¿Qué pines nunca debo usar en un ESP32?
Los GPIO 6 a 11, la flash, que esta placa no saca. TX0 y RX0 si quieres que funcionen las cargas y el monitor serie. Y D12 para cualquier cosa que esté en alto al encender.
¿Es el pinout de 30 pines o el de 38?
La DOIT DevKit V1 de 30 pines. La DevKitC de Espressif de 38 pines es el mismo chip con los mismos números GPIO en otros lugares, una pulgada completa entre sus filas y los seis pines de flash sacados. Tiene su propia placa en Mokxi.
¿El ESP32 DevKit V1 tiene DAC y pines táctiles?
El chip tiene dos DAC de 8 bits, en D25 y D26, y diez entradas táctiles. Mokxi no modela ninguno, así que `dacWrite` y `touchRead` no harán nada útil aquí.
Sigue así
De dónde vienen los datos de esta página
Ármalo en la vida real
Abre el editor, cambia un valor y mira cómo el número cambia con él. Nada que instalar y sin necesidad de cuenta.