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

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)/

ライトスリープ: 約 9.96µA
ディープスリープ (System OFF): 約 4.76µA
ディープスリープ (System OFF, GRTC ウェイクアップ): 約 4.92µA
シップモード: 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 のシップモード BAT 電流と組み合わせることで、アクティブなワイヤレス動作時には、3.7 V の模擬バッテリー入力および TX 出力 +8 dBm 設定で平均電流 3.87 mA を記録し、このボードは長寿命バッテリー駆動のセンシングアプリケーション、ウェアラブル、常時接続の IoT デバイスに理想的です。

  • 洗練された開発体験

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

ハードウェア概要

XIAO nRF54LM20A ピン一覧

ピンマップ

XIAO ピン機能チップピン説明
電源ピン
VBUSVBUS-5V 電源入力/出力
GNDGND-グラウンド
3V33V3-OUT-3.3V 電源出力
BAT+BAT+-バッテリー入力(I²C 経由で nPM1300 により監視)
BAT-BAT--バッテリーマイナス端子
SHPHLDSHPHLD-PMIC シップ/ハイバネートモード制御(超低消費電力の出荷状態)
システム & 制御ピン
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 ピン

はじめに

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

ハードウェア

以下を準備する必要があります:

Seeed Studio XIAO nRF54LM20A Sense

ソフトウェア

XIAO nRF54LM20A 用の PlatformIO セットアップ

以下の簡潔な手順に従って開発環境を構成し、XIAO nRF54LM20A 上で最初のアプリケーションをデプロイします。

VS Code 用 PlatformIO IDE 拡張機能のインストール

まだインストールしていない場合は、Visual Studio Code 内から直接 PlatformIO IDE 拡張機能をインストールしてください。この強力な拡張機能により、VS Code が本格的な組み込み開発環境に変わります。

  • VS Code を開きます。
  • 拡張機能ビューを開きます(Ctrl+Shift+X または Cmd+Shift+X)。
  • PlatformIO IDE を検索し、Install をクリックします。

新しい PlatformIO プロジェクトを作成する

ここでは、任意の開発ボードを選択してプロジェクトファイルを作成できます。ここでは例として XIAO ESP32 C3 を使用します。

操作 1操作 2

XIAO nRF54LM20A の Zephyr 対応用に platformio.ini を設定する

プロジェクトが作成されたら、プロジェクトディレクトリのルートにある platformio.ini ファイルを探します(左側の VS Code Explorer に表示されます)。このファイルは PlatformIO プロジェクト設定の中核です。

操作 3

platformio.ini ファイルの内容全体を、次の設定に置き換える必要があります:

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

その後、platformio.ini ファイルを再度保存(Ctrl+S または Cmd+S)し、完全に読み込みが完了するまで待ちます。

読み込みが完了したら、このプロジェクトは閉じて構いません。このステップは必要なライブラリファイルをダウンロードするためのものです。

ヒント

以前に他の XIAO ライブラリをインストールしている場合は、以下の PlatformIO コマンドを使用して、このライブラリを最新バージョンに更新することをお勧めします。 これは公式に推奨されている方法です。プロジェクトのルートディレクトリで、次のコマンドを直接実行するだけで構いません(platform フォルダに移動する必要はありません):

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

ここでは、クラシックな Blink サンプルでセットアップをテストしてみましょう。このコードは、XIAO nRF54LM20A Sense の内蔵 LED を点滅させます。

以下はライブラリをダウンロードするためのリンクです。このプロジェクトを直接ローカルマシンにダウンロードしてから、VS Code でそのまま開くこともできます。あるいは、次の手順に従って、一部のデモコードを置き換えて追加することもできます。このプロセスには次の作業が含まれます:

ヒント

Seeed Studio XIAO シリーズ開発ボードの定義は platform-seeedboards リポジトリに保存されています。XIAO nRF54LM20A Sense を使用している場合は、このリポジトリを必ず最新バージョンに更新してください。


ステップ 1: 新しいプロジェクトを作成する

操作 4

ステップ 2: プロジェクトを開く まずコンパイルして、取得したプロジェクトが正しく動作するか確認できます。問題なく動作すれば、プロジェクトの取得は成功しています。 下図を参照してください:

操作 5

ステップ 3: プロジェクトコードを置き換える

  • src/main.cZephyr/prj.conf ファイルを開き、元のコードを以下のコードに置き換えます。
操作 6
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. デバイスツリーノードの内容を変更または再定義する必要がある場合は、Zephyr ディレクトリ内に新しい app.overlay ファイルを作成し、デバイスノードを明示的にバインドしてください。
  2. デバイスツリーファイルを変更した場合は、再ビルドの前に元のファイルをクリーンアップして、CMake が変更を認識できずに失敗するのを防いでください。
/*
* 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;
};
};

次に、XIAO nRF54LM20A を USB 経由でコンピュータに接続します。保存・コンパイル・ダウンロードが完了すると、RGB ライトが点滅し始めます。VS Code では:

操作 7

ターミナルの出力には、コンパイルと書き込みが正常に完了したことが示されているはずです。

コードの説明

  • src/main.c LED の色設定、ブリージングエフェクト、点滅リズム制御、ボタンによるモード切り替え、その他のハードウェア制御動作など、デモロジックを実装するメインアプリケーションのエントリポイントです。

  • zephyr/prj.conf Zephyr RTOS の設定ファイルで、ロギング、UART、PWM、I2C、SPI、低消費電力管理などのシステムコンポーネントや周辺ドライバの有効化/無効化を行います。

結果を確認する

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 には LSM6DS3TR-C IMU が搭載されており、6 軸加速度センサ、ジャイロスコープ、および磁力計をサポートします。

MIC

XIAO nRF54LM20A には MSM261DGT006 マイクが搭載されており、16 ビットオーディオの取得をサポートします。

FAQ

問題 1:macOS で Reading CMake configuration のまま止まる

macOS 上で PlatformIO を使ってプログラムをコンパイルおよびアップロードする際、ネットワークの問題を除外しても、処理が Reading CMake configuration の段階で止まってしまうことがあります。これは通常、Python ベースの arm-none-eabi-gdb-py ツールが正しく動作しない、macOS との互換性問題が原因です。

推奨される対処法: 不具合のある gdb-py ファイルをシンボリックリンクに置き換えます。

  1. ツールディレクトリに移動します: /Users/mengdu/.platformio/packages/[email protected]/bin/
  2. 元のファイルをバックアップするため、arm-none-eabi-gdb-py の名前を arm-none-eabi-gdb-py.broken.bak に変更します。
  3. arm-none-eabi-gdb を指す arm-none-eabi-gdb-py という名前の新しいシンボリックリンクを作成します。

問題 2:設定ファイルを変更した後のビルドエラー

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

pio run -t clean  // Clean command

問題 3:設定ファイルを変更した後のビルドエラー

一部の USB ケーブルは電源供給のみで、データ転送ができません。USB ケーブルを持っていない場合や、使用している USB ケーブルがデータ転送に対応しているか分からない場合は、Seeed USB Type-C support USB 3.1 を確認してください。

リソース

Seeed Studio XIAO nRF54LM20A

ハードウェア設計

Seeed Studio XIAO nRF54LM20A Sense

ハードウェア設計

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

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

Loading Comments...