当前文档版本为 v1.2.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

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 编译和烧录

例程位置:

  1. zephyr\samples_panchip\bluetooth\peripheral_hr\clock_xtl

  2. zephyr\samples_panchip\bluetooth\peripheral_hr\clock_rcl

  3. 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 演示说明

  1. 烧录完成后,设备自动启动蓝牙广播,可以在手机或抓包工具上获取如下信息:

    • Service UUID: 0x180D, 0x180A, 0x180F

    • Device Name: Zephyr Heartrate Sensor

  2. 当手机或其它主设备与其建立连接后,串口log 会显示连接信息,如下:

    Connected
    
  3. 此时,如果使能了Heart Rate Measurement,主机将收到温度数据,如下:

    image

    Peripheral HR 手机端 nRF Connect Service界面

    image

    Peripheral HR 手机端 nRF Connect Log界面

6 低功耗电流测试演示说明

  1. 如果需要测试最低电流的话,使用 samples_panchip\bluetooth\peripheral_hr\clock_xtl目录下的prj.conf文件默认配置。

  2. 打开samples_panchip\bluetooth\peripheral_hr\src中的main.c,将宏TEST_LOW_POWER_CURRENT_1S设置为1。使能后会使得 peripheral_hr 广播时为 1 秒周期间隔,同时连接上以后也会更新为 1 秒连接间隔。

  3. 使用 ZAL 工具重新编译下载程序。

  4. 然后使用电流测试工具观测电流,下图为 DCDC 模式 64M 主频广播电流:

    image

    Peripheral HR 功耗测量

  5. 注意在不同的系统时钟下、不同的发射功率下的平均电流是不同的。

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%