5

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

完美对不对?

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

4

4 回答 4

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上找到- 随心所欲地使用它!

于 2013-05-10T23:16:16.190 回答
1

因此,如果您真的拥有带有 HID-611 固件的 RN-42 模块:

您所要做的就是将 ASCII 字符串发送到 RN-42 上的串行端口 @115200 波特,剩下的事情就交给它了。因此,如果您愿意,Serial1.println("Hello");那么Hello(enter)将被发送到您的 Mac。如果这不起作用,则通过上拉 GPIO11 或向 RN-42 发送命令并打开 HID 模式来确保 RN-42 未处于 SPP 模式。

于 2013-04-28T14:50:39.047 回答
0

因此,如果您真的拥有带有 HID-611 固件的 RN-42 模块:

您所要做的就是将 ASCII 字符串发送到 RN-42 上的串行端口 @115200 波特,剩下的事情就交给它了。

彼得是对的,预装 HID 的 RN-42 非常容易,它可以从 sparkfun独立购买,甚至可以焊接在板上以便于连接。

于 2014-06-20T22:45:25.497 回答
-3

如果您希望 Arduino 向计算机发送键盘按下消息,请使用Keyboard.press()进行按键操作,使用 Keyboard.release( )进行释放。我没有那种类型的 Arduino 或那个蓝牙模块,但因为它把 Arduino 识别为键盘,我认为这应该可以工作......

于 2013-04-27T09:37:50.760 回答