Pular para o conteúdo principal

Introdução ao Seeed Studio XIAO nRF54LM20A Sense

Introdução

Seeed Studio XIAO nRF54LM20A Sense é uma placa de desenvolvimento sem fio compacta e de consumo ultrabaixo, construída em torno do SoC nRF54LM20A da Nordic Semiconductor. Ela combina um processador Arm Cortex-M33 de 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, conectividade sem fio multiprotocolo de 2,4 GHz, IMU onboard, microfone digital, flash externo de 8 MB, conector de antena IPEX e PMIC nPM1300 para aplicações avançadas de IoT alimentadas por bateria, vestíveis, de detecção inteligente e de IA de borda.

Especificações

Nome do ProdutoSeeed Studio XIAO nRF54LM20ASeeed Studio XIAO nRF54LM20A Sense
ProcessadorArm® Cortex®-M33 128 MHz & Coprocessador RISC-V 128 MHz
RAM512KB
Flash2 MB de memória não volátil (NVM)
Flash Externa8MB de flash externa onboard
PMIC / BateriaPMIC nPM1300 para regulação de energia e carregamento de bateria
Interface

28x pinos GPIO
9x pinos analógicos
1x I2C
1x UART
1x SPI
1x NFC
1x SHPHLD

Onboard

1x LED de usuário (R/G/B 3 cores)
1x LED de carga (indicador de carregamento da bateria)
1x botão de reset
1x botão de usuário
1x conector IPEX4 (para antena externa)

1x LED de usuário (R/G/B 3 cores)
1x LED de carga (indicador de carregamento da bateria)
1x botão de reset
1x botão de usuário
1x conector IPEX4 (para antena externa)
1x IMU de 6 eixos
1x microfone PDM

Conectividade sem fio

Bluetooth LE 6.0 (inclui Channel Sounding)
Bluetooth Mesh
NFC
Thread
Zigbee
Matter
Amazon Sidewalk
Protocolos proprietários de 2,4 GHz

Entrada de energia

Type-C: 5V
Bateria: 3.7V

Modo de baixo consumo (3.7V@2A)/

Light-Sleep: ~9.96µA
Deep-Sleep (System OFF): ~4.76µA
Deep-Sleep (System OFF, GRTC wake-up): ~4.92µA
Ship-Mode: 0.33µA

Compatibilidade de software

Nordic nRF Connect SDK (baseado em Zephyr RTOS)
PlatformIO (baseado em Zephyr RTOS)

Temperatura de operação-20°C a 70°C
Dimensões21 x 17.8mm

Recursos

  • SoC poderoso com conectividade e segurança avançadas

    Seeed Studio XIAO nRF54LM20A Sense é uma placa de desenvolvimento sem fio compacta e de consumo ultrabaixo, alimentada pelo SoC nRF54LM20A da Nordic Semiconductor. Ela apresenta um processador Arm Cortex-M33 de 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, um coprocessador RISC-V de 128 MHz, conectividade sem fio multiprotocolo de 2,4 GHz, IMU onboard, microfone digital, flash externa de 8MB, conector de antena IPEX e PMIC Nordic nPM1300 para gerenciamento de energia eficiente. Com suporte para Bluetooth LE, Bluetooth Channel Sounding, Bluetooth Mesh, Thread, Zigbee, Matter e protocolos proprietários de 2,4 GHz de até 4 Mbps, esta placa foi criada para produtos conectados de próxima geração. Os sensores de movimento e áudio onboard a tornam ideal para vestíveis, detecção inteligente, TinyML, reconhecimento de gestos, dispositivos acionados por voz e aplicações de IoT alimentadas por bateria.

  • Eficiência de energia ultrabaixa

    Baseado no Nordic nRF54LM20A e no PMIC nPM1300, o XIAO nRF54LM20A Sense atinge uma corrente de deep sleep medida de apenas 4,76 µA sob alimentação BAT. Combinado com o PMIC nPM1300 e sua corrente BAT de 0,33 µA em Ship Mode, em operação sem fio ativa ele registra uma corrente média de 3,87 mA com uma entrada de bateria simulada de 3,7 V e potência de TX ajustada para +8 dBm; a placa é ideal para aplicações de detecção alimentadas por bateria de longa duração, vestíveis e dispositivos de IoT sempre ligados.

  • Experiência de desenvolvimento simplificada

    Suporte completo para Nordic nRF Connect SDK e PlatformIO (Zephyr) permite fluxos de trabalho eficientes de desenvolvimento embarcado. (Observação: Arduino IDE atualmente não é suportado)

