XIAO ESP32-C5 com Zephyr(RTOS)
O sistema operacional Zephyr é baseado em um kernel de baixo consumo de recursos, projetado para uso em sistemas embarcados e com recursos limitados: desde sensores ambientais embarcados simples e wearables com LED até controladores embarcados sofisticados, smartwatches e aplicações IoT sem fio.
Introdução
Preparação de hardware
Prepare uma placa XIAO ESP32-C5 para dar suporte às seguintes verificações e trabalhos relacionados.
| Seeed Studio XIAO ESP32-C5 |
|---|
![]() |
Preparação de software
Este artigo foi desenvolvido e verificado com base no Ubuntu 24.04 LTS. Consulte a documentação relevante para implantar o ambiente de desenvolvimento no Ubuntu, Mac e Windows. Guia de Introdução ao Zephyr
É oficialmente recomendado usar Ubuntu 24.04 LTS e versões posteriores, o que pode evitar de forma eficaz problemas causados por dependências de ambiente e economizar seu tempo.
- Ative o ambiente virtual.
Crie um novo ambiente virtual:
python3 -m venv ~/zephyrproject/.venv
Ative o ambiente virtual:
source ~/zephyrproject/.venv/bin/activate
- Abra a pasta blinky.
cd ~/zephyrproject/zephyr/samples/basic/blinky
- Atualize o arquivo overlay e o arquivo prj.conf.
A saída padrão de log da porta serial é mapeada para GPIO11 e GPIO12, correspondendo a D6 e D7 no XIAO ESP32‑C5. Para usar USB Serial/JTAG para saída de log, é necessário remapear os pinos da porta serial para os pinos correspondentes do USB Serial/JTAG. Ao mesmo tempo, de acordo com o projeto de hardware do XIAO ESP32‑C5, você também deve configurar o pino do LED do usuário para GPIO27.
Se você não estiver familiarizado com o pinout do XIAO ESP32-C5, pode verificar a Lista de pinos
Crie um novo arquivo overlay
nano ~/zephyrproject/zephyr/samples/basic/blinky/boards/esp32c5_devkitc_esp32c5_hpcore.overlay
Adicione o conteúdo do overlay
Após adicionar o conteúdo, pressione Ctrl + O para salvar o arquivo e, em seguida, Ctrl + X para sair.
Modifique o conteúdo de prj.conf
nano ~/zephyrproject/zephyr/samples/basic/blinky/boards/prj.conf
Modifique o conteúdo para o seguinte, ajustando principalmente a relação de mapeamento da UART.
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_CDC_ACM=y
CONFIG_UART_LINE_CTRL=y
CONFIG_GPIO=y
CONFIG_LOG=y
- Defina a placa alvo como esp32c5_devkitc e inicie a compilação.
hpcore significa High Performance Core. Geralmente é usado para executar programas principais e tarefas com altos requisitos de desempenho.
west build -p always -b esp32c5_devkitc/esp32c5/hpcore ~/zephyrproject/zephyr/samples/basic/blinky
Sintomas de compilação bem-sucedida

- Gravar o dispositivo
Antes de gravar o programa no dispositivo, o XIAO ESP32-C5 deve ser configurado no modo Bootloader Download.
Método: Mantenha pressionado o botão BOOT e, em seguida, ligue o dispositivo.
Verifique o dispositivo de porta serial. O dispositivo geralmente é /dev/ttyACM0.
ls /dev/ttyACM*

Devido a restrições de permissão de acesso ao arquivo de dispositivo da porta serial, é necessário modificar suas permissões para suportar operações de leitura e gravação.
sudo chmod 666 /dev/ttyACM0
Especifique o dispositivo de porta serial e inicie o download.
west flash --esp-device /dev/ttyACM0
Saída de exemplo para download bem-sucedido

- Demonstração do fenômeno
Após o download bem-sucedido, o LED começará a piscar.

Abra a porta serial, e as informações de log de LED ON ou LED OFF serão impressas.
west espressif monitor --port /dev/ttyACM0

