这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【MolunSmartHome】DIY蓝牙遥控灯带-小白入门版

共4条 1/1 1 跳转至

【MolunSmartHome】DIY蓝牙遥控灯带-小白入门版

菜鸟
2025-01-11 21:26:51     打赏

Let's Do!ST NUCLEO-WBA55CG无线MCU开发大作战。

开发板开箱

image.png

image.png

image.png

image.pngimage.png

image.png

image.png

image.png

image.png

开发板介绍

NUCLEO-WBA52CG是一款支持Bluetooth®低功耗的无线超低功耗开发板,内嵌有符合Bluetooth®低功耗SIG 5.3规范且功能强大的超低功耗无线电模块。

ARDUINO® Uno V3连接支架和ST morpho接头利用多种专用屏蔽提供了一种扩展STM32 Nucleo开放式开发平台功能的简单方法。

开发板功能介绍

  • 基于Arm® Cortex®‑M33内核的超低功耗无线STM32WBA52CG微控制器,具有1 MB的Flash存储器和128 KB的SRAM,采用UFQFPN48封装

  • MCU射频开发板 (MB1863):

    • 支持Bluetooth® 5.3规范的2.4 GHz射频收发器

    • 带TrustZone®、MPU、DSP和FPU的Arm® Cortex® M33 CPU

    • 集成式PCB天线

  • 三个用户LED

  • 三个用户和一个复位按钮

  • 板连接器:

    • USB Micro-B

    • ARDUINO® Uno V3扩展连接器

    • ST morpho接头,用于所有STM32 I/O的完全访问

  • 灵活的供电选项:ST-LINK、USB VBUS或外部电源

  • 具有USB重新枚举功能的板上STLINK-V3MODS调试器/编程器:大容量存储器、虚拟COM端口和调试端口

  • STM32CubeWB MCU软件包提供全面的免费软件库和示例

  • 支持多种集成开发环境 (IDE),包括IAR Embedded Workbench®、MDK-ARM,以及STM32CubeIDE

官方数据手册:

https://www.st.com.cn/resource/en/data_brief/nucleo-wba55cg.pdf

板载资源介绍

image.png

image.png

image.png

image.png

image.png

image.png



image.png



image.png

image.png

image.png

image.png


项目介绍

使用NUCLEO-WBA55CG开发板+20A MOS驱动板+TP4056充电板+锂电池+灯管/灯带,制作一个可以调节亮度的灯!

材料展示

image.pngimage.pngimage.png


image.pngimage.pngimage.png

image.png

AC 220V转DC 5V 3A电源模块,接长一些的灯带也能保证电流供应!


材料连接

锂电池的正负极分别连接至TP4056充放电小板的B+和B-端口,以确保能量的稳定传输;

充放电小板的OUT+和OUT-端口依次与MOS驱动板的+V输入端和-V输入端相连,形成电源的输入通道;

MOS驱动板的+V输出端和-V输出端分别与灯带的正负极相接,从而驱动灯带的发光;

NUCLEO-WBA55CG开发板支持USB供电,亦可通过充放电小板的OUT+端接+5V,OUT-端接GND进行供电,提供灵活的电源选择;

NUCLEO-WBA55CG开发板的A1和VCC端口连接至MOS驱动板的控制引脚,以实现精确的信号控制。

该系统的工作原理是通过NUCLEO-WBA55CG开发板的PA6(A1)端口输出PWM信号,通过微信小程序蓝牙连接开发板,调节小程序上的滑块改变PWM占空比,进而调节MOS驱动板的输出电流,实现对灯带亮度的精确控制,从而达到用户期望的照明效果。

image.png

依据数据手册所载信息(参见上图),PA6与CN3的第30脚实现连接,第16脚提供3V3电压,上述两脚均与MOS驱动板的控制引脚相连。

image.png

开发环境搭建

STM32CubeMX

我们需要使用STM32CubeMX进行开发板的相关功能配置,下载地址:https://www.st.com.cn/zh/development-tools/stm32cubemx.html

image.png

image.png

STM32CubeWBA

官方示例代码,下载地址:https://www.st.com.cn/zh/embedded-software/stm32cubewba.html

https://www.st.com.cn/content/ccc/resource/technical/software/firmware/group2/41/ec/7d/37/46/36/4c/b2/stm32cubewba-v1-5-0/files/stm32cubewba-v1-5-0.zip/jcr:content/translations/en.stm32cubewba-v1-5-0.zip

或者在git客户端或者Powershell中使用以下命令拉取

