NCVCの作者のページ

Zumo Zumo32U4 BLEserial3 Bluetooth BLE Python Wifi Camera

マリオカートライブもどき試作4号機

はじめに

 試作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つほしかったです.まぁやむを得ないですね.

サンプルスケッチ

 サンプルスケッチを公開します.今回はボタンでも動くようにしています.

Mario_iPad.zip
GitHub

 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 でカメラ表示とゲームパッドを分散させる, など運用でカバーするのも手ですね.

追記(2022/09/15)

 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/ が本家かな?

追記(2023/06/01)

 詳細はわかりませんが,おそらく iOS16 へのバージョンアップで下図のように操作できなくなりました. しばらく待てば対応されるかな?
iOS16.4.1で描画が正常に戻っていることを確認しました.またなるかもしれないので,情報として残しておきます.

 やむなく試作機3号機までの方法,WindowsPCにゲームコントローラをつないでPythonで制御する方法まで戻しましたが, なぜかWindowsPCからBLE接続できなくなっていることが判明. 一番シンプルなBLEserial3とも通信できなくなってしまいました. Raspberry Pi だとどちらもBLE通信できているので,Windows側に問題がありそう. こまったこまったこまどり姉妹

追記(2022/12/15, 2022/12/21訂正)

 どうやら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

<< 前のページに戻るZumoインデックスへ