続・M5StickCでGoProリモコン

前回はコチラ。
https://papalagi.org/blog/archives/1477

反応がよかったので、気を良くして続編登場。
剥きプロは脆弱なので、多頭飼育はあたりまえ。
まあウチの界隈も片手では足りないぐらいある。
沼の中にあるさらに深い沼なのだ。
リモコンが複数対応したいのは、あるよなーとは思う。

最初は ArduinoIDE 使って ATOM Lite あたりのシンプルなの作ろうと考えていた。
「WiFiMulti.h」というクラスがあって、複数リストから電波強度強いのをつなげるみたいなの。
「あれ使えるじゃん!」でピーンとなってゴソゴソ始めた。
WiFiつながるところまで進めて、コマンドを作り込むあたりまで進んだ。
そんな時に、コザックさん(いつもお世話になっております)から、APP.List でスクリプト増やせばいいんじゃね?というアイデアが出た。
それが一番簡単じゃないか。なぜ気づかなかった。

UIFlowはハタからはわからないが、「/flash」の下に Python(厳密にはMicroPython)に拡張子pyスクリプトが並んでおり、そこにスクリプトを置けば「APP.List」に並ぶ。
至極簡単な話なんだけど、標準のツールにそのあたりをどうこうする機能が「ない」。
Linux だと pip から ampy 引っ張ってサクっといけるが、あんま一般的でないかんじ。
なんかもっとないかなーとおもったら VSCode でやる方法が比較的簡単?っぽいのでまとめてみた。

■Microsoft Visual Studio Code
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
マイクロソフトだー。
いろんなところに対応しているので、自分の環境にあわせてインストール。
続いて「Extentions」から「M5Stack」(M5Stickではないので注意)を検索すると、連携する拡張が出てくる。

これをインストールして、割り当てられたCOMポートを指定してつなぐ。
ただし。
つなぐ前に M5StickC 側におまじないがいる。
通常は Internet 経由の接続になっていますが、これを USB に変更。
そういえばさりげなく7/24に更新されて V1.6.1 になってます。

M5ボタンを押しながら起動。
Switch mode
USB
戻って Reboot
USBモードでたちあがる

その後、VSCode に戻って、エクスプローラから COM をリロードすると、ファイルの中身が見えるようになると思う。

「apps」の中にお好みの「スクリプト名.py」を「+」で追加。スクリプト名は日本語ダメよ。
そして例のスクリプトをコピペ。SSIDとPASSは各GoProに変更しよう。
ココからも実行できるので、GoPro に接続するのを確認しても良いと思う。

これで APP.List から選ぶことで切り替えることができます。やれやれっすね。

初心者に簡単な機能ブロックな UIFlow。
凝ったことをするにはめんどくさいという、人生において何度も経験したヤツ再び。
まあでも機能的には困らなくなった。
解像度とFPSのメニュー作るぐらいか?
電池残量は電池の管理チップ撤去してるから動かないんでないかな。
あと教えてもらった GoPro API を見る限りでは、WiFi のオフとかなかった。
https://github.com/KonradIT/gopro-py-api
ステータスもざっくりjsonで吐き出されるので、なんかそういうの得意な人にまかせたい。

ロクにテストしてない上に急いで作ったので、うまくいかなかったら連絡ください。
一緒に頑張るぐらいはやってみますよ。

7/28追記。
GoPro6 Black のWiFiコマンド一覧あった。
https://github.com/KonradIT/goprowifihack/blob/master/HERO6/HERO6-Commands.md

Turn WiFi OFF: http://10.5.5.9/gp/gpControl/setting/63/0

WiFiオフある!と思って試してみたけど、Bad Request で通過せず。残念。
あとスクリプトの最後にコレを追加すると、自動でWiFiに接続して動画メニューに遷移します。

buttonB_pressFor()
buttonB_wasPressed()
buttonB_wasPressed()