|
申请试用这个开发板的目的就是研究一下HID蓝牙键盘,为后续DIY蓝牙机械键盘做准备。只可惜此开发板只能试用两周,用后需归还。
接下来介绍一下在HID键盘方面的一些使用情况。
一、概述
整个键盘方案如下:
STM32作为主控,进行按键扫描,然后将键值通过串口发送给BLE设备,BLE设备再发送给BLE主机。STM32同时也可以通过USB,以HID协议发送键值,此时STM32被识别成键盘。
整个实验中,LinkSprite Mbed BLE Sensors tag开发板作为BLE从机,PC作为BLE主机。由于从机是BLE,非传统蓝牙,所以要求主机支持BLE。目前新出的PC基本都是双模的,即支持传统蓝牙,也支持低功耗蓝牙。
这里以一个开发板来做演示,按下开发板上的按键,将在设备上打印出大写字母A。类似于按下键盘的A键。
二、硬件准备
- STM32开发板
- LinkSprite Mbed BLE Sensors tag开发板
- 杜邦线
图 1
三、软件
1.主控制器-----STM32
在编写代码前,需要了解一下USB-HID协议,主要是明白如何将键值填充到协议里面并发送。在一包数据中,有8个字节需要用户处理。第一个字节为特殊字节,包含shift、ctrl等功能键是否按下的信息,后7个字节为键值。程序中需要处理的就是将对应按键的键值填充到这个8字节的数组中。除了第一字节,后面的7字节无顺序关系。
STM32部分代码比较简单,检测按键,然后将键值通过串口发送给BLE开发板。同时STM32被识别为HID设备。如下图:
图 2
这里需要注意的是,通过USB发送一包数据完成后,若无键按下,需要发送一包全0数据,表示按键释放,否则,会被识别成长按键。
2.BLE-HID
打开官方SDK的“ble_app_hids_keyboard”例程,在串口接收中断中处理STM32发送的键值。然后通过蓝牙转发。代码如下:
void UART0_IRQHandler(void)
{
static uint8_t keybuf[8];
static uint8_t i=0;
keybuf = simple_uart_get();
i++;
if( i > 7)
{
i=0;
keys_send(8,keybuf);
}
}
四、现象
这里使用一款支持蓝牙4.0的平板与开发板连接。打开平板的蓝牙,进行扫描,搜索到名为“Nordic_Keyboard”的设备,点击连接,如下图:
图 3
当配对成功之后,平板显示已连接,同时开发板上的红色LED熄灭,如下图:
图 4
当按下开发板上的按键后,PC上打印出大写字母A,同时平板上也打印出A。如下图所示:
图 5
五、总结
LinkSprite Mbed BLE Sensors tag开发板板载调试器,用户拿到手后,只需要一根microUSB线即可开发。并且Nordic官方提供丰富的参考资料及例程,大大降低了开发难度,总的来说NRF51822比较适合蓝牙入门学习。
最后感谢爱板网提供本次试用。 |
|