M5StackでBluetoothを使った宝探しレーダーを作ってみた

1 min read読了の目安(約1600字

宝探しレーダー

家族でBluetoothデバイスを探した経験(詳細は以下ブログ記事参照)をヒントに作りました。

https://karaage.hatenadiary.jp/entry/2021/02/22/073000

要は、ドラゴンボールのドラゴンレーダーです。ワンピース世代の人だとログポーズ的なもの?

M5 Stackを使って作りました。ソフトはGitHubの以下リポジトリにアップしてあります。

https://github.com/karaage0703/treasure_radar_m5

作った時に、主にM5Stack特有のハマりどころがあったので、ちょっとメモしておきます。

起動しない

起動しない現象です。シリアルモニタで確認すると「M5Stack Initializing...」のところで止まっています。以下のようにツイートしたら、優しい人のアドバイスで解決しました。

https://twitter.com/karaage0703/status/1363993537033822211
M5Stack Core2

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ライブラリ良いという話を聞いていので、思い切って試してみたところ、嘘のように安定しました。

https://github.com/h2zero/NimBLE-Arduino

音が爆音で流れ続ける

標準のM5.Speaker.tone()を使ったところ、音が爆音で流れ続けてしまったので、以下の記事を参考にledcSetup(), ledcWrite()を使いました。

https://m5stack-build.hatenablog.com/entry/2020/04/12/132753

まとめ

久しぶりにM5Stackを使ったら色々ハマりました。結構M5Stackはハマりどころが多い気がします。ネットで情報多いのが救いですね。

せっかくデバイス作ったので、宝探しゲーム的なことをしてみたいと思います。まずは娘と遊んでみようかな。

関連記事

https://karaage.hatenadiary.jp/entry/2018/10/22/073000

https://karaage.hatenadiary.jp/entry/2018/09/10/073000

https://karaage.hatenadiary.jp/entry/2018/09/05/073000

https://karaage.hatenadiary.jp/entry/2018/04/16/073000