試作3号機でかなり仕上がりましたが
M5camera が在庫限りということで,
後継機と思われる
Timer Camera X に変更しました(これも在庫が怪しいですが^^;).
カメラのピン配置が M5camera とは違いますが,記載の通りに合わせれば問題なく動きます(下記の表を参照).
ボード設定は M5camera のときは
[ESP32 Wrover Module]でしたが,
Timer Camera X は
[M5Stack-Timer-CAM]でないと書き込みできません.Upload Speed の設定かな?
モデル | 有効にするdefine | ボード |
---|---|---|
M5camera | CAMERA_MODEL_M5STACK_V2_PSRAM | ESP32 Wrover Module |
Timer Camera X | CAMERA_MODEL_M5STACK_PSRAM | M5Stack-Timer-CAM |
付属のブラケットを使えば M5camera と同じ位置に固定できます. 試作3号機の土台をそのまま流用しました.
ようやく見つけました.
Dabble というアプリです.
これに GamePad 機能が付いています.
入口のリンクがよくわからないので こちら
からどうぞ.Explore Other Modules(左ペイン)の Gamepad Module
に詳しく書かれています.ESP32 用のライブラリ(zip直リンクです)をダウンロードし,
Arduino IDE で[zip形式のライブラリをインストール]すれば,すぐに使えます.
スケッチ例の[DabbleESP32]→[03.GamePad]を書き込めば動作確認が可能です.
私物の iPhone8 と学校の古い iPad(MD513J/A iOS 10.3.2)で動作確認できました.
このアプリのおかげで,PCを経由したPython環境が不要になるだけではなく,そもそも物理的なゲームパッドが不要になるので,授業で使う学生人数分のゲームパッドを買う必要がなくなります.
iPhone だけではなく,Android 系でもリリースされているのも良いですね.
ただ,突然ダウンロードできなくなったりする可能性があるので,学校の iPad のある程度の台数にインストールしておこうと思います.
欲を言えばアナログスティックが左右2つほしかったです.まぁやむを得ないですね.
サンプルスケッチを公開します.今回はボタンでも動くようにしています.
M5mario_OV3660_iPad は Timer Camera X に書き込むスケッチです. ZumoMario_iPad は Zumo32U4 に書き込むスケッチです. 試作3号機ではノートPCをアクセスポイントにするよう変更しましたが, 操作性等々を考慮して試作2号機以前のように ESP32 自体がアクセスポイントになるよう,元に戻しました. iPad に[インターネット共有]がないバージョンだったためという理由もあります. M5mario_OV3660_iPad のスケッチで
#define SOFT_AP
が有効か無効かで簡単に切り替えできるように書いています. ほかに DabbleESP32.h が先頭にないと Arduino IDE がハングアップする現象がありましたが, それ以外は特段問題もなくスムーズに操作することができました.
最近の iPad ってスプリットビューというのが使えるんですね.おじさん知りませんでした.
これが使えればPCと同じように 1台の iPad でカメラ画像を表示させながらゲームパッドアプリでコントロール! なんてことが可能になります.
まさに理想的な動作環境です.
残念ながら古い iPad(MD513J/A)ではスプリットビューができないようなので,
新しい iPad を持っている方に協力をお願いし Dabble アプリをインストールしてもらいました.
ですが,ボタン系の入力が全く受け付けないようです.普通に起動(シングル表示に)してもダメっぽい.
たまたま古い iPad で動作しましたが,新しい iPad でうまく動かないのかな?
持ち主の問題?wwww おそらくアプリ側の問題かと思われます.
AppleStoreの最終更新履歴は 2020.04.30 なので,更新されることを願います.
スプリットビューができなくても,たとえば自分のスマホと貸し出すiPadを併用するとか,
学生2人1組にして 2台の iPad でカメラ表示とゲームパッドを分散させる,
など運用でカバーするのも手ですね.
espライブラリ 2.0.4 と 2.0.5 では Dabble と WiFi が併用できないことが判明しました. espライブラリを 2.0.3 に落として書き込んでください. ちなみに DabbleESP32 は 1.5.1 です. 上のリンクは Dabble からのリンクですが https://www.arduino.cc/reference/en/libraries/dabbleesp32/ が本家かな?
詳細はわかりませんが,おそらく iOS16 へのバージョンアップで下図のように操作できなくなりました.
しばらく待てば対応されるかな?
iOS16.4.1で描画が正常に戻っていることを確認しました.またなるかもしれないので,情報として残しておきます.
やむなく試作機3号機までの方法,WindowsPCにゲームコントローラをつないでPythonで制御する方法まで戻しましたが,
なぜかWindowsPCからBLE接続できなくなっていることが判明.
一番シンプルなBLEserial3とも通信できなくなってしまいました.
Raspberry Pi だとどちらもBLE通信できているので,Windows側に問題がありそう.
こまったこまったこまどり姉妹
どうやらpygameに問題があることが判明しました.
pygameとbleakライブラリの相性問題のようです.
BLEのコネクトサンプルでは正常に動いていたので,徐々に肉付けしていこうとコードを書いていたら
pygame.init() があると BLE の is_connected() で応答を返さない BLE接続はできているものの,BleakClient が応答を返さないことが判明しました.
BLEとpygameが併用できない??対策されるまで待つしかないかな~
async def run(address, loop):
async with BleakClient(address, loop=loop) as client:
print("BleakClient ok"); # これが表示されない
x = await client.is_connected()
print("Connected: {0}".format(x))
ちなみに,Python3.10系から3.11系にアップグレードするとpygameがインストールエラーになります. 以下のように開発バージョンなら入るようです.これは新しいバージョンあるあるですね.
pip install pygame --pre