Introducción a Seeed Studio XIAO ESP32-C5
Introducción
| Seeed Studio XIAO ESP32-C5 |
|---|
![]() |
Especificaciones
| Elemento | Seeed Studio XIAO ESP32-C5 | Seeed Studio XIAO ESP32-S3 | Seeed Studio XIAO ESP32-C3 | Seeed Studio XIAO ESP32-C6 |
|---|---|---|---|---|
| Procesador | ESP32-C5 RISC-V de 32 bits @240 MHz | ESP32R8N8 Xtensa LX7 de 32 bits de doble núcleo @240 MHz | ESP32-C3 RISC-V de 32 bits @160 MHz | ESP32-C6 RISC-V de 32 bits @160 MHz |
| Conectividad inalámbrica | Wi-Fi 6 de doble banda de 2.4 GHz y 5 GHz y Bluetooth 5 (LE) | Wi-Fi de 2.4 GHz y Bluetooth 5 (LE) | Wi-Fi de 2.4 GHz y Bluetooth 5 (LE) | Wi-Fi 6 de 2.4 GHz, Bluetooth 5 (LE) |
| Memoria | 8 MB PSRAM y 8 MB Flash | 8 MB PSRAM y 8 MB Flash | 400 KB SRAM, 4 MB Flash | 512KB SRAM , 4MB Flash |
| Interfaces | I2C / UART / SPI | I2C / UART / SPI | I2C / UART / SPI | I2C / UART / SPI |
| Pines PWM/Analógicos | 11 / 5 | 11 / 9 | 11 / 4 | 11 / 7 |
| Botones integrados | Botón de reinicio / Boot | Botón de reinicio / Boot | Botón de reinicio / Boot | Botón de reinicio / Botón Boot |
| LEDs integrados | LED de carga / USER LED | LED de carga / USER LED | LED de carga | LED de carga / USER LED |
| Chip de carga de batería | SGM40567 | SGM40567 | ETA4054S2F | SGM40567 |
Características
- CPU potente: ESP32-C5, procesador RISC-V de 32 bits de un solo núcleo que funciona hasta 240 MHz
- Subsistema Wi-Fi completo: Subsistema Wi-Fi 6 de doble banda (2.4 GHz y 5 GHz) compatible con IEEE 802.11 a/b/g/n/ac/ax, que admite Station, SoftAP, operación concurrente SoftAP+Station y modo promiscuo (monitor).
- Subsistema Bluetooth LE: Admite funciones de Bluetooth 5 y Bluetooth mesh
- Mejor rendimiento RF: Antena RF externa incluida.
- Chip de carga de batería: Admite la gestión de carga y descarga de baterías de litio.
- Ricos recursos en chip: 384 KB de SRAM en chip, 320 KB de ROM
- Tamaño ultra pequeñ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 de la familia SHA, HMAC, un periférico de firma digital dedicado y Secure Boot (V2).
- Interfaces ricas: 1×I2C, 1×SPI, 2×UART, hasta 11×GPIO (compatibles con PWM), 5×canales ADC y una interfaz de almohadillas de conexión JTAG (almohadillas en el lado inverso).
- Componentes en un solo lado, diseño para montaje en superficie
Descripción general del hardware
| Diagrama indicativo de XIAO ESP32-C5 |
|---|
![]() |
| Lista de pines de XIAO ESP32-C5 |
![]() |
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 | Analog | GPIO1 | LP_UART_DSRN, LP_GPIO1 | GPIO, ADC |
| D1 | GPIO0 | LP_UART_DTRN, LP_GPIO0 | GPIO | |
| D2 | GPIO25 | GPIO | ||
| D3 | GPIO7 | SDIO_DATA1 | GPIO | |
| D4 | SDA | GPIO23 | GPIO, datos I2C | |
| D5 | SCL | GPIO24 | GPIO, reloj I2C | |
| D6 | TX | GPIO11 | GPIO, transmisión UART | |
| D7 | RX | GPIO12 | GPIO, recepción UART | |
| D8 | SCK | GPIO8 | TOUCH7 | GPIO, reloj SPI |
| D9 | MISO | GPIO9 | TOUCH8 | GPIO, datos SPI |
| D10 | MOSI | GPIO10 | TOUCH9 | GPIO, datos SPI |
| MTDO | GPIO5 | LP_UART_TXD, LP_GPIO5 | JTAG | |
| MTDI | GPIO3 | LP_I2C_SCL, LP_GPIO3 | JTAG, ADC | |
| MTCK | GPIO4 | LP_UART_RXD, LP_GPIO4 | JTAG, ADC | |
| MTMS | GPIO2 | LP_I2C_SDA, LP_GPIO2 | JTAG, ADC | |
| ADC_BAT | GPIO6 | Leer el valor de voltaje de la batería | ||
| ADC_CRL | GPIO26 | Controla (habilita/deshabilita) el circuito de medición para ahorrar energía. | ||
| Reset | CHIP_EN | EN | ||
| Boot | GPIO28 | Entrar en modo Boot | ||
| U.FL-R-SMT1 | LNA_IN | Antena UFL | ||
| CHARGE_LED | VCC_3V3 | CHG-LED_Red | ||
| USER_LED | GPIO27 | Luz de usuario_Amarilla |
Primeros pasos
Para permitirte comenzar más rápido con la XIAO ESP32-C5, lee la preparación de hardware y software a continuación para preparar la XIAO.
Hardware
Necesitas preparar lo siguiente:
- 1 x Seeed Studio XIAO ESP32-C5
- 1 x Ordenador
- 1 x Cable USB Tipo-C
| Seeed Studio XIAO ESP32-C5 |
|---|
![]() |
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.
Software
La herramienta de programación recomendada para la XIAO ESP32-C5 es el Arduino IDE, por lo que debes completar la instalación de Arduino como parte de la preparación del software.
Si es la primera vez que usas Arduino, te recomendamos encarecidamente que consultes Getting Started with Arduino.
-
Paso 1. Descarga e instala la versión estable de Arduino IDE de acuerdo con tu sistema operativo.
-
Paso 2. Inicia la aplicación Arduino.
-
Paso 3. Abre BOARDS MANAGER -> Busca esp32 -> Instala la versión 3.3.5 o una versión superior

