Primeiros Passos com Seeed Studio XIAO ESP32C3

Introdução
Seeed Studio XIAO ESP32C3 é uma mini placa de desenvolvimento IoT baseada no chip de modo duplo WiFi/Bluetooth ESP32-C3 da Espressif, com uma CPU RISC-V de 32 bits que oferece alto desempenho computacional com sua arquitetura eficiente. Possui excelente desempenho de radiofrequência, suportando os protocolos IEEE 802.11 b/g/n WiFi e Bluetooth 5 (BLE). Esta placa inclui uma antena externa para aumentar a intensidade do sinal em suas aplicações sem fio. Também possui um formato pequeno e elegante combinado com um design de montagem em superfície de face única. Está equipada com interfaces ricas e possui 11 E/S digitais que podem ser usadas como pinos PWM e 4 E/S analógicas que podem ser usadas como pinos ADC. Suporta quatro interfaces seriais como UART, I2C e SPI. Há também um pequeno botão de reset e um botão de modo bootloader na placa. O XIAO ESP32C3 é totalmente compatível com o Grove Shield for Seeeduino XIAO e a Placa de Expansão Seeeduino XIAO, exceto que os contatos de mola SWD da placa de expansão Seeeduino XIAO não serão compatíveis.
Com relação às características destacadas acima, o XIAO ESP32C3 é posicionado como uma mini placa de desenvolvimento IoT de alto desempenho, baixo consumo e custo acessível, adequada para aplicações IoT de baixo consumo e aplicações vestíveis sem fio.
Este wiki mostrará como você pode começar rapidamente com o XIAO ESP32C3!
Especificações
| Parâmetro | Descrição |
|---|---|
| Processador | ESP32-C3 SoC Processador chip RISC-V single-core 32 bits com pipeline de quatro estágios que opera a até 160 MHz |
| Sem Fio | Subsistema Wi-Fi 2.4GHz completo Bluetooth Low Energy 5.0/ Bluetooth Mesh |
| Memória On-chip | 400KB SRAM & 4MB Flash |
| Interface | 1x UART 1x IIC 1x SPI 11x GPIO(PWM) 4x ADC 1x Botão de Reset 1x Botão de Boot |
| Dimensões | 21 x 17.8mm |
| Alimentação (Típ.) | Corrente de Saída Máxima 3.3V: 500mA Condição de Teste: Entrada no Pino BAT @ 3.8V Capacidade de Fonte: 3A Corrente de carregamento: 380mA (Rápido) / 40mA (Trickle) Tensão de entrada (VIN): 5V Tensão de entrada (BAT): 3.7V |
| Consumo em Deep Sleep | Modo Deep Sleep: 44 μA |
| Consumo com Wi-Fi Ativado | Modo Ativo: 75 mA Modo Modem-sleep: 25 mA Modo Light-sleep: 4 mA |
| Consumo com BLE Ativado | Modo Modem-sleep: 27 mA Modo Light-sleep: 10 mA |
| Temperatura de Operação | -40°C ~ 85°C |
Características
- CPU Poderosa: ESP32-C3, processador single-core RISC-V de 32 bits que opera a até 160 MHz
- Subsistema Wi-Fi completo: Compatível com o protocolo IEEE 802.11b/g/n e suporta modo Station, modo SoftAP, modo SoftAP + Station e modo promíscuo
- Subsistema Bluetooth LE: Suporta recursos do Bluetooth 5 e Bluetooth mesh
- Ultra Baixo Consumo: O consumo em deep sleep é de aproximadamente 43μA
- Melhor desempenho de RF: Antena RF externa incluída
- Chip de carregamento de bateria: Suporta gerenciamento de carga e descarga de bateria de lítio
- Recursos on-chip abundantes: 400KB de SRAM e 4MB de memória flash na placa
- Tamanho ultra pequeno: Do tamanho de um polegar (21x17.8mm), formato clássico da série XIAO para dispositivos vestíveis e projetos pequenos
- Recursos de segurança confiáveis: Aceleradores de hardware criptográfico que suportam AES-128/256, Hash, RSA, HMAC, assinatura digital e boot seguro
- Interfaces ricas: 1xI2C, 1xSPI, 2xUART, 11xGPIO(PWM), 4xADC, 1x interface de pad de ligação JTAG
- Componentes de face única, design de montagem em superfície
Visão geral do hardware
*A3(GP105) - Usa ADC2, que pode ficar inoperante devido a sinais de amostragem falsos. Para leituras analógicas confiáveis, use ADC1(A0/A1/A2). Consulte o datasheet do ESP32-C3.
| Diagrama de indicação frontal do XIAO ESP32C3 |
|---|
![]() |
| Diagrama de indicação traseira do XIAO ESP32C3 |
![]() |
| Lista de Pinos do XIAO ESP32C3 |
![]() |
Mapa de Pinos
| Pino XIAO | Função | Pino do Chip | Funções Alternativas | Descrição |
|---|---|---|---|---|
| 5V | VBUS | Entrada/Saída de Energia | ||
| GND | ||||
| 3V3 | 3V3_OUT | Saída de Energia | ||
| 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, Dados I2C |
| D5 | SCL | GPIO7 | FSPID, MTDO | GPIO, Clock I2C |
| D6 | TX | GPIO21 | U0TXD | GPIO, Transmissão UART |
| D7 | RX | GPIO20 | U0RXD | GPIO, Recepção UART |
| D8 | SCK | GPIO8 | GPIO, Clock SPI | |
| D9 | MISO | GPIO9 | GPIO, Dados SPI | |
| D10 | MOSI | GPIO10 | FSPICS0 | GPIO, Dados SPI |
| MTDO | GPIO7 | JTAG | ||
| MTDI | GPIO5 | JTAG, ADC | ||
| MTCK | GPIO6 | JTAG, ADC | ||
| MTMS | GPIO4 | JTAG, ADC | ||
| Reset | CHIP_EN | EN | ||
| Boot | GPIO9 | Entrar no Modo Boot | ||
| U.FL-R-SMT1 | LNA_IN | Antena UFL | ||
| Light | VCC_3V3 | CHG-LED |
Pinos de Alimentação
- 5V - Esta é a saída de 5V da porta USB. Você também pode usar isso como entrada de tensão, mas deve ter algum tipo de diodo (schottky, sinal, potência) entre sua fonte de alimentação externa e este pino, com o anodo na bateria e o catodo no pino 5V.
- 3V3 - Esta é a saída regulada do regulador integrado. Você pode consumir 700mA
- GND - Terra de alimentação/dados/sinal
Pinos de Strapping
De acordo com o manual do chip ESP32C3, GPIO2, GPIO8 e GPIO9 no chip são Pinos de Strapping; as configurações de nível alto e baixo desses pinos podem fazer o chip entrar em diferentes modos de Boot. Por favor, preste atenção a este ponto ao usar esses pinos, caso contrário pode impedir que seu XIAO faça upload ou execute o programa.

