Bluetooth: Peripheral / Heart-rate Monitor¶
1 功能概述¶
此项目演示了蓝牙从机的功能,该工程专门暴露了HR (Heart Rate)
GATT服务。
一旦设备连接上,它就会产生虚拟的心率值。
该工程默认使用Spark BLE Controller。用户也可以配置使用Origin BLE Controller,用户可以参看PAN BLE Controller相关章节一了解两个BLE Controller的区别。
2 环境要求¶
board: 支持 BLE 的蓝牙设备
uart(option): 用来显示串口log
测试软件: nRF Connect
3 编译和烧录¶
例程位置:
zephyr\samples_panchip\bluetooth\peripheral_hr\clock_xtl
zephyr\samples_panchip\bluetooth\peripheral_hr\clock_rcl
zephyr\samples_panchip\bluetooth\peripheral_hr\clock_act
如上面例程的位置可以看出,HR demo 提供了3种不同的时钟配置的工程。
clock_xtl 表示使用外部的32768的晶振作为蓝牙的调度相关的时钟,低功耗方案。
clock_rcl 表示使用内部RCL 32K时钟作为蓝牙的时钟,这种方式主要应用于一些低成本的低功耗方案,相比于clock_xtl 该方法的缺点是连接状态下的功耗高。
clock_act 表示使用内部的Active 32K时钟作为蓝牙的时钟,这种用于非低功耗的场景。
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 配置文件说明¶
prj.conf
该配置文件配合当前工程的*.overlay,可以选择是否低功耗,以及低功耗模式下选择什么时钟进行计数,配置参数详细说明参考下方章节7 低功耗Config配置参数说明。
5 演示说明¶
烧录完成后,设备自动启动蓝牙广播,可以在手机或抓包工具上获取如下信息:
Service UUID: 0x180D, 0x180A, 0x180F
Device Name: Zephyr Heartrate Sensor
当手机或其它主设备与其建立连接后,串口log 会显示连接信息,如下:
Connected
此时,如果使能了
Heart Rate Measurement
,主机将收到温度数据,如下:
6 低功耗电流测试演示说明¶
如果需要测试最低电流的话,使用
samples_panchip\bluetooth\peripheral_hr\clock_xtl
目录下的prj.conf
文件默认配置。打开
samples_panchip\bluetooth\peripheral_hr\src
中的main.c
,将宏TEST_LOW_POWER_CURRENT_1S
设置为1。使能后会使得 peripheral_hr 广播时为 1 秒周期间隔,同时连接上以后也会更新为 1 秒连接间隔。使用 ZAL 工具重新编译下载程序。
然后使用电流测试工具观测电流,下图为 DCDC 模式 64M 主频广播电流:
注意在不同的系统时钟下、不同的发射功率下的平均电流是不同的。
7 低功耗相关 Config 配置参数说明¶
CONFIG_PM=y
低功耗使能总开关
CONFIG_BT_CTLR_SLEEP_CLOCK_SOURCE=1
低功耗时钟相关配置(当使能低功耗的时候,此处必须固定配置为1),而低功耗状态下真正使用的 32K 时钟源,需要在 dts 文件中配置,详请对比 查看 rcl.overlay 和 xtl.overlay
CONFIG_BT_SPARK_BLE_CONTROLLER_LOCAL_SCA=50
低功耗时的晶振精度:
- 0: 500ppm
- 1: 250ppm
- 2: 150ppm
- 3: 100ppm
- 4: 75ppm
- 5: 50ppm
- 6: 30ppm
- 7: 20ppm
- 1000: 1000ppm
- 2000: 2000ppm
通过设置该参数可以影响Rx开窗时的Window大小,选择大的ppm, 对于精度差的晶振,可以对连接有一定改善,但同时也有可能影响功耗。(只适用于Origin BLE Controller)
8 RAM/Flash资源使用情况¶
xtl:
Memory region Used Size Region Size %age Used
FLASH: 84832 B 384 KB 21.57%
SRAM: 27306 B 46 KB 57.97%
rcl:
Memory region Used Size Region Size %age Used
FLASH: 84920 B 384 KB 21.60%
SRAM: 27306 B 46 KB 57.97%