Arduino + RN-42蓝牙模块HID

问题描述 投票:5回答:5

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

完美吧?

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

c module bluetooth arduino hid
5个回答
6
投票

我已经编写了一个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上找到我的代码-随便使用它!


1
投票

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

您所要做的就是将ASCII字符串发送到RN-42上的串行端口@ 115200波特,其余的工作就完成了。因此,如果您想要Serial1.println("Hello");,则Hello(enter)将被发送到Mac。如果这不起作用,请通过拉起GPIO11或向RN-42发送命令并打开HID模式来确保RN-42不在SPP模式下。


0
投票

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

您要做的就是将ASCII字符串发送到串行端口@ 115200RN-42上的波特率,其余的将完成。

Peter是正确的,对于预装了HID的RN-42来说非常容易,可以从sparkfun standalone甚至是soldered in a board处购买,以便于连接。


0
投票

您可以刷新HC-05模块https://youtu.be/fWXJDNcbZAA


-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.