您尚未登录。

楼主 # 2021-07-26 23:47:23

achinwoo
会员
注册时间: 2021-07-26
已发帖子: 14
积分: 11

动手DIY蓝牙手柄

- 近期在调试市面一款RW007模块的BLE部分,于是想制作一个蓝牙游戏手柄,玩一下游戏模拟器,找回童年的乐趣!
- 设计雏形,购买一块开发板,然后杜邦线连接,发现问题,有点费手!插针TMD扎手啦。
90e4e9c77cb847fe0a1888cd962d169f.jpg
- 果断放弃,免费PCB打样中,重新设计一款。
908806cfc4b5418b64a39fa4254f9d20.jpg

- PCB到了,还没来及焊接,先上个谍照吧!

_20210721225555.jpg


- 主控芯片信息

| 参数 | 叙述 |
| ------ | ------ |
| 型号 | FR8012乞丐版 |
| 版本 | 蓝牙5.1 |
| 内核 | cortex-m3 |
| 时钟频率 | 48Mhz |
| RAM | 48K |
| FLASH | 256KB |
| 封装 | SOP-16 |
| 系统 | rt-thread 民间移植版 |

- 技术难题
  这个蓝牙游戏手柄,其实蓝牙通讯,如何匹配倒没有花费很多的精力,或许因为通讯那部分比较成熟,拿过来使用就可以了。另外得到了大佬的指导,顺利的调通了无线通讯协议部分。主要遇到的难点是引脚不够,比较紧张。如图:
_20210724130959.jpg
1 PA2,PA3烧写调试,无法做按键输入使用。PASS。
2 采用ADCKEY方式,分析因为手柄支持组合按键,该方案pass。
3 剩下5个引脚,其中PD4,PD5做摇杆ADC通道采集使用,只剩下3个GPIO了,PC6,PC7,PD5.如果对地设计按键,只能设计3个了.
4 游戏手柄除去4个方向键,目测还有select,start,A,B,AA(连发),BB(连发)6个键值。
4 有点脑瓜疼!谁让我们用的是SOP-16封装呢?想办法,办法总比困难多。这3个GPIO分别ADC0,ADC1做矩阵,时分复用能否可行?
5 细思量后发现一个极其恐怖的问题,手柄是支持组合按键的,如果玩家方向键与A键同时按下,会发生很严重的过流问题。是坚决不能允许的。
6 串联限流隔离电阻,解决了问题。

_20210724140452.jpg

- 工作原理
1 先将5个引脚关闭上拉,配置输入方向,配置ADC0,ADC1,获取4个方向数值。adc关闭转换结束。
2  将5个引脚配置GPIO,并且上拉有效。
   2.1 配置PD4方向为输出,并且输出0.
   2.2 分别读取PC6,PC7引脚电平值,作为SELECT,START键值.
   2.3 配置PD4方向输入,上拉有效,配置PD5方向输出,并且输出0
   2.4 分别读取PC6,PC7引脚电平值,作为AA(连发),BB(连发)键值.
   2.6 配置PD5方向输入,上拉有效,配置PD6方向输出,并且输出0
   2.7 分别读取PC6,PC7引脚电平值,作为A,B键值.
   2.8 配置PD6方向输入,上拉有效。J结束。

- 焊接成品,可以同时支持2个手柄PK啦!
52eaeab9272cf1192c97b822fbc95b7b.jpg

- PK的视频,
 

最近编辑记录 achinwoo (2021-07-27 00:30:08)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn