本设计的硬件构成:
本设计由STM32单片机核心板+OLED显示屏电路+超声波测距模块+语音播报模块+红外人体感应模块+蜂鸣器电路+蓝牙模块电路+按键电路+电源电路组成。
功能介绍:
1、系统采用STM32单片机作为控制器;采用超声波模块实时检测后方障碍物的距离。采用OLED显示屏幕实时显示障碍物距离,后方是否有人,以及报警距离;
2、人体感应传感器检测后方是否有人;若有人,语音播报后方有人信息。
3、可以按键设置报警距离,当小于设置阈值时,蜂鸣器报警;按键1为设置键,按键2为加一键,按键3为减一键。
4、系统通过无线通信连接手机APP,手机APP实时显示距离信息,并且可以设置距离阈值;
5、APP可发送指令:发送“A”:获取系统状态;发送“+”或“-”:调整倒车距离报警值;
主要物料清单及型号:
显示屏:OLED-0.96寸;
单片机:STM32F103C8T6;
超声波测距模块:HC-SR04;
蜂鸣器:5V有源蜂鸣器;
人体传感器:SR602;
语音播报模块:JQ6500;
蓝牙模块:HC-05/06;
部分程序源码:
int main(void)
{
u8 key=0;
u16 datatemp[1];
BEEP_Init();
KEY_Init();
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600); //串口1初始化为115200
usart3_Init(9600); //串口3初始化为9600
LED_Init(); //LED端口初始化
UltrasonicWave_Configuration(); //初始化超声IO
TIM3_Cap_Init(1,72-1); //以1Mhz的频率计数,第一个选项,最小只能是1
TIM2_Int_Init(999,7199);//10Khz的计数频率,计数到1000为100ms
OLED_Init();
OLED_ColorTurn(0);//0正常显示,1 反色显示
OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
OLED_DisplayInit();
TL=datatemp[0];
// if(TL<5||TL>400)
// TL=50;
// ceju(); //开启超声波测距
while(1)
{
key=KEY_Scan(0); //按键扫描
KEY_Handle(key); //处理按键动作
APP_Handle(revData); //APP指令处理
revData=0;
if(HR602==1) //判断是否有人
{
LEDP=0;
LEDS=0;
people_flag=10;
}
else
{
LEDP=1;
}
if(T_100ms>=10) //1s周期处理数据
{
T_100ms=0;
if(refresh==1)
APP_refresh(); //刷新APP数据
if(S<=TL) //小于阈值,蜂鸣器开始响,对应指示灯亮,否则蜂鸣器不响
{
BEEP=~BEEP;
}
else
{
BEEP=1;
}
if(people_flag>0) //如果有人存在,开启语音播报
{
people_flag--;
V_100ms++;
if(V_100ms>=2)
{
play_voice(); //开启语音播报
V_100ms=0;
}
}
else
{
LEDS=1;
V_100ms=0;
}
}
show(); //调用显示函数
t++; //变量自加,加到5的时候,对5取余会等于0,则启动一次测距函数
if(t%5==0)
{
t=0;
ceju(); //开启超声波测距
}
}
}