Visão geral de hardware

Lista de pinos do XIAO nRF54LM20A

Mapa de pinos

Pino XIAOFunçãoPino do chipDescrição
Pinos de energia
VBUSVBUS-Entrada/Saída de energia de 5V
GNDGND-Terra
3V33V3-OUT-Saída de energia de 3,3V
BAT+BAT+-Entrada de bateria (monitorada pelo nPM1300 via I²C)
BAT-BAT--Terminal negativo da bateria
SHPHLDSHPHLD-Controle de modo Ship/Hibernate do PMIC (estado de envio de ultrabaixo consumo)
Pinos de sistema e controle
RESETRESET-Reset da placa
SWCLKSWCLKnRF54LM20A SWCLK / SAMD11 SWCLKClock de fio serial (para nRF54 e SAMD11)
SWDIOSWDIOnRF54LM20A SWDIO / SAMD11 SWDIODados de fio serial (para nRF54 e SAMD11)
SAMD11_RESETRESETSAMD11 RESETReset do coprocessador SAMD11
Pinos de usuário e LED
-USER_BUTTONP0.09Entrada do botão de usuário
-RGB-BP1.23Canal azul do LED RGB onboard
-RGB-GP1.24Canal verde do LED RGB onboard
-RGB-RP1.22Canal vermelho do LED RGB onboard
Pinos de entrada analógica (ADC)
A0AIN0P1.00Entrada analógica 0 / GPIO
A1AIN1P1.31Entrada analógica 1 / GPIO
A2AIN2P1.30Entrada analógica 2 / GPIO
A3AIN3P1.29Entrada analógica 3 / GPIO
A7AIN7P1.03Entrada analógica 7 / GPIO
Pinos I2C
SDAI2C_SDAP1.03Linha de dados I2C (IMU e periférico)
SCLI2C_SCLP1.07Linha de clock I2C (IMU e periférico)
-BAT_SDAP1.18SDA I2C do monitor de bateria (nPM1300)
-BAT_SCLP1.17SCL I2C do monitor de bateria (nPM1300)
Pinos UART
TXUART_TXP1.08Transmissão UART
RXUART_RXP1.09Recepção UART
Pinos SPI
MOSISPI_MOSIP1.06SPI Master Out Slave In
MISOSPI_MISOP1.05SPI Master In Slave Out
SCKSPI_SCKP1.04Clock serial SPI
Pinos de periféricos onboard
-MIC_DATP1.14Linha de dados do microfone
-MIC_CLKP1.13Linha de clock do microfone
-IMU_SDAP0.08SDA I2C da IMU (IMU onboard)
-IMU_SCLP0.07SCL I2C da IMU (IMU onboard)
-IMU_CSP3.12Chip Select da IMU
-IMU_INT1P0.06Interrupção 1 da IMU
-NFCP1.02 / P1.01Pinos de antena NFC
-GRTCP0.04 / P0.05Pinos RTC de uso geral

Introdução

Nesta seção, vamos guiá-lo para começar rapidamente com o XIAO nRF54LM20A por meio do efeito de piscar em várias cores de um LED RGB. Conclua as preparações de hardware e software abaixo para configurar seu XIAO para o desenvolvimento subsequente.

Hardware

Você precisa preparar o seguinte:

Seeed Studio XIAO nRF54LM20A Sense

Software

Configurando o PlatformIO para o XIAO nRF54LM20A

Siga estas etapas simplificadas para configurar seu ambiente de desenvolvimento e implantar seu primeiro aplicativo no XIAO nRF54LM20A.

Instalar a extensão PlatformIO IDE para o VS Code

