Saltar al contenido principal

Primeros pasos con Seeed Studio XIAO nRF54LM20A Sense

Introducción

Seeed Studio XIAO nRF54LM20A Sense es una placa de desarrollo inalámbrica compacta y de ultra bajo consumo basada en el SoC nRF54LM20A de Nordic Semiconductor. Combina un procesador Arm Cortex-M33 de 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, conectividad inalámbrica multiprotocolo de 2,4 GHz, IMU integrada, micrófono digital, 8 MB de memoria flash externa, conector de antena IPEX y PMIC nPM1300 para aplicaciones avanzadas de IoT alimentadas por batería, wearables, sensado inteligente y Edge AI.

Especificaciones

Nombre del productoSeeed Studio XIAO nRF54LM20ASeeed Studio XIAO nRF54LM20A Sense
ProcesadorArm® Cortex®-M33 128 MHz y coprocesador RISC-V 128 MHz
RAM512KB
Flash2 MB de memoria no volátil (NVM)
Flash externa8MB de memoria flash externa integrada
PMIC / BateríaPMIC nPM1300 para regulación de energía y carga de batería
Interfaz

28x pin GPIO
9x pin analógico
1x I2C
1x UART
1x SPI
1x NFC
1x SHPHLD

Integrado en placa

1x LED de usuario (R/G/B 3 colores)
1x LED de carga (indicador de carga de batería)
1x botón de reinicio
1x botón de usuario
1x conector IPEX4 (para antena externa)

1x LED de usuario (R/G/B 3 colores)
1x LED de carga (indicador de carga de batería)
1x botón de reinicio
1x botón de usuario
1x conector IPEX4 (para antena externa)
1x IMU de 6 ejes
1x micrófono PDM

Conectividad inalámbrica

Bluetooth LE 6.0 (incluye Channel Sounding)
Bluetooth Mesh
NFC
Thread
Zigbee
Matter
Amazon Sidewalk
Protocolos propietarios de 2,4 GHz

Entrada de alimentación

Type-C: 5V
Batería: 3.7V

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

Light-Sleep: ~9.96µA
Deep-Sleep (sistema OFF): ~4.76µA
Deep-Sleep (sistema OFF, activación GRTC): ~4.92µA
Ship-Mode: 0.33µA

Compatibilidad de software

Nordic nRF Connect SDK (basado en Zephyr RTOS)
PlatformIO (basado en Zephyr RTOS)

Temperatura de trabajo-20°C a 70°C
Dimensiones21 x 17.8mm

Características

  • SoC potente con conectividad y seguridad avanzadas

    Seeed Studio XIAO nRF54LM20A Sense es una placa de desarrollo inalámbrica compacta y de ultra bajo consumo impulsada por el SoC nRF54LM20A de Nordic Semiconductor. Incorpora un procesador Arm Cortex-M33 de 128 MHz, 512 KB de RAM, 2 MB de NVM integrada, un coprocesador RISC-V de 128 MHz, conectividad inalámbrica multiprotocolo de 2,4 GHz, IMU integrada, micrófono digital, 8MB de flash externa, conector de antena IPEX y PMIC Nordic nPM1300 para una gestión de energía eficiente. Con soporte para Bluetooth LE, Bluetooth Channel Sounding, Bluetooth Mesh, Thread, Zigbee, Matter y protocolos propietarios de 2,4 GHz de hasta 4 Mbps, esta placa está diseñada para productos conectados de próxima generación. Los sensores de movimiento y audio integrados la hacen ideal para wearables, sensado inteligente, TinyML, reconocimiento de gestos, dispositivos activados por voz y aplicaciones IoT alimentadas por batería.

  • Eficiencia de ultra bajo consumo

    Basada en Nordic nRF54LM20A y el PMIC nPM1300, XIAO nRF54LM20A Sense alcanza una corriente de deep sleep medida de solo 4.76 µA bajo alimentación BAT. Combinada con el PMIC nPM1300 y su corriente BAT en Ship Mode de 0.33 µA, en operación inalámbrica activa registra una corriente media de 3.87 mA con una entrada de batería simulada de 3.7 V y la potencia de transmisión configurada en +8 dBm; la placa es ideal para aplicaciones de sensado alimentadas por batería de larga duración, wearables y dispositivos IoT siempre encendidos.

  • Experiencia de desarrollo simplificada

    La compatibilidad total con Nordic nRF Connect SDK y PlatformIO (Zephyr) permite flujos de trabajo de desarrollo embebido eficientes. (Nota: actualmente no se admite Arduino IDE)

Descripción general del hardware

Parte frontal de XIAO nRF54LM20A Sense

Parte trasera de XIAO nRF54LM20A Sense

Mapa de pines

Pin XIAOFunciónPin del chipDescripción
Pines de alimentación
VBUSVBUS-Entrada/salida de alimentación de 5V
GNDGND-Tierra
3V33V3-OUT-Salida de alimentación de 3.3V
BAT+BAT+-Entrada de batería (monitorizada por nPM1300 vía I²C)
BAT-BAT--Terminal negativo de la batería
SHPHLDSHPHLD-Control de modo Ship/Hibernate del PMIC (estado de envío de ultra bajo consumo)
Pines de sistema y control
RESETRESET-Reinicio de la placa
SWCLKSWCLKnRF54LM20A SWCLK / SAMD11 SWCLKReloj de cable serie (para nRF54 y SAMD11)
SWDIOSWDIOnRF54LM20A SWDIO / SAMD11 SWDIODatos de cable serie (para nRF54 y SAMD11)
SAMD11_RESETRESETSAMD11 RESETReinicio del coprocesador SAMD11
Pines de usuario y LED
-USER_BUTTONP0.09Entrada del botón de usuario
-RGB-BP1.23Canal azul del LED RGB integrado
-RGB-GP1.24Canal verde del LED RGB integrado
-RGB-RP1.22Canal rojo del LED RGB integrado
Pines 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
Pines I2C
SDAI2C_SDAP1.03Línea de datos I2C (IMU y periféricos)
SCLI2C_SCLP1.07Línea de reloj I2C (IMU y periféricos)
-BAT_SDAP1.18SDA I2C del monitor de batería (nPM1300)
-BAT_SCLP1.17SCL I2C del monitor de batería (nPM1300)
Pines UART
TXUART_TXP1.08Transmisión UART
RXUART_RXP1.09Recepción UART
Pines SPI
MOSISPI_MOSIP1.06SPI Master Out Slave In
MISOSPI_MISOP1.05SPI Master In Slave Out
SCKSPI_SCKP1.04Reloj serie SPI
Pines de periféricos integrados
-MIC_DATP1.14Línea de datos del micrófono
-MIC_CLKP1.13Línea de reloj del micrófono
-IMU_SDAP0.08SDA I2C de la IMU (IMU integrada)
-IMU_SCLP0.07SCL I2C de la IMU (IMU integrada)
-IMU_CSP3.12Chip Select de la IMU
-IMU_INT1P0.06Interrupción 1 de la IMU
-NFCP1.02 / P1.01Pines de antena NFC
-GRTCP0.04 / P0.05Pines RTC de propósito general

Primeros pasos con PlatformIO

En esta sección, te guiaremos para comenzar rápidamente con la XIAO nRF54LM20A mediante el efecto de parpadeo multicolor de un LED RGB. Completa las siguientes preparaciones de hardware y software para configurar tu XIAO para el desarrollo posterior.

Preparación de hardware

Necesitas preparar lo siguiente:

Seeed Studio XIAO nRF54LM20A Sense

Descargar VS Code

Descarga VS Code de acuerdo con el sistema que estés utilizando

Instalar la extensión PlatformIO

Abre VSCode, haz clic en Extensions, luego busca PlatformIO y selecciona instalar. Después de completar la instalación, reinicia VSCode.

Instalar el paquete de plataforma platform-seeedboards

Las placas de la serie Seeed Studio XIAO utilizan una plataforma personalizada de PlatformIO, por lo que necesitas instalar manualmente el paquete de plataforma correspondiente.

  • Ejecuta el siguiente comando para una instalación nueva:
pio pkg install -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

  • Si has utilizado anteriormente placas de la serie Seeed Studio XIAO en PlatformIO, ejecuta el siguiente comando para actualizar:
pio pkg update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

tip

Si quieres usar un proyecto existente de PlatformIO, reemplaza el contenido de platformio.ini como se muestra a continuación:

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

Crear un nuevo proyecto

  1. Abre la extensión PlatformIO y selecciona Create New Project.

  1. Configura el nombre del proyecto, selecciona la placa de desarrollo, el framework y la ruta de almacenamiento de archivos.

  1. Después de que se complete la creación, aparecerá un aviso para abrir el espacio de trabajo. Haz clic en OK.

  1. Navega a la carpeta del proyecto. Los archivos se almacenan en el directorio predeterminado si no especificaste una ruta personalizada.
  • Para Windows por defecto:
<path>: C:\Users\your_name\Documents\PlatformIO\Projects
  • Para Mac / Linux por defecto:
<path>: ~/Documents/PlatformIO/Projects

Este tutorial está desarrollado sobre Zephyr RTOS. El proyecto consta de tres archivos principales:

  • main.c: Programa principal que contiene la lógica de la aplicación.
  • app.overlay: Archivo de superposición de devicetree para la configuración de periféricos de hardware.
  • prj.conf: Archivo de configuración del proyecto para habilitar los módulos necesarios de Zephyr.
  1. Añadir el 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. Añadir el archivo app.overlay

El archivo de superposición devicetree no existe en el ejemplo en blanco recién creado. Debes añadirlo en el directorio 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. Modifica prj.conf y habilita las configuraciones correspondientes.
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n

Compilar y subir el programa

A continuación se presentan dos métodos para la compilación y la carga.

  1. Compilar y subir mediante botón

  1. Compilar y subir mediante línea de comandos
pio run -e seeed-xiao-nrf54lm20a -t upload -v

