硬件开发_基于STM32单片机的智能投送小车
一.系统概述
智能投送小车的系统功能如下:
1.模式切换:通过按键可实现小车工作模式切换,支持循迹模式与避障模式两种选择;
2.循迹功能:借助红外对管识别黑色路线,确保小车能沿设定路线稳定行驶;
3.避障功能:融合舵机与超声波测距模块实现避障 —— 舵机负责调节超声波模块的探测角度,扩大监测范围,超声波测距模块实时检测前方障碍物距离,保障小车避开障碍;
4.驱动与显示:采用电机驱动模块为小车提供动力支持,同时将检测到的障碍物距离数据在显示屏上实时呈现,方便操作者掌握周围环境情况。
二.电路设计
电路图采用Altium Designer进行设计:
1.以 STM32F103C8T6 单片机作为系统主控,其最小系统电路是整个电路的核心;
2.通过 DHT11 传感器进行温湿度检测,经 one-wire 总线与单片机的 GPIO 脚连接;
3.采用 L298N 直流电机驱动模块实现电机驱动,模块的 IN1、IN2、IN3、IN4 及 ENA、ENB 引脚接单片机 GPIO 口,OUT 脚连接电机两极;
4.使用 HC-SR04 超声波测距模块检测前后障碍物,通过 Echo(超声波接收脚)和 Trig(超声波发射脚)与单片机的 GPIO 脚相连;
5.借助舵机转动超声波测距模块,舵机的控制线与单片机 GPIO 口连接;
6.0.96 寸 OLED12864 用于数据显示,采用 IIC 总线与单片机进行通信;
7.独立按键用于模式切换,按键一端接地,另一端接单片机的 GPIO 口。
三.程序设计
#include “stm32f10x.h”
#include “Delay.h”
#include “OLED.h”
#include “Timer.h”
#include “Car.h”
#include “Key.h”
#include “Tracking.h”
#include “Obstacle.h”
#include “SteeringEngine.h”
#include “NRF24L01.h”
int main(void)
{
unsigned char KeyNum,KeyFlag;
float Num = 90;
/模块初始化/
Timer_Init(); //定时中断初始化
Tracking_Init(); //循迹初始化
Car_Motor_Init(); //小车启动初始化
Servo_Init(); //舵机初始化
HS_SR04_Init(); //超声波初始化
Servo_SetAngle(90);
Delay_ms(1000);
Key_Init();
OLED_Init();
OLED_Clear();
while (1)
{
KeyNum = Key_GetNum();if(KeyNum == 1) //循迹模式{KeyFlag++; if(KeyFlag > 3)KeyFlag = 0;}if(KeyFlag == 0 || KeyFlag == 2) //循迹模式{Car_Motor_SetSpeed(0);OLED_ShowString(1,1,"MODE0");}if(KeyFlag == 1) //循迹模式{Tracking_Control(29); //小车循迹速度调节 OLED_ShowString(1,1,"MODE1");}if(KeyFlag == 3) //避障模式{Num = Ultrasonic_Ranging(Num,40); //小车超声波避障Delay_ms(100);OLED_ShowString(1,1,"MODE2"); }}
}
四.资料内容
24-32-42