一、简介

通过“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:作为蓝牙的Central端。BLE 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

BT[2]-BLE初体验:心率计相关推荐

  1. ISD9160学习笔记01_大联大Nuvoton ISD9160语音识别开发板初体验

    前段时间由于个人开源项目OpenHamtaro(个人玩票项目,一个抽风的语音小仓鼠)的需要,在寻找ISD9160的相关方案.碰巧看到了ElecFun的试用活动,很荣幸获得了这个ISD9160开发板的试 ...

  2. [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)

    开机初始化Log Log编号 函数名   所在文件名 1 000001: main ..\main.c 2 000002: timers_init ..\main.c 3 000003: gpiote ...

  3. 我的Go+语言初体验——(7)Go+ 分数型有理数数据类型

    我的Go+语言初体验--(7)Go+ 分数型有理数数据类型 "我的Go+语言初体验" | 征文活动进行中- 更多内容,请参阅: 我的Go+语言初体验--(7)Go+ 分数型有理数数 ...

  4. 连接蓝牙demo_【BTS001】开源蓝牙协议栈BTStack初体验

    BTStack是一款开源的蓝牙协议栈,它具有很高的可配置性和极小的内存占用量,非常适合小型的.资源有限的设备,例如8或16位嵌入式系统. 支持以下Protocols和Profiles: Protoco ...

  5. csr 蓝牙驱动_【BTS001】开源蓝牙协议栈BTStack初体验

    BTStack是一款开源的蓝牙协议栈,它具有很高的可配置性和极小的内存占用量,非常适合小型的.资源有限的设备,例如8或16位嵌入式系统. 支持以下Protocols和Profiles: Protoco ...

  6. rockyLinux 初体验PostgreSQL15详细安装教程

    原创计划 | 总第 11 期(2023 第 09 期)知识分享 rockyLinux 安装 PostgreSQL 15.2 作者 | 文正耕耘(ID:dywangk) 彼时,PostgreSQL 已经 ...

  7. 华为云 云耀云服务器初体验

    华为云 云耀云服务器初体验 CSDN的图片上传让我哭泣他们不优化 我也不想一张一张网上传就是这么倔强:https://www.cnblogs.com/hx97/p/12490904.html 图片在这 ...

  8. 学习无人机-C01小四轴无人机初体验

    开机时,M3对应的蓝色指示灯先亮,M4那头对应的LED09一直亮(只要板子上电,就会一直亮). 充电时,红色LED11一直亮,没有变暗或者灭掉的现象.并且,LED10有时会微微冒蓝光. C01小四轴无 ...

  9. 大疆TT无人机编程初体验,教你对拥抱开源的无人机为所欲为!

    先放个项目演示视频镇帖: 可能是大疆TT无人机的第一款DIY遥控器!大疆TT无人机编程试飞初体验! 认识我的朋友,大概都知道,我是一个"运气爆棚"的人,经常能"捡&quo ...

最新文章

  1. ScrollView 嵌套EditText 滑动冲突解决
  2. 为了熟悉再一次的配置Postfix
  3. 数字后端——布图规划
  4. c++ 的makefile文件实例
  5. Handler sendMessage 与 obtainMessage (sendToTarget)比较
  6. (原創) 用OOP实作矩阵相乘 (C/C++)
  7. 根据模板提示,加入元素,修改CSS
  8. 快速傅里叶变换python_SciPyTutorial-快速傅立叶逆变换ifft
  9. TTF字体文件内容获取
  10. 笔记本无线网卡资源管理器服务器,笔记本无线网卡怎么打开 笔记本无线上网卡找不到网络解决方法...
  11. 【IoT】产品设计:用实际案例,手把手教你写PRD(产品需求文档)
  12. matlab中stract用法_matlab初学之strcat、num2str
  13. 愚人节整人软件测试自学,愚人节被玩坏的五大整人APP 帮你问鼎愚人节最佳损友...
  14. 软件技术共享社区正式上线
  15. 操作系统中并发与并行的几个例子
  16. 粮食行业视频监控系统互联互通技术规范
  17. ASCII - 美国标准信息交换代码
  18. iOS短视频源码音频采集过程中的音效实现
  19. 蒋涛作序盛赞Leo新作为“程序员职场实用百科全书”——《程序员羊皮卷》连载...
  20. 伪ios新浪微博客户端(自家用)

热门文章

  1. vue全局组件与局部组件
  2. ubuntu 21.04创建桌面快捷方式的方法
  3. hbase 2.2.6表及数据的增删改查命令行示例
  4. Vuex与登录状态保存
  5. Python Django单表查询之日期查询(大于小于范围查询)
  6. python3数据类型:Dictionary(字典)
  7. Linux shell文件测试运算符
  8. springboot 定时任务注入线程池
  9. Java日期相关类:Date、SimpleDateFormat和Calendar类常用API代码示例
  10. Spring Bean的属性注入