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 computación 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 montable en superficie por 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 que, para la Seeeduino XIAO Expansion board, los contactos de resorte SWD de 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 inalámbricas vestibles.
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 RISC-V monocore 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) Tensión de entrada (VIN): 5V Tensión 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 monocore de 32 bits que funciona hasta 160 MHz
- Subsistema Wi-Fi completo: Cumple con el protocolo IEEE 802.11b/g/n y admite modo Station, modo SoftAP, modo 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 unos 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 vestibles 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, 1xinterfaz de almohadilla de conexión JTAG
- Componentes en un solo lado, diseño de montaje en superficie
Descripción general del hardware
*A3(GP105) - Utiliza 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.
Parte frontal

Parte trasera

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 tensión, 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 strapping
Según el manual del chip del ESP32C3, GPIO2, GPIO8 y GPIO9 en el chip son pines de strapping; las configuraciones de nivel alto y bajo de estos pines pueden permitir que el chip entre en diferentes modos de arranque. Por favor, presta atención a este punto cuando utilices 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 cargar 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 muestra 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 según tu sistema operativo
-
Paso 2. Inicia la aplicación de Arduino
-
Paso 3. Añade el paquete de placa 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,7 V como entrada de alimentación. Puedes consultar el siguiente diagrama para el método de cableado.

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 ordenador mediante un cable de datos mientras usas la batería; ten la seguridad de que XIAO tiene un chip de protección de circuito incorporado, 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 tuviera 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 operación ingeniosa de msfujino. También nos gustaría dar un agradecimiento especial a msfujino por toda la experiencia y los 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 una conversión AD de escala completa de 2500 mV, pero hay una gran variación de chip a chip, en realidad ±10 %. Mi chip tenía 2700 mV de escala completa.
Afortunadamente, el valor de corrección calibrado para cada chip está escrito en el área de fusibles y, utilizando 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 coinciden 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 es 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 sueño profundo, entonces podrás ver el mensaje de salida como se muestra a continuación. Esto significa que el XIAO está ahora "dormido".

Después de entrar en modo de sueño profundo, el puerto del XIAO desaparecerá y tendrás que despertarlo para volver a ver 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 pulsemos el botón.
El XIAO ESP32-C3 soporta activación por GPIO y por temporizador, y los pines que soportan activación 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 pulsado el BOOT BUTTON, conecta la placa a tu PC mientras mantienes pulsado el botón BOOT, y luego suéltalo para entrar en 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 flashear el bootloader con el firmware de fábrica
Simplemente puedes conectar la placa a un PC mediante USB Type-C y volver a flashear el bootloader con el firmware de fábrica usando ESP RF Test Tool.
-
Paso 1. Mantén pulsado 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 archivo .zip, ve a
ESP_RF_Test_EN\ESP_RF_Test_EN\EspRFTestTool_v2.8_Manualy abre EspRFTestTool_v2.8_Manual.exe

- Paso 5. Selecciona ESP32C3 como el ChipType, tu puerto COM, 115200 como el 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 de 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 MicroPython en GitHub
Recursos
Diseño de hardware
- 📄[Datasheet] Hoja de datos de Espressif ESP32-C3
- 📄[Esquemático] Esquemático de XIAO ESP32-C3
- 🗃️[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] Primer vistazo al 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 de 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.
