クリエイター手抜きプロジェクト[598]IoT M5StickC編 BeetleCを制御する/古籏一浩

投稿:  著者:  読了時間:8分(本文:約3,500文字)



今回は、M5StickCを使って、ロボットカーを少しだけ制御します。ロボットカーと言っても本格的なものではなく、とてもシンプルなものです。

左右の2つのモーターを制御して走らせるだけという、本当に簡単なものです。このロボットカーの名称はBeetleCで、スイッチサイエンスから購入することができます。

・BeetleC
https://www.switch-science.com/catalog/5773/

このBeetleCは、M5StickCは付属していないので別途用意する必要があります。

・M5StickC
https://www.switch-science.com/catalog/5517/

BeetleCは完成形で出荷されますので、特に工作する必要はありません。ハンダごてはもちろんドライバーも不要です。M5StickCをBeetleCに差し込むだけです。ピン部分のみ差し込めばよく、USB TypeC電源のところに何か差し込んだりする必要はありません。





準備ができたら、UIFlowを使って制御してみます。BeetleCはUIFlow1.4以降で正式に対応しています。(2019/11/19時点ではバージョン1.4.2)

まず、最初にHatの追加を行います。BeetleCはM5StickC専用なので、UnitではなくHatのカテゴリになります。UIFlow画面の左中央にあるUnits HatのHatの文字をクリックしてから「+」ボタンをクリックします。

すると追加できるHatの一覧がアイコンで表示されます。その中から、BeetleCにチェックマークを入れてから、OKボタンを押します。なお、HatはUnitsと違いひとつしか追加できません。

複数のHatアイコンにチェックを入れてOKボタンを押してしまうと、警告のダイアログが表示されます。この場合、何も追加されません。

無事にHatが追加されると、カテゴリのHAT内にBeetleCのカテゴリが現れます。以下の3つのブロックが表示されます。

Set BeetleC [left] wheel speed 1
Set BeetleC index [0] RGB color [■]
Set BeetleC all RGB color [■]

最初のブロックは、車輪を回転する速度を指定します。正数なら前進、負数なら後退になります。床との摩擦にもよりますが、30〜60くらいにしておけば、だいたい走行できるようです。なお、値が大きいほど速度は速くなります。

車輪の制御は左右別々に行うことができます。右側の車輪を前進に、左側の車輪を後退するようにすれば、BeetleCは円を描くような動きになります。

残りの2つのブロックは、LED制御を行います。BeetleCには下部にフルカラーLEDが7個ついています。このLEDを制御することができます。

indexで指定できる数値は0〜6までになります。この0〜6までの値とBeetleCのLEDの場所は、以下のようになっています。なお、これはBeetleCを上から見た場合の位置になります。

0:右上
1:右
2:右下
3:下
4:左下
5:左
6:左上

とりあえず、BeetleCを前進させてみましょう。[Set BeetleC [left] wheel speed 1]ブロックを[Setup]ブロックの下につなげます。値を1から30に変更します。

次に、同じブロックを配置しつなげます。制御する車輪をleftからrightに変更します。値は30にします。これでBeetleCの車輪を動かすことができます。

UIFlow右上にある実行ボタンを押して、動作させてみてください。なお、車輪が回転しない場合は、BeetleCの電源が入っていない可能性があります。スイッチを上から見て、左にスライドさせると電源ONになります。

ごくまれに、BeetleCからM5StickC抜けてしまうと、M5StickCの電源が入らなくなってしまうことがあります。この場合は、M5StickCのG0と3V3の端子をジャンパーワイヤーなど(抵抗でもいい)で接続してください。接続後にUSB TypeCケーブルに接続すれば電源が入るはずです。電源が入れば以後はジャンパーワイヤーを外しても問題ありません。

床を走行しない場合は、30でなく60など大きい値にしてください。電力や床との摩擦の関係もあるのかもしれませんが、期待通りに走行しないこともあります。手でも持つと動くので、なかなか微妙な感じです。

ちなみにPythonコードの場合は以下のようになります。

────────────────
from m5stack import *
from m5ui import *
from uiflow import *
import hat
setScreenColor(0x111111)
hat_BeetleC0 = hat.get(hat.BEETLEC)
hat_BeetleC0.SetPulse(0, 30)
hat_BeetleC0.SetPulse(1, 30)
────────────────

UIFlow 1.4.0からは、HTTPリクエストも出してデータを受け取ることができるので、ブラウザからも制御することができるでしょう(未確認ですが公式ページのは、httpのプロトコル出してるので、そんな雰囲気)。

まあ、ブラウザから制御したいのであれば、M5StickC+obnizOSという方法もあります(obnizは、2019/11/18にライセンス体系が、また変わったので要確認ですが)。

M5StickC+BeetleCを土台にして、スマホから制御して紙相撲でもやれば面白いかもしれません。ちなみにBeetleCをスマホから制御するプログラムは、公式ページに用意されています(Windowsからのみ焼き込めます)。

https://docs.m5stack.com/#/en/hat/hat-beetlec


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

M5StaickCだとHatが1つしか取り付けられないのですが、複数使えるともう少し用途が広がる感じも。

そうなるとBeetelC+ENV Hat(温度測定等)なら、走行させて一定時間そこで温度を計測して、しばらくしたら戻って来るというような使い方もできそうです。水中とかも行けるHatがあれば、これまた遊べそうですが多分出ない...。出ればリアル潜水艦ゲームができそうなんですが。

・みんなのobniz入門
https://www.amazon.co.jp/dp/4865942165/

・InDesign自動化サンプルプログラム逆引きリファレンス上/下
https://www.amazon.co.jp/dp/4844396846/
https://www.amazon.co.jp/dp/4844396854/

・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/