蓝牙键盘模块的实验

之前介绍过两种Arduino 模拟键盘的方法,一种是普通的Uno加上电阻之类的元件;一种是使用自带 USB 功能的 Arduino ,比如 Leonardo ,内部集成了USB Slave控制器。 这里再介绍蓝牙方案。

我们最常见的就是蓝牙透传模块,用蓝牙搜索安装之后能在系统中模拟出来一个串口,上位机直接按照串口方式即可进行通讯。这次介绍一款蓝牙键盘模块(实际上是键盘鼠标模块)。

外观和普通蓝牙透传模块一样(蓝牙芯片真正有用的都是内部Firmware)

TB1E9gOIVXXXXbOXpXXXXXXXXXX_!!0-item_pic

用法非常类似,在蓝牙中搜索连接之后系统中会出现键盘设备。

btkeyboard

然后数据是从串口送到蓝牙设备中的。根据说明我用 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元,感觉就不那么贵了......

TB1y1XyJXXXXXbnXXXXXXXXXXXX_!!0-item_pic

==================================================================
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。
所以一定要询问清楚(估计是当时我和卖家说了,然后虽然拍下的是蓝牙扫描枪模块,但是给我的是蓝牙键盘模块)。

蓝牙键盘模块的实验》上有 6 条评论

  1. 回到b不再度v

    不仅要问下卖家,还要说清是键盘模块,不然博主的链接默认是扫描枪模块,两个应该是不同的,手册也不一样。

    回复
    1. ziv2013 文章作者

      不好意思,我搞错了,应该买的是 “蓝牙键盘模块” 而不是 “蓝牙扫描枪模块”。 所以我删掉了那个淘宝链接。

      回复
  2. Pingback 引用通告: 打造黑客键盘扩展器(自动化、无线化)–前言 | Kevins Bobo

  3. 回到b不再度v

    带底板的模块默认为数据模式,不能使用at命令。要进入at模式可以用跳线短暂连接VCC和PIO3。数据手册里有说明。更改波特率之后,at模式的模特率恒定为9600,数据模式波特率改变。

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注