智能交通灯课程设计报告.docx
- 文档编号:1631474
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:37
- 大小:131.26KB
智能交通灯课程设计报告.docx
《智能交通灯课程设计报告.docx》由会员分享,可在线阅读,更多相关《智能交通灯课程设计报告.docx(37页珍藏版)》请在冰点文库上搜索。
智能交通灯课程设计报告
《嵌入式》
课程设计报告
题目:
智能交通灯
专业:
计算机
班级:
学号:
姓名:
指导教师:
完成日期:
2
一、前言
1.1课题研究背景
交通是城市经济活动的命脉,对城市经济发展、人民生活水平的提高起着十分重要的作用。
城市交通问题自人类进入21世纪以来,道路交通一直是困扰城市发展、制约城市经济建设的重要因素。
而使用合理的交通灯可以合理的规划城市交通,从而为城市的快速运输和发展提供最优化的交通解决方案。
可以肯定的说,城市道路增长的有限与车辆增加的无限这一对矛盾是导致城市交通拥挤的根本原因。
对于减轻交通拥塞及其副作用特别是对于大的交通网络而言,仍然缺乏一种真正的交通响应控制策略。
计算机硬件能力与控制软件能力很不相符,由此造成的影响是很多交通控制策略根本不能实现。
在少数几个例子中,一些新的控制策略确实能得以实现,但他们却没能对早期的控制策略进行改进。
由于缺乏能提高交通状况、特别是缺乏拥塞网络交通状况的实时控制策略,几乎可以说真正成熟的控制策略仍然不存在.智能化和集成化是城市交通信号控制系统的发展趋势和研究前沿,而针对交通系统规模复杂性特征的控制结构和针对城市交通瓶颈问题并代表智能决策的阻塞处理则是智能交通控制优化管理的关键和突破口。
1.2课程研究目的和意义
车辆的不断增多,表明车辆对道路容量的要求仍然很高,短期内还不可能改变。
自从开始使用计算机控制系统后,不管在控制硬件里取得什么样的实际进展,交通控制领域的控制逻辑方面始终没能取得重大突破。
因此,研究基于智能集成的城市交通信号控制系统具有相当的学术价值和实用价值。
把智能控制引入到城市交通控制系统中,未来的城市交通控制系统才能适应城市交通的发展。
从长远来看该研究具有巨大的现实意义。
二、需求分析
城市交通信号控制系统的管理是保障城市交通高效有序运行的一个重要组成部分,如何实时有效的对交通信号进行控制,优化城市交通车流是目前国内外学者研究的热点。
对交通信号控制系统的优化,现阶段主要体现在对城市交叉路口相位中的绿信比的调节,通过调节绿信比来形成各个车道的路阻,改变交通车流量。
随着数字智能技术与通信和控制领域的结合,交通信号控制系统的优化逐渐的由孤立路口的控制向大规模区域网络控制、定时控制向自适应控制、集中控制向分布式协同控制的方向发展,传统城市交通网也将被智能交通网络所取代。
1、城市交通信号控制系统的优化
交通信号灯的控制是城市交通网络中一个最主要的控制手段。
通过优化交通岔路口交通灯的红绿灯配时方案,设计有效的交通信号优化控制策略,可提高城市交通资源的利用率,缓解道路拥堵。
目前,设计一个实时可靠并且实际可行的交通信号控制系统仍然有诸多的问题需要解决。
这些问题集中在以下几个方面:
a)绿灯转换是一个离散变化过程,其优化组合往往是一个NP困难问题;b)城市交通规模巨大,除了要处理大量交通数据外,一定范围内相邻路口交通车流量存在相关性,故相邻路口应有一定的协调特性才能达到整体优化;c)交通中面临着许多的不可知以及难以测量的扰动因素(如:
交通事故,非法停车,行人穿行等);d)交通状态的测量信息往往是局部信息,并且测量的准确度受许多因素的影响。
针对以上问题,国内外研究学者提出了交通信号控制系统的解决方案,按几何拓扑可分为交叉路口控制、城市主干道控制和网络控制三类。
2、智能交通系统与分布式协同优化控制
智能交通系统的提出为全面解决城市交通运输问题提供了一个有效的路径。
智能交通系统涵盖了交通领域中的许多方面,包括信息服务系统、交通管理系统、电子收费系统等,是高度综合化、智能化的交通控制系统。
在交通管理方面,智能交通系统采用先进的车辆检测技术和计算机信息处理技术,获取实时交通路况信息,并根据收集到的信息对交通进行控制,信息的收集一方面提高了交通控制的准确性,但同时大量的数据也增加了消息处理的复杂性。
三、开发环境及系统结构
3.1开发环境
Linux操作系统从1991年问世到现在,短短十几年的时间已经发展成为功能强大、设计完善的操作系统之一。
作为最能体现互联网自由和开放精神的代表,Linux自诞生以来就以软件源代码开放、可自主开发和高效灵活等特点迅速得到众多软件开发者的推崇。
并且,随着互联网的迅猛发展,Linux正取代Windows成为全球增长最快的操作系统。
随着Linux应用的普及,Linux下的软件开发无疑会成为IT业发展的又一次高潮。
Linux操作系统主要有以下特点:
自由软件;
完全兼容POSIX1.0标准;
支持多用户和多任务;
良好的用户界面;
支持多种文件系统;
丰富的网络功能;
可靠的系统安全;
良好的可移植性;
正是由于以上特点,Linux在短时间内获得了飞速的发展,已在各个行业得到了广泛的应用。
同时,Linux嵌入式系统具有优秀的可移植性,利用Linux系统来进行软件开发已经成为一种趋势[12]。
可以想象,Linux的发展前景非常可观。
3.2系统结构
本系统以单片机为核心,系统硬件电路由状态灯,LED显示,按键,组成。
其具体的硬件电路总图如图3.1所示。
其中P0用于送显两片LED数码管,P1用于控制红绿黄发光二极管,XTAL1和XTAL2接入晶振时钟电路,REST引脚接上复位电路,P2.6P2.7对数码管进行片选,P3.2即INT0紧急情况处理按键,P3.3即INT1接时间调整中断按键。
四、详细设计
4.1程序框架设计
本文介绍的智能交通灯有普通交通灯的功能(此处设置时间为3秒)和监测到震动后调整时间(本文设置为8秒)的功能。
程序流程图如图4.1所示:
图1程序流程图
4.23秒程序的控制
3秒中的程序是在车流量较少时即未检测到震动时执行的程序,其流程图如图4.2所示:
图23秒程序流程图
4.28秒程序的控制
8秒中的程序是在车流量较多时即检测到震动时执行的程序,其流程图如图4.3所示
图38秒程序流程图
五、结论
5.1实验截图
(1)程序刚启动时,执行3秒中的红灯。
终端上显示的结果如图5-1所示:
图43秒红灯实验截图
(2)红灯过后执行3秒的绿灯,终端显示结果如图5-2所示:
图53秒绿灯实验截图
(3)监测到震动,交通灯切换到8秒的时间,终端执行结果如图5-3所示:
图68秒绿灯实验截图
附件1
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include"pthread.h"
#include
#include"wsnserial.h"
#defineLED1
#definePWM1
#defineSEG1
#defineSTEPPER_START0
#defineSTEPPER_STOP1
#defineDCMOTOR_START0
#defineDCMOTOR_STOP0
intnread=0;
charRecbuff[1024];
intsRecDataLen=0;
charsave_byte4;
charsave_byte5;
pthread_mutex_tmutex;
intbuffer_has_item=0;
intbuffer_has_send=0;
intSendNum=0;
structserial_configserialread;
staticintserial_fd;
intspeed_arr[]={B230400,B115200,B57600,B38400,B19200,B9600,B4800,B2400,B1200,B300,
B38400,B19200,B9600,B4800,B2400,B1200,B300};
intname_arr[]={230400,115200,57600,38400,19200,9600,4800,2400,1200,300,
38400,19200,9600,4800,2400,1200,300};
//-----------------------------------------------
voidset_speed(intfd,intspeed)
{
inti;
intstatus;
structtermiosOpt;
//structtermiosoldOpt;
tcgetattr(fd,&Opt);
//printf("serialread.speedis%d\n",serialread.serial_speed);
for(i=0;i { if(speed==name_arr[i]) { tcflush(fd,TCIOFLUSH); cfsetispeed(&Opt,speed_arr[i]); cfsetospeed(&Opt,speed_arr[i]); status=tcsetattr(fd,TCSANOW,&Opt); if(status! =0) perror("tcsetattrfd1"); return; } tcflush(fd,TCIOFLUSH); } } intset_Parity(intfd,intdatabits,intstopbits,intparity) { structtermiosoptions; //structtermiosoldoptions; if(tcgetattr(fd,&options)! =0) { perror("SetupSerial1"); return(FALSE); } //options.c_cflag|=(CLOCAL|CREAD); options.c_cflag&=~CSIZE; //printf("serialread.databitsis%d\n",serialread.databits); switch(databits) { case7: options.c_cflag|=CS7; break; case8: options.c_cflag|=CS8; break; default: fprintf(stderr,"Unsupporteddatasize\n"); return(FALSE); } //printf("serialread.parityis%c\n",serialread.parity); switch(parity) { case'n': case'N': options.c_cflag&=~PARENB; options.c_iflag&=~INPCK; break; case'o': case'O': options.c_cflag|=(PARODD|PARENB); options.c_iflag|=INPCK; break; case'e': case'E': options.c_cflag|=PARENB; options.c_cflag&=~PARODD; options.c_iflag|=INPCK; break; case'S': case's': /*asnoparity*/ options.c_cflag&=~PARENB; options.c_cflag&=~CSTOPB; break; default: fprintf(stderr,"Unsupportedparity\n"); return(FALSE); } //printf("serialread.stopbitsis%d\n",serialread.stopbits); switch(stopbits) { case1: options.c_cflag&=~CSTOPB; break; case2: options.c_cflag|=CSTOPB; break; default: fprintf(stderr,"Unsupportedstopbits\n"); return(FALSE); } if(parity! ='n'&&parity! ='N') options.c_iflag|=INPCK; options.c_cflag&=~CRTSCTS; options.c_iflag&=~IXOFF; options.c_iflag&=~IXON; if(parity! ='n'&&parity! ='N') options.c_iflag|=INPCK; tcflush(fd,TCIOFLUSH); //options.c_iflag|=IGNPAR|ICRNL; options.c_lflag&=~(ICANON|ECHO|ECHOE|ISIG); //options.c_oflag|=OPOST; options.c_oflag&=~OPOST; options.c_iflag&=~(ICRNL|IGNCR); //options.c_iflag&=~(IXON|IXOFF|IXANY); options.c_cc[VTIME]=0;//150;//15seconds options.c_cc[VMIN]=0; tcflush(fd,TCIFLUSH); if(tcsetattr(fd,TCSANOW,&options)! =0) { perror("SetupSerial3"); return(FALSE); } return(TRUE); } intOpenDev(char*Dev) { intfd=open(Dev,O_RDWR); if(-1==fd) { perror("Can'tOpenSerialPort"); return-1; } else returnfd; } intserial_init(void) { char*Dev="/dev/s3c2410_serial1"; inti; serial_fd=OpenDev(Dev); if(serial_fd>0) set_speed(serial_fd,115200); else { printf("Can'tOpenSerialPort! \n"); exit(0); } if(set_Parity(serial_fd,8,1,'N')==FALSE) { printf("SetparityError\n"); exit (1); } return0; } floatScanADdata(charbyte9) { floatADdata; if(byte9>0xf0) ADdata=0; elseif(byte9>0x80) ADdata=3.3; else ADdata=(3.3/127)*byte9; returnADdata; } intPressData(charbyte) { inttemp=0; if(byte>36) temp=(byte-34)*200/18; else temp=0; returntemp; } intRainData(charbyte) { if(byte>11) return1; else return0; } floatWaterData(charbyte13) { floatWaterData; if(byte13>0) WaterData=(byte13+3)/7.5; else WaterData=0; returnWaterData; } floatultrasonicData(charbyte11) { floatultrasonicData; ultrasonicData=0.0544*byte11; returnultrasonicData; } void*fbl_malloc(intlen,char*str) { void*ptr=malloc(len); if(ptr==0) printf("%sFailed(len=%d)! ! ! \n",str,len); returnptr; } charXorVerify(charBytesCMD[]) { charchecksum=BytesCMD[1]; inti; for(i=1;i { checksum^=BytesCMD[i+1]; } returnchecksum; } voidjs(); voidting(); voidzou(); voidfmq(); voidscan() { intsource_addr,father_addr; charbyte4,byte5,byte6,byte7,byte8,byte9,byte10,byte11,byte12,byte13,byte14,byte15,byte16,byte17,byte18,byte19; chartest,byteCheck; charPacketBuff[50]; intPacketLen; intj; structwsn_comm_pkg*pkt=0; if(sRecDataLen>0) { //printf("sRecDataLen: %d\n",sRecDataLen); intsFirstPosition=0; while(sFirstPosition { //printf("sFirstPosition: %d\n",sFirstPosition); if(Recbuff[sFirstPosition]==0x2) { PacketLen=Recbuff[sFirstPosition+1]+3; //printf("PacketLen: %d\n",PacketLen); if(PacketLen<=sRecDataLen-sFirstPosition) { //printf("PacketBuff="); inti; for(i=0;i PacketBuff[i]=Recbuff[sFirstPosition+i]; //printf("%02x",PacketBuff[i]); } printf("\n"); if(PacketBuff[7]==0x1){ byte10=PacketBuff[10]; byte11=PacketBuff[11]; byte12=PacketBuff[12]; byte13=PacketBuff[13]; byte14=PacketBuff[14]; byte15=PacketBuff[15]; byte16=PacketBuff[16]; byte17=PacketBuff[17]; byte18=PacketBuff[18]; if((byte10&0x7)==0x0) { /*printf("A/Dµçѹ: %.2fV\n2530ζÈ: %d¡æ\n°åζÈ: %d¡æ\nÎÂʪ¶ÈζÈ: %d¡æ\nÎÂʪ¶Èʪ¶È: %d%\n¹âÕÕ¶È: %d\n",ScanADdata(byte11),byte12,byte13,byte14,byte15,byte16);*/ if(byte17==0x00) { printf("Vibrationsensors: NOvibration\n"); for(j=3;j>=0;j--) { if(byte17==0x01)break; sleep(3); js(j); sleep (1); ting(); //sleep (1); } fmq(); for(j=3;j>=0;j--) {if(byte17==0x01)break; sleep(3); js(j); sleep (1); zou();//if(byte17==0x01)break; } fmq(); } if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 交通灯 课程设计 报告