一、作品简介
1. 作品功能介绍
本项目设计一款小型自主智能巡逻车,整体系统以NuCLEO,STM32F303RE单片机为核心控制单元,采用7.5V 18650锂电
池组作为整机唯一供电电源。车辆行走运动由L298N直流电机驱动板实现,完成前进、转向、调速等巡逻移动功能;设备搭载监控摄像头与辅助照明LED灯,通过步进电机搭配MPS6540步进驱动板组成云台机构,实现摄像头拍摄角度、LED照明角度的电动可调,满足全天候、多角度环境巡检需求。
整套系统架构分为供电模块、主控模块、行走驱动模块、云台执行模块、感知照明模块,硬件搭配成熟稳定、逻辑分层清晰,可实现自主巡航、环境可视化采集、夜间补光扫描等核心巡逻功能,适用于室内巡检、小型场地自动巡逻等场景。
2. 物料清单及简介
表 2 智能巡逻车管家物料清单
| 第 1 列 | 第 2 列 | 第 3 列 | 第 4 列 | E |
|---|---|---|---|---|
| 编号 | 名称/零件编号 | 制造商 | 描述 | 数量 |
| 1 | 驱动板MP6540 | 自制 | 电机驱动板 | 1 |
| 2 | Motor Drive Board L298 | 成品 | 电机驱动板 | 1 |
| 3 | Nucleo stm32f472 | 成品 | 控制板 | 1 |
| 4 | 电池 | 3.7V | 2 | |
| 5 | 直流电机 | 普通直流电机 | 4 | |
| 6 | 步进电机 | 普通步进电机 | 1 | |
| 7 | 轮胎 | 4 | ||
| 8 | 连接线 | 若干 |
二、系统框图
图 1 系统硬件连接框图
1. 主控单元:NECLEO STM32F303
本系统采用STM32F303RE作为主控芯片方案,该芯片为主流高性能工业级单片机,主频最高72MHz,资源充足、运算速度快、抗干扰能力强,完美适配小车多外设协同控制场景。
核心适配优势:内置多路高级定时器可输出高精度PWM信号,满足MPS6540无级调速需求;通用GPIO口资源丰富,可同时兼容步进驱动信号、LED开关控制;芯片外设稳定性高,可满足移动设备长期连续巡逻工作,调试便捷、通用性极强。
2. 供电单元:7.5V 18650锂电池组
整机采用7.5V 18650可充电锂电池统一供电,为L298N驱动板、MPS6540驱动板、步进电机、摄像头、LED灯提供工作电压。同时板载稳压电路,将7.5V电压稳压至3.3V,为STM32F303RE主控供电,保障主控稳定运行。
L298N驱动板工作电压覆盖6~12V,7.5V供电处于其最优工作区间,可保证直流行走电机稳定启停、调速、正反转;
MPS6540步进驱动板、步进电机、摄像头及LED灯均支持宽压低压输入,7.5V供电可满足其正常工作需求;
为保障系统稳定,电源回路预留防反接、过流、过压保护,避免电机启停瞬间电压波动损坏主控及精密外设。
3. 行走驱动模块:L298N电机驱动板
巡逻车的移动行走功能由L298N双H桥直流电机驱动板实现,负责驱动车身左右行走直流电机。STM32F303RE通过GPIO输出方向控制信号,通过定时器PWM端口输出调速信号,传输至L298N驱动板。
L298N对主控微弱控制信号进行功率放大,驱动电机实现正转、反转、启停、无级调速,进而完成小车前进、后退、左右差速转向、定点停止等所有巡逻行走动作。该驱动方案成熟稳定、带载能力强,可有效抵御电机启停电压波动,保障小车匀速稳定巡逻。
4. 云台执行单元:MPS6540驱动板+步进电机
巡逻车摄像头取景角度、LED灯照明角度的动态调节,由步进电机搭配MPS6540步进驱动板组成云台执行机构实现,区别于固定视角设备,可实现多角度精准巡检。
工作原理:STM32L472主控输出步进脉冲信号(CLK)和方向信号(DIR)至MPS6540驱动板,MPS6540对弱控制信号进行功率放大,精准驱动步进电机按设定步数、设定角度转动。步进电机可实现360°小角度精准定位、启停无抖动,能够带动搭载的摄像头与LED灯同步俯仰、旋转调节,实现无死角环境采集与补光。
MPS6540驱动板体积小巧、接线简单、细分精度高,可有效提升云台调节的平稳性,避免画面抖动、灯光偏移,保障巡逻采集画面质量。
5. 感知与照明单元:摄像头+LED补光灯
摄像头为巡逻车核心感知设备,负责采集巡逻路径环境视频画面,实现现场可视化监测、异常情况记录;LED灯为辅助照明设备,用于夜间、昏暗环境补光,保障低光场景下摄像头正常成像。
二者统一固定在步进电机云台结构上,与步进电机联动工作,跟随云台角度调整同步改变拍摄视角和照明范围,实现“拍到哪里、照亮哪里”的协同工作效果,大幅提升全天候巡逻能力。设备供电由7.5V锂电池统一供给,主控可单独控制LED灯的开关、亮度,适配不同环境光线需求。
三、各部分功能说明
系统采用单主控集中控制、模块化独立执行的分层架构,各模块分工明确、互不干扰,整体稳定性强:
供电层:7.5V 18650锂电池为所有驱动模块、执行设备供电,经稳压模块输出3.3V为STM32F303RE主控供电,实现整机统一供电;
控制层:STM32F303RE单片机为核心,统一下发行走控制、云台转动、灯光开关等所有指令,统筹整机工作逻辑;
执行层:L298N驱动模块执行小车巡逻行走动作,MPS6540步进模块执行云台角度调节动作;
感知层:摄像头实时采集环境画面,配合LED补光完成全天候巡检感知。
1. 运动控制
Motor Drive Board电机驱动板为HW-095,主控芯片为ST,L298N,用于H桥双路驱动。
由于L298N逻辑控制最高电压为7V,因此板载一个稳压器,型号为78M05。
控制引脚
IN1 & IN2 电机驱动器A的输入引脚,控制电机A转动及旋转角度
IN1输入高电平HIGH,IN2输入低电平LOW,对应电机A正转
IN1输入低电平LOW,IN2输入高电平HIGH,对应电机A反转
IN1、IN2同时输入高电平HIGH或低电平LOW,对应电机A停止转动
调速就是改变IN1、IN2高电平的占空比(需拔掉ENA处跳帽)
IN3 & IN4 电机驱动器B的输入引脚,控制电机B转动及旋转角度
IN3输入高电平HIGH,IN4输入低电平LOW,对应电机B正转
IN3输入低电平LOW,IN4输入高电平HIGH,对应电机B反转
IN3、IN4同时输入高电平HIGH或低电平LOW,对应电机B停止转动
调速就是改变IN3、IN4高电平的占空比(需拔掉ENB处跳帽)
输出引脚
OUT1 & OUT2 电机驱动器A的输出引脚,接直流电机A或步进电机的A+和A-
OUT3 & OUT3 电机驱动器B的输出引脚,接直流电机B或步进电机的B+和B-
| 第 1 列 | 第 2 列 | 第 3 列 | 第 4 列 | E | F | G | H | I | J |
|---|---|---|---|---|---|---|---|---|---|
| 编号 | 方向 | IN1 | IN2 | OUT1 | |||||
| OUT2 | IN3 | IN4 | OUT3 | ||||||
| OUT4 | ENA | ENB | |||||||
| 1 | 前进 | H | L | 正转 | H | L | 正转 | H | H |
| 2 | 后退 | L | H | 反转 | L | H | 反转 | H | H |
| 3 | 左转 | H | L | 正转 | L | H | 反转 | H | H |
| 4 | 右转 | L | H | 反转 | H | L | 正转 | H | H |
| 5 | 停止 | L | L | 停机 | L | L | 停机 | H | H |
| 6 | 停止 | H | H | 停机 | H | H | 停机 | H | H |
PWM 调速,电压或电流是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。
整机电池为7.5V 18650锂电池,与单相5V电机额定电压不匹配,采用L278 驱动板DC-DC降压稳压方案,为云台系统独立供电:
-
7.5V锂电池总电源 → DC-DC降压模块输入端;
-
降压模块稳定输出5V/1A → 接入MPS6540功率供电端(VM);
-
MPS6540逻辑供电端(VCC-LOGIC)接STM32 3.3V,保证控制信号稳定;
-
全系统共地:锂电池GND、降压模块GND、MPS6540 GND、STM32 GND必须连通,杜绝脉冲错乱、电机抖动。
PSM:驱动板逻辑电源 3.3V 5V(接 STM32 侧)
VIN:电机功率电源,给步进电机绕组供电
SA,SB:接单相 5V 步进电机线圈
CubeMX基础配置
-
系统时钟:72MHz;
-
PA5、PA6、PA7配置为推挽输出、低速模式;
-
开启GPIO外设时钟,默认输出低电平;
-
无需定时器中断,采用精准延时脉冲输出,适配单相电机低速平稳特性。
核心宏定义(main.h)
#ifndef __MAIN_H
#define __MAIN_H
#include "stm32f3xx_hal.h"
// MPS6540单相步进电机控制引脚
#define MPS_PUL_Pin GPIO_PIN_5
#define MPS_PUL_GPIO_Port GPIOA
#define MPS_DIR_Pin GPIO_PIN_6
#define MPS_DIR_GPIO_Port GPIOA
// 云台LED补光灯引脚
#define YUNTAI_LED_Pin GPIO_PIN_7
#define YUNTAI_LED_GPIO_Port GPIOA
#endif
驱动函数(main.c)
/* USER CODE BEGIN PV */
#define STEP_DELAY_TIME 6 // 单相5V电机专用延时,平稳无抖动
/* USER CODE END PV */
/**
* @brief MPS6540驱动单相5V步进电机转动
* @param steps: 脉冲数(正=正转,负=反转)
* @retval 无
*/
void SingleStep_Rotate(int16_t steps)
{
int16_t i;
// 设置转动方向
if(steps > 0)
{
HAL_GPIO_WritePin(MPS_DIR_GPIO_Port, MPS_DIR_Pin, GPIO_PIN_SET);
}
else
{
HAL_GPIO_WritePin(MPS_DIR_GPIO_Port, MPS_DIR_Pin, GPIO_PIN_RESET);
steps = -steps;
}
// 输出脉冲驱动电机转动
for(i = 0; i < steps; i++)
{
HAL_GPIO_WritePin(MPS_PUL_GPIO_Port, MPS_PUL_Pin, GPIO_PIN_SET);
HAL_Delay(STEP_DELAY_TIME);
HAL_GPIO_WritePin(MPS_PUL_GPIO_Port, MPS_PUL_Pin, GPIO_PIN_RESET);
HAL_Delay(STEP_DELAY_TIME);
}
}
/**
* @brief 云台LED补光控制
*/
void YunTai_LED_On(void)
{
HAL_GPIO_WritePin(YUNTAI_LED_GPIO_Port, YUNTAI_LED_Pin, GPIO_PIN_SET);
}
void YunTai_LED_Off(void)
{
HAL_GPIO_WritePin(YUNTAI_LED_GPIO_Port, YUNTAI_LED_Pin, GPIO_PIN_RESET);
}


