Primeros pasos con Seeed Studio XIAO ESP32C3

Introducción
Seeed Studio XIAO ESP32C3 es una placa de desarrollo mini para IoT basada en el chip de doble modo WiFi/Bluetooth ESP32-C3 de Espressif, que incorpora una CPU RISC-V de 32 bits que ofrece un potente rendimiento de cómputo gracias a su arquitectura eficiente. Tiene un excelente rendimiento de radiofrecuencia, compatible con los protocolos IEEE 802.11 b/g/n WiFi 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 cuenta con un factor de forma pequeño y exquisito combinado con un diseño de montaje en superficie de un solo lado. Está equipada con interfaces ricas y dispone de 11 E/S digitales que pueden utilizarse como pines PWM y 4 E/S analógicas que pueden utilizarse como pines ADC. Es compatible con cuatro interfaces serie como UART, I2C y SPI. También hay un pequeño botón de reinicio y un botón de modo bootloader en la placa. XIAO ESP32C3 es totalmente compatible con la Grove Shield for Seeeduino XIAO y la Seeeduino XIAO Expansion board excepto por la Seeeduino XIAO Expansion board, cuyos contactos de resorte SWD en la placa no serán compatibles.
Con respecto a las características destacadas anteriormente, XIAO ESP32C3 se posiciona como una placa de desarrollo mini para IoT de alto rendimiento, bajo consumo y rentable, adecuada para aplicaciones IoT de bajo consumo y aplicaciones portátiles inalámbricas.
Este wiki te mostrará cómo puedes empezar rápidamente con XIAO ESP32C3.
Especificaciones
| Parámetro | Descripción |
|---|---|
| Procesador | ESP32-C3 SoC Procesador de chip de un solo núcleo RISC-V de 32 bits con una canalización de cuatro etapas que funciona hasta 160 MHz |
| Inalámbrico | Subsistema Wi-Fi completo de 2.4GHz Bluetooth Low Energy 5.0/ Bluetooth Mesh |
| Memoria en chip | 400KB SRAM & 4MB Flash |
| Interfaz | 1x UART 1x IIC 1x SPI 11x GPIO(PWM) 4x ADC 1x Botón de reinicio 1x Botón de arranque |
| Dimensiones | 21 x 17.8mm |
| Potencia (típ.) | Corriente máxima de salida 3.3V: 500mA Condición de prueba: Entrada del pin BAT @ 3.8V Capacidad de fuente: 3A Corriente de carga: 380mA (rápida) / 40mA (trickle) Voltaje de entrada (VIN): 5V Voltaje de entrada (BAT): 3.7V |
| Consumo de energía en Deep Sleep | Modo Deep Sleep: 44 μA |
| Consumo de energía con Wi-Fi habilitado | Modo activo: 75 mA Modo Modem-sleep: 25 mA Modo Light-sleep: 4 mA |
| Consumo de energía con BLE habilitado | Modo Modem-sleep: 27 mA Modo Light-sleep: 10 mA |
| Temperatura de trabajo | -40°C ~ 85°C |
Características
- CPU potente: ESP32-C3, procesador RISC-V de 32 bits de un solo núcleo que funciona hasta 160 MHz
- Subsistema WiFi completo: Cumple con el protocolo IEEE 802.11b/g/n y admite los modos Station, SoftAP, SoftAP + Station y modo promiscuo
- Subsistema Bluetooth LE: Admite funciones de Bluetooth 5 y Bluetooth mesh
- Ultrabajo consumo de energía: El consumo de energía en deep sleep es de aproximadamente 43μA
- Mejor rendimiento RF: Incluye antena RF externa
- Chip de carga de batería: Admite la gestión de carga y descarga de baterías de litio
- Recursos ricos en chip: 400KB de SRAM y 4MB de memoria flash integrada
- Tamaño ultrapequeño: Tan pequeño como un pulgar (21x17.8mm), factor de forma clásico de la serie XIAO para dispositivos portátiles y proyectos pequeños
- Funciones de seguridad fiables: Aceleradores de hardware criptográfico que admiten AES-128/256, Hash, RSA, HMAC, firma digital y arranque seguro
- Interfaces ricas: 1xI2C, 1xSPI, 2xUART, 11xGPIO(PWM), 4xADC, 1x interfaz de almohadilla de conexión JTAG
- Componentes en un solo lado, diseño de montaje en superficie
Descripción general del hardware
*A3(GP105) - Usa ADC2, que puede quedar inoperativo debido a señales de muestreo falsas. Para lecturas analógicas fiables, utiliza ADC1(A0/A1/A2) en su lugar. Consulta la hoja de datos del ESP32-C3.
| Diagrama de indicación frontal de XIAO ESP32C3 |
|---|
![]() |
| Diagrama de indicación trasera de XIAO ESP32C3 |
![]() |
| Lista de pines de XIAO ESP32C3 |
![]() |
Mapa de pines
| Pin XIAO | Función | Pin del chip | Funciones alternativas | Descripción |
|---|---|---|---|---|
| 5V | VBUS | Entrada/Salida de alimentación | ||
| GND | ||||
| 3V3 | 3V3_OUT | Salida de alimentación | ||
| D0 | Analógico | GPIO2 | ADC1_CH2, | GPIO, ADC |
| D1 | Analógico | GPIO3 | ADC1_CH3 | GPIO, ADC |
| D2 | Analógico | GPIO4 | ADC1_CH4, FSPIHD, MTMS | GPIO, ADC |
| D3 | Analógico | GPIO5 | ADC2_CH0, FSPIWP, MTDI | GPIO, ADC |
| D4 | SDA | GPIO6 | FSPICLK, MTCK | GPIO, Datos I2C |
| D5 | SCL | GPIO7 | FSPID, MTDO | GPIO, Reloj I2C |
| D6 | TX | GPIO21 | U0TXD | GPIO, Transmisión UART |
| D7 | RX | GPIO20 | U0RXD | GPIO, Recepción UART |
| D8 | SCK | GPIO8 | GPIO, Reloj SPI | |
| D9 | MISO | GPIO9 | GPIO, Datos SPI | |
| D10 | MOSI | GPIO10 | FSPICS0 | GPIO, Datos SPI |
| MTDO | GPIO7 | JTAG | ||
| MTDI | GPIO5 | JTAG, ADC | ||
| MTCK | GPIO6 | JTAG, ADC | ||
| MTMS | GPIO4 | JTAG, ADC | ||
| Reset | CHIP_EN | EN | ||
| Boot | GPIO9 | Entrar en modo Boot | ||
| U.FL-R-SMT1 | LNA_IN | Antena UFL | ||
| Light | VCC_3V3 | CHG-LED |
Pines de alimentación
- 5V - Esta es la salida de 5V desde el puerto USB. También puedes usarla como entrada de voltaje, pero debes tener algún tipo de diodo (schottky, de señal, de potencia) entre tu fuente de alimentación externa y este pin, con el ánodo a la batería y el cátodo al pin de 5V.
- 3V3 - Esta es la salida regulada del regulador integrado. Puedes extraer 700mA
- GND - Tierra de alimentación/datos/señal
Pines de configuración (Strapping Pins)
Según el manual del chip del ESP32C3, GPIO2, GPIO8 y GPIO9 en el chip son Strapping Pins; las configuraciones de nivel alto y bajo de estos pines pueden permitir que el chip entre en diferentes modos de arranque (Boot). Por favor, presta atención a este punto cuando uses estos pines, de lo contrario puede impedir que tu XIAO cargue o ejecute el programa todo el tiempo.

