智能隧道交通安全系统监控系统Word格式文档下载.docx
《智能隧道交通安全系统监控系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《智能隧道交通安全系统监控系统Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
![智能隧道交通安全系统监控系统Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/4/4fc49c35-5416-4a23-9811-6e8a9d99ef3f/4fc49c35-5416-4a23-9811-6e8a9d99ef3f1.gif)
隧道因其具有改善路网,节约土地等优点,逐渐成为公路建设的重要组成部分。
但由于隧道具有空间狭窄、结构封闭、视线差等缺陷,一旦发生事故,救援工作复杂困难,而且容易造成严重的交通阻塞,并有可能引发火灾,从而引发灾难性的后果,因此,保证隧道行车安全至关重要。
隧道一般是连接公路、城市道路重要的节点和组成部分。
在干线公路网的建设中,它可以克服山脉地形障碍,保证最佳的道路线形,更便利行车、提高经济效益。
而传统的交通安全监控主要依赖于现场的人工巡视和远程的基于闭路电视系统即电视墙CCTV系统的人工监视。
这不仅需要大量人力,而且监控效果不能得到有效保证。
而且隧道内部的事故等监控更是无法实现,即便使用视频监控,由于其内部的光线与环境问题的干扰,使人们即便是人工监控也无法达到预期效果。
为此,我们设计出了这个智能隧道交通安全监控系统,它为提高交通效率,保障隧道交通安全,缓解交通拥挤起着巨大的作用。
2、技术路线
如图所示,在技术路线上综合集成物联网,软件工程,计算机等技术,充分利用现有资源,对隧道内部安全实现智能监控。
3、课题研究的主要内容
3.1
系统总体方案
本设计系统以STM32、89C52单片机分别控制中心控制系统和独立显示系统,其操作起来简单易懂、易修改,同时也考虑操作的简单方便性,设计出一种经济、实用且功能强大的隧道交通智能监控系统。
3.2
系统功能介绍
1.车流量检测
其主要应用光电对管实现对车辆的流动的检测,其会根据不同的距离进行不同的检测,当车辆来往时,其会返回脉冲进行,通过捕捉下降沿信号实现对车辆来往的检测,由于光电对管的局限性,其只能检测一条线上的来往,所以其摆放位置会根据车辆的车型、大小等因素进行调节,而且较为重要的一点则是两个光电对管的间隔距离问题,其间隔不能超过一个车位的距离,否则检测到的结果将会发生偏差。
2.车祸等信息检测
当车辆非正常行驶时,会发生滞留在隧道内部的情况发生,这种情况会导致隧道内部的交通瘫痪,甚至当内部空气污染过于严重时会对人的人体健康造成威胁,因此,对此的检测就显得非常重要,在车辆滞留时,光电对管会返回低电平信号,而当无车辆来往时会返回高电平信号,所以当其检测到低电平信号达到一定时间后即识别出其为车祸滞留,为隧道的正常通行带来了困扰与障碍,识别为车祸信息。
3.火宅报警
当交通事故严重时,其不免会发生火宅等状况,此时通过火焰报警器将发生警报,同时在隧道的两端阻止车辆的进入,其隧道内部打开排气风扇,将由于火宅而产生的粉尘和烟气排除,以免对人体造成伤害。
4.隧道信息显示
其系统之间采用的是无线传输,将内部的检测通过无线将信息传递到隧道两端的显示屏上,及时通知人们隧道内部的行驶状况,对其第一时间进行选择交通状况良好的道路上行驶。
其显示分为三种模式,一个为正常通行,即在车辆正常来往行驶时其会显示正常的相关信息,其二则是车祸信息,一旦隧道内部发生车祸等车辆滞留信息,其会显示出车祸,提醒车辆进行绕行,另一个便是火灾信息,隧道内部一旦发生火灾,其优先级为最高,将向隧道前与隧道后的两个控制中心发送信息紧急停止,让车辆不要进入到其中。
3.3硬件设计思路
1.电池输入电路
通过稳压电源将输入的7.2V电压降到5V后供给单片机和液晶显示屏供电。
2.控制电路
上图为单片机的控制芯片电路,L1,L2,L3,L4分别对应光电对管的4个信号线,通过光电对管采集的信息将其返回到单片机中,进行下一步处理,TX和RX为无线发送与接收部分,通过无线模块将数据发送出去与接收回来。
BEEP和MOTOR分别对应着控制蜂鸣警报和风扇,均可对其引脚直接拉到高电平即可实现对蜂鸣器和风扇的开关操作。
上图为液晶显示电路,其供电电压VCC需要5V到6V时才能保证其正常工作显示。
3.4软件系统设计
软件的设计是系统能否实现功能的核心,本系统采用了多个控制器,每个控制器实现不同的功能,整个系统在各个控制器的协调下实现所设计的功能。
系统的所有程序均采用C语言编写.
系统程序采用模块编写,各相应硬件模块的主要程序设计均以程序流程图的形式给出,程序的编写只要对照程序流程图编写相应的语句即可。
4、课题研究的方法与过程
1.从研究目的和根据背景选题;
2.经查新定题;
3.研究隧道监控的实现方法,设计构思;
4.找材料,选材料,原则上能代替则代替;
5.制作、实验;
6.修改再实验;
7.整理总结。
5、实物展示
6、使用说明
1、光电对管位置
四个元件即光电对管(图中为侧视图,即只显示2个),只需将其对准行车的期间位置,就可以对来往车辆进行流动检测,其左右间隔只需对着车行驶的位置就可以,而前后的间隔需要控制在一个车身的距离之内。
2、火源检测报警与风扇排气
火焰传感器通过对火源的识别进而判断是否发生了火宅,其对火焰的传感距离可调、角度可调,实现隧道内部无死角检测,保证安全质量检测的目的,同时会打开警报提醒人们,风扇此时会自动打开,将烟排出。
3、无线传输
由于隧道的长度问题影响,如果使用有线传输,会使其造价非常大,而且其操作修整极其繁琐,故此应用无线传输设备进行无线的发射接收处理数据,可有效将数据发送到隧道两端的无线接收端,实现有效的信息传输。
4、液晶显示信息
采集信息对于智能交通是远远不够的,更重要的是将信息传递出去,将有效的信息及时告诉行车司机,液晶显示部分可有效把信息显示在屏幕上,其屏幕通过LED显示,不用担心在天气较差的情况下看不到。
图为无线接收部分,使用一对即可完成主端和从端的收、发通信操作。
5、控制电路与独立电源
每一个部分的电路均采用独立电源供电,同时会有电源电量采集,当电量降到一定电量下会提醒工作人员进行更换电池、充电等。
如图所示为其控制电路与稳压电源部分,通过可充电的锂电池直接输出到降压芯片,稳压后输出稳定的5V电压,后供给单片机、光电对管、OLED液晶显示屏等,控制电路采用STM32单片机对整体系统进行逻辑控制,同时控制着数据的无线收发等等。
6、注意事项
(1)光电对管的距离需要根据不同的隧道进行不同调整,并不是所有的隧道规格都一样。
(2)使用时的环境温度在-40℃~+120℃之间。
(3)充电电池要保证至少6V的工作电压,稳压模块会有1V左右压降,若低于5V可能会导致其不能正常工作。
五、相关程序
#include"
nokia_5110.h"
bmp_pixel.h"
//***********************************
#definedelay_time25767
#defineucharunsignedchar
#defineuintunsignedint
intflag;
ucharbuf;
inti=1;
intpre=0;
/********************************************************************/
OLED5110接收串口中断数据显示
/******************************************************************************/
voidmain(void)
{
LCD_init();
//初始化液晶
LCD_clear();
SCON=0x50;
//设定串口工作方式
PCON=0x00;
//波特率不倍增
TMOD=0x20;
//定时器1工作于8位自动重载模式,用于产生波特率
EA=1;
ES=1;
//允许串口中断
TL1=0xfd;
TH1=0xfd;
//波特率9600
TR1=1;
SBUF=0;
LCD_write_chinese_string(8,1,12,5,12,2);
LCD_write_chinese_string(12,4,12,4,8,5);
while
(1)
{
if(pre!
=i)LCD_clear();
if((i!
=3)&
&
(pre==3))
{
LCD_clear();
flag=0;
}
if((i==1)&
(flag==0))
LCD_write_chinese_string(8,1,12,5,12,2);
//
LCD_write_chinese_string(12,4,12,4,0,5);
//
if(i==3)
if(pre!
=3)LCD_clear();
flag=1;
LCD_write_chinese_string(12,1,12,4,17,5);
LCD_write_chinese_string(12,4,12,4,21,5);
if((i==2)&
LCD_write_chinese_string(8,1,12,5,12,2);
LCD_write_chinese_string(12,4,12,4,8,5);
//zhengchang
pre=i;
if(i!
=3)flag=0;
}
}
voidserial()interrupt4
ES=0;
//关闭串行中断
RI=0;
//清除串行接受标志位
buf=SBUF;
//从串口缓冲区取得数据
switch(buf)
case'
1'
:
{
i=1;
break;
}
2'
i=2;
break;
}
3'
{i=3;
break;
}
}
stm32f10x.h"
led.h"
Time_test.h"
usart1.h"
volatileu32time,time1,time_,time_1;
//ms计时变量
volatileu32tim,tim1,tim_,tim_1;
intt1,t2;
intfire1,fire2;
intdata[4];
/*
*函数名:
main
*描述:
主函数
*输入:
无
*输出:
无
*/
intmain(void)
/*配置系统时钟为72M*/
inti;
SystemInit();
/*led端口配置*/
LED_GPIO_Config();
/*TIM2定时配置*/
TIM2_NVIC_Configuration();
TIM2_Configuration();
USART1_Config();
USART2_Config();
/*TIM2开始计时*/
START_TIME;
//USART1_printf(USART1,"
1"
);
//车祸
//2正常
USART_SendData(USART1,'
while
(1)
{
intselect;
intflag;
data[0]=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6);
data[1]=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5);
data[2]=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);
data[3]=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8);
fire1=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_14);
fire2=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_15);
if(fire1==0||fire2==0)
GPIO_SetBits(GPIOC,GPIO_Pin_13);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
USART_SendData(USART1,'
USART_SendData(USART2,'
else
GPIO_ResetBits(GPIOC,GPIO_Pin_13);
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
GPIO_ResetBits(GPIOA,GPIO_Pin_6);
if(time1==2000||time_1==2000)
time=0;
time1=0;
time_=0;
time_1=0;
if(tim1==2000||tim_1==2000)
tim=0;
tim1=0;
tim_=0;
tim_1=0;
if((flag==0)&
(time>
=2)&
(time_>
=2))
if((tim_>
=2000)&
(tim>