Comenzando con XIAO ESP32C3 de Seeed Studio

La XIAO ESP32C3 de Seeed Studio es una placa de desarrollo IoT miniatura basada en el chip dual WiFi/Bluetooth ESP32-C3 de Espressif. El ESP32-C3 es una CPU RISC-V de 32 bits, que incluye una FPU (Unidad de Punto Flotante) para aritmética de precisión simple de 32 bits con un gran poder de cómputo. Tiene un excelente rendimiento en radiofrecuencia, soportando los protocolos WiFi IEEE 802.11 b/g/n y Bluetooth 5 (BLE). Esta placa incluye una antena externa para aumentar la intensidad de la señal en tus aplicaciones inalámbricas. También tiene un formato pequeño y exquisito combinado con un diseño de montaje superficial de un solo lado. Está equipada con interfaces ricas y tiene 11 pines digitales I/O que pueden usarse como pines PWM y 3 pines analógicos I/O que pueden usarse como pines ADC. Soporta cuatro interfaces seriales como UART, I2C y SPI. Además, tiene un pequeño botón de reinicio y un botón de modo bootloader en la placa. La XIAO ESP32C3 es completamente compatible con el Grove Shield para Seeeduino XIAO y la placa de expansión Seeeduino XIAO, excepto que los contactos SWD en la placa de expansión Seeeduino XIAO no son compatibles.
Con respecto a las características mencionadas anteriormente, la XIAO ESP32C3 está posicionada como una placa de desarrollo IoT miniatura de alto rendimiento, bajo consumo y costo efectivo, adecuada para aplicaciones IoT de bajo consumo y aplicaciones inalámbricas portátiles.
¡Esta wiki te mostrará cómo puedes comenzar rápidamente con el XIAO ESP32C3!
Características
- CPU potente: ESP32-C3, procesador RISC-V de 32 bits de un solo núcleo que opera a hasta 160 MHz
- Subsistema completo de Wi-Fi: Cumple con el protocolo IEEE 802.11b/g/n y soporta modo Estación, modo SoftAP, modo SoftAP + Estación y modo promiscuo
- Subsistema Bluetooth LE: Soporta características de Bluetooth 5 y malla Bluetooth
- Ultra bajo consumo: El consumo de energía en modo de sueño profundo es de aproximadamente 43μA
- Mejor rendimiento en RF: Antena externa incluida
- Chip de carga de batería: Soporta gestión de carga y descarga de baterías de litio
- Ricos recursos integrados: 400KB de SRAM y 4MB de memoria flash integrada
- Tamaño ultra pequeño: Tan pequeño como un pulgar (21x17.8mm), diseño clásico de la serie XIAO para dispositivos portátiles y proyectos pequeños
- Funciones de seguridad confiables: Aceleradores de hardware criptográfico que soportan AES-128/256, Hash, RSA, HMAC, firma digital y arranque seguro
- Interfaces ricas: 1xI2C, 1xSPI, 2xUART, 11xGPIO (PWM), 4xADC, 1xinterfaz de almohadilla de unión JTAG
- Componentes de un solo lado: diseño de montaje superficial
Comparación de especificaciones
Elemento | Seeed Studio XIAO ESP32C3 | Seeeduino XIAO | Seeed XIAO RP2040 | Seeed XIAO nRF52840 | Seeed XIAO nRF52840 Sense |
---|---|---|---|---|---|
Procesador | ESP32-C3 RISC-V de 32 bits @160MHz | SAMD21 M0+@48MHz | RP2040 Dual-core M0+@133Mhz | nRF52840 M4F@64MHz | nRF52840 M4F@64MHz |
Conectividad Inalámbrica | WiFi y Bluetooth 5 (BLE) | N/A | N/A | Bluetooth 5.0/BLE/NFC | Bluetooth 5.0/BLE/NFC |
Memoria | 400KB SRAM, 4MB de Flash en placa | 32KB SRAM, 256KB FLASH | 264KB SRAM, 2MB de Flash en placa | 256KB RAM, 1MB Flash, 2MB de Flash en placa | 256KB RAM, 1MB Flash, 2MB de Flash en placa |
Sensores Integrados | N/A | N/A | N/A | N/A | IMU de 6 ejes (LSM6DS3TR-C), micrófono PDM |
Interfaces | I2C/UART/SPI | I2C/UART/SPI | I2C/UART/SPI | I2C/UART/SPI | I2C/UART/SPI |
Pines PWM/Análogos | 11/4 | 11/11 | 11/4 | 11/6 | 11/6 |
Botones en placa | Botón de Reset/ Boot | N/A | Botón de Reset/ Boot | Botón de Reset | Botón de Reset |
LEDs en placa | LED de carga | N/A | LED RGB completo/ LED 3-en-1 | LED 3-en-1/ LED de carga | LED 3-en-1/ LED de carga |
Chip de carga de batería | Integrado | N/A | N/A | BQ25101 | BQ25101 |
Lenguajes de Programación | Arduino/ MicroPython | Arduino/ CircuitPython | Arduino/ MicroPython/ CircuitPython |
Descripción del hardware
Diagrama de pines

