Primeiros Passos com o Seeed Studio XIAO ESP32-C5
Introdução
| Seeed Studio XIAO ESP32-C5 |
|---|
![]() |
Especificação
| Item | Seeed Studio XIAO ESP32-C5 | Seeed Studio XIAO ESP32-S3 | Seeed Studio XIAO ESP32-C3 | Seeed Studio XIAO ESP32-C6 |
|---|---|---|---|---|
| Processador | ESP32-C5 RISC-V 32-bit @240 MHz | ESP32R8N8 32-bit Xtensa LX7 dual-core @240 MHz | ESP32-C3 32-bit RISC-V @160 MHz | ESP32-C6 32-bit RISC-V @160 MHz |
| Conectividade sem fio | Wi-Fi 6 de banda dupla 2,4 GHz & 5 GHz e Bluetooth 5 (LE) | Wi-Fi 2,4 GHz e Bluetooth 5 (LE) | Wi-Fi 2,4 GHz e Bluetooth 5 (LE) | 2,4 GHz Wi-Fi 6, Bluetooth 5 (LE) |
| Memória | 8 MB PSRAM & 8 MB Flash | 8 MB PSRAM & 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 |
| Pinos PWM/Analógicos | 11 / 5 | 11 / 9 | 11 / 4 | 11 / 7 |
| Botões onboard | Botão Reset / Boot | Botão Reset / Boot | Botão Reset / Boot | Botão de Reset / Botão de Boot |
| LEDs onboard | LED de Carga / USER LED | LED de Carga / USER LED | LED de Carga | LED de Carga / USER LED |
| Chip de carregamento de bateria | SGM40567 | SGM40567 | ETA4054S2F | SGM40567 |
Recursos
- CPU poderosa: ESP32-C5, processador RISC-V de 32 bits single-core que opera em até 240 MHz
- Subsistema Wi‑Fi completo: Subsistema Wi-Fi 6 de banda dupla (2,4 GHz e 5 GHz) em conformidade com IEEE 802.11 a/b/g/n/ac/ax, suportando Station, SoftAP, operação concorrente SoftAP+Station e modo promíscuo (monitor).
- Subsistema Bluetooth LE: Suporta recursos do Bluetooth 5 e Bluetooth mesh
- 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.
- Ricos recursos on-chip: 384 KB de SRAM on-chip, 320 KB de ROM
- Tamanho ultrapequeno: Tão pequeno quanto um polegar (21x17,8 mm) fator de forma clássico da série XIAO para dispositivos vestíveis e projetos pequenos
- Recursos de segurança confiáveis: Aceleradores de hardware criptográfico com suporte a AES-128/256, hash da família SHA, HMAC, um periférico dedicado de assinatura digital e Secure Boot (V2).
- Interfaces ricas: 1×I2C, 1×SPI, 2×UART, até 11×GPIO (compatíveis com PWM), 5×canais ADC e uma interface de ilha de solda JTAG (pads no lado inverso).
- Componentes em um único lado, design para montagem em superfície
Visão geral de hardware
| Diagrama de indicação do XIAO ESP32-C5 |
|---|
![]() |
| Lista de pinos do XIAO ESP32-C5 |
![]() |
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 | 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, Dados I2C | |
| D5 | SCL | GPIO24 | GPIO, Clock I2C | |
| D6 | TX | GPIO11 | GPIO, Transmissão UART | |
| D7 | RX | GPIO12 | GPIO, Recepção UART | |
| D8 | SCK | GPIO8 | TOUCH7 | GPIO, Clock SPI |
| D9 | MISO | GPIO9 | TOUCH8 | GPIO, Dados SPI |
| D10 | MOSI | GPIO10 | TOUCH9 | GPIO, Dados 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 | Leitura do valor de tensão da bateria | ||
| ADC_CRL | GPIO26 | Controla (ativa/desativa) o circuito de medição para economizar energia. | ||
| Reset | CHIP_EN | EN | ||
| Boot | GPIO28 | Entrar no modo Boot | ||
| U.FL-R-SMT1 | LNA_IN | Antena UFL | ||
| CHARGE_LED | VCC_3V3 | CHG-LED_Vermelho | ||
| USER_LED | GPIO27 | Luz de usuário_Amarela |
Primeiros Passos
Para permitir que você comece a usar o XIAO ESP32-C5 mais rapidamente, leia a preparação de hardware e software abaixo para preparar o XIAO.
Hardware
Você precisa preparar o seguinte:
- 1 x Seeed Studio XIAO ESP32-C5
- 1 x Computador
- 1 x Cabo USB Tipo-C
| Seeed Studio XIAO ESP32-C5 |
|---|
![]() |
Alguns cabos USB só conseguem fornecer energia e não podem transferir dados. Se você não tiver um cabo USB ou não souber se o seu cabo USB pode transmitir dados, você pode conferir Seeed USB Type-C support USB 3.1.
Software
A ferramenta de programação recomendada para o XIAO ESP32-C5 é a 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 o Arduino, recomendamos fortemente que você consulte Getting Started with Arduino.
-
Passo 1. Baixe e instale a versão estável da Arduino IDE de acordo com o seu sistema operacional.
-
Passo 2. Inicie o aplicativo Arduino.
-
Passo 3. Abra BOARDS MANAGER -> Pesquise esp32 -> Instale a versão 3.3.5 ou uma versão superior

