这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【NUCLEO-WBA55CG】蓝牙控制LED

共2条 1/1 1 跳转至

【NUCLEO-WBA55CG】蓝牙控制LED

菜鸟
2025-01-12 15:40:28     打赏
【NUCLEO-WBA55CG】蓝牙控制 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 灯珠 x1

  • MOS开关驱动模块 x1

  • TP4056 电池充电模块 x1

  • 18650 电池 x1

  • 杜邦线若干

2.工程编译和上传

下载 示例工程压缩包,打开目标示例工程 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,极有可能是主控进入低功耗模式导致,

No_target_connected.jpg

可手动将 BOOT0 引脚拉高,根据引脚原理图可知,

GPIO_Pins.jpg

BOOT0 引脚对应编号为 7,因此将 5 和 7 号引脚用杜邦线或跳帽连接,即可成功识别芯片。

Target_connected.jpg

参考:um3301-stm32wba-board, Keil forumSTMicroelectronics Community .

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

LEDs_GPIO.jpg

若要实现蓝牙远程控制外置 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 参数一致。

MQTTX_LED_control.jpg

发送 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 系列开发板的应用拓宽了道路,并为相关产品的云端部署及智能化提供了参考。






关键词: NUCLEO-WBA52CG     蓝牙     Home As    

院士
2025-01-12 18:26:52     打赏
2楼

NUCLEO-WBA55CG 开发板蓝牙控制 LED 开关。

学习了,谢谢分享。


共2条 1/1 1 跳转至

回复

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