エアロバイクでGoogleMapStreetviewを走る(2)

エアロバイクから回転とハンドルの電極データを取り出せそうなことがわかったので、デバイス化する。
エアロバイク側のコネクタは普通の3.5mmジャックだったので、ダイソーでオーディオステレオケーブルを2本購入。プラグ側を切って、コネクタに改造。最終的には基板にするけれど、とりあえずはブレットボードで試作。

ペダルはデジタルスイッチとして使うので、片方をGNDに、もう片方をGPIO2に。GPIO2は内部でプルアップしてデジタルリード、負論理。

ハンドルは左右それぞれの電極の片方をGPIO4とGPIO15に。ESP32のタッチセンサー機能を使って読み込む。素直な電極であればそれぞれのハンドルの対になっている電極は特に配線する必要はないはずだけれど、どうも内部で細工がしてあるっぽく、挙動が安定しないので、こちらはGNDに接続したところ、安定した。

PCとのインターフェイスは、Bluetoothキーボード化することにした。JavaScriptからの取り扱い安いのと、なによりも開発、デバッグが楽。毎回バイクにまたがる必要がなくなる。バイク自体とPCを有線でつなぐ必要が無いので、実際に使う場合の取り回しも便利なはず。

ESP32のBluetoothキーボードはライブラリが公開されていて簡単に使えるので、この手の用途にはおすすめ。

ハンドル操作は、右手をハンドルの端子から離すと右に(dボタンを一定間隔で入力しつづける)、左手を離すと左に(aボタン)まがり、左右とも離しているか、握っていると中央(キー入力なし)とした。将来的にはブレーキがほしいと思っていて、その場合は両手を握っている時にブレーキリリースボタンとしようと思う(なにもしていない時にキーボードに文字が入力されて困るので)

道の分岐については、あらかじめハンドルで分岐したい方角に角度を切っていればそちらに分岐するようにしてみた。やや誤爆があるので、こういう部分は詰めが必要なところ。

自転車っぽく、一度動き出すとペダリングを止めても慣性でだんだん減速しつつ前にすすむようにした。負荷をPCからコントロールできればギアチェンジやアップダウン、向かい風なんかも再現できて面白いんだけど、まあ、それはしかたない。

こういう奴の困ったところに、動きだすと面白くって開発が進まなくなる(遊んじゃう)というのがあって、さっそくその罠にはまり始めているのだけど、次は場所のセーブ・ロードを実装予定。デバッグしながら宗谷岬から出発する予定。

コメント

タイトルとURLをコピーしました