Primeros pasos
Primero, vamos a conectar XIAO ESP32C3 al ordenador, conectar un LED a la placa y subir un código sencillo desde Arduino IDE para comprobar si la placa funciona correctamente haciendo parpadear el LED conectado.
Preparación de hardware
Necesitas preparar lo siguiente:
- 1 x Seeed Studio XIAO ESP32C3
- 1 x Ordenador
- 1 x Cable USB Type-C
Algunos cables USB solo pueden suministrar energía y no pueden transferir datos. Si no tienes un cable USB o no sabes si tu cable USB puede transmitir datos, puedes consultar Seeed USB Type-C support USB 3.1.
- Paso 1. Conecta XIAO ESP32C3 a tu ordenador mediante un cable USB Type-C.

- Paso 2. Conecta un LED al pin D10 como se indica a continuación

Nota: Asegúrate de conectar una resistencia (alrededor de 150Ω) en serie para limitar la corriente a través del LED y evitar un exceso de corriente que pueda quemar el LED.
Preparación de software
- Paso 1. Descarga e instala la última versión de Arduino IDE de acuerdo con tu sistema operativo
-
Paso 2. Inicia la aplicación Arduino
-
Paso 3. Añade el paquete de placas ESP32 a tu Arduino IDE
Ve a File > Preferences, y rellena "Additional Boards Manager URLs" con la siguiente URL: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

