製品情報
2023.09.12
CuGoV3をM5StackとUIFlowで遠隔操作してみた
おはようございます。インターンの塚本です。今回はCuGoV3をM5StackとUIFlowを使って遠隔操作してみようと思います。
概要
前回、M5Stackを用いたCuGoV3の簡単な制御を行いました。今回はプロポではなく、スマートフォンやM5Stackでの遠隔操作を行いました。
使用機器
今回はM5Stack Basicを使用していますが、GrayやFIREでも大丈夫です。
名称 | 個数 | 詳細 |
M5Stack Basic V2.6 | 1 | https://www.switch-science.com/catalog/7362/ |
CuGoV3 遠隔操作ロボットキット | 1 | https://cuborex.base.shop/items/39457737 |
ジャンパーワイヤ | 4 | https://akizukidenshi.com/catalog/g/gC-05159/ |
開発環境
- MacBook Air(M1,2020)
- Google Chrome 103.0.5060.114
- UIFlowブラウザ版 v1.10.5
配線
前回の配線から信号線が逆になっています。M5Stackの並行する辺にあるピンは左右で同じ機能を持っているで、今回は前回とは逆の辺に接続しました。また、M5Stackにモータドライバから電源を供給しています。
M5Stack | CuGoV3 モータドライバ |
5V | 右の赤 |
GND | 左右の黒 |
2 | 左の白 |
5 | 右の白 |
スマートフォンでの遠隔操作
概要
はじめに、スマートフォンでの遠隔操作を行います。今回は、UIFlowのRemote+を用いて開発します。
リモコンブロックではM5StackのAPIKEYと紐付けられたWebページを作成し、そのサイトから指示を送信することでM5Stackを制御します。本機能はWi-Fiの接続が必須となります。制御用のスマートフォンで作成されたWebページへアクセスすることで制御が可能となります。
Remote+こちら→https://docs.m5stack.com/en/uiflow/advanced/remote
プログラム
今回のプログラムでは2つのジョイスティックの値に対してPWMの出力を変化させCuGoV3を制御します。スマートフォンを横向きに持つことを想定しているため、縦に2つ配置したジョイスティックのx方向の最大値、最小値をCuGo V3を前進後退させるためのデューティ比に合わせます。最大値、最小値の設定は小数でできなかっため10倍した値で設定し、出力するときに10で割ることで変換しました。M5Stackの画面に制御ページへ飛べるQRコードを表示させ、そのQRコードを読み取ることでアクセスできるようにしています。デスクトップ版のUIFlowではWi-Fiへ接続するためのブロックを入れてください。
実際のプログラム
スティックの設定
走行動画
M5Stackでの遠隔操作
概要
M5StackはESP32と呼ばれるマイコンが搭載されており、ESP-NOWと呼ばれる通信方法を使うことができます。
ESP-NOWはESP32やESP8266などのマイコンでデータを送受信でき、複雑な設定をせずに開発ができます。UIFlowでもESP-NOWを用いることができるので、もう1台M5Stackを用意し制御します。
コントローラ用M5Stackでは、制御用のM5Stackのssidを取得後にペアリングをし、押したボタンに合わせた数字を制御用M5Stackに送信します。
制御側のM5Stackでは受信した数字に合わせたPWM信号を出力します。今回はコントローラ用M5StackとしてM5Stack Grayを用意しました。
ESP-NOWについてはこちら→https://docs.m5stack.com/en/uiflow/advanced/espnow
ボタン配置
ボタン | 送信される値 | CuGoV3の動き |
Aを押す | 1 | 左旋回 |
Bを押す | 2 | 直進 |
Cを押す | 3 | 右旋回 |
AとCを同時に押す | 4 | 後進 |
各ボタンを離したとき | 0 | 停止 |
コントローラのプログラム
コントローラではペアリング後に押されたボタンに合わせた出力を制御側へと送信します。画面には左端に 制御側のssid、中央に進行方向を示す三角形が表示されるようになっています。
コントローラーのプログラム
制御側のプログラム
制御側では受信したデータに合わせたPWM信号をCuGoV3へと出力します。左右で同様の値を出力するとモータの個体差によって直進しない場合があるので、真っ直ぐ走るように出力の値を調整します。
制御側のプログラム
走行動画
まとめ
今回はCuGoV3をM5StackとUIFlowで遠隔操作してみました。スマートフォンでの遠隔操作は少しラグがあるように感じました。
皆さんもぜひCuGoV3でチャレンジしてみてください。
次回はより高度な制御を行うためにCuGoV3とロータリーエンコーダを用いて角速度を取得します。