Aplicação
O XIAO ESP32-C5 suporta o uso de placas de expansão compatíveis com a série XIAO, permitindo a fácil expansão de periféricos e cenários de aplicação.
Usando a Expansion Board Base para XIAO
A Expansion Board Base para XIAO está equipada com uma interface IIC e uma tela OLED onboard de 0,96 polegada.
Preparação de hardware
| Seeed Studio XIAO ESP32-C5 | Seeed Studio Expansion Board Base para XIAO com Grove OLED |
|---|---|
![]() | ![]() |
Preparação de software
De acordo com a definição de pinos do XIAO ESP32-C5, GPIO23 corresponde a SDA, que é D4; GPIO24 corresponde a SCL, que é D5. É necessário criar e modificar o conteúdo do nó da árvore de dispositivos.
- Abra o exemplo de display.
cd ~/zephyrproject/zephyr/samples/drivers/display
- Adicione o arquivo overlay.
nano esp32c5_devkitc_esp32c5_hpcore.overlay
Adicione o conteúdo do nó da árvore de dispositivos.
#include <zephyr/dt-bindings/pinctrl/esp32c5-pinctrl.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
&pinctrl {
i2c0_custom: i2c0_custom {
group1 {
pinmux = <I2C0_SDA_GPIO23>,
<I2C0_SCL_GPIO24>;
bias-pull-up;
drive-open-drain;
output-high;
};
};
};
&i2c0 {
status = "okay";
clock-frequency = <I2C_BITRATE_FAST>;
pinctrl-0 = <&i2c0_custom>;
pinctrl-names = "default";
ssd1306_128x64: ssd1306@3c {
compatible = "solomon,ssd1306";
reg = <0x3c>;
width = <128>;
height = <64>;
segment-offset = <0>;
page-offset = <0>;
display-offset = <0>;
multiplex-ratio = <63>;
segment-remap;
com-invdir;
prechargep = <0x22>;
};
};
/ {
chosen {
zephyr,display = &ssd1306_128x64;
};
};
- Compile e grave
west build -p always -b esp32c5_devkitc/esp32c5/hpcore ~/zephyrproject/zephyr/samples/drivers/display
sudo chmod 666 /dev/ttyACM0
west flash
Resultado
A Expansion Board Base para XIAO exibirá um efeito de tela.

