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 nRF54LM20A | Seeed Studio XIAO nRF54LM20A Sense |
|---|---|---|
| プロセッサ | Arm® Cortex®-M33 128 MHz & RISC-V 128 MHz コプロセッサ | |
| RAM | 512KB | |
| フラッシュ | 2 MB 不揮発性メモリ (NVM) | |
| 外部フラッシュ | 8MB オンボード外部フラッシュ | |
| PMIC / バッテリー | 電源制御およびバッテリー充電用 nPM1300 PMIC | |
| インターフェース | 28x GPIO ピン | |
| オンボード | 1x ユーザー LED (R/G/B 3 色) | 1x ユーザー LED (R/G/B 3 色) |
| ワイヤレス接続 | Bluetooth LE 6.0 (Channel Sounding を含む) | |
| 電源入力 | Type-C: 5V | |
| 低消費電力モード (3.7V@2A) | / | Light-Sleep: 約 9.96µA |
| ソフトウェア互換性 | Nordic nRF Connect SDK (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) をフルサポートし、効率的な組み込み開発ワークフローを実現します。
ハードウェア概要
- XIAO nRF54LM20A
- XIAO nRF54LM20A Sense
ピンマップ
| XIAO ピン | 機能 | チップピン | 説明 |
|---|---|---|---|
| 電源ピン | |||
| VBUS | VBUS | - | 5V 電源入力/出力 |
| GND | GND | - | グラウンド |
| 3V3 | 3V3-OUT | - | 3.3V 電源出力 |
| BAT+ | BAT+ | - | バッテリー入力 (I²C 経由で nPM1300 により監視) |
| BAT- | BAT- | - | バッテリーマイナス端子 |
| SHPHLD | SHPHLD | - | PMIC Ship/Hibernate モード制御 (超低消費電力の出荷状態) |
| システム & 制御ピン | |||
| RESET | RESET | - | ボードリセット |
| SWCLK | SWCLK | nRF54LM20A SWCLK / SAMD11 SWCLK | シリアルワイヤクロック (nRF54 および SAMD11 用) |
| SWDIO | SWDIO | nRF54LM20A SWDIO / SAMD11 SWDIO | シリアルワイヤデータ (nRF54 および SAMD11 用) |
| SAMD11_RESET | RESET | SAMD11 RESET | SAMD11 コプロセッサリセット |
| ユーザー & LED ピン | |||
| - | USER_BUTTON | P0.09 | ユーザーボタン入力 |
| - | RGB-B | P1.23 | オンボード RGB LED 青チャンネル |
| - | RGB-G | P1.24 | オンボード RGB LED 緑チャンネル |
| - | RGB-R | P1.22 | オンボード RGB LED 赤チャンネル |
| アナログ入力 (ADC) ピン | |||
| A0 | AIN0 | P1.00 | アナログ入力 0 / GPIO |
| A1 | AIN1 | P1.31 | アナログ入力 1 / GPIO |
| A2 | AIN2 | P1.30 | アナログ入力 2 / GPIO |
| A3 | AIN3 | P1.29 | アナログ入力 3 / GPIO |
| A7 | AIN7 | P1.03 | アナログ入力 7 / GPIO |
| I2C ピン | |||
| SDA | I2C_SDA | P1.03 | I2C データライン (IMU & 周辺機器) |
| SCL | I2C_SCL | P1.07 | I2C クロックライン (IMU & 周辺機器) |
| - | BAT_SDA | P1.18 | バッテリーモニタ用 I2C SDA (nPM1300) |
| - | BAT_SCL | P1.17 | バッテリーモニタ用 I2C SCL (nPM1300) |
| UART ピン | |||
| TX | UART_TX | P1.08 | UART 送信 |
| RX | UART_RX | P1.09 | UART 受信 |
| SPI ピン | |||
| MOSI | SPI_MOSI | P1.06 | SPI マスタ出力・スレーブ入力 |
| MISO | SPI_MISO | P1.05 | SPI マスタ入力・スレーブ出力 |
| SCK | SPI_SCK | P1.04 | SPI シリアルクロック |
| オンボード周辺ピン | |||
| - | MIC_DAT | P1.14 | マイクデータライン |
| - | MIC_CLK | P1.13 | マイククロックライン |
| - | IMU_SDA | P0.08 | IMU I2C SDA (オンボード IMU) |
| - | IMU_SCL | P0.07 | IMU I2C SCL (オンボード IMU) |
| - | IMU_CS | P3.12 | IMU チップセレクト |
| - | IMU_INT1 | P0.06 | IMU 割り込み 1 |
| - | NFC | P1.02 / P1.01 | NFC アンテナピン |
| - | GRTC | P0.04 / P0.05 | 汎用 RTC ピン |
PlatformIO で始める
このセクションでは、RGB LED のマルチカラー点滅効果を通して、XIAO nRF54LM20A をすばやく使い始める方法を案内します。 以下のハードウェアおよびソフトウェアの準備を完了し、今後の開発に向けて XIAO をセットアップしてください。
ハードウェアの準備
次のものを用意してください:
- 1 x Seeed Studio XIAO nRF54LM20A Sense
- 1 x コンピュータ
- 1 x USB Type-C ケーブル
| Seeed Studio XIAO nRF54LM20A Sense |
|---|
![]() |
VS Code をダウンロード
使用しているシステムに応じて VS Code をダウンロードします。

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

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 uninstall -g -p "SeeedStudio" && pio pkg install -g -p "SeeedStudio=https://github.com/Seeed-Studio/platform-seeedboards.git" --force