*A3(GP105) - Usa ADC2, que puede volverse inoperativo debido a señales de muestreo erróneas. Para lecturas analógicas confiables, usa ADC1 (A0/A1/A2) en su lugar. Consulta la hoja de datos de ESP32-C3.
Descripción de los componentes


Pines de alimentación
- 5V - Este es el voltaje de 5V que proviene del puerto USB. También puedes usarlo como una entrada de voltaje, pero debes tener algún tipo de diodo (Schottky, señal, de potencia) entre tu fuente de alimentación externa y este pin, con el ánodo hacia la batería y el cátodo hacia el pin de 5V.
- 3V3 - Esta es la salida regulada del regulador a bordo. Puedes consumir hasta 700mA.
- GND - Tierra de alimentación/datos/señales.
Pines de arranque
Según el manual del chip ESP32-C3, GPIO2, GPIO8 y GPIO9 en el chip son Pines de Arranque (Strapping Pins). Las configuraciones de nivel alto y bajo de estos pines pueden permitir que el chip entre en diferentes modos de arranque. Presta atención a este detalle cuando uses estos pines, ya que, de lo contrario, podría evitar que tu XIAO cargue o ejecute el programa correctamente.

Comenzando
Primero, vamos a conectar la XIAO ESP32C3 a la computadora, conectar un LED a la placa y cargar un código simple desde Arduino IDE para verificar si la placa funciona correctamente al hacer parpadear el LED conectado.
Configuración del software
- Paso 1. Descarga e instala la versión más reciente de Arduino IDE según tu sistema operativo.
Paso 2. Abre la aplicación de Arduino
Paso 3. Añade el paquete de placas ESP32 a tu Arduino IDE
Navega a Archivo > Preferencias, y llena el campo "URLs adicionales para el gestor de placas" con la siguiente URL: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Navega a Herramientas > Placa > Gestor de placas..., escribe la palabra clave "esp32" en el cuadro de búsqueda, selecciona la última versión de esp32 e instálala.

- Paso 4. Selecciona tu placa y puerto
Placa
Navega a Herramientas > Placa > ESP32 Arduino y selecciona "XIAO_ESP32C3". La lista de placas es un poco larga, por lo que necesitarás desplazarte hasta el final para encontrarla.

Puerto
Navega a Herramientas > Puerto y selecciona el nombre del puerto serie del XIAO ESP32C3 conectado. Este probablemente será COM3 o superior (generalmente COM1 y COM2 están reservados para puertos seriales de hardware).
Configuración de hardware
Necesitarás preparar lo siguiente:
- 1 x XIAO ESP32C3 de Seeed Studio
- 1 x Computadora
- 1 x Cable USB Tipo-C
Algunos cables USB solo pueden suministrar energía y no transferir datos. Si no tienes un cable USB o no sabes si tu cable USB puede transmitir datos, puedes conseguir el Cable USB Tipo-C de Seeed, que soporta USB 3.1.
- Paso 1. Conecta el XIAO ESP32C3 a tu computadora mediante un cable USB Tipo-C.

- Paso 2. Conecta un LED al pin D10 de la siguiente manera:

Nota: Asegúrate de conectar una resistencia (alrededor de 150Ω) en serie para limitar la corriente a través del LED y evitar que el exceso de corriente queme el LED.
Hacer parpadear el LED
- Paso 1. Copia el siguiente código en Arduino IDE
Asegúrate de que tu D10
esté conectado a un LED como se muestra en el diagrama anterior.
const int led = D10; // No hay un LED integrado en la XIAO ESP32C3.
void setup() {
// Inicia un pin digital como output (sálida)
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH); // Prende el LED
delay(1000); // Espera un segundo
digitalWrite(led, LOW); // Apaga el LED
delay(1000); // Espera un segundo
}
- Paso 2. Haz clic en el botón Subir para cargar el código a la placa.

Una vez cargado, verás que el LED conectado parpadea con un retraso de 1 segundo entre cada parpadeo. Esto significa que la conexión ha sido exitosa y ahora puedes explorar más proyectos con la XIAO ESP32C3.
Uso de la Batería
La XIAO ESP32C3 es capaz de usar una batería de litio de 3.7V como fuente de alimentación. Puedes consultar el siguiente diagrama para el método de cableado.

