Saltar al contenido
ENVÍO A TODO CHILE — GRATIS SOBRE $30.000 · SOPORTE POR WHATSAPP
PINOUT TIENDA MAKER · CHILE
Armado Principiante

Cómo programar un ESP32 por primera vez con Arduino IDE

De la placa recién sacada de la bolsa a tu primer programa corriendo, sin saltarse los dos pasos donde casi todos se caen: el cable y qué placa elegir en el menú.

Revisada el

Antes de que la placa entre en escena, esto es todo lo que necesitas: un cable que sí transmita datos y un rato frente al computador.
Antes de que la placa entre en escena, esto es todo lo que necesitas: un cable que sí transmita datos y un rato frente al computador.

Al terminar tienes la placa corriendo un programa tuyo: escribe «tic» y «tac» por el cable, uno cada medio segundo, y de paso hace parpadear el LED de la placa. No hay que soldar ni conectar nada aparte —la placa, un cable y el computador— y el recorrido es el mismo para la ESP32-C3 SuperMini y para la XIAO ESP32-C6.

Lo que toma tiempo no es ninguno de los seis pasos, es una descarga. El soporte de placas de Espressif termina ocupando unos 5,5 GB en el disco, y cuánto demore en bajar depende sólo de tu conexión. Por eso esta guía no declara una duración: los pasos son unos cuantos clicks y la descarga es lo que sea tu internet. Anda a buscar un café cuando llegues al paso 2.

Paso 1: Instala el Arduino IDE

Es el programa donde escribes el código, lo compilas y lo mandas a la placa. Es gratis, hay versión para Windows, macOS y Linux, y se baja de arduino.cc/en/software. Esta guía se escribió con la versión 2.3.10, que es la que sale en las capturas.

La primera vez que lo abres se queda un rato bajando su índice de paquetes y unas librerías. Déjalo terminar antes de seguir: el paso que viene necesita ese índice.

Paso 2: Agrega el soporte de placas de Espressif

El IDE recién instalado sólo conoce las placas de Arduino, y un ESP32 no es una de ellas. Hay que agregarle el paquete que trae su compilador, sus librerías y la lista de placas.

Abre el Gestor de placas —Tools > Board > Boards Manager…, o el segundo ícono de la columna de la izquierda— y escribe esp32 en el buscador.

Agrega el soporte de placas de Espressif

Casi todos los tutoriales —y la propia página de instalación de Espressif— parten diciendo que primero hay que pegar una URL en Preferencias, en «Additional Boards Manager URLs». Ya no hace falta: con el Arduino IDE 2.3.10 recién instalado y sin ninguna URL agregada, el paquete de Espressif aparece solo y en su última versión, la 3.3.11. Está comprobado sobre una instalación limpia, no supuesto.

Si a ti no te aparece, porque tienes un IDE más viejo, ésa es la URL que hay que agregar: https://espressif.github.io/arduino-esp32/package_esp32_index.json

Elige la 3.3.11 o la más nueva que te ofrezca y dale INSTALL. Ojo con el tamaño: acá el paquete terminó ocupando 5,5 GB en el disco, más 1,7 GB de un caché de descarga que después se puede borrar. No es un error ni te bajaste algo de más — es lo que pesa traer los compiladores de todos los chips de la familia.

Si la tuya es la XIAO ESP32-C6, la versión importa: el soporte del C6 llegó recién en la 3.0.0 del paquete. Cualquier 3.x te sirve, una 2.x no.

Cuando termina, la tarjeta de Espressif cambia el botón por «3.3.11 installed» y un REMOVE. Eso es todo lo que hay que ver para seguir.
Cuando termina, la tarjeta de Espressif cambia el botón por «3.3.11 installed» y un REMOVE. Eso es todo lo que hay que ver para seguir.

Paso 3: Elige tu placa, y no la que dice internet

Este paso parece de trámite y no lo es. La placa que elijas en el menú no cambia sólo un nombre: decide en qué pin cree el compilador que está el LED, y si el monitor serie va a mostrar algo por el cable USB. Elegir mal es la diferencia entre terminar con un LED parpadeando y terminar creyendo que la placa venía mala.

Abre el desplegable que dice «Select Board», arriba a la izquierda, y elige «Select other board and port…». Se abre una ventana con un buscador.

Elige tu placa, y no la que dice internet

Qué buscar y qué elegir:

• ESP32-C3 SuperMini — escribe «super mini» y elige «Nologo ESP32C3 Super Mini». La entrada «MakerGO ESP32 C3 SuperMini» sirve igual: en lo que le importa a esta guía las dos coinciden — ponen el LED en el GPIO 8 y traen el USB serie encendido.
• XIAO ESP32-C6 — escribe «xiao» y elige «XIAO_ESP32C6».

El lado de los puertos todavía está vacío de cosas útiles porque la placa no está conectada, y no importa: la propia ventana lo dice —con sólo la placa elegida puedes compilar, para subir hace falta el puerto—. De eso se encarga el paso 4.

Una salvedad honesta antes de seguir: la SuperMini es un diseño genérico, sin fabricante único ni esquemático oficial, y esas entradas las escribieron terceros para placas de la misma forma. Que dos definiciones independientes pongan el LED en el mismo GPIO 8 es un buen indicio, no una garantía. Por eso el programa del paso 5 no depende sólo del LED para decirte que funcionó.

Paso 4: Conecta la placa y elige el puerto

Hasta acá la placa no hacía falta. Ahora sí: compilar no la necesita, subir sí.

