編集履歴一覧に戻る
Foopingのアイコン画像

Fooping が 2024年09月26日23時11分51秒 に編集

コメント無し

本文の変更

本記事は以下の魔法の杖制作を少ない部材で要素技術部分ごとに解説します。 https://elchika.com/article/3e0ab04e-85bb-466b-86e5-c8a1b16c5984/ ## 準備物 | 部品 | 個数 | URL | |:---:|:---:|:---| | SPRESENSEメインボード | 1 | https://ssci.to/3900| | SPRESENSE拡張ボード | 1 | https://ssci.to/3901| | SPRESENSE6軸加速度・ジャイロセンサアドオンボード | 1 | https://ssci.to/9870 | | マイクロSDカード|1|https://amzn.asia/d/hBE4j0H | SPRESENSEとパソコンを接続するためのUSBマイクロbケーブルが別途必要です。 ## 接続 - SPRESENSE メインボードと6軸加速度・ジャイロセンサアドオンボードを組み付ける([詳細](https://github.com/fooping-tech/Spresense_6dof_add_on)) - SPRESENSE メインボードと拡張ボードを組み付ける([詳細](https://developer.sony.com/develop/spresense/docs/introduction_ja.html#_spresenseメインボードとspresense拡張ボードの接続方法)) ++メインボードと拡張ボードの嵌合が不完全だとSDカードが読み込めないなどの現象が発生します。しっかりと組み付けたことを確認してください。++ ## 開発環境を準備する 以下のセットアップ記事を参考にArduino開発環境を準備する https://developer.sony.com/spresense/development-guides/arduino_set_up_ja.html ## ソフトを書き込む 以下のソフトを書き込む https://github.com/fooping-tech/Spresense_6dof_add_on/tree/main/example/Spresense_magic_wand ++ソフトのダウンロードは[リポジトリのトップページ](https://github.com/fooping-tech/Spresense_6dof_add_on)で code > Download Zip でダウンロードできる++

+

## 必要なライブラリをインストールする Arduino Libraryに「Madgwick」をインストールします。 ![キャプションを入力できます](https://camo.elchika.com/94954827690742c8637ded19056ef61dc775efb5/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34306535643335612d306636632d343334642d393230302d6562623231383562613066622f34393361306362302d333635632d343163312d383037332d636563666463633863626232/)

## SDカードにmodelを書き込む - SDカードをSPRESENSE拡張ボードに差し込む - SPRESENSE拡張ボードのUSBコネクタとパソコンを接続する - example/Spresense_magic_wand/modelに入っている[model.nnb](https://github.com/fooping-tech/Spresense_6dof_add_on/tree/main/example/Spresense_magic_wand/model)をSDカードに書き込む ## プログラムを実行する - SPRESENSEメインボードにUSBを接続しパソコンと接続する - USBコネクタを支点に円を描く、8の字を描く、横方向に振るとLEDが推論結果を示す - Arduinoのシリアルモニタにrを書き込むとリセットされる。 - Arduinoのシリアルモニタにpを書き込むと杖軌跡が0,1で表示される。(1が杖通過した軌跡) ```arduino:Arduinoシリアルモニタからのコマンド入力判定プログラム(該当部位のみ抜粋) void Serial_main(){ if (Serial.available() > 0) { // シリアルバッファにデータがあるか確認 char receivedChar = Serial.read(); // 1バイト読み取り if (receivedChar == 's') { // もし受信したデータが's'なら SaveCSV(); Serial.println("Done!"); } if (receivedChar == 'l') { // もし受信したデータが'l'ならラベル+1 label++; if(label>5)label=0; Serial.print("label="); Serial.println(label); } if (receivedChar == 'p') { // もし受信したデータが'p'なら canvas4->PrintSerial28(); } if (receivedChar == 'r') { // もし受信したデータが'r'なら ResetCanvas(); } } } ``` データセットの作成、学習モデルの作成は[こちらの記事](https://elchika.com/article/2e68a29d-0139-429d-8ad9-b453dbe011d7/)