Se ainda não o fez, instale a extensão PlatformIO IDE diretamente no Visual Studio Code. Esta poderosa extensão transforma o VS Code em um ambiente completo de desenvolvimento embarcado.

  • Abra o VS Code.
  • Vá para a visualização de Extensões (Ctrl+Shift+X ou Cmd+Shift+X).
  • Procure por PlatformIO IDE e clique em Install.

Criar um novo projeto PlatformIO

Aqui você pode escolher qualquer uma das versões de desenvolvimento para criar um arquivo de projeto, eu uso o XIAO ESP32 C3 como exemplo.

Operação umOperação dois

Configurar o platformio.ini para suporte ao Zephyr no XIAO nRF54LM20A

Depois que o projeto for criado, localize o arquivo platformio.ini na raiz do diretório do seu projeto (visível no Explorador do VS Code à esquerda). Este arquivo é o coração da configuração do seu projeto PlatformIO.

Operação três

Você precisa substituir todo o conteúdo do seu arquivo platformio.ini pela seguinte configuração:

[env:seeed-xiao-nrf54lm20a]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
framework = zephyr
board = seeed-xiao-nrf54lm20a

Em seguida, salve novamente o arquivo platformio.ini (Ctrl+S ou Cmd+S) e aguarde até que ele seja carregado completamente.

Você pode fechar este projeto assim que o carregamento for concluído. Esta etapa serve para baixar os arquivos de biblioteca necessários.

dica

Se você já instalou outras bibliotecas XIAO antes, recomendamos atualizar esta biblioteca para a versão mais recente usando o seguinte comando do PlatformIO. Este é o método oficialmente recomendado. Basta executar o comando diretamente no diretório raiz do seu projeto (não é necessário navegar até a pasta platform):

pio pkg update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

Agora, vamos testar sua configuração com um clássico exemplo Blink. Este código irá alternar o LED embutido no seu XIAO nRF54LM20A Sense.

Abaixo está o link para baixar a biblioteca. Você pode optar por baixar este projeto diretamente para sua máquina local e, em seguida, abri-lo diretamente no VS Code. Como alternativa, você pode seguir estas etapas: substituir e adicionar algum código de demonstração. Este processo envolve:

dica

As definições para as placas de desenvolvimento da série Seeed Studio XIAO são armazenadas no repositório platform-seeedboards. Se você estiver usando o XIAO nRF54LM20A Sense, certifique-se de atualizar este repositório para a versão mais recente.


Etapa 1: Criar um novo projeto

Operação quatro

Etapa 2: Abrir o projeto Você pode compilá-lo primeiro para ver se o projeto que você puxou é executado corretamente. Se for, o projeto foi puxado com sucesso. Imagem abaixo:

Operação cinco

Etapa 3: Substituir o código do projeto

  • Abra os arquivos src/main.c e Zephyr/prj.conf e substitua o código original pelo código a seguir.
Operação seis
src/main.c

/*
* Copyright (c) 2016 Intel Corporation
*
* SPDX-License-Identifier: Apache-2.0
*/

#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/pwm.h>
#include <nrfx_power.h>

#define PWM_PERIOD_NS 1000000U
#define STEP_TIME_MS 500

#define LED_R_NODE DT_ALIAS(pwm_led1)
#define LED_G_NODE DT_ALIAS(pwm_led2)
#define LED_B_NODE DT_ALIAS(pwm_led0)

#if !DT_NODE_EXISTS(LED_R_NODE) || !DT_NODE_EXISTS(LED_G_NODE) || !DT_NODE_EXISTS(LED_B_NODE)
#error "This RGB blink demo expects pwm-led0/pwm-led1/pwm-led2 devicetree aliases"
#endif

static const struct pwm_dt_spec led_r = PWM_DT_SPEC_GET(LED_R_NODE);
static const struct pwm_dt_spec led_g = PWM_DT_SPEC_GET(LED_G_NODE);
static const struct pwm_dt_spec led_b = PWM_DT_SPEC_GET(LED_B_NODE);

struct rgb_step {
uint8_t r;
uint8_t g;
uint8_t b;
uint32_t delay_ms;
};

static int pwm_set_u8(const struct pwm_dt_spec *led, uint8_t level)
{
uint32_t duty_ns = (PWM_PERIOD_NS * (uint32_t)level) / 255U;

return pwm_set_dt(led, PWM_PERIOD_NS, duty_ns);
}

