DIY使用ESP32手持游戏手柄并通过BLE进行通信。
硬件组件:esp32×1 ws2812b×6操纵杆×2角度按钮×2按钮×818560电池和电池座×2三向拨动开关×1带有保护的TP4056电池充电电路×1 MT3608升压转换器×1软件应用和在线服务:ArduinoIDE手动工具和制造机:烙铁(通用)这是用ESP32微控制器制成的DIY手持游戏手柄。
您可能以前曾经看过这样的游戏控制器。
但是大多数使用Arduino。
更具体地说,是Arduinopromicro或Leonardo开发板。
因为这些板通过USB支持HID或人机界面设备。
但是esp32没有此功能。
那我们该怎么办呢?嗯,esp32确实具有BLE或低功耗蓝牙功能,我们可以使用它通过蓝牙进行无线通信。
因此,我们将ESP32模块作为中央控制器,然后有一个USBC型端口和一个3.3v稳压器,可以将5v转换为3.3v。
然后,我们有了编程电路,它使用具有自动编程模式的ch340cusb到串行转换器,以及使用双工晶体管的自动复位电路。
我们还具有电池充电电路以及过充和过放保护功能。
然后使用升压转换器ic将其升压至5v。
接下来,我们有操纵杆,D-Pad按钮,触发按钮,NeopixelLED和i2c端口。
最后,有一个三向开关,可以在USB电源和电池电源之间切换。
游戏手柄具有:·2个模拟操纵杆·2个触发按钮·2个D-Pad·6个可寻址的RGBLED·一个i2c端口。
它可以使用两节18650锂离子电池运行,并且可以使用USBC类型的端口进行更改。
它也可以用来对微控制器进行编程。
该设计的灵感来自于新的ps5控制器,使其外观更好。
GPIO4使用分压器连接到电池。
这样我们就可以测量电池电压了。
NeoPixelLED将指示控制器是否连接到设备或电池电压是否低。
该代码基于lemmingDev的BLEGamepad库。
在代码中,我为不同的输入定义了所有GPIO引脚。
然后在设置中有一些初始的led动画。
将开发板连接到设备后,所有LED均将变为绿色。
并且它将以先前定义的时间间隔检查电池电压。
然后,我们获得按钮状态并相应地设置游戏手柄按钮。
然后,我们采用模拟输入并将其映射到适当的值。
最后根据我们收到的值设置轴。
上载代码后,打开智能手机或PC上的Bluetooth菜单,您将看到一个弹出的新设备。
单击此按钮将其连接,您就可以开始游戏了。