最近在自制蓝牙机械键盘,需要一个蓝牙模块,常用的模块是rn42或esp32。还有一种方法是购买廉价的hc-06或hc-05,刷rn42固件支持蓝牙hid。




esp32 USBHID_固件


HC-05和HC-06的硬件相同,都采用CSR公司的BC417143芯片,只是固件一样不同。两款蓝牙模块是CSR公司推出的主从机一体蓝牙模块板,非常多人会搭配Arduino进行一些简单的开发。

外观展示

某宝购买的蓝牙hc-06模块,应该是寨品而不是原装货,一些元件和网络上的不一样。


esp32 USBHID_固件_02


网络上的教程刷固件使用到的是ft232RL编程器,接线示意如图所示。


esp32 USBHID_csr 蓝牙驱动_03


由于没有FT232RL编程器,我选用了Ch341a土豪金编程器作为替代。


esp32 USBHID_固件_04


先焊接上clk,miso,mosi,csb四条线。


esp32 USBHID_蓝牙模块怎么指定查询另一个蓝牙模块_05


在线的尾端接上220欧姆的电阻。


esp32 USBHID_蓝牙模块怎么指定查询另一个蓝牙模块_06


使用面包板固定。


esp32 USBHID_固件_07


接好线材后就能进行软件的安装。


esp32 USBHID_蓝牙模块怎么指定查询另一个蓝牙模块_08


github上有使用ch341a刷csr模块固件的方法。


esp32 USBHID_esp32 USBHID_09


最新版本是0.52,已经两年多没有更新过。


esp32 USBHID_蓝牙模块怎么指定查询另一个蓝牙模块_10


安装csr官方的开放套件BlueSuite。


esp32 USBHID_csr 蓝牙驱动_11


将github下载的源码,编译出dll文件。将修改过的usbspi.dll文件复制到BlueSuite文件夹中,替换原版dll文件。


esp32 USBHID_固件_12


使用Zadig替换spi的驱动程序。


esp32 USBHID_蓝牙模块怎么指定查询另一个蓝牙模块_13


将ch341a的驱动程序替换成libusbK。


esp32 USBHID_csr 蓝牙驱动_14


将ch341a的跳线帽设定到刷机模式。


esp32 USBHID_蓝牙模块怎么指定查询另一个蓝牙模块_15


运行BlueFlash,进行固件更新。


esp32 USBHID_固件_16


无语是怎么都无法识别到ch341a,失败了。


esp32 USBHID_csr 蓝牙驱动_17


只能购买FT232RL编程器进行固件更新了。


esp32 USBHID_esp32 USBHID_18


再次到github下载修改的驱动程序。


esp32 USBHID_esp32 USBHID_19


重复之前步骤替换掉驱动,将驱动从原来的FTDBUS替换成libusbK。


esp32 USBHID_固件_20


使用FT232RL后,BlueFlash能正确识别出编程器了。由于是山寨的编程器,序列号是000000。


esp32 USBHID_csr 蓝牙驱动_21


点击停止驱动程序,进行固件更新模式。先保存原版的固件,免得出问题后无法补救。


esp32 USBHID_蓝牙模块怎么指定查询另一个蓝牙模块_22


再运行套件中的PStool进行调试。


esp32 USBHID_驱动程序_23


编程模式依旧是spi,编程器是FT232RL。


esp32 USBHID_驱动程序_24


连接上hc-06,能看到固件的相关参数设定。将相关的参数保存,格式是psr。


esp32 USBHID_esp32 USBHID_25


mega下载rn-42的固件,进入BlueFlash,选中rn42的固件进行更新。


esp32 USBHID_csr 蓝牙驱动_26


固件更新后还要对设置参数进行修改,因为HC-06的阵脚定义是有差别的。


esp32 USBHID_蓝牙模块怎么指定查询另一个蓝牙模块_27


至此HC-06就变成了HID固件,可以搭配有线机械键盘,改造成蓝牙机械键盘了。

总结

HC-06蓝牙模块板子廉价,刷rn42固件后能实现蓝牙HID功能,性价比高。不过hc-06模块采用的是蓝牙2.0协议,作为机械键盘的主控较为耗电,抗干扰和兼容性低,不是很实用。就图个玩,毕竟一个蓝牙3.0的bcm20730模块或hc-08模块价格都在20元以上,博通的驱动还不好获得。