【NUCLEO-WBA65RI评测】Home Assistant 物联网心率计
本文介绍了 NUCLEO-WBA65RI 开发板加载心率 Demo 例程,实现智能手机终端应用实时获取并监测心率信息、并结合 APP 提供的 MQTT 功能,实现心率数据的云端上传、连接 Home Assistant 平台实现物联网心率计的项目设计。
项目介绍
工程测试
-
运行 STM32CubeIDE 软件,导入目标示例工程 BLE_HeartRate ,
-
工程路径为 F:\STM32Cube\Repository\STM32Cube_FW_WBA_V1.6.1\Projects\NUCLEO-WBA65RI\Applications\BLE\BLE_HeartRateFreeRTOS\STM32CubeIDE ;
-
右键工程文件夹,编译例程(或点击工具栏小锤子按钮完成编译);

-
连接开发板和电脑,点击工具栏的运行按钮,待提示 Download verified successfully 字样,表明完成上传;
代码
- 打开
Application/User/Core/main.c 文件,获取主函数;
- 进入主循环,通过函数定位获取相关工程定义及细节
#include "main.h"
#include "cmsis_os2.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
ADC_HandleTypeDef hadc4;
CRC_HandleTypeDef hcrc;
RAMCFG_HandleTypeDef hramcfg_SRAM1;
RNG_HandleTypeDef hrng;
RTC_HandleTypeDef hrtc;
UART_HandleTypeDef huart1;
DMA_HandleTypeDef handle_GPDMA1_Channel1;
DMA_HandleTypeDef handle_GPDMA1_Channel0;
/* USER CODE BEGIN PV */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
void PeriphCommonClock_Config(void);
void MX_FREERTOS_Init(void);
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
/* USER CODE END 0 */
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* Config code for STM32_WPAN (HSE Tuning must be done before system clock configuration) */
MX_APPE_Config();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* Configure the peripherals common clocks */
PeriphCommonClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_GPDMA1_Init();
MX_RAMCFG_Init();
MX_RTC_Init();
MX_RNG_Init();
MX_ICACHE_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Init scheduler */
osKernelInitialize();
/* Call init function for freertos objects (in app_freertos.c) */
MX_FREERTOS_Init();
/* Init code for STM32_WPAN */
MX_APPE_Init(NULL);
/* Start scheduler */
osKernelStart();
/* We should never get here as control is now taken by the scheduler */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
修改后保存代码,重新编译工程并上传固件。
数据上传
动态数据
查看 Heart Rate 选项,获取实时心率、能量消耗等信息;

动态展示

文字模式
查看 Textual Monitor 选项,获取实时文字监测信息;

MQTT 上传
- 进入
Cloud MQTT 选项,输入 MQTT Broker 所在服务器或电脑 ip 地址、端口号、客户端名称等信息;
- 点击确定,进入
Dev Upload 选项;
- 点击运行按钮,开始通过 MQTT 协议向云端发送消息,内容见
Publish Sensor 项;

MQTTX 测试
- 使用 MQTTX 软件作为 MQTT 终端对开发板发送的消息进行接收测试;
- 下载安装并打开 MQTTX 软件,新建连接;
- 输入 MQTT 服务器 ip 地址、客户信息等,确定并连接;
- 根据 ST BLE Sensor 的 Device ID 添加订阅主题,如
nucleo/Heart Rate ,以接收消息;

以 JSON 格式接收数据,获取到数据的格式如下
{
"heart_rate_measurement": "73",
"energy_expended": "3085",
"rr-interval": "1.0"
}
三组数据分别表示心率、能耗、RR间期。
Home Assistant 连接
- 打开 Home Assistant 配置文件,添加代码
mqtt:
sensor:
- name: "Heart Rate"
state_topic: "nucleo/Heart Rate"
suggested_display_precision: 1
unit_of_measurement: "bmp"
value_template: "{{ value_json.heart_rate_measurement }}"
- 重新加载 YAML 配置;
- 依次进入概览 - 编辑仪表盘 - 添加卡片 - 传感器,选择 Heart Rate 选项即可;
- 刷新页面,即可获取 MQTT 消息提取到的实时心率数据,并保持动态更新;
- 点击卡片,可获取心率演化曲线;

总结
本文介绍了 NUCLEO-WBA65RI 开发板加载心率 Demo 例程,实现智能手机终端应用实时获取并监测心率信息、并结合 APP 提供的 MQTT 功能,实现心率数据的云端上传、连接 Home Assistant 平台实现物联网心率计的项目设计,为该产品在物联网领域的开发设计和快速应用提供了参考。 |