static int rgb_set(uint8_t r, uint8_t g, uint8_t b)
{
int ret;

ret = pwm_set_u8(&led_r, r);
if (ret < 0) {
return ret;
}

ret = pwm_set_u8(&led_g, g);
if (ret < 0) {
return ret;
}

ret = pwm_set_u8(&led_b, b);
if (ret < 0) {
return ret;
}

return 0;
}

int main(void)
{
int ret;

#if defined(CONFIG_NRFX_POWER)
nrfx_power_constlat_mode_request();
#endif

if (!device_is_ready(led_r.dev) || !device_is_ready(led_g.dev) || !device_is_ready(led_b.dev)) {
return -1;
}

static const struct rgb_step demo[] = {
{ 255, 0, 0, STEP_TIME_MS },
{ 0, 255, 0, STEP_TIME_MS },
{ 0, 0, 255, STEP_TIME_MS },
{ 255, 255, 0, STEP_TIME_MS },
{ 0, 255, 255, STEP_TIME_MS },
{ 255, 0, 255, STEP_TIME_MS },
{ 255, 255, 255, STEP_TIME_MS },
{ 0, 0, 0, STEP_TIME_MS },
};

while (1) {
for (size_t i = 0; i < ARRAY_SIZE(demo); i++) {
ret = rgb_set(demo[i].r, demo[i].g, demo[i].b);
if (ret < 0) {
return ret;
}
k_msleep(demo[i].delay_ms);
}
}

return 0;
}

Zephyr/prj.conf
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n
Zephyr/app.overlay
  1. Se você precisar modificar ou redefinir o conteúdo de nós da device tree, crie um novo arquivo app.overlay no diretório do Zephyr para vincular explicitamente os nós do dispositivo.
  2. Se você tiver modificado os arquivos da device tree, limpe os arquivos originais antes de recompilar para evitar que o CMake deixe de reconhecer suas alterações.
/*
* Device tree overlay for XIAO nRF54LM20A RGB LED PWM demo.
*
* PWM20 peripheral is used for RGB LED control:
* - Channel 0: P1.22 (Blue LED) -> pwm_led0
* - Channel 1: P1.23 (Red LED) -> pwm_led1
* - Channel 2: P1.24 (Green LED) -> pwm_led2
*/

&pwm20 {
status = "okay";
};

/ {
pwmleds {
compatible = "pwm-leds";

pwm_led0: pwm_led_0 {
pwms = <&pwm20 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "Blue LED";
};

pwm_led1: pwm_led_1 {
pwms = <&pwm20 1 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "Red LED";
};

pwm_led2: pwm_led_2 {
pwms = <&pwm20 2 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
label = "Green LED";
};
};
};

/ {
aliases {
pwm-led0 = &pwm_led0;
pwm-led1 = &pwm_led1;
pwm-led2 = &pwm_led2;
};
};

Agora, conecte seu XIAO nRF54LM20A ao computador via USB. Após salvar, compilar e fazer o download, a luz RGB começará a piscar. No VS Code:

Operação sete

A saída no terminal deve indicar um processo de compilação e gravação bem-sucedido.

Explicação do Código

  • src/main.c Ponto de entrada principal da aplicação que implementa a lógica de demonstração, incluindo configuração de cor do LED, efeitos de respiração, controle de ritmo de piscar, troca de modo baseada em botão e outros comportamentos de interação com o hardware.

  • zephyr/prj.conf Arquivo de configuração do Zephyr RTOS para habilitar/desabilitar componentes do sistema e drivers de periféricos, incluindo registro de logs, UART, PWM, I2C, SPI, gerenciamento de baixo consumo de energia e outras funcionalidades.

Observe o Resultado

Antena Bluetooth

Esta placa utiliza uma antena Bluetooth externa. Para garantir uma melhor qualidade de sinal Bluetooth e aprimorar sua experiência de uso, recomenda-se instalar uma antena Bluetooth. O método de conexão é mostrado abaixo:

Bluetooth antenna connection

Uso da Bateria

O XIAO nRF54LM20A é 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.