Primeiros Passos
Primeiro, vamos conectar o XIAO ESP32C3 ao computador, conectar um LED à placa e fazer upload de um código simples pelo Arduino IDE para verificar se a placa está funcionando corretamente, fazendo o LED conectado piscar.
Preparação do Hardware
Você precisará preparar o seguinte:
- 1 x Seeed Studio XIAO ESP32C3
- 1 x Computador
- 1 x Cabo USB Type-C
Alguns cabos USB só fornecem energia e não conseguem transferir dados. Se você não tiver um cabo USB ou não souber se o seu cabo USB pode transmitir dados, você pode verificar o Seeed USB Type-C com suporte USB 3.1.
- Passo 1. Conecte o XIAO ESP32C3 ao seu computador via cabo USB Type-C.

- Passo 2. Conecte um LED ao pino D10 conforme mostrado abaixo

Nota: Certifique-se de conectar um resistor (cerca de 150Ω) em série para limitar a corrente pelo LED e evitar corrente excessiva que pode queimar o LED
Preparação do Software
- Passo 1. Baixe e instale a versão mais recente do Arduino IDE de acordo com seu sistema operacional
-
Passo 2. Inicie o aplicativo Arduino
-
Passo 3. Adicione o pacote de placa ESP32 ao seu Arduino IDE
Navegue até File > Preferences e preencha "Additional Boards Manager URLs" com a URL abaixo: https://jihulab.com/esp-mirror/espressif/arduino-esp32.git

Navegue até Tools > Board > Boards Manager..., digite a palavra-chave "esp32" na caixa de pesquisa, selecione a versão mais recente do esp32 e instale-a.

- Passo 4. Selecione sua placa e porta
Placa
Navegue até Tools > Board > ESP32 Arduino e selecione "XIAO_ESP32C3". A lista de placas é um pouco longa e você precisa rolar até o final para encontrá-la.

Porta
Navegue até Tools > Port e selecione o nome da porta serial do XIAO ESP32C3 conectado. Provavelmente será COM3 ou superior (COM1 e COM2 geralmente são reservadas para portas seriais de hardware).
Execute seu primeiro programa Blink
- Passo 1. Copie o código abaixo para o Arduino IDE
Certifique-se de que seu D10 está conectado a um LED conforme mostrado no diagrama acima.
// 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
}
- Passo 2. Clique no botão Upload para fazer upload do código para a placa

Após o upload, você verá o LED conectado piscando com um intervalo de 1 segundo entre cada piscar. Isso significa que a conexão foi bem-sucedida e agora você pode explorar mais projetos com o XIAO ESP32C3!
Uso da Bateria
O XIAO ESP32C3 é capaz de usar uma bateria de lítio de 3,7V como entrada de alimentação. Você pode consultar o diagrama a seguir para o método de conexão.

Por favor, tome cuidado para não causar curto-circuito nos terminais positivo e negativo e queimar a bateria e o equipamento ao soldar.
Instruções sobre o uso de baterias:
- Por favor, use baterias qualificadas que atendam às especificações.
- O XIAO pode ser conectado ao seu computador via cabo de dados enquanto usa a bateria; fique tranquilo, pois o XIAO possui um chip de proteção de circuito integrado, o que é seguro.
- O XIAO ESP32C3 não terá nenhum LED aceso quando alimentado por bateria (a menos que você tenha escrito um programa específico); por favor, não julgue se o XIAO ESP32C3 está funcionando ou não pela condição do LED, julgue de forma razoável pelo seu programa.
- Lamentamos, mas atualmente não temos como ajudá-lo a verificar o nível restante da bateria por software (porque não há mais pinos de chip disponíveis); você precisa carregar a bateria regularmente ou usar um multímetro para verificar o nível da bateria.
Verificar a tensão da bateria
Devido à limitação do número de pinos no ESP32C3, os engenheiros não tinham pinos extras para alocar à bateria para medição de tensão, a fim de garantir que o XIAO ESP32C3 tenha o mesmo número de GPIOs que os outros da série XIAO disponíveis.
Mas se você preferir usar um pino separado para medição de tensão da bateria, pode consultar a operação genial de msfujino. Também gostaríamos de agradecer especialmente a msfujino por toda a experiência e esforços compartilhados para o XIAO ESP32C3.
A ideia básica de operação é: A tensão da bateria foi dividida por 1/2 com 200k e conectada à porta A0 para que a tensão pudesse ser monitorada.

O datasheet indica nominalmente 2500mV em escala completa para conversão AD, mas há uma grande variação de chip para chip, na verdade ±10%. Meu chip tinha 2700mV em escala completa.
Felizmente, o valor de correção calibrado para cada chip é gravado na área de fusíveis e, usando a função analogReadMilliVolts(), posso ler o valor de tensão corrigido sem fazer nada especial.
O resultado da conversão AD e a tensão medida pelo multímetro concordam bem entre si, com um erro de cerca de 5 mV, o que não é um problema no uso prático.
Além disso, especialmente durante a comunicação, ocorreram erros em forma de pico, que precisaram ser calculados como média de 16 vezes para removê-los.
A seguir está o procedimento para testar a tensão da bateria.
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);
}
O conteúdo acima é do usuário do fórum Seeed Studio msfujino, originalmente publicado em: https://forum.seeedstudio.com/t/battery-voltage-monitor-and-ad-conversion-for-xiao-esp32c/267535. Recomendamos que você tenha boas habilidades práticas e melhores habilidades de soldagem antes de tentar medir a tensão da bateria com base no exposto acima, e tome cuidado com ações perigosas como curto-circuitar baterias.
Modo de sono profundo e despertar
O XIAO ESP32C3 foi projetado para suportar funções de modo de sono profundo e despertar. Para o uso dessas duas funções, fornecemos os seguintes exemplos 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
}
Se você for rápido o suficiente para abrir o monitor serial antes de o XIAO entrar em sono profundo, poderá ver a saída de mensagens conforme mostrado abaixo. Isso significa que o XIAO está agora "dormindo".

