Primeros pasos con Seeed Studio XIAO ESP32C6
Seeed Studio XIAO ESP32C6 |
---|
![]() |
Introducción
Seeed Studio XIAO ESP32C6 está alimentado por el SoC altamente integrado ESP32-C6, construido sobre dos procesadores RISC-V de 32 bits, con un procesador de alto rendimiento (HP) que funciona hasta 160 MHz, y un procesador RISC-V de 32 bits de bajo consumo (LP), que puede funcionar hasta 20 MHz. Hay 512KB de SRAM y 4 MB de Flash en el chip, permitiendo más espacio de programación y brindando más posibilidades a los escenarios de control IoT.
XIAO ESP32C6 es nativo de Matter gracias a su conectividad inalámbrica mejorada. La pila inalámbrica soporta WiFi 6 de 2.4 GHz, Bluetooth® 5.3, Zigbee, y Thread (802.15.4). Como el primer miembro XIAO compatible con Thread, es perfecto para construir proyectos compatibles con Matter, logrando así interoperabilidad en el hogar inteligente.
Especificaciones
Productos | XIAO ESP32C6 | XIAO ESP32C3 | XIAO ESP32S3 | |
---|---|---|---|---|
Procesador | Espressif ESP32-C6 SoC | Espressif ESP32-C3 SoC | Espressif ESP32-S3R8 | |
Dos procesadores RISC-V de 32 bits, con el de alto rendimiento funcionando hasta 160 MHz, y el de bajo consumo funcionando hasta 20 MHz | Procesador de chip de núcleo único RISC-V de 32 bits con un pipeline de cuatro etapas que opera hasta 160 MHz | Procesador dual-core Xtensa LX7 de 32 bits funcionando hasta 240 MHz | ||
Inalámbrico | Subsistema completo de 2.4GHz Wi-Fi 6 | Subsistema completo de Wi-Fi de 2.4GHz | ||
BLE: Bluetooth 5.0, Bluetooth Mesh | BLE: Bluetooth 5.0, Bluetooth Mesh | BLE: Bluetooth 5.0, Bluetooth Mesh | ||
Zigbee,Thread,IEEE 802.15.4 | / | / | ||
Memoria en chip | 512KB SRAM & 4MB Flash | 400KB SRAM & 4MB Flash | 8M PSRAM & 8MB Flash | |
Interfaz | 1x UART,1x LP_UART, 1x IIC, 1x LP_IIC, 1x SPI,11x GPIO(PWM), 7x ADC, 1xSDIO 2.0 Slave | 1x UART, 1x IIC, 1x SPI,11x GPIO(PWM), 4x ADC | 1x UART, 1x IIC, 1x IIS, 1x SPI,11x GPIO(PWM), 9x ADC, 1x LED de usuario, 1x LED de carga | |
1x Botón de reinicio, 1x Botón de arranque | ||||
Dimensiones | 21 x 17.8 mm | |||
Alimentación | Voltaje de entrada | Type-C: 5V BAT: 4.2V | ||
Voltaje de operación del circuito (listo para operar) | USB:5V@9mA BAT:3.8V@9mA | Type-C: 5V@19mA BAT: 3.8V@22mA | ||
Corriente de carga de batería | 100mA | 350mA | 100mA | |
Modelo de Consumo de Energía (Alimentación: 3.8V) | Modelo Modem-sleep | ~ 30 mA | ~ 24 mA | ~ 25 mA |
Modelo Light-sleep | ~ 2.5 mA | ~ 3 mA | ~ 2 mA | |
Modelo Deep Sleep | ~ 15 μA | ~ 44 μA | ~ 14 μA | |
Temperatura de Trabajo | -40°C ~ 85°C | -40°C ~ 65°C |
Características
- Conectividad Mejorada: Integra conectividad de radio Wi-Fi 6 (802.11ax) de 2.4 GHz, Bluetooth 5(LE) e IEEE 802.15.4, permitiendo la aplicación de protocolos Thread y Zigbee.
- Matter Nativo: Soporta la construcción de proyectos de hogar inteligente compatibles con Matter, asegurando la interoperabilidad entre diferentes dispositivos inteligentes.
- Seguridad Encriptada en Chip: Utiliza el ESP32-C6 para proporcionar arranque seguro, encriptación y características de Entorno de Ejecución Confiable (TEE), mejorando la seguridad de los proyectos de hogar inteligente.
- Rendimiento RF Excepcional: Cuenta con una antena integrada con hasta 80m de alcance BLE/Wi-Fi y ofrece una interfaz para conectar una antena UFL externa, asegurando conectividad confiable.
- Aprovechamiento del Consumo de Energía: Ofrece cuatro modos de funcionamiento, incluyendo un modo de sueño profundo con consumo tan bajo como 15 μA, junto con soporte para gestión de carga de batería de litio.
- Procesadores RISC-V Duales: Incorpora dos procesadores RISC-V de 32 bits, con el procesador de alto rendimiento capaz de funcionar hasta 160 MHz y el procesador de bajo consumo hasta 20 MHz.
- Diseños XIAO Clásicos: Mantiene el factor de forma del tamaño de un pulgar de 21 x 17.8mm y diseño de montaje de un solo lado, ideal para proyectos con limitaciones de espacio como dispositivos portátiles.
Descripción general del hardware
Diagrama de indicación XIAO ESP32C6 |
---|
Lista de Pines XIAO ESP32C6 |
La función Conmutador RF te permite alternar entre la antena cerámica integrada y una antena externa configurando GPIO14
. Para habilitar esta función, primero debes establecer GPIO3
en nivel bajo, ya que esto activa el control del conmutador RF.
- GPIO14 Nivel Bajo (Configuración Predeterminada): El dispositivo usa la antena cerámica integrada.
- GPIO14 Nivel Alto: El dispositivo cambia a la antena externa.
Por defecto, GPIO14
está configurado en nivel bajo, habilitando la antena integrada. Para usar una antena externa, establece GPIO14
en nivel alto. Consulta el código de ejemplo a continuación para obtener orientación sobre cómo configurar GPIO3
y GPIO14
para activar la antena externa:
void setup() {
pinMode(WIFI_ENABLE, OUTPUT); // pinMode(3, OUTPUT);
digitalWrite(WIFI_ENABLE, LOW); // digitalWrite(3, LOW); // Activate RF switch control
delay(100);
pinMode(WIFI_ANT_CONFIG, OUTPUT); // pinMode(14, OUTPUT);
digitalWrite(WIFI_ANT_CONFIG, HIGH); // digitalWrite(14, HIGH); // Use external antenna
}
Comenzando
Para permitirte comenzar con el XIAO ESP32C6 más rápido, por favor lee la preparación de hardware y software a continuación para preparar el XIAO.
Preparación de Hardware
Necesitas preparar lo siguiente:
- 1 x Seeed Studio XIAO ESP32C6
- 1 x Computadora
- 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 verificar Seeed USB Type-C support USB 3.1.
Soldar pines
El XIAO ESP32C6 se envía sin pines soldados por defecto, necesitas preparar tus propios pines y soldarlos a los pines correspondientes del XIAO para que puedas conectar a la placa de expansión o sensor.
Debido al tamaño miniatura del XIAO ESP32C6, por favor ten cuidado al soldar los pines, no pegues diferentes pines juntos, y no pegues soldadura al blindaje u otros componentes. De lo contrario, puede causar que el XIAO tenga un cortocircuito o no funcione correctamente, y las consecuencias causadas por esto serán responsabilidad del usuario.
Modo BootLoader
Hay ocasiones cuando usamos el programa incorrecto para hacer que el XIAO parezca perder puertos o no funcione correctamente. El rendimiento específico es:
- Conectado a la computadora, pero no se encuentra número de puerto para el XIAO.
- La computadora está conectada y aparece el número de puerto, pero la carga del programa falla.
Cuando encuentres las dos situaciones anteriores, puedes intentar poner el XIAO en modo BootLoader, que puede resolver la mayoría de los problemas de dispositivos no reconocidos y cargas fallidas. El método específico es:
- Paso 1. Presiona y mantén presionado el botón BOOT en el XIAO ESP32C6 sin soltarlo.
- Paso 2. Mantén presionado el botón BOOT y luego conéctalo a la computadora a través del cable de datos. Suelta el botón BOOT después de conectar a la computadora.
- Paso 3. Carga el programa Blink para verificar el funcionamiento del XIAO ESP32C6.
Reset
Cuando el programa funciona de manera anormal, puedes presionar Reset una vez durante el encendido para permitir que el XIAO vuelva a ejecutar el programa cargado.
Cuando presionas y mantienes presionada la tecla BOOT mientras enciendes y luego presionas la tecla Reset una vez, también puedes entrar al modo BootLoader.
Preparación de Software
La herramienta de programación recomendada para el XIAO ESP32C6 es el Arduino IDE, por lo que necesitas completar la instalación de Arduino como parte de la preparación de software.
Si esta es tu primera vez usando Arduino, te recomendamos altamente que consultes Getting Started with Arduino.
Y el paquete de placa para el XIAO ESP32C6 requiere al menos la versión 2.0.8 para estar disponible.
-
Paso 1. Descarga e Instala la versión estable del Arduino IDE según tu sistema operativo.
-
Paso 2. Inicia la aplicación Arduino.
-
Paso 3. Añade el paquete de placa XIAO ESP32C6 al Arduino IDE y haz clic en
OK
. -
Paso 4. Cierra el Arduino IDE y ábrelo nuevamente.
Añadir la Placa XIAO-C6
Para instalar la placa XIAO ESP32C6, sigue estos pasos:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
- Añade la URL del gestor de placas anterior a las preferencias de tu Arduino IDE, que se toma de Installing - Arduino ESP32.