Antes de conectarla, abre una vez el desplegable de «Select Board» y mira qué puertos aparecen. Ese es el truco de este paso, y no cuesta nada: lo que esté ahí antes de enchufar no es tu placa.

Conecta la placa y elige el puerto

Ahora conéctala con el cable de datos, espera un par de segundos y abre el menú de nuevo. La entrada que apareció y antes no estaba es la tuya:

• En Windows sale como COM y un número —COM3, COM5—, y el nombre no te dice nada más. Por eso conviene haber mirado antes: si la lista estaba vacía, el que aparezca es el tuyo.
• En macOS empieza con /dev/cu. En la captura de arriba, tomada en un Mac sin nada enchufado, ya salían dos: /dev/cu.debug-console y /dev/cu.Bluetooth-Incoming-Port. Justamente por eso: ahí no había ninguna placa, así que ninguno de los dos lo es.
• En Linux, el USB nativo del C3 y del C6 sale como /dev/ttyACM y un número. Eso lo documenta Espressif.

Elígela y sigue. En la barra de abajo del IDE vas a ver el nombre de la placa mientras no haya un puerto elegido dice [not connected] al lado, como en la captura de la compilación más abajo.

Si al conectarla no aparece ninguna entrada nueva, no sigas probando cosas al azar: es el cable de la caja de arriba, o es un driver. Eso tiene su propia guía en este mismo sitio, «El ESP32 no sube el programa», que lo desarma síntoma por síntoma. La encuentras al final de esta página.

Paso 5: Pega el programa y súbelo

El IDE abre siempre un programa vacío, con un setup() y un loop() que no hacen nada. Selecciona todo lo que hay adentro —Ctrl+A, o Cmd+A en Mac— y pégale esto encima.

C++ (Arduino)
// Tu primer programa en el ESP32.
//
// Hace dos cosas a propósito: parpadea el LED de la placa y escribe
// por el monitor serie. Si el LED no parpadea pero el monitor sí
// escribe, tu programa está corriendo igual y lo único que no calza
// es en qué pin está ese LED.

void setup() {
  Serial.begin(115200)
  pinMode(LED_BUILTIN, OUTPUT)
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH)
  Serial.println("tic")
  delay(500)

  digitalWrite(LED_BUILTIN, LOW)
  Serial.println("tac")
  delay(500)
}

Por qué no el Blink de los ejemplos, que es lo que se usa siempre: el Blink sólo parpadea. Éste además escribe por el monitor serie, y esa segunda señal es la que te salva si el LED de tu placa no está donde la definición cree que está. Si el monitor escribe, tu programa está corriendo, y eso es exactamente lo que viniste a comprobar.

Primero aprieta el visto bueno de arriba a la izquierda —Sketch > Verify/Compile—, que compila sin tocar la placa. Sirve para separar dos problemas que se confunden todo el tiempo: si compila, tu código está bien y lo que quede por resolver es de la conexión.

El programa pegado sobre el sketch vacío, con la placa ya elegida en el desplegable de arriba.
El programa pegado sobre el sketch vacío, con la placa ya elegida en el desplegable de arriba.
Una compilación que salió bien: dice cuánto ocupa el programa y nada más. Fíjate en la barra de abajo — dice [not connected], porque compilar no necesita la placa.
Una compilación que salió bien: dice cuánto ocupa el programa y nada más. Fíjate en la barra de abajo — dice [not connected], porque compilar no necesita la placa.

En el computador donde se escribió esta guía la compilación tomó unos 35 segundos, y no baja mucho al repetirla. Si el tuyo se demora más, no está pasando nada raro. Cuando compile, aprieta la flecha de al lado —Sketch > Upload—, que compila de nuevo y esta vez manda el programa por el puerto.

Paso 6: Comprueba que está corriendo

Abre Tools > Serial Monitor. Si todavía no elegiste puerto te va a decir «Not connected. Select a board and a port to connect automatically.» con el puerto elegido se conecta solo.

Ahí pon la velocidad en 115200. Ese número no es decorativo: es el mismo que va en el Serial.begin() del programa, y si no coinciden el monitor lee los bits a destiempo y muestra basura.

Deberías ver «tic» y «tac» apareciendo, uno cada medio segundo. Eso es tu programa corriendo dentro de la placa: ya está.

Y el LED:

• En la XIAO ESP32-C6 el LED de usuario va en el GPIO 15, y viene cableado al positivo: se enciende cuando el programa pone LOW. O sea que parpadea al revés de lo que imprime el monitor —está apagado en el «tic» y encendido en el «tac»—, y eso es lo correcto, no una falla. Lo documenta el esquemático de Seeed, que es quien la fabrica, y el GPIO lo repite la definición XIAO_ESP32C6 del paquete.
• En la SuperMini debería parpadear el LED chico de la placa. No tenemos su esquemático, así que no podemos decirte en qué sentido: si lo hace al revés de lo que dice el código, es lo mismo que en la XIAO y parpadea igual de bien.
• Si el monitor escribe pero el LED no parpadea, tu programa está corriendo y lo único que no calza es el pin. Cambia LED_BUILTIN por el número de GPIO que documente quien te vendió la placa, y vuelve a subir.

Si el monitor se queda en blanco, revisa dos cosas: que la velocidad sea 115200, y que en Tools el «USB CDC On Boot» esté en Enabled. Si lo que no aparece es el puerto, eso ya es la otra guía.

¿Te quedaste en algún paso? Escríbenos por WhatsApp con dos cosas: en qué paso vas, y el texto completo de lo que dice la consola del IDE, copiado y pegado tal cual. Con eso casi siempre se ve al tiro.

// Sigue con