以前、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基板上のコネクタにそのままさせます。(ただし、極性の入れ替えが必要なので要確認!)



コメント