你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-WBA65RI评测】Home Assistant 物联网心率计

[复制链接]
无垠的广袤 发布时间:2025-8-31 18:40

【NUCLEO-WBA65RI评测】Home Assistant 物联网心率计

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

项目介绍

  • 以官方提供的蓝牙心率计 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

  • 右键工程文件夹,编译例程(或点击工具栏小锤子按钮完成编译);

    build_run_ble-HR.jpg

  • 连接开发板和电脑,点击工具栏的运行按钮,待提示 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 */
}

修改后保存代码,重新编译工程并上传固件。

数据上传

  • 手机安装 ST BLE Sensor 应用;

    st-ble-sensor-logo.jpg

  • 开启手机蓝牙,打开应用,扫描设备并连接;

动态数据

查看 Heart Rate 选项,获取实时心率、能量消耗等信息;

HR-view.jpg

动态展示

HR-app-view.gif

文字模式

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

HR-text.jpg

MQTT 上传

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

mqtt_send.jpg

MQTTX 测试

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

mqttx_test.jpg

以 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 消息提取到的实时心率数据,并保持动态更新;
  • 点击卡片,可获取心率演化曲线;

heart-rate.jpg

总结

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

收藏 评论0 发布时间:2025-8-31 18:40

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版