gh repo clone STMicroelectronics/STM32CubeWBA

image.png

image.png

好吧,不单独下载也可以通过STM32CubeMX中进行下载!

image.png

我们需要用到的例程:STM32Cube_FW_WBA_V1.4.0\Projects\NUCLEO-WBA55CG\Applications\BLE下的BLE_p2pServer

image.png

image.png

使用STM32CubeMX打开工程

image.png

接下来就可以使用STM32CubeMX的图形化界面进行端口配置。

image.png

image.png

STM32CubeIDE

image.png

https://www.st.com.cn/zh/development-tools/stm32-ides.html

官网下载软件,着实有点费劲!

image.png

image.png

image.png

image.png

image.png

image.png

image.png

记得哈,安装包得放在没有中文的路径里,不然安装可能会出问题。安装时如果弹出错误提示,就把安装包挪到一个不含中文的路径,这样安装就能顺利进行了。

image.png


image.png

等了好久,STM32CubeIDE总算装好了。

image.png

image.png

第一次用的时候得选一个地方来保存工作文件,你可以改位置或者就用默认的。

image.png

庐山真面目。

image.png

英文看着不带劲,来跟着汉化一下吧。

image.png

https://download.eclipse.org/technology/babel/update-site/R0.17.1/2019-12/

image.png

经过漫长的等待,终于可以选取简体中文了!

image.png

一路Next

image.png

必须同意,否则你懂的!

image.png

image.png

速度快不快,得看网络状况。

如果网速真的很差劲,那就直接下载安装包,然后尝试在本地安装吧。

image.png

选取从https://download.eclipse.org/technology/babel/update-site/R0.17.1/2019-12/下载的压缩包。

image.png

安装完成后重启即可看到汉化界面,不过只是部分汉化,凑合着看吧。


Keil uVision5

Keil是一款常用的MCU开发IDE工具,相比大家应该都安装了吧,再次就不在赘述。与STM32CubeIDE二选一安装即可!

image.png


项目生成

存在诸多问题,索性从头开始!

image.png

Example Selector 中搜索 BLE_p2pServer

image.png

image.png

image.png

image.png

示例项目创建完毕会自动打开

image.png

image.png

时钟频率默认为16MHz,最高可以设置为100MHz,我们保持默认即可。

image.png

image.png

PWM配置,选择TIM2, Channel4通道选择PWM Generation CH4,对应端口为PA6

image.png

image.png

根据默认的时钟频率16MHz,进行如上配置

image.png

配置完毕之后即可进行代码生成,根据自己的喜好二选一即可。

在Project Manager中进行Toolchain/IDE的选择,具体而言,若选择MDK-ARM,则将生成相应的Keil工程;若选择STM32CubeIDE,则将生成对应的STM32CubeIDE工程;对于其他选项,操作原理相同。

选择完毕点击GENERATE CODE开始生成对应的工程文件。

image.png

image.png

生成完毕,点击Open Project则会调用对应的IDE打开项目。

STM32CubeIDE项目

image.png

如果你之前没下载过STM32CubeWBA,在你生成代码的时候,系统会提醒你下载。记得确保你的网络能正常访问GitHub哦。

image.png

image.png

image.png

点击Open Project 就会调用STM32CubeIDE打开项目文件。

image.png

Keil uVision5项目

image.png

image.png

切换到MDK-ARM后重新生成代码。

image.png

同样点击Open Project 会自动调用Keil打开项目。

image.png

image.png

项目编译STM32CubeIDE编译代码

image.png

image.png

image.png

image.png

image.png


17:17:51 Build Finished. 0 errors, 0 warnings. (took 25s.27ms)

STM32CubeIDE代码编译通过!


Keil uVision5编译代码

image.png

image.png

image.png

image.png

image.png


image.png

哎呀,又出问题了!

编译报错

根据项目生成步骤,重新生成文件,再次折腾!

image.png

不出意外,又报错了!

image.pngimage.png

Common各子目录下文件重复?遗失?唯独RFContrel下缺失文件

image.png

手动移除所有带有黄色感叹号的.c .s文件后,重新编译,通过日志文件可以看出编译成功了!

image.png

image.png

顺利生成.hex固件

image.png

image.png

再次尝试STM32CubeIDE编译,结果也失败了

于是......

image.png

重新生成项目后编译又成功了!

image.png

但是,Keil项目又遇到麻烦了,也许/大概/只能生成一种IDE项目!

事实告诉我们,挑一个IDE就够了,别乱搞了!