Cargar programa
Tomemos como ejemplo un programa de iluminación a continuación
Paso 1. Selecciona XIAO_ESP32C5 y el PORT. Si no conoces el PORT, puedes volver a insertar y retirar el XIAO_ESP3-2C5 para comprobarlo.

Paso 2. Pega el código en tu Sketch
LED_BUILTIN corresponde al L LED en la placa de desarrollo.
void setup() {
// put your setup code here, to run once:
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(LED_BUILTIN, LOW);
Serial.print("LED ON \n");
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
Serial.print("LED OFF \n");
delay(1000);
}
Paso 3. Haz clic y sube

Demostración del efecto:
Después de subir el programa, verás que el indicador L parpadea a intervalos de 1 segundo y, al mismo tiempo, el monitor serie imprimirá LED ON y LED OFF.


Modo de sueño profundo
El XIAO ESP32-C5 cuenta con funciones de sueño profundo y de activación. Este ejemplo utiliza un disparo de nivel alto en el pin D0 para despertar el dispositivo del sueño profundo.
Es importante tener en cuenta que esta es una opción configurable, ya que el hardware admite tanto disparos de nivel alto como de nivel bajo para adaptarse a diferentes diseños de circuitos.
#define WAKEUP_PIN D0 // LP_GPIO1
RTC_DATA_ATTR int bootCount = 0;
void print_wakeup_reason(){
esp_sleep_wakeup_cause_t 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;
case ESP_SLEEP_WAKEUP_GPIO : Serial.println("Wakeup caused by GPIO"); break;
default : Serial.printf("Wakeup was not caused by deep sleep: %d\n",wakeup_reason); break;
}
}
void setup(){
Serial.begin(115200);
delay(1000);
++bootCount;
Serial.println("Boot number: " + String(bootCount));
print_wakeup_reason();
pinMode(WAKEUP_PIN, INPUT_PULLUP);
pinMode(LED_BUILTIN, OUTPUT);
uint64_t mask = 1ULL << WAKEUP_PIN;
esp_deep_sleep_enable_gpio_wakeup(mask, ESP_GPIO_WAKEUP_GPIO_HIGH);
digitalWrite(LED_BUILTIN, LOW);
delay(100);
digitalWrite(LED_BUILTIN, HIGH);
delay(2000); //Delay time depends on the serial port / Give the PC time to stabilize
Serial.println("Going to sleep now");
esp_deep_sleep_start();
}
void loop(){}
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. Luego también puedes verlo y activarlo presionando el botón. También puedes observar el estado de encendido y apagado del L LED para comprobar si el dispositivo se ha despertado. Una vez que se despierte, mostrará un efecto de parpadeo.