Observar el resultado

Antena Bluetooth

Esta placa utiliza una antena Bluetooth externa. Para garantizar una mejor calidad de la señal Bluetooth y mejorar tu experiencia de uso de Bluetooth, se recomienda instalar una antena Bluetooth. El método de conexión se muestra a continuación:

Bluetooth antenna connection

Uso de la batería

La XIAO nRF54LM20A es capaz de utilizar una batería de litio de 3,7 V como entrada de alimentación. Puedes consultar el siguiente diagrama para el método de cableado.

Battery wiring
precaución

Tenga cuidado de no cortocircuitar los terminales positivo y negativo y quemar la batería y el equipo al soldar. Si la batería tiene energía, nunca la suelde en la placa, ya que esto puede quemar la placa de circuito. Un cortocircuito mientras el circuito está alimentado representa un riesgo significativo; se recomienda utilizar un adaptador.

Instrucciones sobre el uso de baterías:

  1. Utilice baterías calificadas que cumplan con las especificaciones.
  2. XIAO se puede conectar a su dispositivo informático mediante un cable de datos mientras usa la batería; puede estar tranquilo, ya que XIAO tiene un chip de protección de circuito integrado, lo cual es seguro.

Detección de voltaje de la batería

El XIAO nRF54LM20A integra una función de detección de voltaje de la batería que se centra en gestionar de forma eficiente las mediciones de energía de la batería utilizando el interruptor de carga nPM1300-CAA. Esta guía se centrará en analizar la implementación de software de la detección de batería (especialmente el código main.c) y le guiará sobre cómo desplegar y utilizar fácilmente esta función en un entorno PlatformIO, evitando la complejidad del SDK Zephyr NCS.

XIAO nRF54L15 BLE Advertising Power Consumption

Esquemático de detección de batería

Lo que hace el chip nPM1300-CAA:

nPM1300-CAA es un circuito integrado de gestión de energía (PMIC) altamente integrado que reemplaza la simple función de interruptor de carga del TPS22916. No solo controla la conmutación del voltaje de la batería para la monitorización de bajo consumo, sino que también integra carga, regulación y una medición precisa del estado de carga (mediante voltaje, corriente y temperatura) para maximizar la vida útil de la batería del nRF54LM20A.


nota

El siguiente ejemplo funciona tanto para PlatformIO como para nRF Connect SDK. Se puede usar directamente en PlatformIO, mientras que el SDK requiere agregar archivos manualmente. Consulte este enlace

Descripción general de periféricos

El circuito periférico de esta placa incluye un IMU y un micrófono. Puede ver sus ubicaciones en el siguiente diagrama:

Ubicaciones del IMU y del micrófono

IMU

El XIAO nRF54LM20A Sense incorpora un IMU LSM6DS3TR-C con un acelerómetro de 3 ejes y un giroscopio de 3 ejes.

MIC

El XIAO nRF54LM20A Sense está equipado con un micrófono digital MSM261DGT006 para la captura de audio.

Preguntas frecuentes

  1. Errores de compilación después de modificar archivos de configuración

Si anteriormente compiló el proyecto completo de Zephyr y luego modificó archivos de configuración, se recomienda limpiar la caché de compilación antes de volver a compilar y cargar. Esto ayuda a evitar errores de compilación causados por archivos de caché obsoletos o dañados.

pio run -t clean  // Clean command
  1. zsh: command not found: openocd después de la instalación

Al introducir directamente "openocd" en la terminal, el shell solo buscará en los directorios dentro de la variable PATH; si el directorio aún no se ha añadido, indicará que no se puede encontrar el comando. Simplemente añádalo de forma permanente a ~/.zshrc, siguiendo las instrucciones a continuación. Esta solución es solo para usuarios de macOS

echo 'export PATH="$HOME/Library/Application Support/Seeed/OpenOCD/tool-openocd/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
openocd --version
  1. ¿Qué debo hacer si descargué previamente las placas de la serie Seeed Studio XIAO varias veces y ahora el desplegable del proyecto de la plataforma falla?

Se recomienda limpiar antes de intentarlo de nuevo. Las carpetas duplicadas y obsoletas acumuladas de la plataforma Seeed bajo los paquetes locales de PlatformIO provocan rutas de búsqueda de archivos demasiado largas y conflictos de versiones, lo que da lugar a fallos en la carga del proyecto. Limpie los directorios redundantes de la plataforma Seeed de fuentes mixtas según los pasos siguientes y conserve únicamente la plataforma oficial que PlatformIO descarga automáticamente para evitar conflictos causados por directorios antiguos e incorrectos: Elimine todas las carpetas que comiencen con platform-seeed- y framework-seeed-

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

Recursos

Seeed Studio XIAO nRF54LM20A

Diseño de hardware

Seeed Studio XIAO nRF54LM20A Sense

Diseño de hardware

Soporte técnico y debate sobre el producto

Gracias por elegir nuestros productos. Estamos aquí para ofrecerle diferentes tipos de soporte para garantizar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.

Loading Comments...