之前介绍过两种Arduino 模拟键盘的方法,一种是普通的Uno加上电阻之类的元件;一种是使用自带 USB 功能的 Arduino ,比如 Leonardo ,内部集成了USB Slave控制器。 这里再介绍蓝牙方案。
我们最常见的就是蓝牙透传模块,用蓝牙搜索安装之后能在系统中模拟出来一个串口,上位机直接按照串口方式即可进行通讯。这次介绍一款蓝牙键盘模块(实际上是键盘鼠标模块)。
外观和普通蓝牙透传模块一样(蓝牙芯片真正有用的都是内部Firmware)
用法非常类似,在蓝牙中搜索连接之后系统中会出现键盘设备。
然后数据是从串口送到蓝牙设备中的。根据说明我用 Arduino 编写了一个简单的测试程序,每隔5秒发送 “1” 字符。
输入 1:
按下数据 1 数据包为: 0C 00 A1 01 00 00 1E 00 00 00 00 00
按键弹起: 0C 00 A1 01 00 00 00 00 00 00 00 00
程序如下:
char KeyPress[]={0x0C,0x00,0xA1,0x01,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00}; char KeyRelease[]={0x0C,0x00,0xA1,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; void setup() { // put your setup code here, to run once: Serial1.begin(9600); //设置串口波特率 } void loop() { for (byte i=0;i<sizeof(KeyPress);i++) { Serial1.write(KeyPress[i]); } for (byte i=0;i<sizeof(KeyRelease);i++) { Serial1.write(KeyRelease[i]); } delay(5000); }
测试结果,每隔5秒我的电脑上就可以收到一个 1 的输入。
更多的好玩还在研究中。有模拟键盘需要的朋友不妨考虑这样的蓝牙模块,顺便说一下,这种模块在35元左右,比普通透传模块贵多了(通常20左右)。当然,你可以看看国外类似的产品,Adafruit出品的“EZ-Key BT HID Keyboard Controller纸模块”价格在180元,感觉就不那么贵了......
==================================================================
2016年3月13日 更新
我一直以为在文章中放出来过购买链接,昨天有朋友问检查了一下才发现我忘记了。这个模块的购买链接是 https://item.taobao.com/item.htm?spm=a1z09.2.0.0.V7mzul&id=521222818182&_u=dkf8s9fbec
卖家名字是 “重庆翔码电子工厂店”。买的时候你不妨问一下卖家,说你要做蓝牙HID设备,这个和普通常用的蓝牙串口透传模块之类的是不同的。
再放一下这个模块的说明书:BTHID
特别注意:之前我一直以为蓝牙键盘模块和蓝牙扫描枪模块是同一个东西,结果有朋友买成了“蓝牙扫描枪模块”,结果无法使用。他们之间的差别在于,键盘模块可以发送 shift/alt/ctrl 等等。蓝牙扫描枪模块只能发送可见的 ascii。
所以一定要询问清楚(估计是当时我和卖家说了,然后虽然拍下的是蓝牙扫描枪模块,但是给我的是蓝牙键盘模块)。
不仅要问下卖家,还要说清是键盘模块,不然博主的链接默认是扫描枪模块,两个应该是不同的,手册也不一样。
不好意思,我搞错了,应该买的是 “蓝牙键盘模块” 而不是 “蓝牙扫描枪模块”。 所以我删掉了那个淘宝链接。
带底板的模块默认为数据模式,不能使用at命令。要进入at模式可以用跳线短暂连接VCC和PIO3。数据手册里有说明。更改波特率之后,at模式的模特率恒定为9600,数据模式波特率改变。
这个模块需要上位机吧~
不需要的,这个模块的蓝牙 profile 从主机端看过去就是一个蓝牙键盘
你看蓝牙模块说明书的引脚说明:15号引脚和20号引脚,感觉这个模块可以直接连USB键盘,不需要arduino参与
这种模块上的 usb 信号意思是可以做Usb bluetooth device 用的,但是没见过自带 usb host的。
所以理论上这个也可以改蓝牙手柄吧,兼容PC、iOS、安卓之类的设备。
如果能写一个串口转蓝牙手柄的代码,那么是没问题的