Fazer upload do programa
Vamos pegar como exemplo a seguir um programa de iluminação
Passo 1. Selecione XIAO_ESP32C5 e a PORTA. Se você não souber qual é a PORTA, pode reconectar o XIAO_ESP3-2C5 para verificar.

Passo 2. Cole o código no seu Sketch
LED_BUILTIN corresponde ao LED L na placa de desenvolvimento.
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);
}
Passo 3. Clique e faça o Upload

Demonstração do efeito:
Depois de carregar o programa, você verá o LED indicador L piscando em intervalos de 1 segundo e, ao mesmo tempo, o monitor serial imprimirá LED ON e LED OFF.


Modo de Deep Sleep
O XIAO ESP32-C5 possui funções de deep sleep e de despertar. Este exemplo utiliza um disparo de nível alto no pino D0 para acordar o dispositivo do deep sleep.
É importante observar que esta é uma opção configurável, já que o hardware suporta tanto disparos de nível alto quanto de nível baixo para acomodar diferentes projetos de circuito.
#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(){}
Se você for rápido o suficiente para ligar o monitor serial antes que o XIAO entre em deep sleep, então poderá ver a mensagem de saída como mostrado abaixo. Isso significa que o XIAO agora está adormecido. Em seguida, você também pode visualizá-lo e ativá-lo pressionando o botão. Você também pode observar o estado ligado/desligado do LED L para verificar se o dispositivo foi despertado. Uma vez acordado, ele exibirá um efeito de piscar.

Após entrar no modo de deep sleep, a porta do XIAO desaparecerá e você precisará acordá-lo para ver novamente o número da porta!
O XIAO ESP32-C5 suporta despertar por GPIO e por temporizador. Para evitar a perda de capacidades de depuração de hardware e o aumento da dificuldade de gravação de firmware durante o desenvolvimento de baixo consumo, é altamente recomendável que os pinos JTAG (MTMS, MTDI, MTCK, MTDO) sejam reservados para uso dedicado e não sejam utilizados como fontes de despertar para o modo de deep sleep.
Uso de bateria
O XIAO ESP32-C5 é capaz de usar uma bateria de lítio de 3,7 V como entrada de alimentação. Você pode consultar o diagrama a seguir para o método de fiação.

Tenha cuidado para não provocar curto-circuito entre os terminais positivo e negativo e queimar a bateria e o equipamento durante a soldagem.
Instruções sobre o uso de baterias:
- Utilize baterias qualificadas que atendam às especificações.
- O XIAO pode ser conectado ao seu computador por meio de um cabo de dados enquanto utiliza a bateria; fique tranquilo, pois o XIAO possui um chip de proteção de circuito integrado, sendo seguro.
- Quando o XIAO ESP32-C5 é alimentado por uma bateria, o LED C acenderá. Você pode usar isso como base para determinar se o gerenciamento de carregamento foi realizado.
Verificar a tensão da bateria
O XIAO ESP32-C5 é equipado com o chip de carregamento de bateria SGM40567 e o chip de aquisição de tensão de bateria TPS22916CYFPR. Você pode habilitar o BAT_VOLT_PIN_EN para ativar a função de aquisição de tensão da bateria e ler a tensão da bateria através do BAT_VOLT_PIN.
No XIAO ESP32C5, o pino correspondente a BAT_VOLT_PIN é o GPIO6 e o pino correspondente a BAT_VOLT_PIN_EN é o 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 função é usada para ler a tensão analógica atual do pino
BAT_VOLT_PINe retornar um valor de tensão calibrado em milivolts (mV). - Diferente da função convencional
analogRead(), que fornece apenas um valor bruto de ADC,analogReadMilliVolts()aplica automaticamente os parâmetros de calibração de fábrica incorporados no chip. Isso resulta em maior precisão, melhor linearidade na medição de tensão e elimina a necessidade de conversão manual de ADC para tensão. - Durante o processo de amostragem de tensão, é realizada uma amostragem repetida 16 vezes através de um loop
for, e os resultados são acumulados. O objetivo da amostragem múltipla é suprimir o ruído transitório e erros discretos, melhorando assim a estabilidade da medição. Por fim, o valor acumulado é dividido pelo número de amostras (16) para obter um valor de tensão médio mais suave e confiável.
- Esta função é usada para ler a tensão analógica atual do pino

De acordo com o datasheet, a faixa efetiva de medição do ESP32-C5 cobre 0~3300 mV. Portanto, o circuito interno de aquisição de tensão da bateria do XIAO ESP32-C5 é projetado com dois resistores de 100K para divisão de tensão, permitindo a leitura precisa dos valores.
Recursos
Projeto de Hardware
- 📄[Datasheet] Espressif ESP32-C5 Datasheet
- 📄[Esquemático] XIAO ESP32-C5 Schematic
- 🗃️[Arquivos de Projeto PCB] XIAO ESP32-C5 KiCad Project
- 🗃️[Bibliotecas de Projeto PCB]
- Símbolos SCH KiCad da Série XIAO
- 📄[Diagrama de Pinagem] XIAO ESP32-C5 Pinout Sheet
Projeto Mecânico
- 📄[Modelo 3D] XIAO ESP32-C5 3D Model
Suporte Técnico & Discussão sobre o Produto
Obrigado por escolher nossos produtos! Estamos aqui para oferecer 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.



