我正在尝试使用Arduino Mini Pro和RN-42 HID Bluetooth模块制作“键盘”。我可以使用MacBook连接到它,它会显示为蓝牙键盘。此外,我可以按下按钮并发送命令。
完美对吗?
不幸的是不...我不知道如何编码我需要发送给模块的字节来告诉它按键和键释放。我一直在阅读每本蓝牙RN-42手册,我可以动手,但我不完全明白我应该发送到蓝牙模块的内容。过去几周我一直在使用谷歌搜索,我找不到任何可以帮助我的C代码。据我所知,USB按键是作为十六进制数组发送的。这是正确的吗?如果是这样,我将如何编码呢?
答案 0 :(得分:6)
我编写了一个arduino库silverball,支持RN42和键盘和鼠标的HID协议。我有一个示例应用程序,显示如何通过BT模块发送HID原始报告。我的目的是用来从自定义控制器玩游戏。
如前所述,您需要将BT模块设置为HID模式(从串行连接发送命令S~,6
或在启动模块时将GPIO11
设置为高电平)。默认情况下,模块应该从工厂设置为键盘HID,但要将其设置为键盘,请将命令SH,0200
发送到BT模块,这将把它设置为键盘模式。
之后,您需要简单地将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找到 - 用于你喜欢的任何内容!
答案 1 :(得分:1)
因此,如果你真的有一个带有HID-611固件的RN-42模块:
您只需将ASCII字符串发送到RN-42上的串行端口@ 115200波特,它将完成剩下的工作。因此,如果您想要Serial1.println("Hello");
,那么Hello(enter)
将被发送到您的Mac。如果这不起作用,请通过拉起GPIO11或向RN-42发送命令并打开HID模式,确保RN-42不处于SPP模式。
答案 2 :(得分:0)
因此,如果你真的有一个带有HID-611固件的RN-42模块:
您所要做的就是将ASCII字符串发送到串口@ 115200 RN-42上的波特,它将完成其余的工作。
彼得是对的,使用带有HID预装的RN-42非常容易,可以从sparkfun standalone甚至soldered in a board购买,以便于连接。
答案 3 :(得分:-2)
如果您希望Arduino将键盘按键消息发送到计算机,请使用Keyboard.press()进行按键,然后使用Keyboard.release()进行释放。我没有那种类型的Arduino或蓝牙模块,但由于它将Arduino识别为键盘,我认为这应该有用......