既存の PlatformIO プロジェクトを使用したい場合は、platformio.ini の内容を次のように置き換えてください:
[env:seeed-xiao-nrf54lm20a]
platform = https://github.com/Seeed-Studio/platform-seeedboards.git
framework = zephyr
board = seeed-xiao-nrf54lm20a
新しいプロジェクトを作成
- PlatformIO 拡張機能を開き、Create New Project を選択します。

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

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

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

Blink プログラムを追加
このチュートリアルは Zephyr RTOS をベースに開発されています。プロジェクトは次の 3 つのコアファイルで構成されています:
main.c: アプリケーションロジックを含むメインプログラム。app.overlay: ハードウェア周辺機器の設定を行う Devicetree オーバーレイファイル。prj.conf: 必要な Zephyr モジュールを有効にするプロジェクト設定ファイル。

- 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;
}
- 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;
};
};
prj.confを編集し、対応する設定を有効にします。
CONFIG_GPIO=y
CONFIG_PWM=y
CONFIG_SERIAL=n
プログラムをコンパイルして書き込む
以下では、コンパイルと書き込みの 2 つの方法を紹介します。
- ボタンからコンパイル & アップロード

- コマンドラインからコンパイル & アップロード
pio run -e seeed-xiao-nrf54lm20a -t upload -v

結果を確認

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

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

はんだ付けの際には、正極と負極を短絡させてバッテリーや機器を損傷させないよう、十分に注意してください。 バッテリーに電力が残っている場合は、絶対に基板上にはんだ付けしないでください。基板が焼損するおそれがあります。通電中にショートさせることは大きな危険を伴うため、アダプタの使用を推奨します。
バッテリー使用上の注意:
- 規格を満たした適切なバッテリーを使用してください。
- バッテリー使用中でも、XIAO はデータケーブルを介してコンピュータ機器に接続できます。XIAO には保護回路チップが内蔵されており、安全にご使用いただけます。
バッテリー電圧検出
XIAO nRF54LM20A は、nPM1300-CAA ロードスイッチを用いてバッテリー電力を効率的に管理するバッテリー電圧検出機能を統合しています。本ガイドでは、バッテリー検出のソフトウェア実装 (特に main.c コード) を中心に解析し、Zephyr NCS SDK の複雑さを回避しつつ、PlatformIO 環境でこの機能を簡単に展開・利用する方法を説明します。

バッテリー検出回路図
nPM1300-CAA チップの役割:
nPM1300-CAA は高集積の電源管理 IC(PMIC)であり、TPS22916 の単純なロードスイッチ機能を置き換えるものです。低消費電力監視のためのバッテリー電圧スイッチングを制御するだけでなく、充電、レギュレーション、および精密なフューエルゲージ(電圧・電流・温度による)を統合し、nRF54LM20A のバッテリー寿命を最大化します。
以下のサンプルは PlatformIO と nRF Connect SDK の両方で動作します。PlatformIO ではそのまま使用できますが、SDK ではファイルを手動で追加する必要があります。詳しくはこのリンクを参照してください。
ペリフェラル概要
このボードのペリフェラル回路には IMU とマイクが含まれます。下図でそれぞれの位置を確認できます。

IMU
XIAO nRF54LM20A Sense には、3 軸加速度センサと 3 軸ジャイロスコープを備えた LSM6DS3TR-C IMU が搭載されています。
MIC
XIAO nRF54LM20A Sense には、音声取得用の MSM261DGT006 デジタルマイクが搭載されています。
FAQ
Q1: 設定ファイルを変更した後にビルドエラーが発生した場合、どうすればよいですか?
以前にプロジェクトをビルドした後で、prj.conf、app.overlay、CMakeLists.txt などの設定ファイルを変更した場合は、再ビルドの前にビルドキャッシュをクリーンすることを推奨します。これにより、古いまたは破損したキャッシュファイルが原因のコンパイルエラーを回避できます。
次のコマンドを実行します:
pio run -t clean
Q2: インストール後に zsh: command not found: openocd と表示されるのはなぜですか?(macOS)
この問題は通常、OpenOCD の実行ファイルディレクトリがシステムの PATH に追加されていないことが原因です。次のコマンドを使用して、~/.zshrc ファイルに永続的に追加できます。
Note: この解決方法は macOS のみ を対象としています。
echo 'export PATH="$HOME/Library/Application Support/Seeed/OpenOCD/tool-openocd/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
openocd --version
バージョン番号が正常に表示されれば、設定は完了です。
Q3: Seeed Studio XIAO プラットフォームを複数回インストールした後に、PlatformIO のプロジェクトドロップダウンが機能しなくなった場合はどうすればよいですか?
異なるバージョンの Seeed Studio XIAO PlatformIO プラットフォームを複数回インストールしている場合、重複または古いプラットフォームパッケージがバージョン競合を引き起こし、PlatformIO プロジェクトが正しく読み込まれなくなることがあります。
すべての古い Seeed プラットフォームパッケージを削除し、PlatformIO に最新の公式バージョンを自動的にダウンロードさせることを推奨します。
次のコマンドを実行します:
rm -rf ~/.platformio/packages/platform-seeed-* ~/.platformio/packages/framework-seeed-*
クリーンアップ後、PlatformIO を再起動してプロジェクトを再ビルドしてください。
リソース
Seeed Studio XIAO nRF54LM20A
ハードウェア設計
- 📄[データシート] Nordic nRF54LM20A Datasheet
- 📄[回路図] XIAO nRF54LM20A 回路図
- 🗃️[PCB 設計ファイル] XIAO nRF54LM20A KiCad プロジェクト
- 🗃️[PCB 設計ライブラリ]
- 📄[ピン配置図]XIAO nRF54LM20A ピン配置シート
Seeed Studio XIAO nRF54LM20A Sense
ハードウェア設計
- 📄[データシート] Nordic nRF54LM20A Datasheet
- 📄[回路図] XIAO nRF54LM20A Sense 回路図
- 🗃️[PCB 設計ファイル] XIAO nRF54LM20A KiCad プロジェクト
- 🗃️[PCB 設計ライブラリ]
- 📄[ピン配置図]XIAO nRF54LM20A Sense ピン配置シート
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます。製品をできるだけスムーズにご利用いただけるよう、さまざまなサポートをご用意しています。お好みやニーズに応じて選べる複数のコミュニケーションチャネルを提供しています。




