M5StackでBluetoothを使った宝探しレーダーを作ってみた
宝探しレーダー
家族でBluetoothデバイスを探した経験(詳細は以下ブログ記事参照)をヒントに作りました。
要は、ドラゴンボールのドラゴンレーダーです。ワンピース世代の人だとログポーズ的なもの?
M5 Stackを使って作りました。ソフトはGitHubの以下リポジトリにアップしてあります。
作った時に、主にM5Stack特有のハマりどころがあったので、ちょっとメモしておきます。
起動しない
起動しない現象です。シリアルモニタで確認すると「M5Stack Initializing...」のところで止まっています。以下のようにツイートしたら、優しい人のアドバイスで解決しました。
Serial.begin(115200);
をコメントアウトすれば良いようです。この設定はM5.begin();
に含まれているので不要とか。
ただ、問題が起こるのはM5Stack Core2やAtomで、通常のM5Stackだと問題ないという情報も。そして、私のM5Stackは通常のもののはず…
何か他に変なところがあるのでしょうか…
Bluetoothデバイスを検知できない
これは、デバイス側の問題と、M5Stack側の問題の2つがありました。
デバイス側の問題
今回は、対象のBluetoothデバイスとしてXiaomi Mi Smart Band 4を使ったのですが、検出設定をオンにする必要がありました。これもTwitterで教えてもらいました。ほんと感謝です。
今回のように、Bluetoothの通信を使用するソフトを作る場合は、Bluetoothデバイスに検出設定があるか確認するようにしましょう。
M5Stack側の問題
デバイス側の設定した後も、通信が全然安定せず困っていました。そのとき、Bluetoothのライブラリは標準のはイマイチでNimBLE-Arduinoライブラリ良いという話を聞いていので、思い切って試してみたところ、嘘のように安定しました。
音が爆音で流れ続ける
標準のM5.Speaker.tone()
を使ったところ、音が爆音で流れ続けてしまったので、以下の記事を参考にledcSetup()
, ledcWrite()
を使いました。
まとめ
久しぶりにM5Stackを使ったら色々ハマりました。結構M5Stackはハマりどころが多い気がします。ネットで情報多いのが救いですね。
せっかくデバイス作ったので、宝探しゲーム的なことをしてみたいと思います。まずは娘と遊んでみようかな。
関連記事
Discussion