Seeed Studio XIAO nRF52840 Sense Edge Impulse 入門ガイド

Seeed Studio XIAO nRF52840 SenseでEdge Impulseを使用するためのクイックスタートwikiへようこそ!このガイドでは、オンボードIMUセンサーを使用して人間の動きを検出し、異なる動作を分類する方法を探求します。経験豊富な開発者でも、始めたばかりの方でも、このチュートリアルはXIAO nRF52840 SenseボードでEdge Impulseを始めるために必要な知識とスキルを提供します。それでは、早速始めましょう!
入門
このwikiでは、Seeed Studio XIAO nRF52840 Senseの加速度センサーをEdge Impulseと組み合わせて利用し、モーション認識を可能にする方法を紹介します。ここで紹介するコードは、最新バージョンのSeeed nRF52 Boardsでサポートされています。
組み込みAIアプリケーションに関しては、「Seeed nrf52 mbed-enabled Boards Library」の使用を強く推奨します。
ハードウェア
このwikiでは、以下の材料を準備する必要があります:
- Seeed Studio XIAO nRF52840 Sense
- Li-poバッテリー (702025)
- Grove - OLED Display 0.66"
- DupontケーブルまたはGroveケーブル
- 3Dプリントシェル
- 導光プラスチックファイバー
ハードウェアセットアップ
-
ステップ1. はんだごてを使用してGrove - OLED Display 0.66"のGroveベースを取り外します
-
ステップ2. ワイヤーカッターを使用してDupontケーブルを約3cmの長さに加工し、両端で約2mmの内部ケーブルを露出させます
-
ステップ3. ファイバーを前面の小さな穴に通し、端部をLEDに配置します
-
ステップ4. 以下の図に従って、Seeed Studio XIAO nRF52840 Senseを他の要素とはんだ付けします:
溶接部を補強するためにホットメルト接着剤を使用するとより良いでしょう。
-
ステップ5. すべてのコンポーネントを組み立てます:
- ファイバーをシェル前面の小さな穴に通します
- スクリーンを固定位置に取り付けます
- バッテリーをSeeed Studio XIAO nRF52840とスクリーンの間に挟みます
- ワイヤーを慎重に処理します
- 導光プラスチックファイバーの端をSeeed Studio XIAO nRF52840のRGBライトに配置し、余分な部分を切り取ります
- ケースを組み立てます
組み立て後:
ソフトウェア
必要なライブラリは以下の通りです。ハードウェアが正常に機能しているかどうかを確認するために、ここのコードを使用することを強く推奨します。ライブラリのインストールに問題がある場合は、こちらを参照してください。
Edge ImpulseでSeeed Studio XIAO nRF52840 Senseをセットアップするには、以下のソフトウェアをインストールする必要があります:
- Node.js v12以上。
- Arduino CLI
- Edge Impulse CLIとシリアルモニター。コマンドプロンプトまたはターミナルを開いて以下を実行してインストールします:
npm install -g edge-impulse-cli
CLIのインストールに問題がありますか?詳細についてはインストールとトラブルシューティングをご確認ください。
Edge Impulseへの接続
すべてのソフトウェアが準備できたら、開発ボードをEdge Impulseに接続します。
- ステップ1. Seeed Studio XIAO nRF52840 SenseをUSB Type-Cケーブルでコンピューターに接続します。
- ステップ2. Edge Impulseで新しいプロジェクトを作成します
- ステップ3. 「Accelerometer data」を選択し、「Let's get started!」をクリックします
データ取得とトレーニング
このステップでは、Seeed Studio XIAO nRF52840 SenseオンボードのIMUから「加速度計データ」を収集してデータセットを構築し、その後EdgeImpulseプラットフォームでモデルをトレーニングします。
- ステップ4. 「Accelerometer Raw Data」スケッチをSeeed Studio XIAO nRF52840 Senseにアップロードします。
Seeed_Arduino_LSM6DS3ライブラリをダウンロードしてzipファイルとして保存します
Arduino IDEを開き、Sketch > Include Library > Add .ZIP Library...
に移動して、ダウンロードしたzipファイルを開きます。
以下のコードをアップロードし、シリアルモニターを開きます
// XIAO BLE Sense LSM6DS3 Accelerometer Raw Data
#include "LSM6DS3.h"
#include "Wire.h"
//Create a instance of class LSM6DS3
LSM6DS3 myIMU(I2C_MODE, 0x6A); //I2C device address 0x6A
#define CONVERT_G_TO_MS2 9.80665f
#define FREQUENCY_HZ 50
#define INTERVAL_MS (1000 / (FREQUENCY_HZ + 1))
static unsigned long last_interval_ms = 0;
void setup() {
Serial.begin(115200);
while (!Serial)
;
if (myIMU.begin() != 0) {
Serial.println("Device error");
} else {
Serial.println("Device OK!");
}
}
void loop() {
if (millis() > last_interval_ms + INTERVAL_MS) {
last_interval_ms = millis();
Serial.print(myIMU.readFloatAccelX() * CONVERT_G_TO_MS2, 4);
Serial.print('\t');
Serial.print(myIMU.readFloatAccelY() * CONVERT_G_TO_MS2, 4);
Serial.print('\t');
Serial.println(myIMU.readFloatAccelZ() * CONVERT_G_TO_MS2, 4);
}
}
これで、シリアルモニターに加速度計とジャイロスコープのデータが次々と表示されるのが確認できます!
- ステップ 5.
terminal
またはcmd
またはpowershell
でコマンドを実行して開始します。
edge-impulse-data-forwarder
- ステップ 6. CLIを使用してSeeed Studio XIAO nRF52840 SenseをEdge Impulseに接続する必要があります。まず、アカウントにログインしてプロジェクトを選択します
加速度計とデバイスに名前を付けます。
- ステップ 7. XIAO nRF52840 SenseをEdge Impulseに接続します
Edge Impulseの「Data acquisition」ページに移動します。接続が成功した場合、結果は次のようになります。ページの右側に「Seeed Studio XIAO nRF52840 Sense」のデバイスが表示されていることを確認できます。
- ステップ 8. センサーを「3 axes」として選択します。ラベルに
up
とdown
という名前を付け、Sample length (ms.)を20000に変更して、start samplingをクリックします。
- ステップ 9. Seeed Studio XIAO nRF52840 Senseを上下に振り、20秒間その動作を続けます。取得結果は次のように表示されます:
- ステップ 10. 生データの右上をクリックして「Split Sample」を選択し、データを分割します。+Add Segmentをクリックしてからグラフをクリックします。これを20回以上繰り返してセグメントを追加します。Splitをクリックすると、1秒ごとのサンプルデータが表示されます。
- ステップ 11. ステップ 8. と ステップ 9. を繰り返し、異なる動作データをクリックするために異なる名前でデータにラベルを付けます。例えば
left
とright
、clockwise
、anticlockwise
などです。提供されている例では、上下、左右、円の分類を行っています。ここで必要に応じて変更できます。
ステップ 9. では分割時間が1秒です。これは、ステップ 8. で1秒間に少なくとも1回の上下の振りを行う必要があることを意味します。そうでなければ、結果は正確になりません。同時に、自分の動作速度に応じて分割時間を調整できます。
機械学習モデルの構築
- ステップ 12. データセットのリバランス、Dashboardをクリックしてページを下にスクロールし、Perform train / test splitを見つけます
Perform train / test splitをクリックしてYesを選択し、確認します
- ステップ 13. Impulseの作成
Create impulseをクリック -> Add a processing blockを追加 -> Spectral Analysisを選択 -> Add a learning blockを追加 -> **Classification (Keras)**を選択 -> Save Impulse
- ステップ 14. スペクトル特徴
クリックしてSet upします
Spectral featuresをクリック -> ページを下にスクロールしてSave parametersをクリック -> Generate featuresをクリック
出力ページは次のようになります:
- ステップ 15. モデルのトレーニング
NN Classifierをクリック -> Start trainingをクリック -> Unoptimized (float32)を選択
トレーニングモデルの精度は最終結果にとって非常に重要です。出力されるトレーニング結果が65%未満と低い場合は、より多くの回数でトレーニングすることを強く推奨します。
Seeed Studio XIAO nRF52840 Sense へのデプロイ
- ステップ 16. モデルテスト
Model testing をクリック -> Classify all をクリック
精度が低い場合は、トレーニングセットを増やしてサンプル時間を延長することで、データセットを確認できます
- ステップ 17. Arduino ライブラリのビルド
Deployment をクリック -> Arduino Library をクリック -> Build をクリック -> .ZIP ファイルをダウンロード
- ステップ 18. .ZIP ファイルの名前は非常に重要で、デフォルトで Edge Impulse プロジェクトの名前として設定されます。ここではプロジェクト名が "XIAO-BLE-gestures_inferencing" です。ファイルを選択して ".ZIP ファイル" を Arduino ライブラリに追加します
- ステップ 19. こちらからコードをダウンロードします。ヘッダーファイルの名前を自分のものに変更してアップロードします。
- ステップ 20. Seeed Studio XIAO nRF52840 Sense を動かしたり保持したりして結果を確認します:
Arduino の右上角にあるモニターをクリックします。
Seeed Studio XIAO nRF52840 Sense を左右方向に動かすと:
モニターは次のような出力を表示します:
そして出力表示は次のようになります:
Seeed Studio XIAO nRF52840 Sense を上下方向に動かすと:
モニターは次のような出力を表示します:
そして出力表示は次のようになります:
Seeed Studio XIAO nRF52840 Sense をアイドル状態で保持すると:
モニターは次のような出力を表示します:
そして出力表示は次のようになります:
おめでとうございます!プロジェクトの最後まで到達しました。より多くの方向を試して、どれが最高の出力を実行するかを確認することをお勧めします。
リソース
技術サポート & 製品ディスカッション
私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを用意しています。