Ve a Tools > Board > Boards Manager..., 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
Ve a Tools > Board > ESP32 Arduino y selecciona "XIAO_ESP32C3". La lista de placas es un poco larga y necesitas desplazarte hasta el final para encontrarla.

Puerto
Ve a Tools > Port y selecciona el nombre del puerto serie del XIAO ESP32C3 conectado. Probablemente será COM3 o superior (COM1 y COM2 suelen estar reservados para puertos serie de hardware).
Ejecuta tu primer programa Blink
- 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.
// define led according to pin diagram in article
const int led = D10; // there is no LED_BUILTIN available for the XIAO ESP32C3.
void setup() {
// initialize digital pin led as an output
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH); // turn the LED on
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off
delay(1000); // wait for a second
}
- Paso 2. Haz clic en el botón Upload para subir el código a la placa

Una vez subido, verás el LED conectado parpadear con un retardo de 1 segundo entre cada parpadeo. Esto significa que la conexión es correcta y ahora puedes explorar más proyectos con XIAO ESP32C3.
Uso de la batería
El XIAO ESP32C3 es capaz de usar una batería de litio de 3,7V como entrada de alimentación. Puedes consultar el siguiente diagrama para el método de cableado.

Por favor, ten cuidado de no cortocircuitar los terminales positivo y negativo y quemar la batería y el equipo al soldar.
Instrucciones sobre el uso de baterías:
- Utiliza baterías calificadas que cumplan con las especificaciones.
- XIAO se puede conectar a tu dispositivo informático mediante un cable de datos mientras usas la batería; ten la seguridad de que XIAO tiene un chip de protección de circuito integrado, lo cual es seguro.
- El XIAO ESP32C3 no tendrá ningún LED encendido cuando funcione con batería (a menos que hayas escrito un programa específico), por favor no juzgues si el XIAO ESP32C3 está funcionando o no por el estado del LED, júzgalo razonablemente según tu programa.
- Lo sentimos, actualmente no tenemos forma de ayudarte a comprobar el nivel restante de la batería mediante software (porque no hay más pines de chip disponibles), necesitas cargar la batería regularmente o usar un multímetro para comprobar el nivel de la batería.
Comprobar el voltaje de la batería
Debido a la limitación del número de pines en el ESP32C3, los ingenieros no tenían pines adicionales para asignar a la batería para la medición de voltaje, con el fin de garantizar que el XIAO ESP32C3 tenga el mismo número de GPIO que los otros XIAO Serie disponibles.
Pero si prefieres usar un pin separado para la medición del voltaje de la batería, puedes consultar la ingeniosa operación de msfujino. También nos gustaría dar un agradecimiento especial a msfujino por toda la experiencia y esfuerzos compartidos para el XIAO ESP32C3.
La idea básica de funcionamiento es: El voltaje de la batería se dividió por 1/2 con 200k y se conectó al puerto A0 para que se pudiera monitorizar el voltaje.

