"¿ESP32-S3 o ESP32-C3?" es de las primeras preguntas de cualquier proyecto con ESP32. La respuesta de las fichas técnicas (el S3 es más potente, el C3 más barato) no ayuda a decidir. Lo que ayuda es saber qué va a hacer cada placa.
En el proyecto de ejemplo de esta serie hay dos papeles: un hub que habla con la nube y varios nodos que mueven relés o leen sensores (parte 1). En esta parte vemos qué chip encaja en cada uno y qué detalles de estas placas hacen perder tiempo.

Arriba, un ESP32-S3; abajo, dos ESP32-C3. Por fuera casi no se distinguen: la diferencia está en el chip.
Las diferencias que importan
| ESP32-S3 | ESP32-C3 | |
|---|---|---|
| CPU | 2 núcleos Xtensa LX7, hasta 240 MHz | 1 núcleo RISC-V, hasta 160 MHz |
| SRAM interna | 512 KB | 400 KB |
| PSRAM | Opcional, según el módulo | No |
| Radio | Wi-Fi 4 (2,4 GHz) + Bluetooth LE 5 | Wi-Fi 4 (2,4 GHz) + Bluetooth LE 5 |
| ESP-NOW | Sí | Sí |
| USB | USB OTG + USB-Serial/JTAG | USB-Serial/JTAG |
| Precio | Más caro | Más barato |
Los dos hablan Wi-Fi y ESP-NOW, y el mismo código de Arduino compila para ambos casi sin cambios. La diferencia real está en cuánto trabajo aguantan a la vez.
Un hub hace muchas cosas a la vez
Un dispositivo que hace de puente con la nube suele, al mismo tiempo:
- mantener una conexión TLS con el broker, con su certificado X.509;
- hablar MQTT y procesar documentos JSON;
- enviar órdenes por ESP-NOW y esperar confirmaciones;
- levantar un portal web para configurarlo.
TLS es lo que más memoria consume: cada conexión segura reserva varias decenas de KB para sus buffers. Sumado al resto, un chip con más RAM y dos núcleos da margen para crecer sin pelear con la memoria.
Un nodo hace una sola cosa
Un nodo que recibe una orden corta por ESP-NOW, mueve un relé y vigila un interruptor apenas usa recursos. Ahí el C3 sobra, y como el nodo se repite en cada habitación, el precio por unidad importa.
Con esa división, la decisión es casi obvia: el trabajo pesado en el chip con más margen, el trabajo simple en el más barato.
¿Y un C3 como hub?
Funciona. Un ESP32-C3 puede conectarse a AWS IoT Core con TLS y MQTT sin problema. Lo que pasa es que queda con menos margen cuando le sumas más tareas. Dos ajustes habituales si lo intentas:
-
Ampliar el stack de la tarea
loopde Arduino si ves reinicios conStack canary watchpoint triggered:SET_LOOP_TASK_STACK_SIZE(16 * 1024); // fuera de cualquier función -
Vigilar la RAM libre después de conectar TLS y MQTT, con el sketch de la sección siguiente.
Si un error de conexión aparece solo en el C3, revisa primero los permisos y la configuración: es fácil culpar a la memoria cuando el problema está en otro lado. Los errores típicos de conexión con AWS están en la parte 3.
Mide tu placa antes de decidir
Este sketch te dice qué chip tienes, cuánta RAM libre le queda y su MAC, que es la que necesitarás para ESP-NOW. Compila igual para S3 y C3:
// Muestra qué chip tienes y cuánta memoria le queda libre.
// Compila igual para ESP32-S3 y ESP32-C3.
#include <WiFi.h>
void setup() {
Serial.begin(115200);
delay(2000); // da tiempo a abrir el Monitor Serie (USB nativo)
Serial.printf("Chip: %s (revisión %d)\n", ESP.getChipModel(), ESP.getChipRevision());
Serial.printf("Núcleos: %d a %lu MHz\n", ESP.getChipCores(), ESP.getCpuFreqMHz());
Serial.printf("Flash: %lu KB\n", ESP.getFlashChipSize() / 1024);
Serial.printf("RAM libre: %lu KB (bloque más grande: %lu KB)\n",
ESP.getFreeHeap() / 1024, ESP.getMaxAllocHeap() / 1024);
Serial.printf("PSRAM: %s\n", psramFound() ? "sí" : "no");
WiFi.mode(WIFI_STA); // la MAC de modo estación es la que usa ESP-NOW
Serial.printf("MAC: %s\n", WiFi.macAddress().c_str());
}
void loop() {
// Útil después de conectar Wi-Fi, TLS y MQTT: si este número baja
// sin parar, tienes una fuga de memoria.
Serial.printf("RAM libre: %lu KB\n", ESP.getFreeHeap() / 1024);
delay(10000);
}
El truco es copiar el printf del loop en tu firmware. Si después de conectar TLS y MQTT la RAM libre queda muy baja, o baja sin parar, esa placa se va a quedar corta.
Detalles de las placas Super Mini que hacen perder tiempo
Las versiones "Super Mini" de ambos chips son pequeñas, con USB-C y baratas. Estos detalles no vienen en ninguna ficha técnica:
El LED del ESP32-C3 Super Mini está en el GPIO 8 y funciona al revés. Se enciende con LOW y se apaga con HIGH. No es un LED RGB: la librería NeoPixel no hace nada con él.
#define STATUS_LED_PIN 8
// Activo en bajo: LOW enciende, HIGH apaga
void setStatusLed(bool on) {
digitalWrite(STATUS_LED_PIN, on ? LOW : HIGH);
}
El ESP32-S3 Super Mini trae un LED RGB direccionable en el GPIO 48. No se controla con digitalWrite: necesitas una librería como Adafruit NeoPixel. Es útil como indicador de estado, por ejemplo verde cuando está conectado a la nube.
Cuidado con los pines de arranque del C3. Los GPIO 2, 8 y 9 influyen en cómo arranca el chip. Para un botón o un interruptor, un pin libre como el GPIO 10 con INPUT_PULLUP y el otro cable a tierra funciona sin resistencia externa.