Por favor, ten cuidado de no hacer un cortocircuito entre los terminales positivo y negativo, ya que podría quemar la batería y el equipo al soldar.
Instrucciones sobre el uso de baterías:
- Por favor, utiliza baterías calificadas que cumplan con las especificaciones.
- La XIAO puede conectarse a tu dispositivo mediante un cable de datos mientras usa la batería. No te preocupes, XIAO tiene un chip de protección incorporado, lo cual es seguro.
- La XIAO ESP32C3 no tendrá ningún LED encendido cuando esté alimentado por batería (a menos que hayas programado algo específico). No juzgues si el XIAO ESP32C3 está funcionando o no por el estado del LED, juzga razonablemente por tu programa.
- Lo sentimos, actualmente no podemos ayudarte a verificar el nivel de batería restante a través del software (porque no hay pines disponibles en el chip). Necesitarás cargar la batería regularmente o usar un multímetro para comprobar el nivel de la batería.
Verificar el voltaje de la batería
Debido a la limitación en el número de pines del ESP32C3, los ingenieros no tuvieron pines adicionales para asignar a la medición de voltaje de la batería con el fin de asegurar que la XIAO ESP32C3 tenga la misma cantidad de GPIOs que las otras versiones de la serie XIAO disponibles.
Sin embargo, si prefieres usar un pin separado para medir el voltaje de la batería, puedes referirte al genial trabajo de de msfujino. También nos gustaría dar un agradecimiento especial a msfujino por toda la experiencia y los esfuerzos compartidos para la XIAO ESP32C3.
La idea básica de la operación es: El voltaje de la batería se divide por 1/2 con una resistencia de 200k y se conecta al puerto A0 para que se pueda monitorear el voltaje..

