NordicのIoT Axon NPU( NRF54LM20 )開発キットのジェスチャデモ(パート5)(Zephyr Linuxセットアップ)

これは、Nordicの受賞歴のある新しいIoT開発キット NRF54LM20-DK のパート5です。
NRF54LM20-DK Nordic Semiconductor ASA | 開発ボード、キット、プログラマ | DigiKey

このジェスチャデモを正しくセットアップするには、以前の記事パート2パート3を参照してください。このアプリケーションは、NordicのEdge AI Labソリューションを使用したジェスチャベースのリモートコントロールデバイスをデモンストレーションします。

このジェスチャ認識デモでは、DigiKeyで入手可能なBoschの BMI270 IMU を搭載したSparkfunの評価ボードを使用します。

image

そして、以下の図に示す4線式SPIインターフェース(電源供給用の3.3Vとグランドも必要)から、これらのケーブルを使用してポイントツーポイント接続により…

Nordicの受賞歴のある新しいIoT開発キット NRF54LM20-DK に接続された4線式SPIインターフェースへ接続します。
NRF54LM20-DK Nordic Semiconductor ASA | 開発ボード、キット、プログラマ | DigiKeyは以下のインターフェース(P17)に接続されています。

4線式SPIインターフェースは、Zephyr RTOSオーバーレイファイルで定義されています(関連するSPIインターフェース領域のみを以下に示します)。

spi21_default: spi21_default {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 3, 3)>,
				<NRF_PSEL(SPIM_MISO, 3, 1)>,
				<NRF_PSEL(SPIM_MOSI, 3, 0)>;
		};
	};

	spi21_sleep: spi21_sleep {
		group1 {
			psels = <NRF_PSEL(SPIM_SCK, 3, 3)>,
				<NRF_PSEL(SPIM_MISO, 3, 1)>,
				<NRF_PSEL(SPIM_MOSI, 3, 0)>;
			low-power-enable;
		};
	};
};

&gpio3 {
	status = "okay";
};

&spi21 {
	compatible = "nordic,nrf-spim";
	status = "okay";
	pinctrl-0 = <&spi21_default>;
	pinctrl-1 = <&spi21_sleep>;
	pinctrl-names = "default", "sleep";
	cs-gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;

	bmi270: spi-dev-bmi270@0 {
		compatible = "bosch,bmi270";
		status = "okay";
		reg = <0>;
		spi-max-frequency = <DT_FREQ_M(8)>;
	};
};

以下に、これら2つの間の必要なポイントツーポイント接続をまとめます。

  • 3.3V - P17-1(オレンジ)
  • GND - P17-2(茶)
  • MOSI - P17-9(グレー)
  • MISO - P17-10(緑)
  • SPI CS - P17-13(黄)
  • SPI CLK - P17-14(紫)

なお、この事例ではケーブルの色は任意です。

このデモをビルドするには、Python仮想環境で以下の手順に従ってください(パート2パート3を参照)。

(venv)  ~/DigiKey_Coffee_Cup/Nordic$ nrfutil sdk-manager toolchain launch --ncs-version v3.3.0-preview2 --shell

次に、シェルを使用して、


(v3.3.0-preview2) ~/DigiKey_Coffee_Cup/Nordic$ west build -p always -b nrf54lm20dk/nrf54lm20b/cpuapp edge-ai/applications/gesture_recognition/

...

[376/376] Linking C executable zephyr/zephyr.elf
Memory region         Used Size  Region Size  %age Used
           FLASH:      490200 B     925552 B     52.96%
             RAM:       41428 B       511 KB      7.92%
        IDT_LIST:          0 GB        32 KB      0.00%

...

そして、Zephyr RTOSフレームワークの通常の手順に従い、書き込み処理に進みます。

(v3.3.0-preview2) ~/DigiKey_Coffee_Cup/Nordic$west flash

...
...

-- runners.nrfutil: Connecting to probe
-- runners.nrfutil: Programming image
-- runners.nrfutil: Verifying image
-- runners.nrfutil: Reset
-- runners.nrfutil: Board(s) with serial number(s) 1051861371 flashed successfully.

minicomターミナルを開くと、このデモでセンサが正しく検出された場合、以下の情報が表示されます。

*** Booting MCUboot v2.3.0-dev-3dfaa012cf34 ***
*** Using nRF Connect SDK v3.3.0-preview2-ede152ec210b ***
*** Using Zephyr OS v4.3.99-4b6df5ff11b1 ***
I: Starting bootloader
I: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Secondary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Boot source: none
I: Image index: 0, Swap type: none
I: Bootloader chainload address offset: 0x10000
I: Image version: v0.0.0
I: Jumping to the first image slot
*** Booting nRF Connect SDK v3.3.0-preview2-ede152ec210b ***
*** Using Zephyr OS v4.3.99-4b6df5ff11b1 ***
[00:00:00.050,671] <inf> fs_nvs: 8 Sectors of 4096 bytes
[00:00:00.050,678] <inf> fs_nvs: alloc wra: 0, fa0
[00:00:00.050,682] <inf> fs_nvs: data wra: 0, 30
[00:00:00.050,761] <inf> bt_sdc_hci_driver: SoftDevice Controller build revision: 
                                            ac 6c cb 12 2a 45 63 97  7c ba aa bd 8d 8f d0 9b |.l..*Ec. |.......
                                            c2 c9 23 ea                                      |..#.             
[00:00:00.052,910] <inf> bt_hci_core: HW Platform: Nordic Semiconductor (0x0002)
[00:00:00.052,925] <inf> bt_hci_core: HW Variant: nRF54Lx (0x0005)
[00:00:00.052,938] <inf> bt_hci_core: Firmware: Standard Bluetooth controller (0x00) Version 172.52076 Build 1665477138
[00:00:00.053,138] <inf> bt_hci_core: No ID address. App must call settings_load()
[00:00:00.053,153] <inf> ble_hid: Bluetooth initialized
[00:00:00.053,511] <inf> bt_hci_core: HCI transport: SDC
[00:00:00.053,611] <inf> bt_hci_core: Identity: F3:93:F9:A8:5C:40 (random)
[00:00:00.053,630] <inf> bt_hci_core: HCI: version 6.2 (0x10) revision 0x3073, manufacturer 0x0059
[00:00:00.053,648] <inf> bt_hci_core: LMP: version 6.2 (0x10) subver 0x3073
[00:00:00.055,972] <inf> ble_hid: Advertising successfully started
[00:00:00.056,019] <inf> main: nRF Edge AI Gestures Recognition Demo:
[00:00:00.056,029] <inf> main: nRF Edge AI Runtime Version: 2.2.0
[00:00:00.056,047] <inf> main: nRF Edge AI Lab Solution id: 36038
[00:00:22.525,021] <inf> main: Predicted class: DOUBLE THUMB, with probability 76 %
[00:00:53.594,756] <inf> main: Predicted class: DOUBLE THUMB, with probability 82 %

etc etc

[00:00:04.015,501] <inf> main: Predicted class: DOUBLE THUMB, with probability 88 %
[00:00:08.312,211] <inf> main: Predicted class: DOUBLE SHAKE, with probability 84 %
[00:00:09.303,819] <inf> main: Predicted class: ROTATION RIGHT, with probability 89 %
[00:00:09.634,333] <inf> main: Predicted class: ROTATION RIGHT, with probability 92 %
[00:00:16.245,012] <inf> main: Predicted class: DOUBLE THUMB, with probability 100 %
[00:00:17.567,062] <inf> main: Predicted class: DOUBLE SHAKE, with probability 99 %
[00:00:18.889,219] <inf> main: Predicted class: DOUBLE THUMB, with probability 92 %
[00:00:19.880,790] <inf> main: Predicted class: DOUBLE SHAKE, with probability 80 %
[00:00:21.864,775] <inf> main: Predicted class: DOUBLE SHAKE, with probability 91 %
[00:00:23.847,158] <inf> main: Predicted class: DOUBLE THUMB, with probability 91 %
[00:00:24.838,732] <inf> main: Predicted class: DOUBLE THUMB, with probability 98 %
[00:00:25.830,311] <inf> main: Predicted class: DOUBLE THUMB, with probability 80 %
[00:00:26.821,886] <inf> main: Predicted class: DOUBLE THUMB, with probability 98 %
[00:00:30.457,718] <inf> main: Predicted class: DOUBLE SHAKE, with probability 88 %
[00:00:37.068,271] <inf> main: Predicted class: DOUBLE SHAKE, with probability 99 %
[00:00:38.720,966] <inf> main: Predicted class: DOUBLE SHAKE, with probability 83 %


minicomターミナルに以下のようなメッセージが表示され…

[00:00:00.014,050] <err> main: Failed to initialize IMU sensor, error = 2  

上記が確認された場合は接続が正しくないため、配線を見直す必要があります。

次回の記事では、このデモを完結させますのでご期待ください。このデモは、この革新的なNordicのIoTプラットフォーム上で、Axon NPUドライバを直接使用して、新しいAxonニューラルプロセッシングユニット(NPU)のジェスチャデモを部分的に完了したものです。Embedded World 2026で受賞したこの新しいNordicのIoT NRF54LM20-DK 開発キットは、DigiKeyで入手可能です。

この記事はスペイン語でこちらからご覧いただけます。

Este articulo esta disponible en español aquí.




オリジナル・ソース(English)