4742| 9
|
自制一个基于ESP32的蓝牙游戏手柄 |
通过这个项目,你会学习到如何设计一个面包板游戏手柄电路,学习如何将这个电路作为一个游戏手柄与Android设备、电视盒子、PlayStation和计算机通信。 正文开始!(文末有视频演示) 步骤1:Doit ESP32 Devkit V1开发板 在电路方面,我选择了低成本的Doit ESP32 Devkit V1开发板,它提供了无线通信选项,比如WiFi、蓝牙和ESP-NOW。 在这个项目中用的ESP32板模型总共有30个I/O引脚。有些型号有36个I/O引脚,并且尺寸较长。Doit ESP32 Devkit V1开发板可以通过VIN引脚以4V到12V的供电电压工作。 更多详细信息可以在这里找到:https://lastminuteengineers.com/esp32-pinout-reference/ 步骤2:在面包板上构建电路 除了ESP32开发板外,游戏手柄电路还需要一个摇杆模块、按钮、电阻和一些导线。
步骤: 1、从官方Arduino网站下载并安装最新版本的Arduino IDE。 2、打开Arduino IDE,转到"Preferences" > "Board Manager URLs",粘贴共享的ESP32包链接,然后点击确定按钮。 3、导航到"Tools" > "Boards Manager"。 4、在Boards Manager中搜索"ESP32"并安装ESP32板。 5、从"Tools" > "Board"菜单中选择合适的ESP32板。 附加的Boards Manager URL: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json 步骤4:BLE GamePad和NIM BLE库的源码 源码包括一个叫做"BLE GamePad"的库。如果去库的GitHub页面,你可以找到详细的解释和示例。 转到“Add Library”搜索“BLE GamePad”库并安装它。这个库还需“NIM BLE”库。如果库已经安装,我们可以仔细研究一下源代码。 GitHub地址:https://github.com/lemmingDev/ESP32-BLE-Gamepad 步骤5:游戏手柄源码 共享的游戏手柄源代码包含了总共13个按钮,这些按钮定义了标准游戏手柄的关键功能。此外,源代码还提供了三种游戏手柄模式。 这个描述块包含了mods的关键名称以及不同游戏手柄mods的按钮编号。每个键名都有一个对应的引脚编号。
"Buttons Pins"数组代表了在开发板上使用的物理按钮引脚。"Number Buttons"常量指定了按钮的数量,并包含了每个按钮连接的引脚的值。
"Android GamePad Buttons"数组包含了在Android GamePad模式下使用的按钮的有序列表。每个按钮都被分配了一个数字。比如,按钮"A"是数字1,按钮"B"是数字2。
"PS GamePad Buttons"数组包含了在PlayStation GamePad模式下使用的按钮列表。
"PC GamePad Buttons"数组包含了在计算机游戏手柄模式下使用的按钮列表。
"GamePad Mode"变量包含了当前的GamePad模式。默认情况下,分配了Android模式,但这个值可以在代码中后期更改。
让我们根据面包板电路中找到的组件来更新源码。电路中有4个按钮和一个摇杆模块,我将选择"Android Gamepad"模式来测试电路。定义电路上组件的引脚,游戏手柄应该调用的关键函数,并更新引脚编号。然后上传源码。 完整代码可以在文末下载。 步骤6:使用应用程序测试面包板电路 我使用“GamePad Tester”这款Android应用来查看和测试按钮和摇杆功能。 安装应用程序,然后打开蓝牙连接并连接到ESP32。 打开应用程序,转到"Android GamePad Tester"并完成电路组件的测试。然后,通过一个游戏来真实测试电路。 这边安装了一个赛车应用程序,准备开始测试! 步骤7:印刷电路板 我用了之前设计的蝙蝠主题印刷电路板来测试作游戏手柄。 和面包板电路一样,选择了易于组装的可焊接组件。将所需的组件安装在PCB上,然后使用烙铁和焊线焊接到位。
PCB Gerber文件:pcbway.com/project/shareproject/DIY_ESP32_Bluetooth_GamePad_for_Android_PlayStation_and_PC 步骤8:测试印刷电路板 设计包括4个按钮和2个摇杆,以及每个摇杆连接的一个按钮。所以,需要为6个按钮和2个摇杆定制源代码。 然后我上传源代码。电路包括一个电压稳压器的母线头。如果你想用外部电源为电路供电,并且电源电压高于ESP32的工作范围6到12v,可以使用稳压器(*7805CV)。 你可以通过ESP32的USB输入供电,不使用稳压器,也可以通过用跳线在6到12伏特的电源范围内通过外部供电。 我用了一个空白的PCB作为盖子,避免手接触电路。将ESP32板插入电路,然后通过游戏手柄测试应用程序测试按钮和摇杆。接下来,我打开赛车游戏进行控制测试。 这部分代码也可以在文末下载。 步骤9:总结 这个电路在安卓手机上工作得非常好。我在 Android TV 和 Android TV Box 上再次测试了,结果也令人满意。在基于 Windows 的 PC 上的测试也同样成功,但是在 MacBook 上,遇到了一些连接上的问题。经过研究,我把 PS 模式分配给了操纵杆按钮,并在建立蓝牙连接时保持按下,结果连接成功,MacBook 将该电路识别为游戏控制器。我还用两个 ESP32 测试了该电路,使用 ESP-NOW 关于它们之间的通信,结果也很成功。 如果你想知道还能用这个电路做什么,可以参考下面的几个项目。 你可以在项目中使用这块 PCB,它有多种无线通讯选项,比如从 ESP32 到 ESP32,以及从蓝牙到 WiFi。 1、https://www.instructables.com/ESP32-Joystick-Hand-Controller-ESP-NOW/ 2、https://www.instructables.com/ESP32-Servo-Motor-Controller-Board-Wireless-Contro/ 3、https://www.instructables.com/ESP32-Mecanum-Wheels-Robot-and-Bluetooth-Gamepad-C/ 原文作者:MertArduino 原文连接:https://www.instructables.com/DI ... Android-PlayStatio/ 转载请注明来源信息 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed