2023-8-3 14:31:06 [显示全部楼层]
2776浏览
查看: 2776|回复: 9

自制一个基于ESP32的蓝牙游戏手柄

[复制链接]
通过这个项目,你会学习到如何设计一个面包板游戏手柄电路,学习如何将这个电路作为一个游戏手柄与Android设备、电视盒子、PlayStation和计算机通信。

正文开始!(文末有视频演示)
步骤1:Doit ESP32 Devkit V1开发板
自制一个基于ESP32的蓝牙游戏手柄图1

在电路方面,我选择了低成本的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的蓝牙游戏手柄图2

自制一个基于ESP32的蓝牙游戏手柄图3

自制一个基于ESP32的蓝牙游戏手柄图4

除了ESP32开发板外,游戏手柄电路还需要一个摇杆模块、按钮、电阻和一些导线。
  • 带有圆形盖的12mm按键开关
  • 用于按钮的4K7电阻
  • XY摇杆模块
  • Doit ESP32 Devkit V1开发板
  • 面包板
  • 跳线
步骤3:设置ESP32开发板
自制一个基于ESP32的蓝牙游戏手柄图5

步骤:

1、从官方Arduino网站下载并安装最新版本的Arduino IDE。

2、打开Arduino IDE,转到"Preferences" > "Board Manager URLs",粘贴共享的ESP32包链接,然后点击确定按钮。

自制一个基于ESP32的蓝牙游戏手柄图6

自制一个基于ESP32的蓝牙游戏手柄图7

3、导航到"Tools" > "Boards Manager"。

4、在Boards Manager中搜索"ESP32"并安装ESP32板。

自制一个基于ESP32的蓝牙游戏手柄图8

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页面,你可以找到详细的解释和示例。

自制一个基于ESP32的蓝牙游戏手柄图9

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

自制一个基于ESP32的蓝牙游戏手柄图10

自制一个基于ESP32的蓝牙游戏手柄图11

自制一个基于ESP32的蓝牙游戏手柄图12

GitHub地址:https://github.com/lemmingDev/ESP32-BLE-Gamepad
步骤5:游戏手柄源码
自制一个基于ESP32的蓝牙游戏手柄图13

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

这个描述块包含了mods的关键名称以及不同游戏手柄mods的按钮编号。每个键名都有一个对应的引脚编号。
  1. /*
  2. * ANDROID游戏手柄
  3. * {A=1, B=2, C=3, X=4, Y=5, Z=6, L1=7, R1=8, L2=9, R2=10,
  4. * Select=11, Start=12, PS=13, L3=14 , R3=15}
  5. *
  6. * PS游戏手柄模式
  7. * {SQUARE=1, X=2, CIRCLE=3, TRIANGLE=4, L1=5, R1=6, L2=7, R2=8,
  8. * Select=9, Start=10, L3=11, R3=12, PS=13}
  9. *
  10. */
复制代码


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

  1. int buttonsPins[NUM_BUTTONS] = {X_BUTTON, CIRCLE_BUTTON, TRIANGLE_BUTTON, SQUARE_BUTTON,
  2.                           R1_BUTTON, R2_BUTTON, L1_BUTTON, L2_BUTTON,
  3.                           START_BUTTON, SELECT_BUTTON, PS_BUTTON,
  4.                           R3_BUTTON, L3_BUTTON};
复制代码


"Android GamePad Buttons"数组包含了在Android GamePad模式下使用的按钮的有序列表。每个按钮都被分配了一个数字。比如,按钮"A"是数字1,按钮"B"是数字2。
  1. int androidGamepadButtons[NUM_BUTTONS] = {1, 2, 3, 4, 8, 10, 7, 9, 12, 11, 13, 15, 14};
复制代码


"PS GamePad Buttons"数组包含了在PlayStation GamePad模式下使用的按钮列表。
  1. int PS1GamepadButtons[NUM_BUTTONS] = {2, 3, 4, 1, 6, 8, 5, 7, 10, 9, 13, 12, 11};
复制代码

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

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

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

  1. GamepadModes gamepadMode = ANDROID;
复制代码

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

完整代码可以在文末下载。
步骤6:使用应用程序测试面包板电路
自制一个基于ESP32的蓝牙游戏手柄图14

自制一个基于ESP32的蓝牙游戏手柄图15

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

自制一个基于ESP32的蓝牙游戏手柄图16

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

自制一个基于ESP32的蓝牙游戏手柄图17

打开应用程序,转到"Android GamePad Tester"并完成电路组件的测试。然后,通过一个游戏来真实测试电路。

自制一个基于ESP32的蓝牙游戏手柄图18

这边安装了一个赛车应用程序,准备开始测试!
步骤7:印刷电路板
自制一个基于ESP32的蓝牙游戏手柄图19

我用了之前设计的蝙蝠主题印刷电路板来测试作游戏手柄。

自制一个基于ESP32的蓝牙游戏手柄图20

自制一个基于ESP32的蓝牙游戏手柄图21

和面包板电路一样,选择了易于组装的可焊接组件。将所需的组件安装在PCB上,然后使用烙铁和焊线焊接到位。

自制一个基于ESP32的蓝牙游戏手柄图22

自制一个基于ESP32的蓝牙游戏手柄图23

  • 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文件:pcbway.com/project/shareproject/DIY_ESP32_Bluetooth_GamePad_for_Android_PlayStation_and_PC
步骤8:测试印刷电路板
自制一个基于ESP32的蓝牙游戏手柄图24

设计包括4个按钮和2个摇杆,以及每个摇杆连接的一个按钮。所以,需要为6个按钮和2个摇杆定制源代码。

然后我上传源代码。电路包括一个电压稳压器的母线头。如果你想用外部电源为电路供电,并且电源电压高于ESP32的工作范围6到12v,可以使用稳压器(*7805CV)。

你可以通过ESP32的USB输入供电,不使用稳压器,也可以通过用跳线在6到12伏特的电源范围内通过外部供电。

我用了一个空白的PCB作为盖子,避免手接触电路。将ESP32板插入电路,然后通过游戏手柄测试应用程序测试按钮和摇杆。接下来,我打开赛车游戏进行控制测试。

自制一个基于ESP32的蓝牙游戏手柄图25

自制一个基于ESP32的蓝牙游戏手柄图26

自制一个基于ESP32的蓝牙游戏手柄图27

自制一个基于ESP32的蓝牙游戏手柄图28

这部分代码也可以在文末下载。

步骤9:总结




这个电路在安卓手机上工作得非常好。我在 Android TV 和 Android TV Box 上再次测试了,结果也令人满意。在基于 Windows 的 PC 上的测试也同样成功,但是在 MacBook 上,遇到了一些连接上的问题。经过研究,我把 PS 模式分配给了操纵杆按钮,并在建立蓝牙连接时保持按下,结果连接成功,MacBook 将该电路识别为游戏控制器。我还用两个 ESP32 测试了该电路,使用 ESP-NOW 关于它们之间的通信,结果也很成功。

如果你想知道还能用这个电路做什么,可以参考下面的几个项目。

你可以在项目中使用这块 PCB,它有多种无线通讯选项,比如从 ESP32 到 ESP32,以及从蓝牙到 WiFi。

自制一个基于ESP32的蓝牙游戏手柄图29

自制一个基于ESP32的蓝牙游戏手柄图30

自制一个基于ESP32的蓝牙游戏手柄图31

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/

转载请注明来源信息

木子呢  管理员

发表于 2023-8-3 14:34:24

图片拍的真好看呀
回复

使用道具 举报

ZZ小海鸥  高级技师 来自手机

发表于 2023-8-4 09:02:08

高深,酷
回复

使用道具 举报

Amos Young  中级技师

发表于 2023-8-4 09:14:50

图片拍的真好看呀
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-8-19 10:22:04

厉害厉害!
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-8-19 10:23:08

太棒了!!
回复

使用道具 举报

派大星ym  初级技匠

发表于 2023-8-19 18:25:59

无敌了   
回复

使用道具 举报

派大星ym  初级技匠

发表于 2023-8-19 18:27:17

6666666666666
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-8-27 10:23:30

厉害厉害!
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-8-27 10:24:55

好看,好玩!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail