前回の「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-FiとBluetoothが使えます。)
私がやったのは、
①「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[] = "********";