La hoja de datos indica nominalmente 2500mV de conversión AD a escala completa, pero hay una gran variación de un chip a otro, en realidad ±10%. Mi chip tenía 2700mV a escala completa.
Afortunadamente, el valor de corrección calibrado para cada chip está escrito en el área de fusibles, y usando la función analogReadMilliVolts(), puedo leer el valor de voltaje corregido sin hacer nada especial.
El resultado de la conversión AD y el voltaje medido por el multímetro concuerdan bien entre sí con un error de unos 5 mV, lo cual no es un problema en el uso práctico.
Además, especialmente durante la comunicación, se produjeron errores en forma de 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 with correction
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // attenuation ratio 1/2, mV --> V
Serial.println(Vbattf, 3);
delay(1000);
}
Lo anterior proviene del usuario del foro de Seeed Studio msfujino, 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 mejores habilidades de soldadura antes de intentar medir el voltaje de la batería basándote en lo anterior, y que seas cauteloso con acciones peligrosas como cortocircuitar baterías.
Modo de sueño profundo y activación
El XIAO ESP32C3 está diseñado para soportar el modo de sueño profundo y las funciones de activación. 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;
/*
Method to print the reason by which ESP32
has been awaken from sleep
*/
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); //Take some time to open up the Serial Monitor
//Increment boot number and print it every reboot
++bootCount;
Serial.println("Boot number: " + String(bootCount));
//Print the wakeup reason for ESP32
print_wakeup_reason();
esp_deep_sleep_enable_gpio_wakeup(BIT(D1), ESP_GPIO_WAKEUP_GPIO_LOW);
//Go to sleep now
Serial.println("Going to sleep now");
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop(){
//This is not going to be called
}
Si eres lo suficientemente rápido para encender el monitor serie antes de que el XIAO entre en modo de 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 de nuevo su número de puerto.
En el programa, estamos usando 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.
El XIAO ESP32-C3 admite el despertar por GPIO y por temporizador, y los pines que admiten el despertar son D0~D3.
Solución de problemas
P1: Mi Arduino IDE se queda atascado al subir código a la placa
Primero puedes intentar reiniciar la placa haciendo clic una vez en el RESET BUTTON mientras la placa está conectada a tu PC. Si eso no funciona, mantén presionado el BOOT BUTTON, conecta la placa a tu PC mientras mantienes presionado el botón BOOT, y luego suéltalo para entrar en el bootloader mode.
P2: Mi placa no aparece como un dispositivo serie en Arduino IDE
Sigue la misma respuesta que para la P1 anterior.
P3: Quiero volver a grabar el bootloader con el firmware de fábrica
Simplemente puedes conectar la placa a un PC mediante USB Type-C y volver a grabar el bootloader con el firmware de fábrica usando ESP RF Test Tool.
-
Paso 1. Mantén presionado el BOOT BUTTON y conecta el XIAO ESP32C3 al PC para entrar en bootloader mode
-
Paso 2. Después de que esté conectado, suelta el BOOT BUTTON
-
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_Manualy abre EspRFTestTool_v2.8_Manual.exe

- Paso 5. Selecciona ESP32C3 como ChipType, tu puerto COM, 115200 como BaudRate y haz clic en open

Verás la siguiente salida

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

-
Paso 7. Descarga el firmware de fábrica del XIAO ESP32C3 y selecciónalo.
-
Paso 8. Finalmente haz clic en Load Bin

Verás la siguiente salida cuando la grabación se haya realizado correctamente

Repositorio de GitHub de MicroPython
Recursos
Diseño de hardware
- 📄[Hoja de datos] Espressif ESP32-C3 Datasheet
- 📄[Esquemático] XIAO ESP32-C3 Schematic
- 🗃️[Archivos de diseño de PCB]
- 🗃️[Librerías de diseño de PCB]
- 📄[Diagrama de pines] Hoja de pines de XIAO ESP32-C3
Mecánico
- 📄[Dimensiones 2D] Dimensiones 2D de XIAO ESP32-C3 en DXF
- 🗃️[Dimensiones 2D] Datos de las almohadillas inferiores de XIAO ESP32-C3
- 📄[Modelo 3D] Modelo 3D de XIAO ESP32-C3
Software y herramientas
- 🗃️[Firmware de fábrica] Firmware de fábrica de XIAO ESP32-C3
- 🔗[Librería MicroPython] Librería MicroPython de XIAO ESP32-C3
- 🔗[Platform IO] PlatformIO para Seeed Studio XIAO ESP32-C3
Otros
- 🔗[Wiki] First Look at the Seeed Studio XIAO ESP32-C3
- Una gran introducción al XIAO ESP32C3, que cubre las características clave y el uso básico.
- 📄[Documento] Informe sobre el bajo consumo de energía del XIAO ESP32-C3
Recursos del curso

Soporte técnico y debate sobre el producto
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.