La hoja de datos dice que la conversión AD tiene un valor nominal de 2500mV para el rango completo, pero hay una gran variación de chip a chip, en realidad ±10%. Mi chip tenía un valor de 2700mV para el rango completo.
Afortunadamente, el valor de corrección calibrado para cada chip está escrito en el área de fusibles, y al usar la función analogReadMilliVolts()
, puedo leer el valor de voltaje corregido sin necesidad de hacer nada especial.
El resultado de la conversión AD y el voltaje medido por el multímetro coinciden bien entre sí, con un error de alrededor de 5 mV, lo cual no es un problema en el uso práctico.
Además, durante la comunicación en particular, ocurrieron errores tipo picos, que tuvieron que promediarse 16 veces para eliminarlos.
El siguiente es el procedimiento para probar el voltaje de la batería.
void setup() {
Serial.begin(115200);
pinMode(A0, INPUT); // ADC
}
void loop() {
uint32_t Vbatt = 0;
for(int i = 0; i < 16; i++) {
Vbatt = Vbatt + analogReadMilliVolts(A0); // ADC con corrección
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // ratio de 1/2 de atenuación, mV --> V
Serial.println(Vbattf, 3);
delay(1000);
}
Lo anterior es del usuario msfujino en el foro de Seeed Studio, publicado originalmente en: https://forum.seeedstudio.com/t/battery-voltage-monitor-and-ad-conversion-for-xiao-esp32c/267535. Recomendamos que tengas buenas habilidades prácticas y mejor destreza en soldadura antes de intentar medir el voltaje de la batería basado en lo anterior, y ten cuidado con acciones peligrosas como cortocircuitar las baterías.
Modo de sueño profundo y despertador
La XIAO ESP32C3 está diseñada para soportar el modo de sueño profundo y las funciones de despertador. Para el uso de estas dos funciones, proporcionamos los siguientes ejemplos de uso.
#define BUTTON_PIN_BITMASK 0x200000000 // 2^33 in hex
RTC_DATA_ATTR int bootCount = 0;
/*
Método para imprimir la razón por la cual el ESP32 ha sido despertado del sueño
*/
void print_wakeup_reason(){
esp_sleep_wakeup_cause_t wakeup_reason;
wakeup_reason = esp_sleep_get_wakeup_cause();
switch(wakeup_reason)
{
case ESP_SLEEP_WAKEUP_EXT0 : Serial.println("Wakeup caused by external signal using RTC_IO"); break;
case ESP_SLEEP_WAKEUP_EXT1 : Serial.println("Wakeup caused by external signal using RTC_CNTL"); break;
case ESP_SLEEP_WAKEUP_TIMER : Serial.println("Wakeup caused by timer"); break;
case ESP_SLEEP_WAKEUP_TOUCHPAD : Serial.println("Wakeup caused by touchpad"); break;
case ESP_SLEEP_WAKEUP_ULP : Serial.println("Wakeup caused by ULP program"); break;
default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
}
}
void setup(){
Serial.begin(115200);
delay(1000); // Toma un segundo en abrir la terminal
// Incrementar el número de inicio e imprimirlo cada reinicio
++bootCount;
Serial.println("Boot number: " + String(bootCount));
// Imprima el motivo de activación del ESP32
print_wakeup_reason();
esp_deep_sleep_enable_gpio_wakeup(BIT(D1), ESP_GPIO_WAKEUP_GPIO_LOW);
// Vete a dormir ahora
Serial.println("Going to sleep now");
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop(){
// Esto no se va a llamar
}
Si eres lo suficientemente rápido para encender el monitor serie antes de que el XIAO entre en sueño profundo, entonces podrás ver el mensaje de salida como se muestra a continuación. Esto significa que el XIAO ahora está "dormido".

¡Después de entrar en el modo de sueño profundo, el puerto del XIAO desaparecerá y tendrás que despertarlo para ver su número de puerto nuevamente!
En el programa, estamos utilizando un nivel bajo en D1 para despertar. Esto significa que podemos conectar un botón al pin D1 y el XIAO se despertará cuando presionemos el botón.
"Actualmente, la XIAO ESP32C3 solo soporta el despertar mediante GPIO, y los únicos pines que soportan el despertar son D0 a D3. Este programa puede no funcionar en otros pines."
Preguntas y Respuestas
Aquí tienes la traducción:
P1: Mi IDE de Arduino está bloqueado al cargar el código en la placa
Puedes intentar primero reiniciar la placa presionando una vez el BOTÓN DE REINICIO mientras la placa está conectada a tu PC. Si eso no funciona, mantén presionado el BOTÓN DE BOOT, conecta la placa al PC mientras mantienes presionado el BOTÓN DE BOOT, y luego suéltalo para ingresar al modo bootloader.
P2: Mi placa no aparece como un dispositivo serial en el IDE de Arduino
Sigue la misma respuesta que para P1 arriba.
P3: Quiero reflashear el bootloader con el firmware de fábrica
Puedes simplemente conectar la placa a un PC mediante USB Tipo-C y reflashear el bootloader con el firmware de fábrica utilizando ESP RF Test Tool.
Paso 1. Mantén presionado el BOTÓN DE BOOT y conecta el XIAO ESP32C3 al PC para ingresar al modo bootloader
Paso 2. Después de que se haya conectado, suelta el BOTÓN DE BOOT
Paso 3. Visita esta página y descarga ESP RF Test Tool and Test Guide

- Paso 4. Extrae el .zip, navega a
ESP_RF_Test_EN\ESP_RF_Test_EN\EspRFTestTool_v2.8_Manual
y abre EspRFTestTool_v2.8_Manual.exe

- Paso 5. Selecciona ESP32C3 como el ChipType, tu puerto COM, 115200 como la tasa de baudios y haz clic en open.

Verás el siguiente mensaje

- Paso 6. Selecciona Flash y haz clic en Select Bin.

Paso 7. Descarga el firmware de fábrica de XIAO ESP32C3 y selecciona el archivo.
Paso 8. Finalmente, haz clic en Load Bin.

Verás la siguiente salida cuando el flasheo sea exitoso.

Repositorio de MicroPython en GitHub
Recursos
- 📄[PDF] ESP32C3 datasheet
- 📄 [PDF] Seeed Studio XIAO ESP32C3 Schematic
- 🗃️ [ZIP] Seeed Studio XIAO ESP32C3 KiCAD Libraries
- 🗃️ [ZIP] Seeed Studio XIAO ESP32C3 Eagle Libraries
- 🗃️ [ZIP] Seeed Studio XIAO ESP32C3 Factory firmware
- 🗃️ [ZIP] Seeed Studio XIAO ESP32C3 Certification files
- 📄 [DXF] Seeed Studio XIAO ESP32C3 Dimension in DXF
- 📄 [LBR] Seeed Studio XIAO ESP32C3 Eagle footprint
- 📄 [XLSX] Seeed Studio XIAO ESP32C3 pinout sheet
- 🔗 [STEP] Seeed Studio XIAO ESP32C3 3D Model
- 🔗 [GitHub] Seeed Studio XIAO ESP32C3 MicroPython Library
- 🔗 [Link] Platform IO for Seeed Studio XIAO ESP32
- 🔗 [WiKi] First Look at the Seeed Studio XIAO ESP32C3 A great intro to the XIAO ESP32C3, covering key features and basic usage.
- 📚 [Ebook] XIAO: Big Power, Small Board Mastering Arduino and TinyML Excellent guide for mastering Arduino and TinyML on XIAO boards.
- 🔗 [Kicad] Seeed Studio XIAO ESP32C3 FootPrint
Recursos del curso

Soporte técnico y discusión de productos
¡Gracias por elegir nuestros productos! Estamos aquí para ofrecerte diferentes tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.