Matter para XIAO nRF54LM20A

Introdução
Com o SoC nRF54LM20A, a série XIAO nRF54LM20A oferece suporte a Bluetooth LE, Matter, Thread, Zigbee e protocolos proprietários de 2,4 GHz, fornecendo uma taxa de dados de pico de 4 Mbps ideal para cenários de baixa latência.
Este tutorial usa duas placas XIAO nRF54LM20A para verificar a rede Matter: uma atua como um roteador de borda conectado ao Home Assistant, e a outra funciona como um dispositivo Matter que entra na rede Thread para exibir dados simulados de temperatura e umidade no painel do Home Assistant.
Agradecimentos ao autor @tutoduino pelas ideias para o WiKi
Este tutorial é baseado no VS Code e na extensão nRF Connect. Se você é iniciante neles, pode consultar XIAO nRF54LM20A nRFConnect SDK Usage
O que é Matter
Matter (anteriormente CHIP) é um padrão universal de camada de aplicação desenvolvido pela Connectivity Standards Alliance (CSA).
- Interoperabilidade entre fornecedores em redes IP (Wi-Fi/Ethernet/Thread)
- Tipos de dispositivos padronizados (por exemplo, lâmpadas, fechaduras de porta, termostatos)
- Comissionamento seguro usando códigos QR/NFC
- Criptografia ponta a ponta com Distributed Compliance Ledger (DCL)
O que é OpenThread
OpenThread é uma implementação de código aberto do protocolo de rede Thread. Ele cria redes mesh de baixo consumo e seguras para dispositivos IoT usando tecnologia de rádio IEEE 802.15.4. Principais recursos:
- Suporte IPv6 integrado (6LoWPAN)
- Topologia de rede auto-organizável
- Criptografia AES-128 para todas as comunicações
- Compatível com dispositivos tão pequenos quanto lâmpadas ou sensores
Qual é a relação entre Matter e Thread
Agradecimentos ao autor@tutoduino por uma explicação muito detalhada deste ponto, citando-a aqui!
Após esta breve introdução ao Matter e ao Thread, agora você entende que Thread e Matter têm propósitos diferentes e operam em camadas distintas da pilha de tecnologia. Para recapitular:
Thread:
- Thread é um protocolo de rede mesh sem fio e de baixo consumo projetado para dispositivos de casa conectada. Ele fornece uma forma confiável e segura para que os dispositivos se comuniquem entre si e com a internet.
- Thread cria uma rede local que permite que os dispositivos conversem entre si mesmo se a internet cair.
Matter:
- Matter é um protocolo de camada de aplicação que fica sobre protocolos de rede como Thread, Wi-Fi e Ethernet. Ele busca simplificar e unificar o ecossistema de casa inteligente, garantindo que dispositivos de diferentes fabricantes possam funcionar juntos sem problemas.
- Matter define como os dispositivos se comunicam e interagem na camada de aplicação, com foco em interoperabilidade, segurança e facilidade de uso.
Conexão entre Thread e Matter:
- Matter pode usar Thread como um de seus protocolos de rede subjacentes. Isso significa que dispositivos usando o protocolo Matter podem se comunicar em uma rede Thread.
- A combinação de Matter e Thread permite um ecossistema de casa inteligente robusto, seguro e interoperável, onde os dispositivos podem se comunicar localmente e de forma eficiente.

Introdução ao Home Assistant
Home Assistant é uma poderosa plataforma de automação residencial de código aberto que permite controlar e monitorar seus dispositivos de casa inteligente a partir de uma interface única e unificada. Ele atua como o hub central da sua casa inteligente, permitindo automatizar rotinas, monitorar sensores e criar um ambiente mais inteligente.

Preparação de hardware
São necessários dois XIAO nRF54LM20A Sense para a preparação de hardware.
| Home Assistant Green | SeeedStudio XIAO nRF54LM20A × 2 |
|---|---|
![]() | ![]() |
Antena Bluetooth
Esta placa usa uma antena Bluetooth externa. Para garantir melhor qualidade de sinal Bluetooth e aprimorar sua experiência de uso de Bluetooth, é recomendável instalar uma antena Bluetooth. O método de conexão é mostrado abaixo:

Conectar ao HomeAssistant via Matter
Instalar o Add-on
Navegue até Settings -> Apps e selecione Install app para adicionar o add-on.
- Adicione o Open Thread Border Router e modifique sua configuração.
- Vá para Settings -> Apps, selecione Install app para adicionar o add-on, depois procure por Open Thread Border Router e conclua a instalação.

- Adicione o Matter Server

Configurar o roteamento Thread
Siga os passos abaixo para gravar firmware em um XIAO nRF54LM20A como Coprocessor para emular um dispositivo roteador de borda.
Dispositivos de roteamento Thread como Connect ZBT-1, Connect ZBT-2 ou Home Assistant Yellow também podem ser usados.
Grave o XIAO nRF54LM20A com o firmware RCP Coprocessor
Este tutorial é baseado no VS Code e na extensão nRF Connect. Se você é iniciante neles, pode consultar XIAO nRF54LM20A nRFConnect SDK Usage
- Selecione Create a new application, escolha copy a sample, procure por Coprocessor e crie o projeto.

- Adicione e modifique arquivos de configuração de device tree na pasta boards. Desative a configuração I2C usada pelo PMIC para evitar conflitos e defina a taxa de baud da UART20 para 1000000.
Caminho do arquivo: ~/boards:
- xiao_nrf54lm20a_nrf54lm20a_cpuapp.overlay.
&uart20 {
current-speed = <1000000>;
status = "okay";
hw-flow-control;
};
/ {
chosen {
zephyr,ot-uart = &uart20;
};
};
&pmic_i2c {
status = "disabled";
};
- xiao_nrf54lm20a_nrf54lm20a_cpuapp.conf.
CONFIG_SPI_NOR=n
# Increase Main and shell stack sizes to avoid stack overflow
# while using CRACEN
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_I2C_GPIO=n
CONFIG_MFD_NPM13XX=n
CONFIG_NPM13XX_CHARGER=n
- Compile e habilite a configuração.
- Configure e compile o projeto.

- Grave o firmware usando
west flash.

- Para detectar o dispositivo no Home Assistant, conecte o XIAO nRF54LM20A gravado com o firmware Coprocessor ao Home Assistant Green via USB-C.
- Abra a Add-on store, localize Open Thread Border Router e configure-o. Você verá o dispositivo chamado XIAO nRF54LM20A; configure a taxa de baud e outros parâmetros e, em seguida, salve as configurações.

- Selecione Start na aba Info.

- Você pode verificar o status da configuração em Log — a configuração é bem-sucedida como mostrado na figura abaixo.

- Vá para Settings -> Thread para descobrir o dispositivo, que normalmente é chamado de
ha-thread-c6c8.

Configurar o dispositivo Matter
- Escolha Create a new application, selecione copy a sample, pesquise por Matter-Template e crie o projeto.

- Modifique os arquivos de device tree e os arquivos de configuração.
-
Devido às diferenças de hardware entre o XIAO nRF54LM20A e a placa de avaliação oficial da Nordic, são necessárias revisões nos arquivos de device tree e de configuração. A placa de avaliação oficial é equipada com um chip de flash externo MX25R64, enquanto o XIAO nRF54LM20A usa um PY25Q64; ajustes correspondentes devem ser feitos.
-
Os arquivos a serem adicionados estão listados abaixo:

Caminho do arquivo: ~/boards:
- xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.overlay
- xiao_nrf54lm20a_nrf54lm20a_cpuapp.overlay
xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.overlay
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
/ {
aliases {
/* Use watchdog wdt31 as the application watchdog */
watchdog0 = &wdt31;
};
};
&py25q64 {
status = "disabled";
};
&wdt31 {
status = "okay";
};
xiao_nrf54lm20a_nrf54lm20a_cpuapp.overlay
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
/ {
chosen {
nordic,pm-ext-flash = &py25q64;
};
aliases {
/* Use watchdog wdt31 as the application watchdog */
watchdog0 = &wdt31;
};
};
&py25q64 {
status = "okay";
};
&wdt31 {
status = "okay";
};
Caminho do arquivo: ~/sysbuild/mcuboot/boards:
xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.conf
#
# Copyright (c) 2025 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
CONFIG_HW_STACK_PROTECTION=n
CONFIG_BOOT_WATCHDOG_FEED=n
# Disable all debug features
CONFIG_ASSERT_VERBOSE=n
CONFIG_ASSERT_NO_FILE_INFO=y
CONFIG_PRINTK=n
# Bootloader size optimization to fit into 28 KB partition.
# These options can be safely disabled because in this configuration,
# the secondary slot resides in the internal RRAM, so features
# needed to handle the external flash are not needed.
CONFIG_SPI_NOR=n
CONFIG_SPI=n
# Increase the maximum number of sectors to 512 to fit the big image size (> 1024 kB).
CONFIG_BOOT_MAX_IMG_SECTORS=512
# Currently, without tickless kernel, the SYSCOUNTER value after the software
# reset is not set properly and due to that the first system interrupt is not called
# in the proper time - the SYSCOUNTER value is set to the value from before
# reset + 1. Hence, the reboot time increases more and more.
# To avoid it enable tickless kernel for mcuboot.
CONFIG_TICKLESS_KERNEL=y
xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.overlay
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
/* Disable the external flash, as it's not needed
* for the configuration with secondary slot residing
* in the internal RRAM.
*/
&py25q64 {
status = "disabled";
};
xiao_nrf54lm20a_nrf54lm20a_cpuapp.conf
#
# Copyright (c) 2025 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#
CONFIG_HW_STACK_PROTECTION=n
CONFIG_BOOT_WATCHDOG_FEED=n
# XIAO nRF54LM20A uses SPI NOR external flash (PY25Q64)
CONFIG_GPIO=y
CONFIG_SPI=y
CONFIG_SPI_NOR=y
CONFIG_SPI_NOR_SFDP_DEVICETREE=y
CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096
# Increase the maximum number of sectors to 512 to fit the big image size (> 1024 kB).
CONFIG_BOOT_MAX_IMG_SECTORS=512
# Currently, without tickless kernel, the SYSCOUNTER value after the software
# reset is not set properly and due to that the first system interrupt is not called
# in the proper time - the SYSCOUNTER value is set to the value from before
# reset + 1. Hence, the reboot time increases more and more.
# To avoid it enable tickless kernel for mcuboot.
CONFIG_TICKLESS_KERNEL=y
xiao_nrf54lm20a_nrf54lm20a_cpuapp.overlay
/*
* Copyright (c) 2025 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
*/
/ {
chosen {
nordic,pm-ext-flash = &py25q64;
};
};
&py25q64 {
status = "okay";
};
Caminho do projeto ~/ :
pm_static_xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.yml
mcuboot:
address: 0x0
region: flash_primary
size: 0xA000
mcuboot_pad:
address: 0xA000
region: flash_primary
size: 0x800
app:
address: 0xA800
region: flash_primary
size: 0x125800
mcuboot_primary:
address: 0xA000
orig_span: &id001
- app
- mcuboot_pad
region: flash_primary
size: 0x126000
span: *id001
mcuboot_primary_app:
address: 0xA800
orig_span: &id002
- app
region: flash_primary
size: 0x125800
span: *id002
mcuboot_secondary:
address: 0x130000
orig_span: &id003
- mcuboot_secondary_pad
- mcuboot_secondary_app
region: flash_primary
size: 0xC0000
span: *id003
mcuboot_secondary_pad:
region: flash_primary
address: 0x130000
size: 0x800
# Compression rate 34.75%
mcuboot_secondary_app:
region: flash_primary
address: 0x130800
size: 0xBF800
factory_data:
address: 0x1F0000
region: flash_primary
size: 0x1000
settings_storage:
address: 0x1F1000
region: flash_primary
size: 0xC000
pm_static_xiao_nrf54lm20a_nrf54lm20a_cpuapp.yml
mcuboot:
address: 0x0
region: flash_primary
size: 0xD000
mcuboot_pad:
address: 0xD000
region: flash_primary
size: 0x800
app:
address: 0xD800
region: flash_primary
size: 0x1E2800
mcuboot_primary:
address: 0xD000
orig_span: &id001
- app
- mcuboot_pad
region: flash_primary
size: 0x1E3000
span: *id001
mcuboot_primary_app:
address: 0xD800
orig_span: &id002
- app
region: flash_primary
size: 0x1E2800
span: *id002
factory_data:
address: 0x1F0000
region: flash_primary
size: 0x1000
settings_storage:
address: 0x1F1000
region: flash_primary
size: 0xC000
mcuboot_secondary:
address: 0x0
orig_span: &id003
- mcuboot_secondary_pad
- mcuboot_secondary_app
region: external_flash
size: 0x1E3000
span: *id003
mcuboot_secondary_pad:
region: external_flash
address: 0x0
size: 0x800
mcuboot_secondary_app:
region: external_flash
address: 0x800
size: 0x1E2800
external_flash:
address: 0x1E3000
size: 0x5DB000
device: PY25Q64
region: external_flash
Descrição da finalidade dos arquivos adicionados
| File | Description |
|---|---|
1. Arquivos de Overlay da Placa (boards/)Overlays de device tree em nível de aplicação para o XIAO nRF54LM20A. | |
xiao_nrf54lm20a_nrf54lm20a_cpuapp.overlay | Variante com Flash externa: Habilita a Flash SPI NOR PY25Q64 como slot secundário de OTA; |
xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.overlay | Variante com Flash interna: Desabilita a PY25Q64 (reduz o custo de BOM e o consumo de energia); |
2. Arquivos de Configuração do MCUboot (sysbuild/mcuboot/boards/)MCUboot é uma imagem Zephyr independente que requer seus próprios arquivos Kconfig e de overlay de device tree. | |
xiao_nrf54lm20a_nrf54lm20a_cpuapp.conf | Flash externa — Kconfig: Habilita os drivers SPI/SPI_NOR para acesso à PY25Q64; |
xiao_nrf54lm20a_nrf54lm20a_cpuapp.overlay | Flash externa — Overlay DTS: Habilita a PY25Q64 como |
xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.conf | Flash interna — Kconfig: Desabilita SPI/SPI_NOR; |
xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.overlay | Flash interna — Overlay DTS: Desabilita a PY25Q64, garantindo que o MCUboot use apenas a Flash interna. |
3. Arquivos de Partição Estática (pm_static_*.yml)Tabelas de partição estática para o Partition Manager, definindo todo o layout de Flash para MCUboot, APP, OTA, Factory Data e Settings. | |
pm_static_xiao_nrf54lm20a_nrf54lm20a_cpuapp.yml | Variante com Flash externa: |
pm_static_xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.yml | Variante com Flash interna: |
Gravar e fazer download para o dispositivo
- Prossiga com a configuração de build.

- Selecione outro XIAO nRF54LM20A como dispositivo de destino, inicie o OpenTerminal e grave o firmware usando o comando
west flash.

Conecte o dispositivo Matter usando o aplicativo Home Assistant.
- Conecte o dispositivo Matter e gere o código QR do dispositivo.
- No ambiente de desenvolvimento NCS, abra o nRF Serial Terminal.

- Uma lista de portas seriais aparecerá na parte superior da interface; selecione a porta serial correspondente ao XIAO nRF54LM20A.

- As informações do dispositivo Matter e o link do código QR de pareamento serão exibidos por meio dos logs seriais.

- Toque diretamente no link do código QR ou copie o link para um navegador da web separadamente.

- Baixe o aplicativo Home Assistant.
- A inclusão do dispositivo Matter no Home Assistant é concluída por meio do aplicativo móvel; escaneie o código QR fornecido para baixar o aplicativo.

- Vá para as configurações para adicionar o dispositivo Matter e, em seguida, escaneie o código QR gerado no navegador para finalizar o pareamento.
![]() | ![]() | ![]() | ![]() | ![]() |
- As informações do dispositivo Matter podem ser visualizadas no painel do navegador do Home Assistant.
![]() | ![]() | ![]() |
- Adicione o dispositivo ao painel.

- Os dados em tempo real do dispositivo Matter serão exibidos no painel.

Resumo
Seguindo os procedimentos acima, configuramos uma rede Matter over Thread usando dois módulos XIAO nRF54LM20A e conectamos a rede com sucesso ao Home Assistant. O protocolo Matter oferece suporte ao acesso a uma gama mais ampla de tipos de sensores, enquanto o demo acima apenas simula a aquisição de dados de temperatura e umidade. Ao integrar outros dispositivos sensores, verifique se Clusters correspondentes estão definidos na especificação Matter. Para mais detalhes, consulte a documentação oficial em Home Assistant Matter.
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.









