这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【NUCEO-WBA55CG开发板测评】蓝牙控制灯与直流电机【成果贴】

共4条 1/1 1 跳转至

【NUCEO-WBA55CG开发板测评】蓝牙控制灯与直流电机【成果贴】

专家
2025-01-03 19:42:08     打赏

一、概况

承接上期的【NUCEO-WBA55CG开发板测评】开箱与环境搭建,创建PWM输出工程过程贴,借助STM32CubeMX工具快速构建了四路PWM输出。本次按照刘工视频讲解的内容,使用“STM32Cube_FW_WBA_V1.5.0”官方提供的“BLE_p2pServer”工程,由于官方提供的例程中已使用PA8、PB12作为虚拟串口收发接口,因此需要采用其它IO口作为PWM输出,才能实现上期过程贴功能。

本次按照《DIY蓝牙遥控小台灯课程》要求,购买了5V/4W的展台日光灯,长20cm,配套购买了MOS触发开关驱动模块,TP4056充电模块Type-C接口(带保护),还充分利用一个坏了的手持式风扇的18650电池座。另外驱动两路PWM信号输出,作为L298N模块的两路信号输入,这里不考虑两个电机的转向,因此只需要创建两路PWM信号输入,如若考虑电机换向转动,则需创建四路PWM信号输入,这里就相当于模拟吊风扇。

二、连线示意图与实物连接

连线示意图.png

硬件连接.png三、工程配置

将原“BLE_p2pServer”工程复制一份到同目录下,并重命名为“BLE_p2pServer_My”,然后使用CubeMX配置PA6、PA2、PA1三路PWM输出,初始化Pulse为0。具体的参数设置,这里就不再赘述。MCU的IO口利用如下:

IO口利用.png

TIM3配置.png

四、代码完善

使用上述STM32CubeMX导出的MDK工程,在main.c中的main函数中添加“HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);”

“HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);”“HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_2);”,然后在“p2p_server_app.c”

文件中声明htim2、htim3,以及pwmValue,motor1Duty,motor2Duty的变量,并在“P2P_SERVER_Notification”函数中添加逻辑处理代码。

void P2P_SERVER_Notification(P2P_SERVER_NotificationEvt_t *p_Notification)
{
  /* USER CODE BEGIN Service1_Notification_1 */

  /* USER CODE END Service1_Notification_1 */
  switch(p_Notification->EvtOpcode)
  {
    /* USER CODE BEGIN Service1_Notification_Service1_EvtOpcode */

    /* USER CODE END Service1_Notification_Service1_EvtOpcode */

    case P2P_SERVER_LED_C_READ_EVT:
      /* USER CODE BEGIN Service1Char1_READ_EVT */

      /* USER CODE END Service1Char1_READ_EVT */
      break;

    case P2P_SERVER_LED_C_WRITE_NO_RESP_EVT:
      /* USER CODE BEGIN Service1Char1_WRITE_NO_RESP_EVT */
      if(p_Notification->DataTransfered.p_Payload[1] == 0x01)
      {
        BSP_LED_On(LED_BLUE);
        LOG_INFO_APP("-- P2P APPLICATION SERVER : LED1 ON\n");
        P2P_SERVER_APP_Context.LedControl.Led1 = 0x01; /* LED1 ON */
      }
      if(p_Notification->DataTransfered.p_Payload[1] == 0x00)
      {
        BSP_LED_Off(LED_BLUE);
        LOG_INFO_APP("-- P2P APPLICATION SERVER : LED1 OFF\n");
        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);
	LOG_INFO_APP("-- Send pwmValue : %d\n",pwmValue);
      }
      if(p_Notification->DataTransfered.p_Payload[0] == 0x04)
      {
	motor1Duty = p_Notification->DataTransfered.p_Payload[1] * 50;
	__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1,motor1Duty);
	LOG_INFO_APP("-- Send motor1Duty : %d\n",motor1Duty);
      }
      if(p_Notification->DataTransfered.p_Payload[0] == 0x05)
      {
	motor2Duty = p_Notification->DataTransfered.p_Payload[1] * 50;
	__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2,motor2Duty);
	LOG_INFO_APP("-- Send motor2Duty : %d\n",motor2Duty);
      }
      /* USER CODE END Service1Char1_WRITE_NO_RESP_EVT */
      break;

    case P2P_SERVER_SWITCH_C_NOTIFY_ENABLED_EVT:
      /* USER CODE BEGIN Service1Char2_NOTIFY_ENABLED_EVT */
      P2P_SERVER_APP_Context.Switch_c_Notification_Status = Switch_c_NOTIFICATION_ON;
      LOG_INFO_APP("-- P2P APPLICATION SERVER : NOTIFICATION ENABLED\n");
      LOG_INFO_APP(" \n\r");
      /* USER CODE END Service1Char2_NOTIFY_ENABLED_EVT */
      break;

    case P2P_SERVER_SWITCH_C_NOTIFY_DISABLED_EVT:
      /* USER CODE BEGIN Service1Char2_NOTIFY_DISABLED_EVT */
      P2P_SERVER_APP_Context.Switch_c_Notification_Status = Switch_c_NOTIFICATION_OFF;
      LOG_INFO_APP("-- P2P APPLICATION SERVER : NOTIFICATION DISABLED\n");
      LOG_INFO_APP(" \n\r");
      /* USER CODE END Service1Char2_NOTIFY_DISABLED_EVT */
      break;

    default:
      /* USER CODE BEGIN Service1_Notification_default */

      /* USER CODE END Service1_Notification_default */
      break;
  }
  /* USER CODE BEGIN Service1_Notification_2 */

  /* USER CODE END Service1_Notification_2 */
  return;
}

另外如果需要修改广播名称,可进入“app_ble.c”文件中进行修改,笔者这里设置成“WBA55CG”名称。

五、微信小程序

也是参考刘工讲解的视频讲解,先下载安装注册好微信开发者工具,去到小程序蓝牙能力概述,免费下载“示例代码”,然后加载到微信开发者工具中,结合MDK工程中的逻辑处理,添加数据变量,开关按钮,滑块按钮等。

小程序代码.png六、小结与效果演示

正如视频所示,可通过微信小程序蓝牙远程控制板上LED1蓝色指示灯、4W展示台日光灯以及两路电机转速,基本达成预期效果。小结一下:之前没怎么接触微信小程序,也不太懂json,wxml,wxss等语法,经过此次尝试感觉受益匪浅,感谢EEPW提供的试用活动,以及刘工对活动的大力支持。

STM32WBA55小程序蓝牙控制灯与直流电机




关键词: NUCEO-WBA55CG     蓝牙     小程序     直流电机    

专家
2025-01-03 22:23:10     打赏
2楼

感谢分享


专家
2025-01-03 22:25:32     打赏
3楼

感谢分享


专家
2025-01-03 22:27:41     打赏
4楼

感谢分享


共4条 1/1 1 跳转至

回复

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