DIY及创意
直播中

洒下墨色

9年用户 884经验值
擅长:可编程逻辑 嵌入式技术
私信 关注

超酷!基于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的供电电压工作。

更多详细信息可以在这里找到:<span>https://lastminuteengineers.com/esp32-pinout-reference/</span>

步骤2:在面包板上构建威廉希尔官方网站

除了ESP32开发板外,游戏手柄威廉希尔官方网站 还需要一个摇杆模块、按钮、电阻和一些导线。

  • 带有圆形盖的12mm按键开关
  • 用于按钮的4K7电阻
  • XY摇杆模块
  • Doit ESP32 Devkit V1开发板
  • 面包板
  • 跳线

步骤3:设置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:

<span>https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json</span>

步骤4:BLE GamePad和NIM BLE库的源码

源码包括一个叫做"BLE GamePad"的库。如果去库的GitHub页面,你可以找到详细的解释和示例。

转到“Add Library”搜索“BLE GamePad”库并安装它。这个库还需“NIM BLE”库。如果库已经安装,我们可以仔细研究一下源代码。

GitHub地址:<span>https://github.com/lemmingDev/ESP32-BLE-Gamepad</span>

步骤5:游戏手柄源码

共享的游戏手柄源代码包含了总共13个按钮,这些按钮定义了标准游戏手柄的关键功能。此外,源代码还提供了三种游戏手柄模式。

这个描述块包含了mods的关键名称以及不同游戏手柄mods的按钮编号。每个键名都有一个对应的引脚编号。

/*
 * ANDROID游戏手柄
 * {A=1, B=2, C=3, X=4, Y=5, Z=6, L1=7, R1=8, L2=9, R2=10,
 * Select=11, Start=12, PS=13, L3=14 , R3=15} 
 * 
 * PS游戏手柄模式
 * {SQUARE=1, X=2, CIRCLE=3, TRIANGLE=4, L1=5, R1=6, L2=7, R2=8,
 * Select=9, Start=10, L3=11, R3=12, PS=13}
 * 
 */

"Buttons Pins"数组代表了在开发板上使用的物理按钮引脚。"Number Buttons"常量指定了按钮的数量,并包含了每个按钮连接的引脚的值。

int buttonsPins[NUM_BUTTONS] = {X_BUTTON, CIRCLE_BUTTON, TRIANGLE_BUTTON, SQUARE_BUTTON,
                          R1_BUTTON, R2_BUTTON, L1_BUTTON, L2_BUTTON,
                          START_BUTTON, SELECT_BUTTON, PS_BUTTON,
                          R3_BUTTON, L3_BUTTON};

"Android GamePad Buttons"数组包含了在Android GamePad模式下使用的按钮的有序列表。每个按钮都被分配了一个数字。比如,按钮"A"是数字1,按钮"B"是数字2。

int androidGamepadButtons[NUM_BUTTONS] = {1, 2, 3, 4, 8, 10, 7, 9, 12, 11, 13, 15, 14};

"PS GamePad Buttons"数组包含了在PlayStation GamePad模式下使用的按钮列表。

int PS1GamepadButtons[NUM_BUTTONS] = {2, 3, 4, 1, 6, 8, 5, 7, 10, 9, 13, 12, 11};

"PC GamePad Buttons"数组包含了在计算机游戏手柄模式下使用的按钮列表。

int PCGamepadButtons[NUM_BUTTONS] = {1, 2, 4, 3, 6, 8, 5, 7, 10, 9, 0, 12, 11};

"GamePad Mode"变量包含了当前的GamePad模式。默认情况下,分配了Android模式,但这个值可以在代码中后期更改。

GamepadModes gamepadMode = ANDROID;

让我们根据面包板威廉希尔官方网站 中找到的组件来更新源码。威廉希尔官方网站 中有4个按钮和一个摇杆模块,我将选择"Android Gamepad"模式来测试威廉希尔官方网站 。定义威廉希尔官方网站 上组件的引脚,游戏手柄应该调用的关键函数,并更新引脚编号。然后上传源码。

完整代码可以在文末下载。

步骤6:使用应用程序测试面包板威廉希尔官方网站

我使用“GamePad Tester”这款Android应用来查看和测试按钮和摇杆功能。

安装应用程序,然后打开蓝牙连接并连接到ESP32。

打开应用程序,转到"Android GamePad Tester"并完成威廉希尔官方网站 组件的测试。然后,通过一个游戏来真实测试威廉希尔官方网站 。

这边安装了一个赛车应用程序,准备开始测试!

步骤7:印刷威廉希尔官方网站 板

我用了之前设计的蝙蝠主题印刷威廉希尔官方网站 板来测试作游戏手柄。

和面包板威廉希尔官方网站 一样,选择了易于组装的可焊接组件。将所需的组件安装在PCB上,然后使用烙铁和焊线焊接到位。

  • 1x二极管SB560
  • 3x电容100uF 16V
  • 2x XY拇指摇杆
  • 1x稳压器7805CV(* 可选)
  • 2x LED 3mm
  • 2x电阻220R
  • 6x电阻4K7
  • 1x Doit ESP32 DevKit V1
  • 2x母头1x15 2.54
  • 2x母头1x4 2.54
  • 1x连接器
  • 4x带有圆形盖的12mm按键开关

PCB Gerber文件:<span>pcbway.com/project/shareproject/DIY_ESP32_Bluetooth_GamePad_for_Android_PlayStation_and_PC</span>

步骤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。

更多回帖

发帖
×
20
完善资料,
赚取积分