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:作为蓝牙的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初体验:心率计相关推荐
- ISD9160学习笔记01_大联大Nuvoton ISD9160语音识别开发板初体验
前段时间由于个人开源项目OpenHamtaro(个人玩票项目,一个抽风的语音小仓鼠)的需要,在寻找ISD9160的相关方案.碰巧看到了ElecFun的试用活动,很荣幸获得了这个ISD9160开发板的试 ...
- [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)
开机初始化Log Log编号 函数名 所在文件名 1 000001: main ..\main.c 2 000002: timers_init ..\main.c 3 000003: gpiote ...
- 我的Go+语言初体验——(7)Go+ 分数型有理数数据类型
我的Go+语言初体验--(7)Go+ 分数型有理数数据类型 "我的Go+语言初体验" | 征文活动进行中- 更多内容,请参阅: 我的Go+语言初体验--(7)Go+ 分数型有理数数 ...
- 连接蓝牙demo_【BTS001】开源蓝牙协议栈BTStack初体验
BTStack是一款开源的蓝牙协议栈,它具有很高的可配置性和极小的内存占用量,非常适合小型的.资源有限的设备,例如8或16位嵌入式系统. 支持以下Protocols和Profiles: Protoco ...
- csr 蓝牙驱动_【BTS001】开源蓝牙协议栈BTStack初体验
BTStack是一款开源的蓝牙协议栈,它具有很高的可配置性和极小的内存占用量,非常适合小型的.资源有限的设备,例如8或16位嵌入式系统. 支持以下Protocols和Profiles: Protoco ...
- rockyLinux 初体验PostgreSQL15详细安装教程
原创计划 | 总第 11 期(2023 第 09 期)知识分享 rockyLinux 安装 PostgreSQL 15.2 作者 | 文正耕耘(ID:dywangk) 彼时,PostgreSQL 已经 ...
- 华为云 云耀云服务器初体验
华为云 云耀云服务器初体验 CSDN的图片上传让我哭泣他们不优化 我也不想一张一张网上传就是这么倔强:https://www.cnblogs.com/hx97/p/12490904.html 图片在这 ...
- 学习无人机-C01小四轴无人机初体验
开机时,M3对应的蓝色指示灯先亮,M4那头对应的LED09一直亮(只要板子上电,就会一直亮). 充电时,红色LED11一直亮,没有变暗或者灭掉的现象.并且,LED10有时会微微冒蓝光. C01小四轴无 ...
- 大疆TT无人机编程初体验,教你对拥抱开源的无人机为所欲为!
先放个项目演示视频镇帖: 可能是大疆TT无人机的第一款DIY遥控器!大疆TT无人机编程试飞初体验! 认识我的朋友,大概都知道,我是一个"运气爆棚"的人,经常能"捡&quo ...
最新文章
- ScrollView 嵌套EditText 滑动冲突解决
- 为了熟悉再一次的配置Postfix
- 数字后端——布图规划
- c++ 的makefile文件实例
- Handler sendMessage 与 obtainMessage (sendToTarget)比较
- (原創) 用OOP实作矩阵相乘 (C/C++)
- 根据模板提示,加入元素,修改CSS
- 快速傅里叶变换python_SciPyTutorial-快速傅立叶逆变换ifft
- TTF字体文件内容获取
- 笔记本无线网卡资源管理器服务器,笔记本无线网卡怎么打开 笔记本无线上网卡找不到网络解决方法...
- 【IoT】产品设计:用实际案例,手把手教你写PRD(产品需求文档)
- matlab中stract用法_matlab初学之strcat、num2str
- 愚人节整人软件测试自学,愚人节被玩坏的五大整人APP 帮你问鼎愚人节最佳损友...
- 软件技术共享社区正式上线
- 操作系统中并发与并行的几个例子
- 粮食行业视频监控系统互联互通技术规范
- ASCII - 美国标准信息交换代码
- iOS短视频源码音频采集过程中的音效实现
- 蒋涛作序盛赞Leo新作为“程序员职场实用百科全书”——《程序员羊皮卷》连载...
- 伪ios新浪微博客户端(自家用)