M5Stack には GPIO にジャンパーコードを接続して色々なセンサーなどを接続することができますが、 GROVE コネクタで簡単に接続できる M5Stack 用のユニットパーツが色々と販売されています。 UIFlow でも色々なユニットパーツに対応していて気になっていたのですが、今まで試していなかったので、今回は距離センサを試してみました。
ユニットについてのドキュメントも用意されていて、下記で参照できます。 Arduino IDE でのサンプルコード等も掲載されています。
測定方式
距離センサにも色々な方式がありますが、このセンサは ToF(Time-of-Flight)方式と言われるもので、赤外線が物体に反射して戻ってくるまでの時間から距離を計算するタイプのものです。搭載されているセンサモジュールは下記のモジュールです。
ちなみに以前下記の記事で使用したセンサも方式としてはToF方式ですが、赤外線ではなく超音波を使ったものになります。
距離センサを接続
それでは距離センサを M5Stack に接続してみます。センサには本体とGROVEコネクタ用のケーブルがセットになっています。
センサ本体の裏面は下記のような感じで、センサモジュールの型番やピンアウトが記載されています。
接続はセンサユニットを M5Stack 本体の GROVE コネクタに接続するだけで、それ以外にジャンパーコードを使ったり半田付けをする必要はありません。
距離を表示
今回は UIFlow を使って処理を実装してみます。 UIFlow の M5Stack エミュレータの下にユニット追加ボタンがあるのでクリックします。
すると UIFlow が対応しているユニットパーツのリストが表示されますので、下の方にスクロールして ToF
を選択します。 Port は A
を選択します。
追加するとエミュレータの下に ToF が表示されるようになります。
ToF が追加されるとメニューの Units
に TOF
が追加され、センサから距離を読み取るためのブロックが使用できるようになります。
これを使用して今回は、無限ループで一秒毎に距離情報を読み出してラベルの位置に表示する簡単な処理を作ってみました。
これを実際に M5Stack の実機で動かして、実際の距離と読み出した値の差を簡単に確認してみました。読み取った数字の単位が何なのかは少し調べてみた感じではわからなかったのですが、やってみた感じでは ミリメートル
と思って良さそうです。数ミリの誤差はあるものの、検証の仕方も適当ですし、大幅に外れた値が取れることはなかったので、かなり精度は良さそうに感じています。
まとめ
センサーユニットの物理的な接続も GROVE コネクタで繋ぐだけですし、モニタも M5Stack 本体についていて、さらに UIFlow を使うことで直接コードも書かずに簡単に距離センサーのプロトタイピングができてしまいました。 IoT のプロトタイピングでは如何に電子工作せずにコードを書かずに手軽に実行するかというのが重要だと思いますので、その点 M5Stack とそのユニットパーツはかなり有効に使えそうに思います。今回簡易に試した限りでは距離センサの精度も高そうなので、アイディア次第では十分実用的に使えそうです。