我正在尝试使用我的Arduino Mini Pro和RN-42 HID Bluetooth模块制作一个“键盘”。我可以用MacBook连接到它,它显示为Bluetooth键盘。另外,我可以按下按钮并发送命令。
完美吧?
[不幸的是,...我不知道如何编码我需要发送到模块的字节,以告诉其按键和释放键。我一直在阅读每本可以使用的Bluetooth RN-42手册,但是我不完全了解应该发送给Bluetooth模块的内容。过去几周我也一直在使用Google搜索进行搜索,但是找不到任何可以帮助我的C代码。据我所知,USB按键是作为十六进制数组发送的。这是正确的吗?如果是这样,我该如何编码?
我已经编写了一个arduino库silverball,该库支持用于键盘和鼠标的RN42和HID协议。我有一个示例应用程序,显示了如何通过BT模块发送HID原始报告。我的游戏旨在通过自定义控制器玩游戏。
如前所述,您需要将BT模块设置为HID模式(从串行连接发送命令S~,6
或在启动模块时将GPIO11
设置为高)。默认情况下,应将模块从出厂设置为键盘HID,但要将其设置为键盘,请向BT模块发送命令SH,0200
,这会将其设置为键盘模式。
之后,您将需要简单地将RAW报告发送到BT,它们的格式将如下所示:
RN42 HID原始报告格式:
|start(1 byte)|length(1 byte)|descriptor(1 byte)|data(length - 1 [for the descriptor])
键盘示例:
|0xFD|9|1|modifier|0x00|code 1|code 2|code 3|code 4|code 5|code 6
键盘修饰符位(作为一个字节发送)
bit 7 |bit 6 |bit 5 |bit 4 |bit 3 |bit 2 |bit 1 |bit 0
rt GUI |rt alt |rt shift |rt ctrl|lt GUI |lt alt |lt shift |lt ctrl
可以在github上找到我的代码-随便使用它!
因此,如果您确实拥有带有HID-611固件的RN-42模块:
您所要做的就是将ASCII字符串发送到RN-42上的串行端口@ 115200波特,其余的工作就完成了。因此,如果您想要Serial1.println("Hello");
,则Hello(enter)
将被发送到Mac。如果这不起作用,请通过拉起GPIO11或向RN-42发送命令并打开HID模式来确保RN-42不在SPP模式下。
因此,如果您确实拥有带有HID-611固件的RN-42模块:
您要做的就是将ASCII字符串发送到串行端口@ 115200RN-42上的波特率,其余的将完成。
Peter是正确的,对于预装了HID的RN-42来说非常容易,可以从sparkfun standalone甚至是soldered in a board处购买,以便于连接。
您可以刷新HC-05模块https://youtu.be/fWXJDNcbZAA
[如果您希望Arduino将键盘按下消息发送到计算机,请使用Keyboard.press()进行按键操作,并使用Keyboard.release()进行释放。我没有那种类型的Arduino或那个蓝牙模块,但是因为它可以将Arduino识别为键盘,所以我认为这应该可行...