Pular para o conteúdo principal

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

dica

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, aqui citada!

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 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 por meio de uma rede Thread.
  • A combinação de Matter e Thread permite um ecossistema de casa inteligente robusto, seguro e interoperável, no qual 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 GreenSeeedStudio 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:

Bluetooth antenna connection

Conectar ao HomeAssistant via Matter​

Instalar o Add-on​

Navegue até Settings -> Apps e selecione Install app para adicionar o add-on.

  1. 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.
  1. Adicione o Matter Server

Configurar o roteamento Thread​

Siga os passos abaixo para gravar um XIAO nRF54LM20A como Coprocessor para emular um dispositivo roteador de borda.

dica

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​

dica

Este tutorial é baseado no VS Code e na extensão nRF Connect. Se você é iniciante neles, pode consultar XIAO nRF54LM20A nRFConnect SDK Usage

  1. Selecione Create a new application, escolha copy a sample, procure por Coprocessor e crie o projeto.
  1. 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";
};

&pmic {
status = "disabled";

charger {
status = "disabled";
};

regulators {
status = "disabled";

LDO1 {
status = "disabled";
};
};
};
  • xiao_nrf54lm20a_nrf54lm20a_cpuapp.conf.
#
# Copyright (c) 2025 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

CONFIG_SPI_NOR=n

# Increase Main and shell stack sizes to avoid stack overflow
# while using CRACEN
CONFIG_MAIN_STACK_SIZE=2048
  1. Compile e habilite a configuração.
  • Configure e compile o projeto.
  • Grave o firmware usando west flash.

  1. 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 será bem-sucedida como mostrado na figura abaixo.
  • Vá para Settings -> Thread para descobrir o dispositivo, que normalmente é nomeado como ha-thread-c6c8.

Configurar o dispositivo Matter​

  1. Escolha Create a new application, selecione copy a sample, pesquise por Matter-Template e crie o projeto.
  1. 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
dica

Para os dois últimos arquivos, você precisa criar os arquivos manualmente e colar o código

Descrição da finalidade dos arquivos adicionados​

FileDescription
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;
habilita o watchdog wdt31;
declara nordic,pm-ext-flash para que o Partition Manager possa reconhecer a Flash externa.

xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.overlay

Variante com Flash interna: desabilita a PY25Q64 (reduz o custo de BOM e o consumo de energia);
coloca o slot secundário de OTA na RRAM interna;
habilita o watchdog wdt31.

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;
define BOOT_MAX_IMG_SECTORS=512 para firmware de grande porte;
habilita o kernel sem ticks (tickless).

xiao_nrf54lm20a_nrf54lm20a_cpuapp.overlay

Flash externa — Overlay DTS: habilita a PY25Q64 como pm-ext-flash, permitindo que o MCUboot acesse a imagem OTA na Flash externa durante a inicialização.

xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.conf

Flash interna — Kconfig: Desativa SPI/SPI_NOR;
desativa a saída de depuração (PRINTK=n, ASSERT=n) para reduzir o tamanho do MCUboot para a partição de 40 KB;
define BOOT_MAX_IMG_SECTORS=512.

xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.overlay

Flash interna — Overlay DTS: Desativa 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 da Flash para MCUboot, APP, OTA, Dados de Fábrica e Configurações.
pm_static_xiao_nrf54lm20a_nrf54lm20a_cpuapp.yml

Variante com Flash externa: mcuboot_secondary (imagem OTA) reside na Flash externa (PY25Q64);
o tamanho utilizável do APP é 0x1E2800 (~1,9 MB).

pm_static_xiao_nrf54lm20a_nrf54lm20a_cpuapp_internal.yml

Variante com Flash interna: mcuboot_secondary reside na Flash interna;
MCUboot reduzido para 0xA000 (40 KB);
APP reduzido para 0x125800 (~1,2 MB);
a imagem OTA requer compactação.

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.​

  1. 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 via logs seriais.

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

  1. 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.

  1. 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.
  1. As informações do dispositivo Matter podem ser visualizadas no painel do navegador do Home Assistant.
  1. Adicione o dispositivo ao painel.

  1. 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.

Loading Comments...