Após entrar no modo de sono profundo, a porta do XIAO desaparecerá e você precisará acordá-lo para ver o número da porta novamente!
No programa, estamos usando um nível baixo em D1 para acordar. Isso significa que podemos conectar um botão ao pino D1 e o XIAO acordará quando pressionarmos o botão.
O XIAO ESP32-C3 suporta despertar por GPIO e por temporizador, e os pinos que suportam despertar são D0~D3.
Solução de Problemas
P1: Meu Arduino IDE trava ao fazer upload de código para a placa
Você pode primeiro tentar reiniciar a placa clicando no BOTÃO RESET uma vez enquanto a placa está conectada ao seu PC. Se isso não funcionar, segure o BOTÃO BOOT, conecte a placa ao seu PC enquanto segura o botão BOOT e, em seguida, solte-o para entrar no modo bootloader.
P2: Minha placa não aparece como dispositivo serial no Arduino IDE
Siga a mesma resposta da P1 acima.
P3: Quero regravar o bootloader com o firmware de fábrica
Você pode simplesmente conectar a placa a um PC via USB Type-C e regravar o bootloader com o firmware de fábrica usando o ESP RF Test Tool.
-
Passo 1. Segure o BOTÃO BOOT e conecte o XIAO ESP32C3 ao PC para entrar no modo bootloader
-
Passo 2. Após a conexão, solte o BOTÃO BOOT
-
Passo 3. Visite esta página e baixe o ESP RF Test Tool and Test Guide

- Passo 4. Extraia o .zip, navegue até
ESP_RF_Test_EN\ESP_RF_Test_EN\EspRFTestTool_v2.8_Manuale abra o EspRFTestTool_v2.8_Manual.exe

- Passo 5. Selecione ESP32C3 como ChipType, sua porta COM, 115200 como BaudRate e clique em open

Você verá a seguinte saída

- Passo 6. Selecione Flash e clique em Select Bin

-
Passo 7. Baixe o firmware de fábrica do XIAO ESP32C3 e selecione-o.
-
Passo 8. Por fim, clique em Load Bin

Você verá a seguinte saída quando a gravação for bem-sucedida

Repositório GitHub do MicroPython
Recursos
Design de Hardware
- 📄[Datasheet] Datasheet do Espressif ESP32-C3
- 📄[Esquemático] Esquemático do XIAO ESP32-C3
- 🗃️[Arquivos de Design PCB]
- 🗃️[Bibliotecas de Design PCB]
- 📄[Diagrama de Pinagem] Tabela de Pinagem do XIAO ESP32-C3
Mecânico
- 📄[Dimensões 2D] Dimensões do XIAO ESP32-C3 em DXF
- 🗃️[Dimensões 2D] Dados do Pad Inferior do XIAO ESP32-C3
- 📄[Modelo 3D] Modelo 3D do XIAO ESP32-C3
Software e Ferramentas
- 🗃️[Firmware de Fábrica] Firmware de Fábrica do XIAO ESP32-C3
- 🔗[Biblioteca MicroPython] Biblioteca MicroPython do XIAO ESP32-C3
- 🔗[Platform IO] PlatformIO para Seeed Studio XIAO ESP32-C3
Outros
- 🔗[Wiki] Primeiro Olhar sobre o Seeed Studio XIAO ESP32-C3
- Uma ótima introdução ao XIAO ESP32C3, cobrindo recursos principais e uso básico.
- 📄[Documento] Relatório de Consumo de Energia do XIAO ESP32-C3
Recursos do Curso

Suporte Técnico e Discussão de Produtos
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.



