メインコンテンツまでスキップ

Seeed Studio XIAO nRF54LM20A Sense 入門ガイド

はじめに

Seeed Studio XIAO nRF54LM20A Sense は、Nordic Semiconductor 社の nRF54LM20A SoC を中心に構成された、コンパクトで超低消費電力のワイヤレス開発ボードです。128 MHz Arm Cortex-M33 プロセッサ、512 KB RAM、2 MB オンチップ NVM、マルチプロトコル 2.4 GHz ワイヤレス接続、オンボード IMU、デジタルマイク、8MB 外部フラッシュ、IPEX アンテナコネクタ、nPM1300 PMIC を備え、バッテリー駆動の高度な IoT、ウェアラブル、スマートセンシング、エッジ AI アプリケーションに対応します。

仕様

製品名Seeed Studio XIAO nRF54LM20ASeeed Studio XIAO nRF54LM20A Sense
プロセッサArm® Cortex®-M33 128 MHz & RISC-V 128 MHz コプロセッサ
RAM512KB
フラッシュ2 MB 不揮発性メモリ (NVM)
外部フラッシュ8MB オンボード外部フラッシュ
PMIC / バッテリー電源制御およびバッテリー充電用 nPM1300 PMIC
インターフェース

28x GPIO ピン
9x アナログピン
1x I2C
1x UART
1x SPI
1x NFC
1x SHPHLD

オンボード

1x ユーザー LED (R/G/B 3 色)
1x 充電 LED (バッテリー充電インジケータ)
1x リセットボタン
1x ユーザーボタン
1x IPEX4 コネクタ (外部アンテナ用)

1x ユーザー LED (R/G/B 3 色)
1x 充電 LED (バッテリー充電インジケータ)
1x リセットボタン
1x ユーザーボタン
1x IPEX4 コネクタ (外部アンテナ用)
1x 6 軸 IMU
1x PDM マイク

ワイヤレス接続

Bluetooth LE 6.0 (Channel Sounding を含む)
Bluetooth Mesh
NFC
Thread
Zigbee
Matter
Amazon Sidewalk
独自 2.4 GHz プロトコル

電源入力

Type-C: 5V
バッテリー: 3.7V

低消費電力モード (3.7V@2A)/

Light-Sleep: 約 9.96µA
Deep-Sleep (System OFF): 約 4.76µA
Deep-Sleep (System OFF, GRTC ウェイクアップ): 約 4.92µA
Ship-Mode: 0.33µA

ソフトウェア互換性

Nordic nRF Connect SDK (Zephyr RTOS ベース)
PlatformIO (Zephyr RTOS ベース)

動作温度-20°C ~ 70°C
寸法21 x 17.8mm

特長

  • 高度な接続性とセキュリティを備えた高性能 SoC

    Seeed Studio XIAO nRF54LM20A Sense は、Nordic Semiconductor 社の nRF54LM20A SoC を搭載した、コンパクトで超低消費電力のワイヤレス開発ボードです。128 MHz Arm Cortex-M33 プロセッサ、512 KB RAM、2 MB オンチップ NVM、128 MHz RISC-V コプロセッサ、マルチプロトコル 2.4 GHz ワイヤレス接続、オンボード IMU、デジタルマイク、8MB 外部フラッシュ、IPEX アンテナコネクタ、Nordic nPM1300 PMIC による高効率な電源管理を備えています。Bluetooth LE、Bluetooth Channel Sounding、Bluetooth Mesh、Thread、Zigbee、Matter、最大 4 Mbps の独自 2.4 GHz プロトコルをサポートし、次世代のコネクテッド製品向けに設計されています。オンボードのモーションおよびオーディオセンサーにより、ウェアラブル、スマートセンシング、TinyML、ジェスチャ認識、音声トリガーデバイス、バッテリー駆動 IoT アプリケーションに最適です。

  • 超低消費電力効率

    Nordic nRF54LM20A と nPM1300 PMIC をベースとした XIAO nRF54LM20A Sense は、BAT 電源動作時にわずか 4.76 µA のディープスリープ電流を実測しています。nPM1300 PMIC と 0.33 µA の Ship Mode BAT 電流を組み合わせることで、アクティブなワイヤレス動作時でも、3.7 V の模擬バッテリー入力および TX 出力 +8 dBm 設定で平均電流 3.87 mA を記録し、長寿命バッテリー駆動のセンシングアプリケーション、ウェアラブル、常時接続の IoT デバイスに理想的です。

  • 洗練された開発体験

    Nordic nRF Connect SDK および PlatformIO (Zephyr) をフルサポートしており、効率的な組み込み開発ワークフローを実現します。(注: 現在 Arduino IDE には対応していません)

ハードウェア概要

XIAO nRF54LM20A 表面

XIAO nRF54LM20A 裏面

ピンマップ

XIAO ピン機能チップピン説明
電源ピン
VBUSVBUS-5V 電源入力/出力
GNDGND-グラウンド
3V33V3-OUT-3.3V 電源出力
BAT+BAT+-バッテリー入力 (I²C 経由で nPM1300 により監視)
BAT-BAT--バッテリーマイナス端子
SHPHLDSHPHLD-PMIC Ship/Hibernate モード制御(超低消費電力の出荷状態)
システム & 制御ピン
RESETRESET-ボードリセット
SWCLKSWCLKnRF54LM20A SWCLK / SAMD11 SWCLKシリアルワイヤクロック(nRF54 および SAMD11 用)
SWDIOSWDIOnRF54LM20A SWDIO / SAMD11 SWDIOシリアルワイヤデータ(nRF54 および SAMD11 用)
SAMD11_RESETRESETSAMD11 RESETSAMD11 コプロセッサリセット
ユーザー & LED ピン
-USER_BUTTONP0.09ユーザーボタン入力
-RGB-BP1.23オンボード RGB LED 青チャンネル
-RGB-GP1.24オンボード RGB LED 緑チャンネル
-RGB-RP1.22オンボード RGB LED 赤チャンネル
アナログ入力 (ADC) ピン
A0AIN0P1.00アナログ入力 0 / GPIO
A1AIN1P1.31アナログ入力 1 / GPIO
A2AIN2P1.30アナログ入力 2 / GPIO
A3AIN3P1.29アナログ入力 3 / GPIO
A7AIN7P1.03アナログ入力 7 / GPIO
I2C ピン
SDAI2C_SDAP1.03I2C データライン (IMU および周辺機器)
SCLI2C_SCLP1.07I2C クロックライン (IMU および周辺機器)
-BAT_SDAP1.18バッテリーモニタ用 I2C SDA (nPM1300)
-BAT_SCLP1.17バッテリーモニタ用 I2C SCL (nPM1300)
UART ピン
TXUART_TXP1.08UART 送信
RXUART_RXP1.09UART 受信
SPI ピン
MOSISPI_MOSIP1.06SPI マスタ出力・スレーブ入力
MISOSPI_MISOP1.05SPI マスタ入力・スレーブ出力
SCKSPI_SCKP1.04SPI シリアルクロック
オンボード周辺ピン
-MIC_DATP1.14マイクデータライン
-MIC_CLKP1.13マイククロックライン
-IMU_SDAP0.08IMU I2C SDA (オンボード IMU)
-IMU_SCLP0.07IMU I2C SCL (オンボード IMU)
-IMU_CSP3.12IMU チップセレクト
-IMU_INT1P0.06IMU 割り込み 1
-NFCP1.02 / P1.01NFC アンテナピン
-GRTCP0.04 / P0.05汎用 RTC ピン

PlatformIO でのはじめ方

このセクションでは、RGB LED の多色点滅エフェクトを通して、XIAO nRF54LM20A を素早く使い始める方法を案内します。 以下のハードウェアおよびソフトウェアの準備を完了し、今後の開発に向けて XIAO をセットアップしてください。

ハードウェアの準備

次のものを用意してください:

Seeed Studio XIAO nRF54LM20A Sense

VS Code のダウンロード

使用しているシステムに応じて VS Code をダウンロードしてください。

PlatformIO 拡張機能のインストール

VS Code を開き、Extensions をクリックして PlatformIO を検索し、インストールを選択します。インストール完了後、VS Code を再起動します。

platform-seeedboards プラットフォームパッケージのインストール

Seeed Studio XIAO シリーズのボードはカスタム PlatformIO プラットフォームを使用しているため、対応するプラットフォームパッケージを手動でインストールする必要があります。

  • 新規インストールの場合は、次のコマンドを実行します:
pio pkg install -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

  • 以前に PlatformIO で Seeed Studio XIAO シリーズのボードを使用したことがある場合は、以下のコマンドを実行して更新します:
pio pkg update -g -p "https://github.com/Seeed-Studio/platform-seeedboards.git"

ヒント

既存の PlatformIO プロジェクトを使用したい場合は、platformio.ini の内容を次のように置き換えてください:

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

新しいプロジェクトの作成

  1. PlatformIO 拡張機能を開き、Create New Project を選択します。

  1. プロジェクト名を設定し、開発ボード、フレームワーク、ファイルの保存パスを選択します。

  1. 作成が完了すると、ワークスペースを開くかどうかのプロンプトが表示されます。[OK] をクリックします。

  1. プロジェクトフォルダに移動します。カスタムパスを指定していない場合、ファイルはデフォルトディレクトリに保存されます。
  • Windows のデフォルト:
<path>: C:\Users\your_name\Documents\PlatformIO\Projects
  • Mac / Linux のデフォルト:
<path>: ~/Documents/PlatformIO/Projects

このチュートリアルは Zephyr RTOS をベースに開発されています。プロジェクトは次の 3 つのコアファイルで構成されています:

  • main.c: アプリケーションロジックを含むメインプログラム。
  • app.overlay: ハードウェア周辺機器の設定を行う Devicetree オーバーレイファイル。
  • prj.conf: 必要な Zephyr モジュールを有効にするプロジェクト設定ファイル。
  1. 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. app.overlay ファイルを追加する

Devicetree オーバーレイファイルは、新しく作成した空のサンプルには存在しません。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. prj.conf を編集し、対応する設定を有効にします。
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n

