这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【NUCLEO-WBA55CG】成果汇总-开发环境搭建、工程上传、MQTT协议、

共1条 1/1 1 跳转至

【NUCLEO-WBA55CG】成果汇总-开发环境搭建、工程上传、MQTT协议、EMQX 平台部署、Home Assistant 平台部署、心跳速率监测、LED

菜鸟
2025-01-12 19:27:02     打赏

【NUCLEO-WBA55CG】成果汇总

非常荣幸参加意法半导体和 EEPW 论坛共同举办的Let’s Do!ST NUCLEO-WBA55CG无线MCU开发大作战活动,从2024年12月6号收到开发板到2025年1月12号完成项目任务,经过一个多月的学习、思考和实践,我对 NUCLEO-WBA55CG 开发板有了更深刻的理解,也在微信群里向各位大佬学习了很多知识,感谢大家的支持和帮助,感谢工作人员对参与者的大力支持。

下面我将此次活动的任务完成情况进行汇总。

所有项目设计过程已在 EEPW 论坛 STM32 板块分别发表分享帖,链接如下

1.【NUCLEO-WBA55CG】简介、开发环境、蓝牙工程测试

2.【NUCLEO-WBA55CG】蓝牙MQTT连接HomeAssistant

3.【NUCLEO-WBA55CG】蓝牙控制LED

项目成果视频

https://www.bilibili.com/video/BV18vc3ekE5T/

硬件物料

  • NUCLEO-WBA55CB 开发板 (核心主控)

top_view.jpg

  • 树莓派 4B (搭载 Home Assistant 平台)

RaspberryPi4B.jpg

  • COB 灯珠 x1

    COB_LED.jpg

  • MOS开关驱动模块 x1

    MOS.jpg

  • TP4056 电池充电模块 x1

    TP4056.jpg

  • 18650 电池 x1

    18650.jpg

成果展示

介绍了开发环境搭建、工程上传、MQTT协议、EMQX 平台部署、Home Assistant 平台部署、心跳速率监测、LED 开关控制等。

一、蓝牙体温计1.开发环境

这里介绍编译环境的搭建流程。

(1)下载并安装 Keil MDK IDE 或下载并安装 STM32CubeIDE

(2)下载并安装 STM32CubeMX

(3)下载 ST 官方资料:NUCLEO-WBA55CG

示例工程位于 MCU and MPU embedded software 选项下

(4)Keil 和 STM32CubeMX 安装与 STM32WBA55CGU6 芯片对应的软件包;

打开 Keil MDK IDE,搜索并安装 STM32WBA55CGUx 设备包;

2.工程测试

这里以 ST 官方提供的蓝牙 Demo 工程进行测试,包括硬件和软件部分。

项目预期目标是实现 板载温度传感器数据的蓝牙传输手机 APP 应用终端的远程监测

3.硬件检测

1.检测跳帽是否接至 5V_ST-LINK 选项,将拨动开关调至 default 处;

2.使用恰当的 Typec-C 数据线连接开发板和电脑

4.软件测试

3.打开示例工程 BLE_HealthThermometer 文件路径位于

Nucleo-WBA55CGDocOfficialSTM32CubeWBAProjectsNUCLEO-WBA55CGApplicationsBLEBLE_HealthThermometer

4.重编译该工程,生成固件;

5.设置调试配置,使用板载 STLINK-V3

固件烧录

6.点击 Download 命令,待进度条完成,窗口显示 OK,短按 RST 键即可。

蓝牙连接

7.打开手机终端 APP —— ST BLE ToolboxST BLE Sensor

8.扫描蓝牙设备并连接

9.点击即可进入查看相关信息,如设备信息、信号强度、体温等

小结

展示和介绍了 NUCLEO-WBA55CG 开发板,包括功能、原理图等。此外,介绍了 IDE 开发环境的搭建、Keil 工程测试流程;完成了蓝牙 Demo 测试,并在智能手机终端应用中测试了开发板的蓝牙数据传输功能。

本文在前面关于开发板工程编译环境搭建及测试的基础上,进一步深入探讨该硬件与网络平台 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-WBA55CGDocOfficialSTM32CubeWBAProjectsNUCLEO-WBA55CGApplicationsBLEBLE_HealthThermometer

加载工程至开发板,短按 RESET 键重置并运行程序;

3 终端连接

(1)智能手机应用终端需下载并安装开发板对应的无线蓝牙应用,以识别蓝牙设备,获取发送的传感器数据。

(2)打开智能手机客户端应用 ST BLE Sensor,开启设备蓝牙,软件自动扫描周围的蓝牙设备,并显示 ST 无线设备 HR_70

