基于STM32的APP遥控视频水泵小车设计
1 系统功能介绍
本设计为 基于STM32的APP遥控视频水泵小车,通过嵌入式控制与移动端应用的结合,实现了远程操控、实时监控和多功能扩展。与传统的小车设计不同,该系统不仅实现了基本的移动控制,还集成了 视频实时传输 与 水泵、LED 控制,进一步增强了系统的实用性和交互性。
主要功能如下:
- 遥控小车移动:通过手机 APP 发送指令控制小车前进、后退、左转、右转、停止等动作。
- 实时视频查看:在手机 APP 上实时查看安装在小车上的摄像头视频,方便用户监控前方环境。
- 水泵与LED控制:通过 APP 发送指令,控制小车上的水泵与 LED 的打开和关闭,实现远程操作。
- 无线通信交互:采用 WiFi 或蓝牙模块与手机 APP 建立通信,实现数据与指令的双向传输。
- 多模块协同:系统基于 STM32 单片机协调各功能模块,包括电机驱动、电源管理、视频传输模块、水泵驱动与 LED 控制。
综上所述,该小车不仅是一个实验性的平台,同时具备一定的实际应用场景,例如远程监控、家庭安防、环境模拟实验等。
2 系统电路设计
2.1 STM32 最小系统电路
-
核心芯片:STM32F103C8T6
-
作用:作为主控核心,负责接收 APP 指令,控制小车运行,驱动视频模块、水泵和 LED,同时实现与外部模块的数据交互。
-
主要电路组成:
- 时钟电路:外接 8MHz 晶振与内部 PLL 倍频,保证系统时序准确;
- 复位电路:电源上电自动复位,同时支持按键复位;
- 电源电路:保证稳定的 3.3V 电压供电。
2.2 电机驱动电路
- 驱动芯片:L298N 或 L293D
- 功能:驱动直流电机实现小车的前进、后退、转向。
- 控制方式:PWM 信号控制速度,逻辑电平控制转向。
2.3 视频采集与传输电路
- 模块选择:ESP32-CAM 或 WiFi 视频模块。
- 功能:采集小车前方的视频信息,并通过 WiFi 传输到手机 APP。
- 接口方式:与 STM32 或独立通过 WiFi 与手机连接。
2.4 水泵控制电路
- 核心器件:小型直流水泵 + MOSFET 驱动电路。
- 功能:通过单片机 IO 口输出高低电平控制 MOSFET,进而实现水泵启停。
- 电源:独立 DC 电源或共享小车电池。
2.5 LED 控制电路
- 核心器件:高亮 LED + 限流电阻。
- 控制方式:STM32 IO 控制 MOSFET 或三极管,实现开关控制。
- 功能:提供照明功能,也可作为状态指示。
2.6 通信电路
-
模块选择:
- 若采用 WiFi:ESP8266/ESP32 模块与 APP 通信;
- 若采用 蓝牙:HC-05 模块与 APP 通信。
-
功能:实现手机与小车的数据交互,包括移动控制、视频查看、水泵与 LED 控制。
2.7 电源管理电路
-
电池:7.4V 锂电池组。
-
电源转换:
- 5V 电源供给电机驱动与水泵;
- 3.3V 稳压电源供给 STM32、通信模块与视频模块。
3 程序设计
3.1 小车运动控制程序
void Motor_Forward(void)
{HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);
}void Motor_Backward(void)
{HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);
}void Motor_Left(void)
{HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);
}void Motor_Right(void)
{HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);
}void Motor_Stop(void)
{HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);
}
该程序用于控制小车的移动方向,包括前进、后退、左转、右转与停止。
3.2 水泵与 LED 控制程序
void Pump_On(void)
{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
}void Pump_Off(void)
{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);
}void LED_On(void)
{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
}void LED_Off(void)
{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);
}
通过设置 IO 口电平即可实现水泵和 LED 的开关控制。
3.3 通信解析程序
char rxBuffer[50];void Bluetooth_Receive(void)
{HAL_UART_Receive(&huart1, (uint8_t*)rxBuffer, 50, 1000);if(strstr(rxBuffer,"forward")) Motor_Forward();if(strstr(rxBuffer,"backward")) Motor_Backward();if(strstr(rxBuffer,"left")) Motor_Left();if(strstr(rxBuffer,"right")) Motor_Right();if(strstr(rxBuffer,"stop")) Motor_Stop();if(strstr(rxBuffer,"pump on")) Pump_On();if(strstr(rxBuffer,"pump off")) Pump_Off();if(strstr(rxBuffer,"led on")) LED_On();if(strstr(rxBuffer,"led off")) LED_Off();
}
该程序解析来自 APP 的指令,并调用相应的功能函数完成操作。
3.4 视频传输程序说明
视频模块(如 ESP32-CAM)自带独立固件,可直接通过 WiFi 连接手机 APP 实现视频传输。STM32 主要负责电机与外设控制,不直接处理视频流。APP 可以通过 WiFi 同时接收视频流和控制指令,保证小车的远程监控与操作功能。
3.5 主程序
int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();while(1){Bluetooth_Receive();HAL_Delay(50);}
}
主循环中不断接收并解析 APP 指令,实时控制小车、电机、水泵和 LED。视频功能由独立模块完成。
4 总结
本文介绍了一种 基于STM32的APP遥控视频水泵小车设计,该系统融合了小车运动控制、视频实时传输、水泵与 LED 控制等功能,具体特点如下:
- 功能多样化:实现了运动控制、视频监控和多外设操作,增强了应用的扩展性。
- 远程实时交互:通过 APP 实现远程操作与视频查看,提升了人机交互体验。
- 模块化设计:各功能模块相对独立,利于后期维护和功能扩展。
- 应用前景广阔:可应用于安防监控、远程控制实验、环境模拟等场景。
该小车不仅是嵌入式系统学习与实践的良好平台,同时也为物联网应用提供了可行的硬件和软件方案。