Usando o Round Display para Seeed Studio XIAO
O Round Display para Seeed Studio XIAO é um display redondo especialmente projetado para a série XIAO. Ele está equipado com o chip driver GC9A01 onboard e adota o protocolo de comunicação SPI padrão.
Preparação de hardware
| Seeed Studio XIAO ESP32-C5 | Round Display para Seeed Studio XIAO |
|---|---|
![]() | ![]() |
Preparação de software
- Abra o exemplo de display.
cd ~/zephyrproject/zephyr/samples/drivers/display
- Adicione o arquivo overlay.
nano esp32c5_devkitc_esp32c5_hpcore.overlay
Adicione o conteúdo do nó da árvore de dispositivos.
esp32c5_devkitc_esp32c5_hpcore.overlay
/*
* Copyright (c) 2026
* SPDX-License-Identifier: Apache-2.0
*
* Standalone overlay for GC9A01 round display on XIAO ESP32-C5.
* Does not depend on seeed_xiao_round_display shield.
*
* Pin mapping (XIAO ESP32-C5):
* D1 = GPIO0 -> display CS (active low)
* D2 = GPIO25 -> SD card CS (active low)
* D3 = GPIO7 -> display DC (active high)
* D4 = GPIO23 -> SDA
* D5 = GPIO24 -> SCL
* D6 = GPIO11 -> TX (disabled, reused for backlight control)
* D7 = GPIO12 -> touch IRQ (active low)
* D8 = GPIO8 -> SCK
* D9 = GPIO9 -> MISO
* D10 = GPIO10 -> MOSI
*/
#include <freq.h>
#include <zephyr/dt-bindings/pinctrl/esp32c5-pinctrl.h>
#include <zephyr/dt-bindings/display/panel.h>
/ {
chosen {
zephyr,display = &gc9a01_round_display;
zephyr,touch = &chsc6x_round_display;
};
lvgl_pointer {
compatible = "zephyr,lvgl-pointer-input";
input = <&chsc6x_round_display>;
};
vbatt {
compatible = "voltage-divider";
io-channels = <&adc0 0>;
output-ohms = <470000>;
full-ohms = <940000>;
};
aliases {
rtc = &pcf8563_round_display;
};
};
&pinctrl {
/* I2C0: SDA = GPIO23 (D4), SCL = GPIO24 (D5) */
i2c0_custom: i2c0_custom {
group1 {
pinmux = <I2C0_SDA_GPIO23>,
<I2C0_SCL_GPIO24>;
bias-pull-up;
drive-open-drain;
output-high;
};
};
/* SPI2: SCK = GPIO8 (D8), MISO = GPIO9 (D9), MOSI = GPIO10 (D10) */
spim2_custom: spim2_custom {
group1 {
pinmux = <SPIM2_MISO_GPIO9>,
<SPIM2_SCLK_GPIO8>;
};
group2 {
pinmux = <SPIM2_MOSI_GPIO10>;
output-low;
};
};
};
/* D6 = GPIO11 reused for backlight, disable UART TX */
&uart0 {
status = "disabled";
};
&adc0 {
status = "okay";
};
&i2c0 {
status = "okay";
clock-frequency = <I2C_BITRATE_FAST>;
pinctrl-0 = <&i2c0_custom>;
pinctrl-names = "default";
/* RTC, address 0x51 */
pcf8563_round_display: pcf8563@51 {
status = "okay";
compatible = "nxp,pcf8563";
reg = <0x51>;
};
/* Touch controller, IRQ = GPIO12 (D7) */
chsc6x_round_display: chsc6x@2e {
status = "okay";
compatible = "chipsemi,chsc6x";
reg = <0x2e>;
irq-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
screen-width = <240>;
screen-height = <240>;
};
};
&spi2 {
status = "okay";
pinctrl-0 = <&spim2_custom>;
pinctrl-names = "default";
/* D1 = GPIO0 -> display CS
* D2 = GPIO25 -> SD card CS */
cs-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>,
<&gpio0 25 GPIO_ACTIVE_LOW>;
/* MIPI DBI SPI wrapper for GC9A01, DC = GPIO7 (D3) */
round_display_mipi_dbi: mipi_dbi {
compatible = "zephyr,mipi-dbi-spi";
spi-dev = <&spi2>;
dc-gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
write-only;
#address-cells = <1>;
#size-cells = <0>;
gc9a01_round_display: gc9a01@0 {
status = "okay";
compatible = "galaxycore,gc9x01x";
reg = <0>;
mipi-max-frequency = <DT_FREQ_M(100)>;
pixel-format = <PANEL_PIXEL_FORMAT_RGB_565>;
width = <240>;
height = <240>;
display-inversion;
};
};
/* SD card slot, CS = GPIO25 (D2) */
sdhc_round_display: sdhc@1 {
compatible = "zephyr,sdhc-spi-slot";
reg = <1>;
status = "okay";
spi-max-frequency = <DT_FREQ_M(24)>;
mmc {
compatible = "zephyr,sdmmc-disk";
disk-name = "SD";
status = "okay";
};
};
};
- Compile e faça o flash
west build -p always -b esp32c5_devkitc/esp32c5/hpcore ~/zephyrproject/zephyr/samples/drivers/display
sudo chmod 666 /dev/ttyACM0
west flash
Resultado
Após fazer o flash do firmware, pressione a tecla e o conteúdo da tela será exibido no Round Display for Seeed Studio XIAO.

Conclusão
Acredito que, até agora, você basicamente dominou o desenvolvimento com Zephyr no XIAO ESP32-C5. Se tiver qualquer ideia criativa, sinta-se à vontade para desenvolver seus projetos e compartilhá-los com a comunidade, permitindo que outros vejam seus excelentes trabalhos.
Suporte técnico e discussão sobre o 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.


