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, 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 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 firmware em 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";
};
  • 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
  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 é 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

  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

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 grande;
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: Desabilita SPI/SPI_NOR;
desabilita 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: 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: mcuboot_secondary (imagem OTA) fica 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 fica 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 por meio dos logs seriais.

  • Toque diretamente no link do código QR ou copie o link para um navegador da 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...