M5Stack 用の距離センサと UIFlow でプロトタイピング

 M5Stack には GPIO にジャンパーコードを接続して色々なセンサーなどを接続することができますが、 GROVE コネクタで簡単に接続できる M5Stack 用のユニットパーツが色々と販売されています。 UIFlow でも色々なユニットパーツに対応していて気になっていたのですが、今まで試していなかったので、今回は距離センサを試してみました。

www.switch-science.com

 ユニットについてのドキュメントも用意されていて、下記で参照できます。 Arduino IDE でのサンプルコード等も掲載されています。

docs.m5stack.com

測定方式

 距離センサにも色々な方式がありますが、このセンサは ToF(Time-of-Flight)方式と言われるもので、赤外線が物体に反射して戻ってくるまでの時間から距離を計算するタイプのものです。搭載されているセンサモジュールは下記のモジュールです。

www.switch-science.com

 ちなみに以前下記の記事で使用したセンサも方式としてはToF方式ですが、赤外線ではなく超音波を使ったものになります。

blog.akanumahiroaki.com

距離センサを接続

 それでは距離センサを M5Stack に接続してみます。センサには本体とGROVEコネクタ用のケーブルがセットになっています。

f:id:akanuma-hiroaki:20190209140134j:plain

 センサ本体の裏面は下記のような感じで、センサモジュールの型番やピンアウトが記載されています。

f:id:akanuma-hiroaki:20190209140203j:plain

 接続はセンサユニットを M5Stack 本体の GROVE コネクタに接続するだけで、それ以外にジャンパーコードを使ったり半田付けをする必要はありません。

f:id:akanuma-hiroaki:20190209140304j:plain

距離を表示

 今回は UIFlow を使って処理を実装してみます。 UIFlow の M5Stack エミュレータの下にユニット追加ボタンがあるのでクリックします。

f:id:akanuma-hiroaki:20190209142955p:plain

 すると UIFlow が対応しているユニットパーツのリストが表示されますので、下の方にスクロールして ToF を選択します。 Port は A を選択します。

f:id:akanuma-hiroaki:20190209143211p:plain

 追加するとエミュレータの下に ToF が表示されるようになります。

f:id:akanuma-hiroaki:20190209143319p:plain

 ToF が追加されるとメニューの UnitsTOF が追加され、センサから距離を読み取るためのブロックが使用できるようになります。

f:id:akanuma-hiroaki:20190209143443p:plain

 これを使用して今回は、無限ループで一秒毎に距離情報を読み出してラベルの位置に表示する簡単な処理を作ってみました。

f:id:akanuma-hiroaki:20190209151125p:plain

 これを実際に M5Stack の実機で動かして、実際の距離と読み出した値の差を簡単に確認してみました。読み取った数字の単位が何なのかは少し調べてみた感じではわからなかったのですが、やってみた感じでは ミリメートル と思って良さそうです。数ミリの誤差はあるものの、検証の仕方も適当ですし、大幅に外れた値が取れることはなかったので、かなり精度は良さそうに感じています。

まとめ

 センサーユニットの物理的な接続も GROVE コネクタで繋ぐだけですし、モニタも M5Stack 本体についていて、さらに UIFlow を使うことで直接コードも書かずに簡単に距離センサーのプロトタイピングができてしまいました。 IoT のプロトタイピングでは如何に電子工作せずにコードを書かずに手軽に実行するかというのが重要だと思いますので、その点 M5Stack とそのユニットパーツはかなり有効に使えそうに思います。今回簡易に試した限りでは距離センサの精度も高そうなので、アイディア次第では十分実用的に使えそうです。