【NUCLEO-WBA65RI评测】物联网 LED
本文介绍了通过蓝牙无线连接实现远程控制的物联网 LED 的项目设计。
项目简介
主要分为两部分,
- ST BLE Sensor 或 ST BLE Toolbox 控制 NUCLEO-WBA65RI 板载 LED ;
- 通过 MQTT 协议发送消息至服务器或 Home Assistant 智能家居平台,实现 LED 的联网远程控制。
项目方法
- 开发板 NUCLEO-WBA65RI 上传官方 Demo 例程 BLE_p2pServer;
- 使用 ST BLE Sensor 和 ST BLE Toolbox 客户端连接并控制板载 LED ;
- 连接 Home Assistant (HA) 添加仪表盘并修改配置文件,通过 HA 平台实现远程控制 LED 亮灭。
工程编译和上传
- 目标 Demo 示例工程
BLE_p2pServer ,
- 工程路径为
F:\STM32Cube\Repository\STM32Cube_FW_WBA_V1.6.1\Projects\NUCLEO-WBA65RI\Applications\BLE\BLE_p2pServer\STM32CubeIDE ;
- 右键工程文件夹,编译例程(或点击工具栏小锤子按钮完成编译);
- 连接开发板和电脑,点击工具栏的运行按钮,待提示
Download verified successfully 字样,表明完成上传;
代码
- 打开
Application/User/Core/main.c 文件,获取主函数;
- 进入主循环,通过函数定位获取相关工程定义及细节
#include "main.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);
/* 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 code for STM32_WPAN */
MX_APPE_Init(NULL);
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
MX_APPE_Process();
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
修改后保存代码,重新编译工程并上传固件。
终端测试
工程上传后,绿色 LD2 快速闪烁,指示连接状态。
- 使用 ST BLE Sensor 安卓客户端连接开发板蓝牙

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

实现了 LED 的蓝牙客户端 APP 远程控制。
连接 MQTT
这里使用 ST BLE Sensor 应用的 Cloud MQTT 功能

- 连接开发板,进入 Cloud MQTT 配置,
- 输入电脑 IP 地址,端口号,EMQX 平台建立的客户端信息。
测试
使用 MQTTX 软件进行连接和控制测试,配置相应的参数,注意订阅主题以及发送信息的 topic 要与 APP 参数一致。

发送 JSON 消息,即可控制 GPIO 电平以及 LED 。
连接 Home Assistant
打开 HA 主界面,进入 MQTT 通信测试页面

可配置主题并发送 LED 控制代码。
修改 configuration.yaml 文件,增加 LED 灯光控制按钮
mqtt:
light:
# Device name
- name: "LED"
# State topic
state_topic: "nucleo/LED"
# Command topic
command_topic: "nucleo/LED"
# Command type
payload_on: "on"
payload_off: "off"
# unique_ID
unique_id: "LED"
# optimistic set
optimistic: false
应用配置并刷新界面,即可通过按钮实现 LED 控制

效果

Home Assistant 平台远程控制 LED 亮灭。
总结
本文介绍了 NUCLEO-WBA65RI 开发板蓝牙控制 LED 的项目设计,工程烧录并通过 ST BLE Sensor 应用控制板载 LED ;通过 MQTT 协议向开发板发送消息,依托 EMQX 和 Home Assistant 智能家居平台,实现 LED 的联网远程控制,为该产品在物联网领域的开发设计和快速应用提供了参考。 |