Battery wiring
cuidado

Tenha cuidado para não causar curto-circuito entre os terminais positivo e negativo e queimar a bateria e o equipamento durante a soldagem. Se a bateria estiver com carga, nunca a solde na placa, pois isso pode queimar a placa de circuito. Um curto-circuito enquanto o circuito estiver energizado representa um risco significativo; recomenda-se usar um adaptador.

Instruções sobre o uso de baterias:

  1. Utilize baterias qualificadas que atendam às especificações.
  2. O XIAO pode ser conectado ao seu dispositivo computador via cabo de dados enquanto utiliza a bateria; fique tranquilo, pois o XIAO possui um chip de proteção de circuito integrado, sendo seguro.

Detecção de Tensão da Bateria

O XIAO nRF54LM20A integra um recurso de detecção de tensão da bateria que se concentra em gerenciar de forma eficiente as medições de energia da bateria usando o load switch nPM1300-CAA. Este guia se concentrará em analisar a implementação de software da detecção de bateria (especialmente o código main.c) e orientá-lo sobre como implantar e usar facilmente esse recurso em um ambiente PlatformIO, evitando a complexidade do Zephyr NCS SDK.

XIAO nRF54L15 BLE Advertising Power Consumption

Esquemático de Detecção da Bateria

O que o chip nPM1300-CAA faz:

O nPM1300-CAA é um CI de gerenciamento de energia (PMIC) altamente integrado que substitui a função simples de load switch do TPS22916. Ele não apenas controla a comutação da tensão da bateria para monitoramento de baixo consumo, mas também integra carregamento, regulação e medição precisa do nível de carga (via tensão, corrente, temperatura) para maximizar a vida útil da bateria do nRF54LM20A.


nota

O exemplo a seguir funciona tanto para PlatformIO quanto para nRF Connect SDK. Ele pode ser usado diretamente no PlatformIO, enquanto o SDK exige a adição manual de arquivos. Consulte este link

Visão Geral dos Periféricos

A circuitaria periférica desta placa inclui um IMU e um microfone. Você pode ver suas localizações no diagrama abaixo:

IMU and microphone locations

IMU

O XIAO nRF54LM20A possui um IMU LSM6DS3TR-C, com suporte a acelerômetro, giroscópio e magnetômetro de 6 eixos.

MIC

O XIAO nRF54LM20A está equipado com um microfone MSM261DGT006, com suporte a captura de áudio de 16 bits.

FAQ

Problema 1: Travado em Reading CMake configuration no macOS

Ao compilar e enviar programas com o PlatformIO no macOS, o processo pode ficar travado na etapa Reading CMake configuration mesmo após descartar problemas de rede. Isso geralmente é causado por um problema de compatibilidade do macOS que impede a execução correta da ferramenta baseada em Python arm-none-eabi-gdb-py.

Correção recomendada: Substituir o arquivo gdb-py com defeito por um link simbólico.

  1. Navegue até o diretório da ferramenta: /Users/mengdu/.platformio/packages/[email protected]/bin/
  2. Faça backup do arquivo original renomeando arm-none-eabi-gdb-py para arm-none-eabi-gdb-py.broken.bak.
  3. Crie um novo link simbólico chamado arm-none-eabi-gdb-py que aponte para arm-none-eabi-gdb.

Problema 2: Erros de compilação após modificar arquivos de configuração

Se você compilou anteriormente o projeto completo do Zephyr e depois modificou arquivos de configuração, é recomendável limpar o cache de compilação antes de recompilar e enviar. Isso ajuda a evitar erros de compilação causados por arquivos de cache antigos ou corrompidos.

pio run -t clean  // Clean command

Problema 3: Erros de compilação após modificar arquivos de configuração

Alguns cabos USB podem apenas fornecer energia e não transferir dados. Se você não tiver um cabo USB ou não souber se o seu cabo USB pode transmitir dados, você pode verificar o Seeed USB Type-C com suporte a USB 3.1.

Recursos

Seeed Studio XIAO nRF54LM20A

Projeto de Hardware

Seeed Studio XIAO nRF54LM20A Sense

Design de hardware

Suporte técnico e 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.

Loading Comments...