El ESP32-C3 Super Mini por detrás. El GPIO 10 está a la derecha; el 8 y el 9, justo encima, son pines de arranque.
El Monitor Serie puede quedarse en blanco. Estas placas usan el USB nativo del chip (USB-Serial/JTAG), no un conversor USB-serie aparte. En Arduino IDE activa Tools → USB CDC On Boot → Enabled, o no verás nada. Y al reiniciar el chip se reinicia también el USB, así que los primeros mensajes se pueden perder: por eso el delay(2000) del sketch.
La MAC la puedes leer al flashear. esptool la imprime al conectarse durante la carga. Viene grabada de fábrica y es la misma que usa ESP-NOW.
Cuándo elegir cada uno
Elige un ESP32-S3 si el dispositivo:
- mantiene una conexión TLS permanente (AWS IoT, HTTPS, MQTT seguro);
- hace varias cosas a la vez (red, servidor web, procesamiento de JSON);
- puede crecer: voz local, cámara, pantalla o aprendizaje automático.
Elige un ESP32-C3 si el dispositivo:
- hace una sola tarea simple (un relé, un sensor);
- se comunica por ESP-NOW o Bluetooth, sin TLS;
- se repite muchas veces en el proyecto y el precio por unidad importa.
Dónde comprarlas
Revisa en la ficha que diga Super Mini y el chip correcto, porque hay versiones muy parecidas.
ESP32-S3 Super Mini
Para el hub: dos núcleos, USB-C y LED RGB integrado.
Enlace de afiliado: si compras, el sitio recibe una comisión sin costo extra para ti.
ESP32-C3 Super Mini
Para cada nodo: pequeña, barata y con ESP-NOW.
Enlace de afiliado: si compras, el sitio recibe una comisión sin costo extra para ti.
Preguntas frecuentes
¿El mismo código funciona en los dos?
Casi siempre. Lo que cambia son los pines (LED, botones) y el margen de memoria.
¿El ESP32-C3 puede conectarse a AWS IoT Core?
Sí, con TLS y MQTT. Lo que no conviene es cargarlo con muchas tareas más si quieres margen para crecer.
¿Y el ESP32 clásico?
También sirve como hub: tiene dos núcleos y Wi-Fi. El S3 es más nuevo, y la versión Super Mini es muy compacta y trae USB nativo. Si ya tienes un ESP32 clásico, úsalo.
¿Cuántos nodos puede manejar un hub por ESP-NOW?
Hasta 20 peers registrados a la vez. Es un límite del SDK de Espressif, no de la RAM. En la parte 4 explico cómo funciona la comunicación entre placas.