2022年8月30日火曜日

BALA-C(バランスカー 倒立振子)をDabble・Blynk IoTでコントロール

前回の「100円Shopの時計を使ったマーブルマシン」を考案された
n_shinichiさんのblogには、色々と興味深い作品があります。
以前から作って見たかった倒立振子・・・
さらに以前からやってみたかった、スマホでのコントロール。
真似をしてやってみたくなり、挑戦してみました。

こちらは立っている様子とDabbleでコントロールの様子です。

こちらはBlynk IoTでコントロールの様子です。

走らせるときはフエルトを下に敷いています。
板の上では滑りやすく、こけやすいです。

最初にn_shinichiさんと同じように、
M5stickc plusと360°連続回転サーボFS90Rを購入したものの、
にっちもさっちも行かず、
このキットを買ってみることにしました。
ところがこのキットは製造中止のため、
なかなか販売されてるお店が見つからず、
なんとか1店舗だけ在庫があり、購入することが出来ました。

キットの中にはM5stickc等、必要な全ての部品が入っています。
組み立ても10分程度で、
こちらのプログラムをM5stickcに書き込むだけで動くようになりました。

ただ、プログラムの中を見てもさっぱりわからず・・・(^^;
M5stickcは
3軸加速度センサと3軸ジャイロセンサの6軸センサが搭載されていて、
加速度(ax/ay/az)・角速度(角速度gx/gy/gz)の
値を読み取って、PID制御されているそうですが、
全くわかりません(-"-;

それでも、とにかくスマホでコントロールできるようにしたい!
と思って、プログラムのわかりやすいところだけ書き換えてみました。
(M5stickcにはESP32も搭載されていてWi-FiBluetoothが使えます。)

私がやったのは、
「Dabble」・「Blynk IoT」というアプリを使って
スマホとM5stickcを接続し、
スマホからコントロールできるようにした。
(「Dabble」はBluetooth接続・「Blynk IoT」はWifi接続)

顔が出てくるようにした。
だけでで、お恥ずかしい限りです(^^;

参考にさせて頂いたサイトは

顔の描画はn_shinichiさんのスケッチを参考にしながら、
四角い顔をま~るい顔にしてみました。




「Dabble」について
DabbleはBluetooth接続のみでWiFi接続は出来ないようです。
スマホの画面もいくつかパターンがあって、
自分ではカスタマイズ出来ないようです。
私が使ったのはこのjoystickの画面です。

使い方は、上で記載した、n_shinichiさんの
これを見ればわかりやすいです。

<Blynk IoTについて>
Blynkは最近、新バ-ジョンになったらしく、Wi-Fi接続しかできません。
当初、このアプリの使い方が全くわからず、
こちらのマニュアルを見ながら進めていきました。

マニュアルにもあるように
まずパソコンを使って「Quickstart」から始めるのが良さそうです。

Which hardware are you using?
のところは私はM5stickcなので「ESP32」を選択
arduinoを選択



WiFi Network Name(SSID)・Passwordを入力
ここはモバイルルーターやスマホテザリングでもうまくいきました。
2か所入力してから、同じ画面の上の方のCopy code・Download As Fileで
プログラムをarduinoに入れて、デバイス(今回私の場合はM5stick)に書き込みます。
書き込んでから右下のNextを押すと

この画面が出てきて、OKならすぐに繋がります。

この後は
Datastreamsでデータの型を設定(スマホからでも出来ます)

画面の配置を設定
(スマホのDeveloper Mode~template選択~右上の+をクリック)

最後に、配置したパーツにデータを紐付けます。

こちらが私が配置した画面です。

電圧・傾きのところはM5Stickcのデータをスマホへ送り
逆にスマホのjoystickのx,yのデータはM5Stickcへ送ってます。

実はM5stickc~Blynk IoTの接続がうまくいって数日後、
パソコントラブルが起きて、
数日かけて作ったarduinoのデータが消えてしまいました。
また1から・・・と思ってやってみましたが
プログラムをarduinoに書き込んでもうまくいかない・・・
調べてみると Blynk.begin(auth, ssid, pass);  で止まってしまってるようです。
(書き込みでエラーは出ませんでした。)
BlynkのIDを変えてもダメで、
数日後、別のネットワーク(スマホ テザリング)
で繋いだところうまくいくようになって、ほっとしました(^^♪
最初に設定していたssid, passがうまく通ってなかったのでしょうね。
登録していないssid・passやauthを使っても、途中で止まるのかしらね・・・

プログラムにはこの6行が必要みたいです。
(QuickstartでDLしたファイルに書かれているものと同じものでOKです。)
#define BLYNK_TEMPLATE_ID           "********"
#define BLYNK_DEVICE_NAME           "********"
#define BLYNK_AUTH_TOKEN            "****************"

char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "********";
char pass[] = "********";