HR_70_SensorAPP.jpg

(3)点击设备并连接,可获取心跳速率曲线、位置、能量消耗;还可查询蓝牙接收消息的文字信息;或通过 MQTT 协议上传至云端。

HR_70.gif

这里我们需要使用云端 MQTT 功能,因此需要对其进行配置

(4)点击进入 Cloud MQTT 后便进入参数配置界面,

根据 EMQX 客户端信息输入相应参数,确定即可;

这里 Device ID 即为订阅主题 Topic 。

4 MQTT

MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。

1.Docker

下载并安装 Docker Desktop 软件,

为不同软件提供相互隔离的容器环境,兼容运行 Linux 平台的软件 EMQX 和 Home Assistant;

2.部署 EMQX

具体操作如下

(1)进入 EMQX 官网,阅读 通过 Docker 运行 EMQX 相关资料;

(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 平台;

  • 若拉取失败,可尝试 yml 文件安装

在任意目录创建 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 平台,

初始登录账户名和密码为 adminpublic

(4)建立和配置客户端信息

  • 依次打开 访问控制 - 客户端认证 - 创建 - Password-Based - 内置数据库 - (默认配置)- 创建

  • 用户管理 - 新建用户 - 自定义用户名和密码;

回到平台主界面,可观察节点和连接数目等信息

观察信息流和连接状态以及数据传输情况,实现后台数据流监控

EMQX_Group.png

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_topicvalue_template 的定义。

开发者工具 界面 重新加载 YAML 所有配置 并刷新浏览器界面,即可看到 Heart Rate 传感器选项。

HA_HR_70.png

5 连接测试

这里展示使用 MQTTX 软件进行连接测试的方案

(1)下载并安装 MQTTX 软件

(2)点击连接右侧的加号 - 新建连接,配置参数信息,服务器地址、端口、用户名、密码信息与 EMQX 中的客户端对应即可;

MQTTX_Group_ConnectorMQTTX_Group_Connector.png

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

点击连接按钮即可接收信息。

6 连接 Home Assistant

从接收到的信息条可知,每条消息包含三组数据,分别是心跳速率、能量扩散、测试间隔。

这里我们仅展示心跳速率的数据。

由于前面我们已经配置了 MQTT 集成参数,以及 configuration.yaml 文件,在 概况 界面即显示心跳速率信息。

项目成果

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

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

动态效果展示

HA_HR_70HA_HR_70.gif

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

HA_APP_HR_70.jpg

小结

介绍了 NUCLEO-WBA55CG 开发板通过 MQTT 协议与 Home Assistant 智能家居平台的连接,关键在于 EMQX 平台、Home Assistant 的系统搭建。

在可预见的实际应用项目中,需要考虑成本及稳定性等指标,因此该项目还拥有较大的提升和改进空间。

此外,对于多传感器数据传输、低功耗传输等需求,还有待进一步开发和研究。

三、蓝牙控制 LED

本文介绍了通过蓝牙控制 LED 或开关的项目设计。

Bluetooth_HA.jpg

项目简介

主要分为两部分,

  • ST BLE SensorST BLE Toolbox 控制 NUCLEO-WBA55CG 板载 LED 和控制外置 LED 或开关模块;

  • 联系之前的工作,通过 MQTT 协议发送消息至 EMQX 和 Home Assistant 智能家居平台,实现 LED 或开关的联网远程控制。

项目方法

1.开发板 NUCLEO-WBA55CG 烧录官方例程 BLE_p2pServer;

2.ST BLE SensorST BLE Toolbox 客户端连接并控制板载 LED ;

3.外置 LED 电路连接,并同样使用蓝牙 APP 控制测试;

4.连接 Home Assistant (HA) 添加仪表盘或修改配置文件,通过 HA 平台实现远程控制 LED 或开关。

1.硬件准备

  • NUCLEO-WBA55CG 开发板 x1

  • COB 灯珠 times1

  • MOS开关驱动模块 x1

  • TP4056 电池充电模块 x1

  • 18650 电池 x1

  • 杜邦线若干

2.工程编译和上传

下载 示例工程压缩包,打开目标示例工程 BLE_p2pServer

工程路径为

Nucleo-WBA55CGDocOfficialSTM32CubeWBAProjectsNUCLEO-WBA55CGApplicationsBLEBLE_p2pServer

3.终端测试

工程上传后的效果

BLE_LED_server.gif

绿色 LD2 快速闪烁,指示连接状态。

1.使用 ST BLE Sensor 安卓客户端连接开发板蓝牙

combine_ST_sensor_P2Pserver_control.jpg

手机 APP 控制 LED  效果

BLE_LED.gif

2.使用 ST BLE Toolbox 安卓客户端连接开发板

combine_ST_Toolbox_P2Psensor_control.jpg

实现了 LED 的蓝牙客户端 APP 远程控制。

4.外置 LED

在完成板载 LED 蓝牙控制测试的基础上,这里介绍了外置 LED 的控制电路。

原理

根据用户手册或原理图可知,蓝色 LED 对应引脚号为 PB4/GPIO30

若要实现蓝牙远程控制外置 LED,则仅需控制对应 GPIO 引脚的输出电平即可,具体接线方式如下

LED_COB_Lines.jpg


效果

1.使用 ST BLE Sensor 应用客户端控制 GPIO 输出高低电平,实现外置 LED 的点亮和熄灭。

LED_controller_STsensor.gif

2.使用 ST BLE Toolbox 应用客户端控制 GPIO 输出高低电平,实现外置 LED 的点亮和熄灭。

LED_controller_STbox.gif

3.使用 ST BLE Sensor 应用客户端控制 GPIO 输出高低电平,实现外置 LED 的点亮和熄灭,仅依靠电池供电

LED_controller_withoutDC.gif

需要注意的是,当充电模块连接数据线时,控制 MOS 开关仅需要输入GPIO 信号即可;当仅使用电池时,即 TP4056 模块未连接数据线,此时需要连接 VDD 和 PB4 两个引脚来实现 MOS 开关触发。

5.连接 MQTT

这里使用 ST BLE Sensor 应用的 Cloud MQTT 功能

combine_ST_sensor_P2Psensor_MQTT.jpg

连接开发板,进入 Cloud MQTT 配置,输入电脑 IP 地址,端口号,EMQX 平台建立的客户端名称和密码,设备 ID 号等信息。

测试

使用 MQTTX 软件进行连接和控制测试,配置相应的参数,注意订阅主题以及发送信息的 topic 要与 APP 参数一致。

发送 JSON 消息,即可控制 GPIO 电平以及 LED 。

6.连接 Home Assistant

打开 HA 主界面,进入 MQTT 通信测试页面

HA_MQTT_LED_test.jpg

可配置主题并发送 LED 控制代码。

修改 configuration.yaml 文件,增加 LED 灯光控制按钮

mqtt:
  light:
    # Device name
    - name: "LED"
    # State topic
      state_topic: "phone_ljl/LED"
    # Command topic
      command_topic: "phone_ljl/LED"
    # Command type
      payload_on: "on"
      payload_off: "off"
    # unique_ID
      unique_id: "LED"
    # optimistic set
      optimistic: false

应用配置并刷新界面,即可通过按钮实现 LED 控制

HA_LED.jpg

项目成果

NUCLEO-WBA55CG 开发板连接 Home Assistant 控制 LED

HA_Control_LED.gif

HA_LED_light_control.gif

Home Assistant 平台联网及控制

HA_LED_Raspberry.gif

小结

本文介绍了 NUCLEO-WBA55CG 开发板蓝牙控制 LED 或开关的项目设计,工程烧录并通过 ST BLE SensorST BLE Toolbox 安卓客户端控制板载 LED 和控制外置 LED 或开关模块;通过 MQTT 协议向开发板发送消息,依托 EMQX 和 Home Assistant 智能家居平台,实现 LED 或开关的联网远程控制。

开关控制在工业生产、消费电子、物联网、科学研究等领域有着广泛的市场需求,本文基于 NUCLEO-WBA55CG 开发板通过 MQTT 协议实现了开关模块的联网远程控制,为 NUCLEO-WBA55CG 系列开发板的应用拓宽了道路,并为相关产品的云端部署及智能化提供了参考。

总结

再次感谢活动主办方意法半导体和 EEPW 论坛的支持,以及微信大佬们的无私帮助,在大佬们的聊天对话中学到很多专业知识,开拓了视野,特别是 PWM 控制以及使用 STM32CubeMX 软件快速生成工程的学习,不断解决问题并最终实现目标。

HomeAssistant 的镜像下载安装、开发板和 HA 的连接等经历,极大地丰富了我对物联网的认知,也感受到自己的渺小。在阅读手册和访问官网链接等操作时明显感受到自身基础知识的匮乏,同时也激发了不断深入学习嵌入式开发的热情。

希望该活动越办越好,也希望越来越多的电子爱好者关注和参与 EEPW 举办的各种活动,共同学习、分享和成长,用科技创造美好未来。

相关项目源码均已公开,详见文末附件。





关键词: NUCLEO-WBA52CG     蓝牙     Home As    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]