- Descarga el paquete de placa XIAO ESP32C6.
Solo disponible si la versión de la placa esp32 es mayor que 3.0.0
.

- Opta por la variante
XIAO_ESP32C6
.

Ahora disfruta programando ✨.
Ejecuta tu primer programa Blink
-
Paso 1. Inicia la aplicación Arduino.
-
Paso 2. Navega a File > Examples > 01.Basics > Blink, abre el programa.

- Paso 3. Selecciona el modelo de placa XIAO ESP32C6, y selecciona el número de puerto correcto para cargar el programa.

Una vez que el programa se carga exitosamente, verás el siguiente mensaje de salida y podrás observar que el LED naranja en el lado derecho del XIAO ESP32C6 está parpadeando.
![]() | ![]() |
Uso de la Batería
La serie XIAO ESP32C6 cuenta con un chip de gestión de energía integrado, lo que le permite ser alimentado de forma independiente por una batería o cargar la batería a través de su puerto USB.
Para conectar una batería a tu XIAO, recomendamos usar una batería de litio recargable de 3.7V certificada. Al soldar la batería, distingue cuidadosamente entre los terminales positivo y negativo. La almohadilla del electrodo negativo debe ubicarse en el lado izquierdo cerca de la marca de serigrafía "D8", mientras que la almohadilla del electrodo positivo debe ubicarse en el lado derecho cerca de la marca de serigrafía "D5".
Cuando uses alimentación por batería, no habrá voltaje presente en el pin de 5V.
El XIAO ESP32C6 tiene una luz indicadora roja para la carga de la batería, similar al XIAO ESP32S3:
El comportamiento de la luz roja para el XIAO ESP32C6 es el siguiente:
- Cuando no hay batería conectada:
- La luz roja se enciende cuando se conecta el cable Type-C y se apaga después de 30 segundos.
- Cuando hay una batería conectada y el cable Type-C está enchufado para cargar:
- La luz roja parpadea.
- Cuando la batería está completamente cargada a través de la conexión Type-C:
- La luz roja se apaga.
Lectura del Voltaje de la Batería
Para monitorear el voltaje de la batería en el XIAO ESP32C6, similar al XIAO ESP32C3, necesitarás soldar una resistencia de 200k en una configuración 1:2. Esta configuración reduce el voltaje a la mitad, permitiendo un monitoreo seguro a través del puerto analógico A0.
Código de Ejemplo
El código a continuación inicializa el ADC en el puerto A0 y promedia 16 lecturas para calcular el voltaje de la batería, ajustando para la relación de atenuación 1:2 del divisor de voltaje.
#include <Arduino.h>
void setup() {
Serial.begin(115200);
pinMode(A0, INPUT); // Configure A0 as ADC input
}
void loop() {
uint32_t Vbatt = 0;
for(int i = 0; i < 16; i++) {
Vbatt += analogReadMilliVolts(A0); // 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
}
Este código toma 16 mediciones del ADC, las promedia, y luego compensa la relación 1:2 del divisor de voltaje para mostrar el voltaje de la batería en voltios con tres decimales de precisión.
Modo de sueño profundo y despertar
El XIAO ESP32C6 tiene un modo de sueño profundo completo y función de despertar. Aquí mostraremos dos de los ejemplos más comunes ofrecidos por el ESP.
Demo1: Sueño Profundo con Despertar Externo
Este código muestra cómo usar el sueño profundo con un disparador externo como fuente de despertar y cómo almacenar datos en la memoria RTC para usarlos después de reinicios.
/*
Hardware Connections
======================
Push Button to GPIO 0 pulled down with a 10K Ohm
resistor
NOTE:
======
Bit mask of GPIO numbers which will cause wakeup. Only GPIOs
which have RTC functionality can be used in this bit map.
For different SoCs, the related GPIOs are:
- ESP32: 0, 2, 4, 12-15, 25-27, 32-39
- ESP32-S2: 0-21
- ESP32-S3: 0-21
- ESP32-C6: 0-7
- ESP32-H2: 7-14
*/
#define BUTTON_PIN_BITMASK (1ULL << GPIO_NUM_0) // GPIO 0 bitmask for ext1
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();
/*
First we configure the wake up source
We set our ESP32 to wake up for an external trigger.
There are two types for ESP32, ext0 and ext1, ext0
don't support ESP32C6 so we use ext1.
*/
//If you were to use ext1, you would use it like
esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK,ESP_EXT1_WAKEUP_ANY_HIGH);
//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
}
Demo2: Suspensión Profunda con Despertar por Temporizador
ESP32 ofrece un modo de suspensión profunda para un ahorro efectivo de energía, ya que la energía es un factor importante para las aplicaciones IoT. En este modo, las CPUs, la mayor parte de la RAM y todos los periféricos digitales que son sincronizados desde APB_CLK se apagan. Las únicas partes del chip que aún pueden permanecer encendidas son: el controlador RTC, los periféricos RTC y las memorias RTC.
Este código muestra la suspensión profunda más básica con un temporizador para despertarlo y cómo almacenar datos en la memoria RTC para usarlos después de los reinicios.
/*
Simple Deep Sleep with Timer Wake Up
=====================================
This code is under Public Domain License.
Author:
Pranav Cherukupalli <[email protected]>
*/
#define uS_TO_S_FACTOR 1000000ULL /* Conversion factor for micro seconds to seconds */
#define TIME_TO_SLEEP 5 /* Time ESP32 will go to sleep (in seconds) */
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();
/*
First we configure the wake up source
We set our ESP32 to wake up every 5 seconds
*/
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
Serial.println("Setup ESP32 to sleep for every " + String(TIME_TO_SLEEP) +
" Seconds");
/*
Next we decide what all peripherals to shut down/keep on
By default, ESP32 will automatically power down the peripherals
not needed by the wakeup source, but if you want to be a poweruser
this is for you. Read in detail at the API docs
http://esp-idf.readthedocs.io/en/latest/api-reference/system/deep_sleep.html
Left the line commented as an example of how to configure peripherals.
The line below turns off all RTC peripherals in deep sleep.
*/
//esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);
//Serial.println("Configured all RTC Peripherals to be powered down in sleep");
/*
Now that we have setup a wake cause and if needed setup the
peripherals state in deep sleep, we can now start going to
deep sleep.
In the case that no wake up sources were provided but deep
sleep was started, it will sleep forever unless hardware
reset occurs.
*/
Serial.println("Going to sleep now");
Serial.flush();
esp_deep_sleep_start();
Serial.println("This will never be printed");
}
void loop(){
//This is not going to be called
}
Si quieres aprender a usar más del modo de sueño profundo y las funciones de despertar, puedes encontrar más programas de muestra escritos oficialmente para el chip por ESP en el Arduino IDE.

Recursos
-
🔗 [Kicad] FootPrint del Seeed Studio XIAO ESP32C6
Recursos del Curso

Soporte Técnico y Discusión del Producto
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.