Arduino + RN-42蓝牙模块HID

时间:2013-04-26 19:10:35

标签: c module bluetooth arduino hid

我正在尝试使用Arduino Mini ProRN-42 HID Bluetooth模块制作“键盘”。我可以使用MacBook连接到它,它会显示为蓝牙键盘。此外,我可以按下按钮并发送命令。

完美对吗?

不幸的是不...我不知道如何编码我需要发送给模块的字节来告诉它按键和键释放。我一直在阅读每本蓝牙RN-42手册,我可以动手,但我不完全明白我应该发送到蓝牙模块的内容。过去几周我一直在使用谷歌搜索,我找不到任何可以帮助我的C代码。据我所知,USB按键是作为十六进制数组发送的。这是正确的吗?如果是这样,我将如何编码呢?​​

4 个答案:

答案 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识别为键盘,我认为这应该有用......