Primeiros passos com o Seeed Studio XIAO ESP32C6
| Seeed Studio XIAO ESP32C6 |
|---|
![]() |
Introdução
Seeed Studio XIAO ESP32C6 é alimentado pelo altamente integrado ESP32-C6 SoC, construído sobre dois processadores RISC-V de 32 bits, com um processador de alto desempenho (HP) rodando até 160 MHz, e um processador RISC-V de 32 bits de baixo consumo (LP), que pode ser clockado até 20 MHz. Há 512KB de SRAM e 4 MB de Flash no chip, permitindo mais espaço de programação e trazendo mais possibilidades para cenários de controle de IoT.
XIAO ESP32C6 é nativamente compatível com Matter graças à sua conectividade sem fio aprimorada. A pilha sem fio suporta WiFi 6 de 2,4 GHz, Bluetooth® 5.3, Zigbee e Thread (802.15.4). Como o primeiro membro da família XIAO compatível com Thread, é uma opção perfeita para construir projetos compatíveis com Matter, alcançando assim interoperabilidade em casas inteligentes.
Especificações
| Produto | XIAO ESP32-C6 | XIAO ESP32-C3 | XIAO ESP32-S3 |
|---|---|---|---|
| Processador | Espressif ESP32-C6 SoC dois processadores RISC-V de 32 bits, com o de alto desempenho rodando até 160 MHz, e o de baixo consumo clockado até 20 MHz | Espressif ESP32-C3 SoC processador RISC-V single-core de 32 bits com pipeline de quatro estágios que opera até 160 MHz | Espressif ESP32-S3R8 SoC processador Xtensa LX7 dual-core de 32 bits rodando até 240 MHz |
| Sem fio | Subsistema Wi-Fi 6 completo de 2,4GHz | Subsistema Wi-Fi completo de 2,4GHz | Subsistema Wi-Fi completo de 2,4GHz |
| Bluetooth Low Energy 5.0 | |||
| Zigbee, Thread, IEEE 802.15.4 | / | / | |
| Memória interna | 512KB SRAM & 4MB Flash | 400KB SRAM & 4MB Flash | 8MB PSRAM & 8MB Flash |
| Interface | 1x UART 1x LP_UART 1x IIC 1x LP_IIC 1x SPI 11x GPIO(PWM) 7x ADC 1x SDIO | 1x UART 1x IIC 1x SPI 11x GPIO(PWM) 4x ADC | 1x UART 1x IIC 1x SPI 11x GPIO(PWM) 9x ADC 1x User LED 1x Charge LED |
| 1x Botão de reset 1x Botão de boot | |||
| Dimensões | 21 x 17.8mm | ||
| Alimentação | Tensão de entrada (Type-C): 5V Tensão de entrada (BAT): 3.7V | ||
| Modelo de consumo de energia (típ.) (Fonte de alimentação: 3.8V) | Modo modem-sleep: 30 mA Modo light-sleep: 3.1 mA Modo deep sleep: 15 μA | Modo modem-sleep: 24 mA Modo light-sleep: 3 mA Modo deep sleep: 44 μA | Modo modem-sleep: 27 mA Modo light-sleep: 2 mA Modo deep sleep: 14 μA |
| Temperatura de trabalho | -40°C ~ 85°C | -40°C ~ 85°C | -40°C ~ 65°C |
XIAO ESP32-S3 vs ESP32-C3 vs ESP32-C6: Qual é o melhor para o seu projeto?
Funcionalidades
- Conectividade aprimorada: Integra conectividade de rádio Wi-Fi 6 (802.11ax) de 2.4 GHz, Bluetooth 5(LE) e IEEE 802.15.4, permitindo a aplicação dos protocolos Thread e Zigbee.
- Compatível nativamente com Matter: Suporta a construção de projetos de casa inteligente compatíveis com Matter, garantindo interoperabilidade entre diferentes dispositivos inteligentes.
- Segurança criptografada no chip: Utiliza o ESP32-C6 para fornecer recursos de boot seguro, criptografia e Trusted Execution Environment (TEE), aumentando a segurança de projetos de casa inteligente.
- Desempenho RF excepcional: Possui uma antena integrada com alcance de até 80m para BLE/Wi-Fi e oferece uma interface para conexão de uma antena UFL externa, garantindo conectividade confiável.
- Aproveitamento do consumo de energia: Oferece quatro modos de trabalho, incluindo um modo deep sleep com consumo tão baixo quanto 15 μA, juntamente com suporte para gerenciamento de carga de bateria de lítio.
- Processadores RISC-V duplos: Incorpora dois processadores RISC-V de 32 bits, com o processador de alto desempenho capaz de rodar até 160 MHz e o processador de baixo consumo até 20 MHz.
- Designs clássicos da XIAO: Mantém o formato em tamanho de polegar de 21 x 17.8mm e design de montagem em um único lado, ideal para projetos com espaço limitado, como dispositivos vestíveis.
Visão geral do hardware
| Diagrama de indicação do XIAO ESP32C6 |
|---|
| Lista de pinos do XIAO ESP32C6 |
O recurso RF Switch permite alternar entre a antena cerâmica integrada e uma antena externa configurando o GPIO14. Para habilitar essa função, você deve primeiro definir o GPIO3 em nível baixo, pois isso ativa o controle da chave RF.
- GPIO14 em nível baixo (configuração padrão): O dispositivo usa a antena cerâmica integrada.
- GPIO14 em nível alto: O dispositivo alterna para a antena externa.
Por padrão, o GPIO14 é definido em nível baixo, habilitando a antena integrada. Para usar uma antena externa, defina o GPIO14 em nível alto. Consulte o código de exemplo abaixo para orientação sobre como configurar GPIO3 e GPIO14 para ativar a 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
}
Mapa de pinos
| Pino XIAO | Função | Pino do chip | Funções alternativas | Descrição |
|---|---|---|---|---|
| 5V | VBUS | Entrada/Saída de alimentação | ||
| GND | ||||
| 3V3 | 3V3_OUT | Saída de alimentação | ||
| D0 | Analógico | GPIO0 | LP_GPIO0 | GPIO, ADC |
| D1 | Analógico | GPIO1 | LP_GPIO1 | GPIO, ADC |
| D2 | Analógico | GPIO2 | LP_GPIO2 | GPIO, ADC |
| D3 | Digital | GPIO21 | SDIO_DATA1 | GPIO |
| D4 | SDA | GPIO22 | SDIO_DATA2 | GPIO, Dados I2C |
| D5 | SCL | GPIO23 | SDIO_DATA3 | GPIO, Clock I2C |
| D6 | TX | GPIO16 | GPIO, Transmissão UART | |
| D7 | RX | GPIO17 | GPIO, Recepção UART | |
| D8 | SCK | GPIO19 | SPI_CLK | GPIO, Clock SPI |
| D9 | MISO | GPIO20 | SPI_MISO | GPIO, Dados SPI |
| D10 | MOSI | GPIO18 | SPI_MOSI | GPIO, Dados SPI |
| MTDO | GPIO7 | JTAG | ||
| MTDI | GPIO5 | JTAG, ADC | ||
| MTCK | GPIO6 | JTAG, ADC | ||
| MTMS | GPIO4 | JTAG, ADC | ||
| EN | CHIP_PU | Reset | ||
| Boot | GPIO9 | Entrar no modo de boot | ||
| RF Switch Port Select | GPIO14 | Alternar entre a antena onboard e a antena UFL | ||
| RF Switch Power | GPIO3 | Alimentação | ||
| Light | GPIO15 | Luz do usuário |
Primeiros passos
Para permitir que você comece a usar o XIAO ESP32C6 mais rapidamente, leia as preparações de hardware e software abaixo para preparar o XIAO.
Preparação de Hardware
Você precisa preparar o seguinte:
- 1 x Seeed Studio XIAO ESP32C6
- 1 x Computador
- 1 x Cabo USB Tipo-C
Alguns cabos USB só fornecem energia e não transferem dados. Se você não tiver um cabo USB ou não souber se seu cabo USB pode transmitir dados, você pode verificar Seeed USB Type-C support USB 3.1.
Soldar o header
O XIAO ESP32C6 é enviado sem pinos de header por padrão, você precisa preparar seus próprios pinos e soldá-los nos pinos correspondentes do XIAO para que possa conectá-lo à placa de expansão ou ao sensor.
Devido ao tamanho reduzido do XIAO ESP32C6, tenha cuidado ao soldar os headers, não junte pinos diferentes e não deixe a solda encostar no shield ou em outros componentes. Caso contrário, isso pode causar curto-circuito no XIAO ou fazê-lo não funcionar corretamente, e as consequências causadas por isso serão de responsabilidade do usuário.
Modo BootLoader
Às vezes, quando usamos o programa errado, o XIAO pode parecer perder as portas ou não funcionar corretamente. O desempenho específico é:
- Conectado ao computador, mas nenhum número de porta encontrado para o XIAO.
- O computador está conectado e o número da porta aparece, mas o envio do programa falha.
Quando você encontrar as duas situações acima, pode tentar colocar o XIAO no modo BootLoader, o que pode resolver a maioria dos problemas de dispositivos não reconhecidos e falhas de upload. O método específico é:
- Passo 1. Pressione e segure o botão BOOT no XIAO ESP32C6 sem soltá-lo.
- Passo 2. Mantenha o botão BOOT pressionado e então conecte ao computador via cabo de dados. Solte o botão BOOT após conectar ao computador.
- Passo 3. Envie o programa Blink para verificar o funcionamento do XIAO ESP32C6.
Reset
Quando o programa rodar de forma anormal, você pode pressionar Reset uma vez durante a energização para que o XIAO execute novamente o programa enviado.
Quando você pressiona e segura a tecla BOOT enquanto liga a placa e, em seguida, pressiona a tecla Reset uma vez, também pode entrar no modo BootLoader.
Preparação de Software
A ferramenta de programação recomendada para o XIAO ESP32C6 é o Arduino IDE, portanto você precisa concluir a instalação do Arduino como parte da preparação de software.
Se esta é a sua primeira vez usando Arduino, recomendamos fortemente que você consulte Getting Started with Arduino.
E o pacote on-board para o XIAO ESP32C6 requer pelo menos a versão 2.0.8 para estar disponível.
-
Passo 1. Baixe e instale a versão estável do Arduino IDE de acordo com o seu sistema operacional.
-
Passo 2. Inicie o aplicativo Arduino.
-
Passo 3. Adicione o pacote on-board XIAO ESP32C6 ao Arduino IDE e clique em
OK. -
Passo 4. Feche o Arduino IDE e reabra-o.
Adicionar a placa XIAO-C6
Para instalar a placa XIAO ESP32C6, siga estes passos:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
- Adicione a URL do gerenciador de placas acima às preferências do seu Arduino IDE, que é retirada de Installing - Arduino ESP32.

- Baixe o pacote da placa XIAO ESP32C6.
Disponível somente se a versão da placa esp32 for maior que 3.0.0.

- Opte pela variante
XIAO_ESP32C6.

Agora aproveite para programar ✨.
Execute seu primeiro programa Blink
-
Passo 1. Inicie o aplicativo Arduino.
-
Passo 2. Navegue até File > Examples > 01.Basics > Blink e abra o programa.

- Passo 3. Selecione o modelo de placa como XIAO ESP32C6 e selecione o número de porta correto para enviar o programa.

Uma vez que o programa seja enviado com sucesso, você verá a seguinte mensagem de saída e poderá observar que o LED laranja no lado direito do XIAO ESP32C6 está piscando.
![]() | ![]() |
Uso de Bateria
A série XIAO ESP32C6 possui um chip de gerenciamento de energia integrado, permitindo que seja alimentado independentemente por uma bateria ou que carregue a bateria através de sua porta USB.
Para conectar uma bateria ao seu XIAO, recomendamos o uso de uma bateria de lítio recarregável de 3,7 V qualificada. Ao soldar a bateria, distinga cuidadosamente entre os terminais positivo e negativo. O pad do eletrodo negativo deve estar localizado no lado esquerdo, próximo à marcação em silk screen "D8", enquanto o pad do eletrodo positivo deve estar localizado no lado direito, próximo à marcação em silk screen "D5".
Ao usar alimentação por bateria, não haverá tensão no pino de 5V.
O XIAO ESP32C6 possui uma luz indicadora vermelha para carregamento da bateria, semelhante ao XIAO ESP32S3:
O comportamento da luz vermelha para o XIAO ESP32C6 é o seguinte:
- Quando nenhuma bateria está conectada:
- A luz vermelha acende quando o cabo Type-C é conectado e apaga após 30 segundos.
- Quando uma bateria está conectada e o cabo Type-C é conectado para carregamento:
- A luz vermelha pisca.
- Quando a bateria está totalmente carregada pela conexão Type-C:
- A luz vermelha apaga.
Leitura da Tensão da Bateria
Para monitorar a tensão da bateria no XIAO ESP32C6, similar ao XIAO ESP32C3, você precisará soldar um resistor de 200k em uma configuração de 1:2. Essa configuração reduz a tensão pela metade, permitindo o monitoramento seguro através da porta analógica A0.
Código de Exemplo
O código abaixo inicializa o ADC na porta A0 e faz a média de 16 leituras para calcular a tensão da bateria, ajustando para a razão de atenuação 1:2 do divisor de tensão.
#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 faz 16 medições do ADC, calcula a média e então compensa a razão 1:2 do divisor de tensão para exibir a tensão da bateria em volts com três casas decimais de precisão.
Modo de deep sleep e wake-up
O XIAO ESP32C6 possui um modo de deep sleep completo e função de wake-up. Aqui mostraremos dois dos exemplos mais comuns oferecidos pelo ESP.
Demo1: Deep Sleep com Wake Up Externo
Este código mostra como usar deep sleep com um disparo externo como fonte de wake up e como armazenar dados na memória RTC para usá-los após reinicializações.
/*
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: Sono profundo com temporizador de despertar
O ESP32 oferece um modo de sono profundo para uma economia de energia eficaz, pois a energia é um fator importante para aplicativos de IoT. Nesse modo, as CPUs, a maior parte da RAM e todos os periféricos digitais que são acionados pelo APB_CLK são desligados. As únicas partes do chip que ainda podem permanecer ligadas são: o controlador RTC, os periféricos RTC e as memórias RTC.
Este código apresenta o sono profundo mais básico com um temporizador para acordá-lo e como armazenar dados na memória RTC para usá-los após reinicializações.
/*
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
}
Se você quiser aprender a usar mais o modo de sono profundo e as funções de despertar, poderá encontrar mais programas de exemplo escritos oficialmente para o chip pela ESP na Arduino IDE.

Recursos
Projeto de Hardware
- 📄[Datasheet] Espressif ESP32-C6 Datasheet
- 📄[Esquemático] Esquemático do XIAO ESP32-C6
- 🗃️[Arquivos de Projeto de PCB] Projeto KiCad do XIAO ESP32-C6
- 🗃️[Bibliotecas de Projeto de PCB]
- 📄[Diagrama de Pinout] Folha de Pinout do XIAO ESP32-C6
Projeto Mecânico
- 📄[Modelo 3D] Modelo 3D do XIAO ESP32-C6
Recursos do Curso

Suporte Técnico e Discussão de Produto
Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.


