赞
踩
项目名:汽车驾驶
项目编号:mcuclub-cl-006
单片机类型:STC89C52、STM32F103C8T6
具体功能:
1、通超声波检测前方障碍物,当检测到障碍物距离小于100cm大于50cm,语音提醒(请注意,前方有障碍物),当检测到障碍物距离小于等于50cm时自动停车(继电器控制车轮停止)
2、通过MQ-3检测酒精浓度,当酒精浓度大于设置最大值,语音提醒(请注意,酒精浓度超标),无法启动汽车
3、通过MQ-7检测CO浓度,当CO浓度大于设置最大值,语音提醒(请注意,CO浓度超标)并通过继电器控制风扇通风
4、设定驾车时长,当超时时,语音提醒(请注意,已疲劳驾驶)
5、通过按键设置各阈值、启动汽车
6、通过显示屏显示数据
扩展功能:通过蓝牙将测量数据发送到手机端
单片机型号:STC89C52
板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。
供电接口:TYPE-C
仿真软件版本:proteus8.9
电路连线方式:网络标号连线方式
注意:部分实物元器件仿真中没有,仿真中会用其他工作原理相似的元件代替,这样可能导致实物程序和仿真程序不一样
单片机型号:STM32F103C8T6
板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。
供电接口:TYPE-C
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图
由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。
该技术基于STC89C52智能汽车驾驶以STC89C52单片机为核心控制器,加上其他的模块一起组成该控制系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STC89C52单片机,其主要作用是获取输入部分数据,经过内部处理,控制输出部分。输入由六部分组成,第一部分是超声波测距模块,通过该模块对汽车前方的障碍物进行检测;第二部分是CO浓度检测模块,通过该模块对汽车内的CO浓度进行检测;第三部分是酒驾检测模块,通过该模块对汽车内的酒精进行检测:第四部分时独立按键模块,通过该模块乘客可以对当车内环境威胁本身时进行报警,更好的进行人机交换:第五部分是供电模块,通过该模块,给整个系统进行供电;输出由五部分组成,第一部分是显示模块, 通过该模块可以显示当前时间、距离、CO浓度,酒精浓度;第二部分是报警模块,通过该模块顾客可以通过按键对所处环境的危险程度进行报警;第三部分为继电器控制通风系统,当检测到汽车内的CO浓度超过安全值进行通风吹里:第四部分为继电器控制引擎系统,当汽车检测到车前有障碍物超过安全值是致使汽车停止运行,第五部分是语音播报,通过该模块可对驾驶员长时间驾驶进行语音提醒;除此之外还有蓝牙模块,可以将监测的数据发送到用户的手机上,系统框图如图所示。
系统的主流程图如图所示;在主程序中:首先对各个模块进行初始化,随后进入while主循环,在主循环中,首先进入第一个函数按键函数,该函数主要分为两部分,第一部分为调用按键扫描函数获取按键键值,第二部分通过键值进行相应的处理操作,比如切换界面、距离、CO、驾车时间、车辆状态、按键标志位等;紧接着进入第二个函数监测函数,每隔100ms检测一次,该函数主要获取距离值、酒精浓度值、CO浓度值,并通过蓝牙发送到用户的手机上;紧接着进入第三个函数显示函数,该函数通过不同的界面标志位显示不同的界面;紧接着进入第四个函数处理函数,倒计时结束,语音提醒,一氧化碳超标,通风、语音提醒,酒精超标,语音提醒、汽车无法通过按键启动,距离小于100,语音提醒;小于五十,停车。
软件版本:keil5
逻辑程序和驱动程序分开,分布于main.c和其他.c文件
- void Manage_function(void)
- {
- if(flag_display == 0) //测量界面
- {
- if(countdown_hour != 0 || countdown_minute != 0 || countdown_second != 0) //通风倒计时不为0
- flag_countdown_begin = 1;
- if(flag_1s == 1) //1s到达
- {
- flag_1s = 0;
- if(countdown_second > 0) //倒计时秒>0
- countdown_second--; //倒计时秒-1
- else //倒计时秒=0
- {
- if(countdown_minute > 0) //如果倒计时分>0
- {
- countdown_minute--; //倒计时分-1
- countdown_second = 59; //倒计时秒=59
- }
- else //如果倒计时分=0
- {
- if(countdown_hour > 0) //如果倒计时时>0
- {
- countdown_hour--; //倒计时时-1
- countdown_minute = 59; //倒计时分=59
- countdown_second = 59; //倒计时秒=59
- }
- else //如果倒计时时=0,倒计时结束
- {
- flag_countdown_begin = 0;
- flag_countdown_end = 1;
- }
- }
- }
- }
- if(flag_countdown_end == 1) //倒计时结束,语音提醒
- {
- flag_countdown_end = 0;
- printf("请注意,已疲劳驾驶");
- }
-
- if(co_value > co_max) //一氧化碳超标,通风、语音提醒
- {
- RELAY_TF = 0;
- if(co_remind == 0)
- {
- printf("请注意,一氧化碳浓度超标");
- co_remind = 1;
- }
- }
- else
- {
- RELAY_TF = 1;
- co_remind = 0;
- }
- if(alcohol_value > alcohol_max) //酒精超标,语音提醒、汽车无法通过按键启动
- {
- if(alcohol_remind == 0)
- {
- printf("请注意,酒精浓度超标");
- alcohol_remind = 1;
- sprintf(display_buf,"\r\nA:%dppm",alcohol_value);
- Uart1_Sent_Str(display_buf);
- }
- }
- else
- {
- alcohol_remind = 0;
- }
- if(distance_value < 100 && RELAY_CL == 0) //距离小于100,语音提醒;小于五十,停车
- {
- if(distance_remind == 0)
- {
- printf("请注意,前方有障碍物");
- distance_remind = 1;
- }
- if(distance_value <= 50)
- {
- RELAY_CL = 1;
- }
- }
- else
- {
- distance_remind = 0;
- }
- }
- else //设置界面
- {
- RELAY_CL = 1;
- RELAY_TF = 1;
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。