BT[2]-BLE初体验:心率计

一、简介

通过“BT[1]-Introduction to Bluetooth Low Energy”知道,两个BLE设备通信需要完成两件事:

  • 广播:设备发送广播信息表明自己的存在,让周围的设备可以Discover自己
  • 连接:Peripheral和Central设备建立peer-to-peer连接,之后通过GATT通信

这里不涉及广播和连接的原理讲解,通过Linux系统下BlueZ提供的工具实现一个心率计,进而体验下BLE。

二、准备

RK3308+BLE:作为蓝牙的Peripheral端。RK3308系统有hciconfig、hcitool 、btgatt_server、brcm_patchram_plus1命令。

手机+BLE Scanner:作为蓝牙的CentralBLE Scanner APP(iPhone)界面如下:

三、Peripheral设备发送广播

1、启动蓝牙

echo 1 > /sys/class/rfkill/rfkill0/state
brcm_patchram_plus1 --enable_hci --no2bytes --use_baudrate_for_download --tosleep 200000 --baudrate 1500000 --patchram/system/etc/firmware/bcm43438a1.hcd /dev/ttyS4 &
hciconfig hci0 up
hciconfig hci0 piscan

命令解释参见“BT[0]-RK3308蓝牙使用”。

2、检测启动是否成功

# hciconfig -a
hci0:	Type: Primary Bus: UART
BD Address: 8C:F7:10:4A:71:B5 ACL MTU: 1021:8 SCO MTU: 64:1
UP RUNNING PSCAN ISCAN 
RX bytes:9721 acl:6 sco:0 events:328 errors:0
TX bytes:747 acl:2 sco:0 commands:53 errors:0
Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
Link policy: RSWITCH SNIFF 
Link mode: SLAVE ACCEPT 
Name: 'BCM43438A1 26MHz AP6212A1_CL1 BT4.0 OTP-BD-0058'
Class: 0x000000
Service Classes: Unspecified
Device Class: Miscellaneous, 
HCI Version: 4.0 (0x6) Revision: 0xf9
LMP Version: 4.0 (0x6) Subversion: 0x2209
Manufacturer: Broadcom Corporation (15)

3、开启BLE的广播功能

# hcitool -i hci0 cmd 0x08 0x000a 01
< HCI Command: ogf 0x08, ocf 0x000a, plen 1
01 
> HCI Event: 0x0e plen 4
01 0A 20 00

 4、发送广播数据

# hcitool -i hci0 cmd 0x08 0x0008 16 02 01 06 03 02 80 ff 0e 09 62 6c 65 5f 6e 61 6d 65 5f 5a 30 30 31
< HCI Command: ogf 0x08, ocf 0x0008, plen 23
16 02 01 06 03 02 80 FF 0E 09 62 6C 65 5F 6E 61 6D 65 5F 5A 
30 30 31 
> HCI Event: 0x0e plen 4
01 08 20 00

至此,通过BLE Scanner可以看到设备,在APP的“ADBERTIMENT DATA”区域可以看到广播数据,比如Device Local Name:ble_name_Z001。

四、GATT

1、运行btgatt_server服务:

btgatt_server -i hci0 -t public -r -v

2、点击APP的【connect】,连接设备。在【Service】可以看到心率计的服务。点进去可以看到红心处更新。

附录

BlueZ:http://www.bluez.org

原文地址:https://www.cnblogs.com/rockyching2009/p/10603013.html