以前、Arduino互換ProMicroを使ってゲームコントローラーを作る方法を紹介しましたが、今回はESP32のBluetooth機能を使って無線式のゲームコントローラーを自作する方法を紹介します。今回は1ボタンのみの簡単なものです。
用意するもの
ESP32開発ボード、スイッチ、電線等が必要です。
ArduinoIDEの準備
ボード追加
[ファイル]-[環境設定]で、追加のボードマネージャーに以下のURLを追加
https://dl.espressif.com/dl/package_esp32_index.json
ボードの設定
ライブラリ追加
ArduinoIDEのライブラリ管理で”ESP32-BLE-Gamepad”を検索して、インストールします。
回路図
こんな感じでボタンを接続してください。(ボードによって形状やピン配置が異なるので適宜)
今回の例では押ボタンスイッチを12番ピンとGNDに接続しています。
スケッチ
細かい設定は抜きにして、これでとりあえず動くはずです。
#include <Arduino.h> #include <BleGamepad.h> // https://github.com/lemmingDev/ESP32-BLE-Gamepad #define numOfButtons 1 BleGamepad bleGamepad("GamePad01"); const int InputPin=12; void setup() { //ピン設定 pinMode(InputPin, INPUT_PULLUP); //ゲームパッド設定 BleGamepadConfiguration bleGamepadConfig; bleGamepadConfig.setAutoReport(false); bleGamepadConfig.setControllerType(CONTROLLER_TYPE_MULTI_AXIS); bleGamepadConfig.setButtonCount(numOfButtons); bleGamepad.begin(&bleGamepadConfig); } void loop() { if (bleGamepad.isConnected()) { if (digitalRead(InputPin) == 0 ) bleGamepad.press(1); else { bleGamepad.release(1); } bleGamepad.sendReport(); } delay(1); }
接続設定、動作確認
Windowsの場合、[bluetoothデバイスの追加]で新規デバイスを検索すれば、”GamePad01″というデバイスが見つかるはずです。
正常に接続できれば、”USBゲームコントローラーの設定”の中にでてきます。
プロパティをクリックして動作確認ができます。
おすすめの開発ボード
Bluetoothを使った無線式ゲームコントローラーなので、電源も内蔵式にしたいところです。先に紹介したESP開発ボードは、ピン数は少ないもののコンパクトでリチウムイオンバッテリーの充放電制御回路まで内蔵されています。以下のバッテリーならばESP32基板上のコネクタにそのままさせます。(ただし、極性の入れ替えが必要なので要確認!)
コメント