本文在前面关于开发板工程编译环境搭建及测试的基础上,进一步深入探讨该硬件与网络平台 Home Assistant 的连接,目标是实现开发板数据的网络访问,以及远程控制等功能的实现,以期拓展其物联网功能,为智能家居和智能工业的应用提供参考。
·项目简介
本项目基于 NUCLEO-WBA55CG 开发板官方例程进行二次开发。搭建 MQTT 协议传输平台,将开发板蓝牙传输信息发送至云端,并通过EMQX 平台发送至客户终端 Home Assistant,实现远程网络数据传输和访问。
·项目方法
1.开发板 NUCLEO-WBA55CG 烧录官方例程;
2.搭建 MQTT 协议传输平台,包括 EMQX 和 Home Assistant;
3.使用 MQTTX 软件测试连接状态
4.测试通过后,将数据发送至 Home Assistant 平台。
1 硬件准备
开发板、智能手机、Type-C 转 USB 数据线、Home Assistant 平台(树莓派 4 或 Docker)
2 工程上传
示例工程压缩包,打开目标示例工程 BLE_HealthRate ,
工程路径为
Nucleo-WBA55CG\DocOfficial\STM32CubeWBA\Projects\NUCLEO-WBA55CG\Applications\BLE\BLE_HealthThermometer
工程主函数代码
#include "main.h"
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;
void SystemClock_Config(void);
void PeriphCommonClock_Config(void);
static void SystemPower_Config(void);
int main(void)
{
  HAL_Init();
  MX_APPE_Config();
  SystemClock_Config();
  PeriphCommonClock_Config();
  SystemPower_Config();
  MX_GPIO_Init();
  MX_GPDMA1_Init();
  MX_RAMCFG_Init();
  MX_RTC_Init();
  MX_RNG_Init();
  MX_ICACHE_Init();
  ConfigureStandbyWakeupPins();
  MX_APPE_Init(NULL);
  while (1)
  {
    MX_APPE_Process();
  }
}加载工程至开发板,短按 RESET 键重置并运行程序;
完整工程见附件。
3 终端连接
(1)智能手机应用终端需下载并安装开发板对应的无线蓝牙应用,以识别蓝牙设备,获取发送的传感器数据。
安装 相关资料;
(2)命令行终端 CMD 运行如下指令
docker pull emqx/emqx:5.8.4 docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.8.4
自动拉取、下载、部署至 Docker 并运行 EMQX 平台;
在任意目录创建 docker-compose.yml 文件
version: '3' services: emqx1: image: emqx:5.8.4 container_name: emqx1 environment: - "EMQX_NODE_NAME=emqx@node1.emqx.io" - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]" healthcheck: test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"] interval: 5s timeout: 25s retries: 5 networks: emqx-bridge: aliases: - node1.emqx.io ports: - 1883:1883 - 8083:8083 - 8084:8084 - 8883:8883 - 18083:18083 # volumes: # - $PWD/emqx1_data:/opt/emqx/data emqx2: image: emqx:5.8.4 container_name: emqx2 environment: - "EMQX_NODE_NAME=emqx@node2.emqx.io" - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io,emqx@node2.emqx.io]" healthcheck: test: ["CMD", "/opt/emqx/bin/emqx", "ctl", "status"] interval: 5s timeout: 25s retries: 5 networks: emqx-bridge: aliases: - node2.emqx.io # volumes: # - $PWD/emqx2_data:/opt/emqx/data networks: emqx-bridge: driver: bridge
通过命令行切换 docker-compose.yml 文件所在目录,并启动 EMQX 集群
cd C:/EMQX docker-compose up -d
此时可在 Docker Desktop - Images 中找到 emqx/emqx5.8.4 镜像文件,通过指令
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.8.4
即可装载运行 EMQX 平台。
(3)点击 Docker 容器 EMQX 设备链接,进入 EMQX 平台,


初始登录账户名和密码为 admin ,public ;
(4)建立和配置客户端信息
- 依次打开 `访问控制` - `客户端认证` - `创建` - `Password-Based` - `内置数据库` - (默认配置)- `创建` ; 
- `用户管理` - `新建用户` - 自定义用户名和密码; - 回到平台主界面,可观察节点和连接数目等信息   - 观察信息流和连接状态以及数据传输情况,实现后台数据流监控   
3.部署Home Assistant 智能家居平台
这里我们介绍树莓派部署 Home Assistant 的主要流程
(1)下载 Home Assistant 镜像文件
https://github.com/home-assistant/operating-system/releases/download/14.1/haos_rpi4-64-14.1.img.xz
(2)使用 BalenaEther 软件加载镜像,并烧录至 SD 卡


提示烧录成功后,装载 SD 卡


(3)浏览器输入 http://homeassistant:8123/ 即可进入 Home Assistant 系统界面


(4)添加 MQTT 集成
依次点击设置 - 设备与服务 - 添加集成 - 搜索 MQTT - 填写代理信息,
代理栏输入计算机 IP 地址,端口 1883,用户名和密码为 EMQX 中创建的用户信息;
创建成功后,可在 设备与服务 选项下看到 MQTT 应用图标;
(5)根据开发板蓝牙发送的信息格式,配置 YAML 参数
打开 Home Assistant 安装根目录下的 configuration.yaml 文件,并添加如下代码
# Example configuration.yaml entry
mqtt:
  sensor:
    - name: "Heart Rate"
      state_topic: "phone_ljl/Heart Rate"
      suggested_display_precision: 1
      unit_of_measurement: "bmp"
      value_template: "{{ value_json.heart_rate_measurement }}"需要注意主题 state_topic 和 value_template 的定义。
在 开发者工具 界面 重新加载 YAML 所有配置 并刷新浏览器界面,即可看到 Heart Rate 传感器选项。


5 连接测试
这里展示使用 MQTTX 软件进行连接测试的方案
(1)下载并安装 软件
(2)点击连接右侧的加号 - 新建连接,配置参数信息,服务器地址、端口、用户名、密码信息与 EMQX 中的客户端对应即可;


点击 添加订阅 按钮,输入手机客户端配置的 Topic 信息,


点击连接按钮即可接收信息。
6 连接 Home Assistant
从接收到的信息条可知,每条消息包含三组数据,分别是心跳速率、能量扩散、测试间隔。
这里我们仅展示心跳速率的数据。
由于前面我们已经配置了 MQTT 集成参数,以及 configuration.yaml 文件,在 概况 界面即显示心跳速率信息。

·项目成果
点击 Home Assistant 网页链接 http://homeassistant:8123/ ,进入传感器面板,即可观察到心跳速率的动态变化,更新时间间隔为 1 秒(可通过 ST BLE Sensor 应用调整采样速率)


历史曲线,描述数据演化过程


动态效果展示


手机端安装 Home Assistant 应用也可获取相同信息。


·总结
本文介绍了 NUCLEO-WBA55CG 开发板通过 MQTT 协议与 Home Assistant 智能家居平台的连接,关键在于 EMQX 平台、Home Assistant 的系统搭建。
在可预见的实际应用项目中,需要考虑成本及稳定性等指标,因此该项目还拥有较大的提升和改进空间。

 
					
				
 
			
			
			
						
			 
					
				 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