プログラムのコンパイルと書き込み

以下では、コンパイルと書き込みの 2 つの方法を紹介します。

  1. ボタンからのコンパイル & 書き込み

  1. コマンドラインからのコンパイル & 書き込み
pio run -e seeed-xiao-nrf54lm20a -t upload -v

結果を確認する

Bluetooth アンテナ

このボードは外付け Bluetooth アンテナを使用します。より良い Bluetooth 信号品質を確保し、Bluetooth の使用体験を向上させるため、Bluetooth アンテナを取り付けることを推奨します。 接続方法は以下のとおりです:

Bluetooth antenna connection

バッテリーの使用

XIAO nRF54LM20A は、3.7V リチウムバッテリーを電源入力として使用することができます。配線方法については、以下の図を参照してください。

Battery wiring
注意

はんだ付けの際には、バッテリーや機器を焼損させないよう、正極と負極をショートさせないよう十分注意してください。 バッテリーに電力が残っている場合は、絶対にそのまま基板にはんだ付けしないでください。基板の回路が焼損するおそれがあります。通電中にショートさせることは重大なリスクを伴うため、アダプタの使用を推奨します。

バッテリー使用上の注意:

  1. 規格を満たした適切なバッテリーを使用してください。
  2. バッテリー使用中でも、XIAO はデータケーブルを介してコンピュータ機器に接続できます。XIAO には保護回路チップが内蔵されており、安全にご使用いただけます。

バッテリー電圧検出

XIAO nRF54LM20A は、nPM1300-CAA ロードスイッチを用いてバッテリー電力を効率的に計測するバッテリー電圧検出機能を統合しています。本ガイドでは、バッテリー検出のソフトウェア実装 (特に main.c コード) を中心に解析し、Zephyr NCS SDK の複雑さを回避しつつ、PlatformIO 環境でこの機能を簡単に展開・利用する方法を解説します。

XIAO nRF54L15 BLE Advertising Power Consumption

バッテリー検出回路図

nPM1300-CAA チップの役割:

nPM1300-CAA は高集積の電源管理 IC(PMIC)であり、TPS22916 の単純なロードスイッチ機能を置き換えるものです。低消費電力でのモニタリングのためにバッテリー電圧の切り替えを制御するだけでなく、充電、レギュレーション、および(電圧・電流・温度による)高精度な燃料計測を統合し、nRF54LM20A のバッテリー寿命を最大化します。


注記

以下のサンプルは PlatformIO と nRF Connect SDK の両方で動作します。PlatformIO ではそのまま使用できますが、SDK ではファイルを手動で追加する必要があります。詳しくはこのリンクを参照してください。

周辺回路の概要

このボードの周辺回路には IMU とマイクが含まれます。下図でそれぞれの位置を確認できます。

IMU and microphone locations

IMU

XIAO nRF54LM20A Sense には、3 軸加速度センサと 3 軸ジャイロスコープを備えた LSM6DS3TR-C IMU が搭載されています。

MIC

XIAO nRF54LM20A Sense には、音声取得用の MSM261DGT006 デジタルマイクが搭載されています。

FAQ

  1. 設定ファイルを変更した後のビルドエラー

以前にフル Zephyr プロジェクトをビルドしており、その後に設定ファイルを変更した場合は、再ビルドおよびアップロードの前にビルドキャッシュをクリーンすることを推奨します。これにより、古いまたは破損したキャッシュファイルが原因のコンパイルエラーを回避できます。

pio run -t clean  // Clean command
  1. インストール後に「zsh: command not found: openocd」と表示される

ターミナルで直接「openocd」と入力した場合、シェルは PATH に含まれるディレクトリのみを検索します。ディレクトリがまだ追加されていないと、コマンドが見つからないというメッセージが表示されます。以下の手順に従って ~/.zshrc に永続的に追加してください。 この解決策は macOS ユーザー専用です。

echo 'export PATH="$HOME/Library/Application Support/Seeed/OpenOCD/tool-openocd/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
openocd --version
  1. 過去に Seeed Studio XIAO シリーズボードを複数回ダウンロードしており、現在 Platform プロジェクトのプルダウンが失敗する場合はどうすればよいですか?

再試行する前にクリーンアップすることを推奨します。PlatformIO のローカルパッケージ配下に重複した古い Seeed プラットフォームフォルダが蓄積されると、ファイル検索パスが過度に長くなり、バージョン競合が発生してプロジェクトの読み込みに失敗します。以下の手順に従って、冗長で混在したソースの Seeed プラットフォームディレクトリをクリーンアップし、PlatformIO によって自動的に取得される公式プラットフォームのみを残すことで、古く誤ったディレクトリによる競合を回避してください。 platform-seeed- および framework-seeed- で始まるすべてのフォルダを削除します。

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

リソース

Seeed Studio XIAO nRF54LM20A

ハードウェア設計

Seeed Studio XIAO nRF54LM20A Sense

ハードウェア設計

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます。製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートをご用意しています。お好みやニーズに応じて選べる複数のコミュニケーションチャネルを提供しています。

Loading Comments...