Después de entrar en el modo de sueño profundo, el puerto del XIAO desaparecerá y tendrás que despertarlo para volver a ver su número de puerto.
El XIAO ESP32-C5 admite la activación por GPIO y por temporizador. Para evitar la pérdida de capacidades de depuración de hardware y la mayor dificultad en la grabación de firmware durante el desarrollo de bajo consumo, se recomienda encarecidamente que los pines JTAG (MTMS, MTDI, MTCK, MTDO) se reserven para uso exclusivo y no se utilicen como fuentes de activación para el modo de sueño profundo.
Uso de la batería
El XIAO ESP32-C5 es capaz de utilizar 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 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 incorporado, lo cual es seguro.
- Cuando el XIAO ESP32-C5 se alimenta con una batería, el C LED se encenderá. Puedes usar esto como base para determinar si se ha realizado la gestión de carga.
Comprobar el voltaje de la batería
El XIAO ESP32-C5 está equipado con el chip de carga de batería SGM40567 y el chip de adquisición de voltaje de batería TPS22916CYFPR. Puedes habilitar el BAT_VOLT_PIN_EN para activar la función de adquisición de voltaje de la batería y leer el voltaje de la batería a través del BAT_VOLT_PIN.
En el XIAO ESP32C5, el pin correspondiente a BAT_VOLT_PIN es GPIO6, y el pin correspondiente a BAT_VOLT_PIN_EN es GPIO26.
#include <Arduino.h>
void setup() {
Serial.begin(115200);
pinMode(BAT_VOLT_PIN, INPUT); // Configure A0 as ADC input
pinMode(BAT_VOLT_PIN_EN , OUTPUT);
digitalWrite(BAT_VOLT_PIN_EN , HIGH);
}
void loop() {
uint32_t Vbatt = 0;
for(int i = 0; i < 16; i++) {
Vbatt += analogReadMilliVolts(BAT_VOLT_PIN ); // Read and accumulate ADC voltage
}
float Vbattf = 2 * Vbatt / 16 / 1000.0; // Adjust for 1:2 divider and convert to volts
Serial.println(Vbattf, 3); // Output voltage to 3 decimal places
delay(1000); // Wait for 1 second
}
-
analogReadMilliVolts(BAT_Voltage_Read)- Esta función se utiliza para leer el voltaje analógico actual desde el pin
BAT_VOLT_PINy devolver un valor de voltaje calibrado en milivoltios (mV). - A diferencia de la función convencional
analogRead(), que solo proporciona un valor ADC bruto,analogReadMilliVolts()aplica automáticamente los parámetros de calibración de fábrica integrados en el chip. Esto da como resultado una mayor precisión, una mejor linealidad en la medición de voltaje y elimina la necesidad de una conversión manual de ADC a voltaje. - Durante el proceso de muestreo de voltaje, se realiza un muestreo repetido 16 veces mediante un bucle
for, y los resultados se acumulan. El propósito del muestreo múltiple es suprimir el ruido transitorio y los errores discretos, mejorando así la estabilidad de la medición. Finalmente, el valor acumulado se divide por el número de muestras (16) para obtener un valor de voltaje promedio más suave y confiable.
- Esta función se utiliza para leer el voltaje analógico actual desde el pin

Según la hoja de datos, el rango de medición efectivo del ESP32-C5 cubre 0~3300 mV. Por lo tanto, el circuito de adquisición de voltaje de batería incorporado del XIAO ESP32-C5 está diseñado con dos resistencias de 100K para la división de voltaje, lo que permite la lectura precisa de valores.
Recursos
Diseño de hardware
- 📄[Datasheet] Espressif ESP32-C5 Datasheet
- 📄[Schematic] XIAO ESP32-C5 Schematic
- 🗃️[PCB Design Files] XIAO ESP32-C5 KiCad Project
- 🗃️[PCB Design Libraries]
- XIAO Series KiCad SCH Symbols
- 📄[Pinout Diagram] XIAO ESP32-C5 Pinout Sheet
Diseño mecánico
- 📄[3D Model] XIAO ESP32-C5 3D Model
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.