代码修改

Keil uVision5项目

mian.c 中改动地方如下:

image.png

开启PWM:


/* USER CODE BEGIN 2 */
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);
/* USER CODE END 2 */


p2p_server_app.c 中改动地方如下:

image.png


/* USER CODE BEGIN Includes */
#include "app_bsp.h"
extern TIM_HandleTypeDef htim2;
/* USER CODE END Includes */

image.png


/* USER CODE BEGIN PV */
uint16_t pwmValue;
/* USER CODE END PV */

image.png

image.png

设置占空比:


P2P_SERVER_APP_Context.LedControl.Led1 = 0x00; /* LED1 OFF */
}
if(p_Notification->DataTransfered.p_Payload[0] == 0x03)
{
pwmValue = p_Notification->DataTransfered.p_Payload[1] * 20;
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4,pwmValue);
}
/* USER CODE END Service1Char1_WRITE_NO_RESP_EVT */
break;


群友指导代码修改:

开启PWM

image.png


/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);
/* USER CODE END 2 */

设置占空比

image.png


/* USER CODE BEGIN PFP */
int dt=0;
/* USER CODE END PFP */

image.png


/* USER CODE BEGIN 3 */
    for(dt=1;dt < 499; dt++)
    {  
        __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, dt);
HAL_Delay(10);
    }  
    for(dt=499;dt > 0; dt--)
    {  
        __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, dt);
HAL_Delay(10);
    }  
}
/* USER CODE END 3 */
}


ST BLE TOOL

image.png

image.png

image.png

image.png

这个APP上的开关控制着开发板上的LED灯,可以用来打开或者关闭LED灯。这表示代码已经成功烧录,开发板工作正常。


微信小程序

小程序控制代码我们直接使用老师修改过的示例代码,或者基于微信官方模板进行修改。

image.png

小程序创建

首先安装好微信开发者工具

image.png

双击.wxss文件调用微信开发者工具打开

image.png

点击信任并运行后会自动进行编译

image.png

image.png

点击预览,会生成预览二维码,使用微信扫码即可进行体验。

当然也可以先打开微信开发者工具,导入小程序代码

image.png

权限问题

可能遇到的问题是:运行权限问题,可以点击测试号申请测试小程序

image.png

https://developers.weixin.qq.com/miniprogram/dev/devtools/sandbox.html

image.png

扫描申请即可

image.png

可以通过以上入口修改AppID

image.png

image.png

修改AppID后正式上传

image.png

好几年前搞得小程序,今天可算派上用场了!

使用演示

image.png

开关可以点亮或者熄灭开发板上的LED1,调整滑块即可调节灯带亮度,滑动至最左侧则熄灭灯带。

image.png

学习感受

跟着老师的视频一步步来设置,但到了PWM那块,视频突然跳到小程序的讲解去了。而且之前代码编译的时候就出错了,所以我直接用了官方的示例代码来创建,结果没留意到代码里改了些什么。再加上视频有点模糊,新手看起来真的挺头疼的!不过多亏了群里的朋友热心帮忙,还有老师的耐心指导,我总算把问题解决了,灯带也亮起来了!真心感谢大家!


源码附件

ble_heart.zip

BLE_p2pServer.zip






关键词: MolunSmartHome     STM32CubeI    

菜鸟
2025-01-11 23:21:38     打赏
2楼

【【EEPW开发板测评】ST NUCLEO-WBA55CG蓝牙开发板STM32CubeMX图形化BLE_p2pServer项目配置演示-小白入门系列】 https://www.bilibili.com/video/BV1YecweHEs9/?share_source=copy_web&vd_source=92e5311a7d6802b0f8947ec6908a6883


菜鸟
2025-01-11 23:22:10     打赏
3楼

【【EEPW开发板测评】ST NUCLEO-WBA55CG蓝牙开发板使用Keil uVision5修改BLE_p2pServer项目配置演示-小白入门系列】 https://www.bilibili.com/video/BV1YecweHEBK/?share_source=copy_web&vd_source=92e5311a7d6802b0f8947ec6908a6883


菜鸟
2025-01-16 17:25:54     打赏
4楼

【【EEPW开发板测评】ST NUCLEO-WBA55CG蓝牙开发板使用微信小程序通过蓝牙调节控制灯带亮灭-小白入门系列】 https://www.bilibili.com/video/BV1c8w5eqE3W/?share_source=copy_web&vd_source=92e5311a7d6802b0f8947ec6908a6883


共4条 1/1 1 跳转至

回复

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