本文介绍了通过蓝牙控制 LED 或开关的项目设计。
项目简介
主要分为两部分,
ST BLE Sensor 或 ST BLE Toolbox 控制 NUCLEO-WBA55CG 板载 LED 和控制外置 LED 或开关模块;
联系之前的工作,通过 MQTT 协议发送消息至 EMQX 和 Home Assistant 智能家居平台,实现 LED 或开关的联网远程控制。
1.开发板 NUCLEO-WBA55CG 烧录官方例程 BLE_p2pServer;
2.ST BLE Sensor 或 ST BLE Toolbox 客户端连接并控制板载 LED ;
3.外置 LED 电路连接,并同样使用蓝牙 APP 控制测试;
4.连接 Home Assistant (HA) 添加仪表盘或修改配置文件,通过 HA 平台实现远程控制 LED 或开关。
1.硬件准备NUCLEO-WBA55CG 开发板 x1
COB 灯珠 x1
MOS开关驱动模块 x1
TP4056 电池充电模块 x1
18650 电池 x1
杜邦线若干
示例工程压缩包,打开目标示例工程 BLE_p2pServer ,
工程路径为
Nucleo-WBA55CG\DocOfficial\STM32CubeWBA\Projects\NUCLEO-WBA55CG\Applications\BLE\BLE_p2pServer
代码#include "main.h" #include "gpdma.h" #include "icache.h" #include "memorymap.h" #include "ramcfg.h" #include "rng.h" #include "rtc.h" #include "tim.h" #include "gpio.h" void SystemClock_Config(void); void PeriphCommonClock_Config(void); int main(void) { HAL_Init(); MX_APPE_Config(); SystemClock_Config(); PeriphCommonClock_Config(); MX_GPIO_Init(); MX_GPDMA1_Init(); MX_RAMCFG_Init(); MX_RTC_Init(); MX_RNG_Init(); MX_ICACHE_Init(); MX_TIM2_Init(); HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4); __HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_4,00); MX_APPE_Init(NULL); while (1) { MX_APPE_Process(); } }
这里可能遇到芯片无法识别的问题,解决方法如下
若出现 Keil 识别 STLINK-V3 但连接不上芯片的情况,即 No target connected,极有可能是主控进入低功耗模式导致,
可手动将 BOOT0 引脚拉高,根据引脚原理图可知,
BOOT0 引脚对应编号为 7,因此将 5 和 7 号引脚用杜邦线或跳帽连接,即可成功识别芯片。
参考:, , .
3.终端测试工程上传后的效果
绿色 LD2 快速闪烁,指示连接状态。
1.使用 ST BLE Sensor 安卓客户端连接开发板蓝牙
手机 APP 控制 LED 效果
2.使用 ST BLE Toolbox 安卓客户端连接开发板
实现了 LED 的蓝牙客户端 APP 远程控制。
4.外置 LED在完成板载 LED 蓝牙控制测试的基础上,这里介绍了外置 LED 的控制电路。
原理根据用户手册或原理图可知,蓝色 LED 对应引脚号为 PB4/GPIO30
若要实现蓝牙远程控制外置 LED,则仅需控制对应 GPIO 引脚的输出电平即可,具体接线方式如下
1.使用 ST BLE Sensor 应用客户端控制 GPIO 输出高低电平,实现外置 LED 的点亮和熄灭。
2.使用 ST BLE Toolbox 应用客户端控制 GPIO 输出高低电平,实现外置 LED 的点亮和熄灭。
3.使用 ST BLE Sensor 应用客户端控制 GPIO 输出高低电平,实现外置 LED 的点亮和熄灭,仅依靠电池供电。
5.连接 MQTT需要注意的是,当充电模块连接数据线时,控制 MOS 开关仅需要输入GPIO 信号即可;当仅使用电池时,即 TP4056 模块未连接数据线,此时需要连接 VDD 和 PB4 两个引脚来实现 MOS 开关触发。
这里使用 ST BLE Sensor 应用的 Cloud MQTT 功能
连接开发板,进入 Cloud MQTT 配置,输入电脑 IP 地址,端口号,EMQX 平台建立的客户端名称和密码,设备 ID 号等信息。
测试使用 MQTTX 软件进行连接和控制测试,配置相应的参数,注意订阅主题以及发送信息的 topic 要与 APP 参数一致。
发送 JSON 消息,即可控制 GPIO 电平以及 LED 。
6.连接 Home Assistant打开 HA 主界面,进入 MQTT 通信测试页面
可配置主题并发送 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 控制
项目成果
NUCLEO-WBA55CG 开发板连接 Home Assistant 控制 LED
Home Assistant 平台联网及控制
总结
本文介绍了 NUCLEO-WBA55CG 开发板蓝牙控制 LED 或开关的项目设计,工程烧录并通过 ST BLE Sensor 或 ST BLE Toolbox 安卓客户端控制板载 LED 和控制外置 LED 或开关模块;通过 MQTT 协议向开发板发送消息,依托 EMQX 和 Home Assistant 智能家居平台,实现 LED 或开关的联网远程控制。