• 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

  • 相关阅读:
    vue中插槽的理解
    父子组件的通信
    vue3.0怎么禁用eslint校验代码和修改端口号
    三大排序
    让机器人实现自主行走 没你想的那么难
    国内外知名激光雷达公司盘点
    激光雷达寿命短,思岚通过什么技术来解决?
    浅谈SLAM的回环检测技术
    除了ROS, 机器人定位导航还有其他方案吗?
    思岚科技即将登陆“2018日本机器人周”精彩抢先看
  • 原文地址:https://www.cnblogs.com/rockyching2009/p/10603013.html
Copyright © 2020-2023  润新知