Pular para o conteúdo principal

Introdução ao XIAO nRF54LM20A Sense

Introdução

O Seeed Studio XIAO nRF54LM20A Sense é uma placa de desenvolvimento sem fio compacta e de ultrabaixo consumo de energia, 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, sensoriamento inteligente e 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 (Sistema OFF): ~4,76µA
Deep-Sleep (Sistema OFF, despertar por GRTC): ~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

    O Seeed Studio XIAO nRF54LM20A Sense é uma placa de desenvolvimento sem fio compacta e de ultrabaixo consumo de energia, 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 eficiente de energia. Com suporte a 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, sensoriamento inteligente, TinyML, reconhecimento de gestos, dispositivos acionados por voz e aplicações de IoT alimentadas por bateria.

  • Eficiência de ultrabaixo consumo

    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, tornando a placa ideal para aplicações de sensoriamento 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

Frente do XIAO nRF54LM20A

Verso 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éricos)
SCLI2C_SCLP1.07Linha de clock I2C (IMU e periféricos)
-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.08IMU I2C SDA (IMU onboard)
-IMU_SCLP0.07IMU I2C SCL (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 ao uso com PlatformIO

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.

Preparação de hardware

Você precisa preparar o seguinte:

Seeed Studio XIAO nRF54LM20A Sense

Baixar o VS Code

Baixe de acordo com o sistema que você está usando o VS Code

Instalar a extensão PlatformIO

Abra o VSCode, clique em Extensions, depois pesquise por PlatformIO e selecione para instalar. Após a conclusão da instalação, reinicie o VSCode.

Instalar o pacote de plataforma platform-seeedboards

As placas da série Seeed Studio XIAO usam uma plataforma personalizada do PlatformIO, portanto você precisa instalar manualmente o pacote de plataforma correspondente.

  • Execute o seguinte comando para uma instalação nova:
pio pkg install -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

  • Se você já usou anteriormente placas da série Seeed Studio XIAO no PlatformIO, execute o comando abaixo para atualizar:
pio pkg uninstall -g -p "SeeedStudio" && pio pkg install -g -p "SeeedStudio=https://github.com/Seeed-Studio/platform-seeedboards.git" --force

dica

Se você quiser usar um projeto PlatformIO existente, substitua o conteúdo de platformio.ini como segue:

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

Criar novo projeto

  1. Abra a extensão PlatformIO e selecione Create New Project.

  1. Defina o nome do projeto, selecione a placa de desenvolvimento, o framework e o caminho de armazenamento dos arquivos.

  1. Após a conclusão da criação, aparecerá um aviso para abrir o workspace. Clique em OK.

  1. Navegue até a pasta do projeto. Os arquivos são armazenados no diretório padrão se você não tiver especificado um caminho personalizado.
  • Para padrão do Windows:
<path>: C:\Users\your_name\Documents\PlatformIO\Projects
  • Para padrão do Mac / Linux:
<path>: ~/Documents/PlatformIO/Projects

Este tutorial é desenvolvido com base no Zephyr RTOS. O projeto é composto por três arquivos principais:

  • main.c: Programa principal que contém a lógica da aplicação.
  • app.overlay: Arquivo de overlay do Devicetree para configuração de periféricos de hardware.
  • prj.conf: Arquivo de configuração do projeto para habilitar os módulos necessários do Zephyr.
  1. Adicione o programa main.c
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;
}
  1. Adicione o arquivo app.overlay

O arquivo de overlay do Devicetree não existe no exemplo em branco recém-criado. Você precisa adicioná-lo no diretório zephyr.

app.overlay
/*
* 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;
};
};
  1. Modifique prj.conf e habilite as configurações correspondentes.
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n

Compilar e enviar o programa

Duas formas de compilação e envio são apresentadas abaixo.

  1. Compilar e enviar via botão

  1. Compilar e enviar via linha de comando
pio run -e seeed-xiao-nrf54lm20a -t upload -v

Observar o resultado

Antena Bluetooth

Esta placa usa uma antena Bluetooth externa. Para garantir uma melhor qualidade de sinal Bluetooth e aprimorar sua experiência de uso do Bluetooth, é recomendável 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 diretamente na placa, pois isso pode queimar a placa de circuito. Causar curto-circuito enquanto o circuito estiver energizado representa um risco significativo; é recomendável 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 computador por meio de 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 focará 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 esse recurso facilmente em um ambiente PlatformIO, evitando a complexidade do Zephyr NCS SDK.

XIAO nRF54L15 BLE Advertising Power Consumption

Esquemático de Detecção da Bateria

Função do chip nPM1300-CAA:

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, como também integra carregamento, regulação e medição precisa do nível de carga (por meio de tensão, corrente e 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:

Localizações do IMU e do microfone

IMU

O XIAO nRF54LM20A Sense possui um IMU LSM6DS3TR-C com um acelerômetro de 3 eixos e um giroscópio de 3 eixos.

MIC

O XIAO nRF54LM20A Sense é equipado com um microfone digital MSM261DGT006 para captura de áudio.

FAQ

P1: O que devo fazer se encontrar erros de build após modificar os arquivos de configuração?

Se você já tiver feito o build do projeto e depois modificou arquivos de configuração (como prj.conf, app.overlay ou CMakeLists.txt), é recomendável limpar o cache de build antes de compilar novamente. Isso ajuda a evitar erros de compilação causados por arquivos de cache antigos ou corrompidos.

Execute o seguinte comando:

pio run -t clean

P2: Por que recebo zsh: command not found: openocd após a instalação? (macOS)

Esse problema geralmente ocorre porque o diretório do executável do OpenOCD não foi adicionado ao PATH do sistema. Você pode adicioná-lo permanentemente ao arquivo ~/.zshrc usando os seguintes comandos.

Observação: Esta solução é apenas para macOS.

echo 'export PATH="$HOME/Library/Application Support/Seeed/OpenOCD/tool-openocd/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
openocd --version

Se o número da versão for exibido com sucesso, a configuração foi concluída.


P3: O que devo fazer se o menu suspenso de projetos do PlatformIO falhar após instalar a plataforma Seeed Studio XIAO várias vezes?

Se você instalou diferentes versões da plataforma Seeed Studio XIAO do PlatformIO várias vezes, pacotes de plataforma duplicados ou desatualizados podem causar conflitos de versão e impedir que os projetos do PlatformIO sejam carregados corretamente.

Recomenda-se remover todos os pacotes antigos da plataforma Seeed e deixar o PlatformIO baixar automaticamente a versão oficial mais recente.

Execute o seguinte comando:

rm -rf ~/.platformio/packages/platform-seeed-* ~/.platformio/packages/framework-seeed-*

Após a limpeza, reabra o PlatformIO e faça o build do seu projeto novamente.

Recursos

Seeed Studio XIAO nRF54LM20A

Projeto de hardware

Seeed Studio XIAO nRF54LM20A Sense

Projeto de hardware

Suporte técnico e discussão sobre o produto

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes formas 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...