motion detector with micro:bit using neural network libraries
micro:bitにSony Neural Network Librariesで生成したAIを載せてモーション検出する
- micro:bit x 2台
- スピーカー x 1台
- micro:bitとスピーカーをつなぐワニ口クリップ
1.Githubの"predict/build/bbc-microbit-classic-gcc/source/predict-combined.hex"を 本側のmicro:bitに転送する。
2.GitHubの"receiver/receiver.py"を Muを使ってスピーカー側のmicro:bitに転送する。
3.スピーカー側のmicro:bitにスピーカーを繋げる。(0番、1番、GND)
モーションを検知し、無線通信を送信するためのプログラムです。
Neural Network Librariesから出力した学習済みモデルのソースを使います。
独自に学習させたソースを使用する場合は"predict/cruntime"の中身を入れ替えてください。
※micro:bitオフラインコンパイル環境(環境構築方法は文末のリンク参照)でビルドします。
"predict"フォルダで下記コマンドを実行する。
yt target bbc-microbit-classic-gcc
yt build
生成された"predict/build/bbc-microbit-classic-gcc/source/predict-combined.hex"をmicro:bitにコピーする。
※初回だけ yt target bbc-microbit-classic-gcc
の後で
"predict/yotta_modules/microbit-dal/inc\core/MicroBitConfig.h"を編集し、
#define MICROBIT_BLE_ENABLED の値を1から0に変更します。
Bluetoothと無線通信は同時に使えないため、Bluetoothを無効に設定するための変更です。
ビルド済みバイナリファイルは下記においています。
"predict/build/bbc-microbit-classic-gcc/source/predict-combined.hex"
無線通信を受け取り、音声を再生するためのプログラムです。
MicroPythonで書かれたソースのため、Muを使ってmicro:bitに転送してください。
AIに学習させるための加速度データを収集するためのプログラムです。
シリアル通信で出力される内容を保存して使います。
Aボタン、Bボタンを押している間はデータの末尾に識別番号が付きます。
現在は80ms間隔で6セットの加速度データを使用しています。
下記の定数を変更することで調整できます。
※変更した場合、predictモジュールも同様に変更してください。
"main.cpp"
#define INTERVAL_OF_GET に、何ミリ秒間隔でデータを収集するかを指定します。
#define NUM_OF_VALUES に、何個の加速度データを一連のデータとして使用するかを指定します。
※micro:bitオフラインコンパイル環境(環境構築方法は文末のリンク参照)でビルドします。
"collector"フォルダで下記コマンドを実行する。
yt target bbc-microbit-classic-gcc
yt build
生成された"collector/build/bbc-microbit-classic-gcc/source/collector-combined.hex"をmicro:bitにコピーしてください。
ビルド済みバイナリファイルは下記においています。
"collector/build/bbc-microbit-classic-gcc/source/collector-combined.hex"
Paddle 作品共有サイト
https://paddle.prokids.jp/work/show/296
YouTube 作品紹介動画
https://www.youtube.com/watch?v=Ggl_MrOXplU&feature=youtu.be
Qiita micro:bitでNeural Network Librariesを使う方法(オフラインコンパイル環境の構築)
https://qiita.com/moto2g/items/703b10d4aff1fd1e1f23