多因素无线智能预警系统结题报告电子版.docx
- 文档编号:9218089
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:17
- 大小:690.21KB
多因素无线智能预警系统结题报告电子版.docx
《多因素无线智能预警系统结题报告电子版.docx》由会员分享,可在线阅读,更多相关《多因素无线智能预警系统结题报告电子版.docx(17页珍藏版)》请在冰点文库上搜索。
多因素无线智能预警系统结题报告电子版
广州大学“挑战杯”学生作品
结题报告书
作品名称:
多因素无线智能预警系统
作品类别:
√
科技发明B类
立项类别:
一般项目
所在单位:
计算机科学与教育软件
作者姓名:
MicroBee团队
指导老师:
刘淼、李鹏
共青团广州大学委员会
2010年10月
填表说明
1、填写内容必须实事求是,表达清晰、准确。
2、用钢笔填写或打印。
3、“作品名称”应与立项报表中所填内容相一致,如有改动请予说明。
4、“作品类别”请写明:
是属“自然科学类”,“发明制作类”,“哲学社会科学类”中的哪一类。
6、“立项类别”请写明是属“重点项目”,“重点扶持项目”,“一般项目”中的哪一种。
7、“所在单位”填作者所在学院或部门。
8、“作者姓名”与“指导老师”应与立项表中所填内容一致。
如有改动请予说明。
属集体项目请填写项目组名称,并打上“*”号。
9、其它栏目请按要求填写。
项目完成情况综述
课题实际完成情况(可另加页)
1.完成的项目内容,取得的成果,达到的目标及水平(如有经济效益,请列出)
2.是否按计划达到预定目标,进度和内容及其原因
3.对完成结果的评价
一、本项目完成了申请书上申报的项目的具体内容,主要包括实现多因素、无线、智能等功能,搭建了一个可靠的、准确的预警系统。
本项目取得的成果主要有:
1.完成多因素无线智能预警系统原型:
本系统在搭建完成之后进行一系列的测试,在实际的运用当中表现稳定,实现了可靠的监控。
2.完成论文三篇:
《多因素无线智能预警系统的研究与实现》
《一个嵌入式Web服务器远程管理系统的设计与实现》
《嵌入式运动物体的识别与跟踪研究》
在系统研究和设计过程中,该系统实现了多因素,无线,智能序列功能。
用户可以通过Browser可以方便地访问系统,实现查询异常数据,观察监控现场各种数据和情况;当出现异常情况时,服务器可通过短信的通知用户,实现了无差错监控。
系统可以快捷,可靠地运用于各种需要的监控场合,市场前景广阔,值得推广。
二、项目的进度基本与申请书的进度相同,具体的研究内容包括嵌入式linux技术、zigbee技术、OpenCV技术、CGI技术、wifi技术以及它们之间的结合,主要涉及在具体的linux环境下的开发和应用。
主要研究的内容有:
2.1操作系统的选取与移植
本设计选用了Linux系统作为操作系统。
一方面考虑到Linux系统是遵循GPL(generalpubliclicense)协议的开放源码的操作系统,可以免费使用,内核可根据系统需要任意裁剪。
另一方面,Linux操作系统的自由开放使得Linux的网络资源和工具十分丰富。
鉴于Linux系统开放源码、免费使用、资源丰富等优点,所以本设计选用了Linux2.6内核在嵌入式微处理器S3C6410上移植,具体移植过程如下:
①使用LinuxShell命令安装交叉编译器arm-linux-gcc。
②在开发板上建立引导加载程序U-boot。
③内核的剪裁与编译。
④建立根文件系统
⑤烧写内核、根文件系统及应用程序。
2.2服务器的配置
①到网站www.boa.org下载BOA源码。
②通过命令sudotar-zxvfboa-0.94.13.tar.gz进行解压。
③进入*/boa-0.94.13/src目录,直接运行./configure,生成Makefile文件;然后对Makefile进行修改,将CC=gcc改为CC=arm-linux-gcc,CPP=gcc-E改为CPP=arm-linux-gcc-E
④交叉编译:
⑤去除调试信息,减小体积,直接执行命令arm-linux-stripboa进行去除调试信息。
⑥配置boa.conf文件,将Groupnogroup修改为Group0,将Usernobody修改为User0
ScriptAlias的修改,将ScriptAlias/cgi-bin//usr/lib/cgi-bin/修改为ScriptAlias/cgi-bin//var/www/cgi-bin/,这里主要是设置CGI的目录,也可以修改为其他目录。
将#ServerNamewww.your.org.here修改为ServerNamewww.your.org.here
⑦编写boa脚本:
因为/var里边的东西是经常变动的,所以要经常手工创建文件或文件夹比较麻烦,直接编
写一个shell脚本,让它开机就自动创建。
其内容部分如下:
Mkdir/var/log/boa
Mkdir/var/www
Touch/var/log/boa/access_log
Touch/var/log/boa/error_log
⑧移植boa:
将编译好的boa可执行文件,存放到ARM板上的/usr/sbin/目录,把boa的配置文件boa.conf拷到ARM板上的/etc/boa/目录。
然后就可以直接运行boa如下图:
2.3监控设备驱动的开发
云台的驱动设计
云台是一种用于安装、固定摄像装置的支撑设备云台适用于对大范围进行扫描监视,它可以扩大摄像机的监视范围。
S3C6410RISC微处理器具有5个32位定时器。
其中定时器0、1、2和3具有PWM功能,它可以驱动外部的I/O信号。
定时器0和1在处理器上有直接的输出引脚。
本设计通过控制PWM的输出极性从而对云台的转动进行控制。
驱动程序的开发过程如下:
①编写PWMOUT0与PWMOUT1的设备驱动,在驱动程序里首先初始化PWM所对应的管脚功能,然后初始化定时器设置对PWM的定时,最后启动PWM功能。
在编写设备驱动的最初需要确定好PWM的输出管脚,在模块中staticintpwm_device_open(structinode*inode,structfile*file)函数完成了该任务,s3c_gpio_cfgpin(S3C64XX_GPF(14),S3C64XX_GPF14_PWM_TOUT0)语句和s3c_gpio_cfgpin(S3C64XX_GPF(15),S3C64XX_GPF15_PWM_TOUT1)语句确定了开发板的GPF14、GPF15为PWM输出。
S3C6410的PWM输出,主要是利用比较寄存器TCMPB0。
在定时器使能时,定时器计数缓存寄存器(TCNTBn)得到一个被装载到递减计数器中的初始值。
定时器比较缓存寄存器(TCMPBn)有一个被装载比较器中用来和递减计数器得值作比较的初始值。
每个定时器有一个自己的由定时器时钟驱动的32位递减计数器。
当递减计数器为零时,定时器中断请求生成通知CPU定时器操作已经完成。
当定时器计数器达到0,相应的TCNTBn的值也知道装载到递减计数器中以继续下一个操作(自动装载)。
但是,如果定时器停止了,例如在定时器运行模式下通过对TCONn的定时器使能位清零,则TCNTBn的值不会装载到计数器中。
初始化定时器设置。
这里上述PWM脉冲输出的相关知识,在初始化定时器时,主要需要设定以下几个寄存器(以定时器0为例):
定时器输出时钟频率=PCLK/(prescalervalue+1)/(dividervalue)
tcfg0&=~S3C_TCFG_PRESCALER0_MASK;
tcfg0|=(50-1);
tcfg1&=~S3C_TCFG1_MUX1_MASK;
tcfg1|=S3C_TCFG1_MUX1_DIV2;
这里我们把时钟预定标器值设置为49,并使用1/2分频值。
tcnt=(pclk/50/2)/50;
tcmp=tcnt/200*g_tcmp;
然后就是给定时器装载初值。
在这里要说明的是,由公式pclk/50/2是定时器每秒中断一次的值,因为标准舵机的方波脉冲信号是以20ms为周期的,所以在此再除以50。
其次就是当应用程序操作设备文件所调用的ioctl函数中,输入参数一般定义为长整型,而舵机的输入脉冲宽度为0.5ms~2.5ms,因此我们在设计程序时做了单位的变换处理。
staticints3c6410_pwm_start(intchannel)函数用于启动PWM功能。
程序中通过对tcon控制寄存器的设置启动PWM脉冲输出。
②注册/卸载字符设备驱动程序,执行insmod命令时会调用__initpwm_device_init()函数代码进行设备驱动注册。
执行rmsmod命令时会调用__exitpwm_device_exit()函数代码进行设备驱动卸载。
③把设备驱动文件命名为pwm_device.c放入内核源码的“drivers/char”目录下。
然后修改同目录下的“Kconfig”文件加入以下内容:
ConfigPWM_DEVICE
tristate”S3C6410PWMOUTDEVICE”
dependsonARCH_S3C64XX
help
S3C6410PWMOUT0/1Devicesupport
之后修改同目录的“Makefile”文件加入以下内容:
Obj-$(CONFIG_PWM_DEVICE)+=pwm_device.o
④配置内核,输入makemenuconfig,然后配置如下:
DeviceDrivers-
Characterdevices-
将其选择为“M”(模块),然后保存配置,编译出内核镜像烧写到开发板中,然后使用命令“#makeSUBDIR=drivers/charmodules”编译出驱动模块,在内核源码目录下名为“pwn_device.ko”,将其复制到开发板中。
2.4摄像头的驱动的移植
①从网站mxhaard.free.fr下载USB摄像头驱动,并为内核打上高版本内核补丁。
②将驱动文件重命名为gspcav1然后复制到内核的“drivers/media/video/”目录下。
③修改文件“drivers/media/video/Kconfig”文件添加以下内容:
configUSB_SPCA5XX
tristate"USBSPCA5XXSunplus/Vimicro/SonixjpegCameras"
dependsonUSB&&VIDEO_V4L1
④修改文件“drivers/media/video/Makefile”,添加以下内容:
obj-$(CONFIG_USB_SPCA5XX)+=gspcav1/
obj-$(CONFIG_USB_SE401)+=se401.o
⑤修改“drivers/media/video/gspcavl/Makefile”文件
gspca-objs:
=gspca_core.odecoder/gspcadecoder.o
obj-$(CONFIG_USB_SPCA5XX)+=gspca.o
把obj-m+=gspca.o注释掉
⑥修改内核“drivers/media/video/gspcavl/gspca_core.c”文件,把36行改成如下内容
staticconstchargspca_version[]="01.00.20";
#defineVID_HARDWARE_GSPCA0xFF
⑦配置内核,makemenuconfig进入图形配置,添加内核对摄像机驱动的支持;
DeviceDrivers--->
Multimediadevices--->
<*>VideoForLinux
<*>VideoForLinux
[*]EnableVideoForLinuxAPI1(DEPRECATED)
-*-EnableVideoForLinuxAPI1compatibleLayer
[*]Videocaptureadapters--->
[*]Autoselectpertinentencoders/decodersandotherhelperchip
[*]Autoselectpertinentencoders/decodersandotherhelperchi
[*]V4LUSBdevices--->
<*>USBSPCA5XXSunplus/Vimicro/SonixjpegCameras
<>USBZC0301[P]ImageProcessorandControlChipsupport
⑧退出保存配置单,make编译出镜像,烧写到开发板中,启动系统后,插入USB摄像头,会正确识别到USB摄像头的正常显示信息:
usb1-1:
configuration#1chosenfrom1choice
gspca:
USBGSPCAcamerafound.(ZC3XX)
usb1-1:
NewUSBdevicefound,idVendor=0ac8,idProduct=303b
usb1-1:
NewUSBdevicestrings:
Mfr=1,Product=2,SerialNumber=0
usb1-1:
Product:
PCCamera
usb1-1:
Manufacturer:
VimicroCorp.
2.5用户交互程序的设计
本系统的采用了CGI(公共网关接口)实现用户与服务器之间的动态交互。
用户与服务器进行交互时主要调用实时监控、Zigbee数据采集和历史回放三大功能模块。
图3为用户与服务器的交互流程。
(1)实时监控程序的设计
在浏览器上在线观看实时采集视频的同时,通过网页上的5个按钮给云台发送命令,以控制监控摄像头的动作。
通过开发板的PWMOUT输出去改变舵机的转动角度。
实现代码如下(以向左转动为例):
/cgi-bin/pwmout0_ctl? MovLeft"> 在这里我们使用form形式向服务器传递参数,其中在action属性指向服务器里控制云台水平转动方向的CGI处理程序,在问号之后的字符为命令行参数。 当用户按下名为“left”的按钮时,浏览器就会向服务器发送“MovLeft”命令,命令经过名为“pwmout_ctl”的CGI程序处理后把处理结果返回给浏览器。 CGI处理主程序的代码如下: intmain(intargc,char*argv[]) { char*data=(char*)0; char*cmd=(char*)0; unsignedlongv_ctl; inti; printf("Content-type: text/plain\n\n"); printf("Thecommandlinedatais: \n"); for(i=1;i { data=argv[i]; if(data! =(char*)0) { printf("%s",data); } } printf("\n"); cmd=data; v_ctl=receive_cmd(cmd); printf("temp=%ld\n",v_ctl); printf("theplanerotationalangleis%ld",(v_ctl-5)*9); write_pwm(v_ctl); exit(0); } 其中,receive_cmd函数作用是处理浏览器传递的命令参数。 write_pwm函数作用是向定时器的pwm输出写入计数值。 然后是在网页中嵌入JavaApplet的WebCamPlayer工具播放实时视频。 代码如下: YouneedtodownloadJava. Click (2)Zigbee数据采集模块的设计 Zigbee模块对周围的环境参数进行监测,对超出设定的异常范围的环境参数进行报警以及保存到数据库处理,方便用户查看。 我们使用的两个模块可以在一定的范围进行无线传感网的组网,完成数据的无线传输。 下图为Zigbee模块工作流程图: Freescale13192SARD模块选用Freescale公司的8位微控制器MC9S08GT60,内部纵向频率高达20MHz,完全能够支持高实时性的射频模块。 60KB的Flash足够容纳Zigbee协议栈。 10位的A/D转换模块用于对传感器信号的数据采集。 在系统中13192模块充当13213模块(传感器数据监测收集模块)与上位机之间的传输中继。 13192模块通过RS232口与ARM开发板相连,进行数据的传输,利用IEEE802.15.4无线网络频段接收到来自13213的传感器的数据。 将收集到的数据存放在gau8TxDataBuffer中,通过判断gu8SCIData[0]中的值,即上位机发送过来的指令来进行数据的相应的数据的传输,以传输传感器数值为例: /*SendthePCapplication"xNyNzN"*/ case'V': SCITransmitArray(gua8sciString,6); break; Freescale13213SRB是公司推出的符合802.15.4标准的下一代收发信机,它包括一个集成的发送/接收(T/R)开关,可以帮助降低对外部组件的需求,进而降低原料成本和系统总成本。 该收发信机支持飞思卡尔的软件栈选项、简单MAC(SMAC)、802.15.4MAC和全ZigBee堆栈。 集成了MC9S08GTMCU和MC1321x收发信机,闪存可以在16~60KB的范围内选择。 MC13211提供16KB的闪存和1KB的RAM,非常适合采用SMAC软件的点到点或星形网络中的经济高效的专属应用。 MC13213可以提供全面的编码和解码、用于基带MCU的可编程时钟、以4MHz(或更高)频率运行的标准4线SPI、外部低噪声放大器和功率放大器(PA)实现的功能扩展以及可编程的输出功率。 在本系统中主要完成传感器数据的收集,对传感器的xyz测量函数doAccelMeasurement(INT8axis)进行测量,以及通过数据传输函数TxAccel(void)进行无线传输,以x轴为例: gsTxPacket.u8DataLength=2; switch(gu8TxAccelState){ case'x': case'X': doAccelMeasurement(X_AXIS); gau8TxDataBuffer[0]=0x78;/*SetX*/ if(compareADCReading(u8LastX,gau8TxDataBuffer[1],APP_DEFAULT_THRESHOLD)==TRUE){ (void)MCPSDataRequest(&gsTxPacket);/*transmitdata*/ u8LastX=gau8TxDataBuffer[1]; LED1^=1;/*ToggleLED1*/ } gu8TxAccelState='y'; break; ARM(Linux)上位机主要对数据进行解析,判断和保存到数据库。 传感器的数据的保存的标准是通过设定上下限,对连续六次超过上下限的动作进行保存当前节点的ID等实时信息,并触发短信报警功能。 (3)历史回放视频服务的设计 当系统进入实时监控状态时,客户可以通过时间段的查询得到过去监控发生异常的视频录像,查询方式通过表单把条件变量提交至服务器。 实现代码主要如下: //192.168.254.129/cgi-bin/history"> 其中,readOnyonClick="setDayHM(this);"是使用JavaScript脚本实现日期时间的选择。 服务器将传入的数据传送给CGI程序,CGI程序会通过传入的数据对数据库进行选择查询,最后从数据库中得到的数据返回给服务器,服务器在返回给浏览器的客户端,之后客户可以根据要求选择查看需要的录像。 CGI处理程序的主要代码如下: intcgiMain() {…… type1=cgiFormStringNoNewlines("text1",value1,20); type2=cgiFormStringNoNewlines("text2",value2,20); if(type1==cgiFormSuccess&&type2==cgiFormSuccess) {sprintf(sql,"select*fromVideoRecordwhereAcquisitionTimebetween'%s'and'%s';",value1,value2); dict=searchVideoDB(dict,sql,dbPath); if(dict) { print(dict); sqlite3_free_table(dict->aResult); } elsereturn-1; } ……} (3)wifi模块设计 wif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 因素 无线智能 预警系统 报告 电子版
![提示](https://static.bingdoc.com/images/bang_tan.gif)