好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

基于MJPG-Streamer的嵌入式WEB视频监控小车的设计报告.docx

19页
  • 卖家[上传人]:碎****木
  • 文档编号:229362508
  • 上传时间:2021-12-25
  • 文档格式:DOCX
  • 文档大小:854.70KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 基于linux 的视频监控小车设计报告目录摘要 3一.方案规划 4二. 系统硬件部分 5三.网页部分 7四.驱动部分 11五.Linux 文件系统、内核部分 16总结 17参考文献 17.作品图片 1819摘要本文描述了监控小车的设计原理和实现方法该系统工作在linux 上,linux 系统运行于s3c2440(ARM9)微处理器通过B/S 结构实现人机交互,控制直流电机实现对小车的控制,控制舵机实现对摄像头方向的控制,通过视频服务器得到监控画面本作品是在初学 linux 时所做,最后经过测试和调试,达到最初目标一.方案规划1.1 目标要求B/S 结构,基于linux,要有视频画面,实现无线传送数据,可移动1.2 目标实现方式a) S3C2440(ARM9)可以运行 linux 系统,手上正好有 TQ2440 开发板b) 视频画面通过USB 摄像头获取,网页上的视频画面由视频服务器获取c) 通过 USB 无线网卡连接无线路由器,实现无线传送数据d) 把整个系统放在可移动的小车上,实现可移动要求1.3 系统总体设计网页WEB 服 务小车LinuxMJPG-streamerS3C24401.4 总结用到 linux 系统,就会涉及到U-boot,文件系统,内核;用USB 类型的摄像头和无线网卡就要移植相应的驱动;要实现 B/S 结构,需要 WEB 和视频服务器; 要实现对直流电机和舵机的控制,需要编写I/O 字符驱动;网页部分需要网页编程和 javascript。

      总之,要把该目标实现,需要多方面的知识,虽然每部分用的知识不是很深,但是要把多方面的知识结合起来就有点难度,特别对于 linux 初学者来说,本着求知的态度,一部分一部分学,一边学一边做二.系统硬件部分2.1 小车车体通过改装电动玩具坦克车,保留坦克车的车底2.2 小车电源部分1. 功率计算:A. 开发板 电压:4.8V,电流:0.6 P=2.88W (无线网卡和 USB 集线器包含在内)B. 舵机 电压:5V,电流:0.06A P=0.6W(备注:两个辉盛 SG90)C. 直流电机 电压:5V ,电流:0.2A P=2W(备注:2 个直流电机) D.L298N 电机驱动模块,L7805 电源转换芯片总功率:P>=5.48W电池:1.2V*4(8800ma)给开发板供电;1.2V*8(8000ma)给 L298N 模块和 L7805 电源模块供电;舵机的输入电源为经 L7805 转换后的 5V2. 电路原理图L7805 转换电路L298N 电机驱动模块电路Web客户机发送请求Web服务器传送请求CGI程序交互其他应用程序对应资源结果返回返回响应 服务器服务器三. 网页部分1. WEB 服务器 boa1. BOA 服务器是一个小巧高效的 web 服务器,是一个运行于 unix 或 linux 下的,支持 CGI 的、适合于嵌入式系统的单任务的 http 服务器,源代码开放、性能高。

      2. boa 移植到 linux① tar xzf boa-0.94.14.tar.gz 解压② cd boa-0.94.14/src,修改 Makefile 文件,CC = arm-linux-gcc, CPP =arm-linux-gcc –E③ make 编译出可执行文件④ 修改 boa.conf在/etc 目录下建立一个 boa 目录,复制 boa.confg 到该目录; 在 /var/log/下建立 boa 目录,该目录下可以查看boa 服务器的日志;默认是/var/www 下的内容可以访问(DocumentRoot /var/www);默 认 cgi : ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/(cgi 可执行程序放在/usr/lib/cgi-bin/ 目录下) 例如 http://201.201.201.249/cgi-bin/cgi-test.cgi2. 网页设计及 javascript1. 网页设计网页分三部分:视频显示区、小车控制按键区、摄像头转动按键区;2. javascriptJavascrpt 也分为三部分:视频图片处理脚本、按键处理脚本、AJAX 异步通信脚本。

      重点脚本说明:/*异步访问提交处理*/ function carstop(){xhr = createXHR(); if(xhr){xhr.onreadystatechange=callbackFunction; //调用 callbackFunction()返回信息xhr.open("GET","/cgi-bin/car.cgi?carstop=1&cur_time="+new Date().getTime()); //cgi 后面跟个 cur_time 参数是为了防止 Ajax 页面缓存xhr.send(null);}else{}}//XMLHttpRequest 对象创建失败alert("浏览器不支持,请更换浏览 器!");用 ajax 异步通信可以使页面无刷新的向服务器提交数据和返回数据这样直流电机和舵机响应的速度就很快,延迟很小3. CGI 程序本次使用的是 cgic 库,cgic 库的特点:1 分析数据,并自动校正一些有缺陷的浏览器发来的数据;2 透明接收用 GET 或 POST 方法发来的 From 数据;3 能接受上传文件;4 能够设置和接收 cookies;5 用一致的方式处理 From 元素里的回车;6 提供字符串,整数,浮点数,单选或多选功能来接收数据;7 提供数字字段的边界检查;8 能够将 CGI 环境变量转化成 C 中的非空字符串;9 提供 CGI 程序的调试手段,能够回放 CGI 程序执行时的 CGI 状态;1. 直流电机的控制程序#include "cgic.h" #include #include #include #include #include #include #include int fd; //保存打开文件返回值int cgiMain(){fd=open("/dev/leds",0); //打开设备文件if(fd<0) // 返回值=-1{perror("open device leds");}printf("leds show,please ctrl+c to exit");/*******************前进:左轮、右轮前进*************************/ if(cgiFormSubmitClicked("carforward")==cgiFormSuccess)//若"carforward"按下{ioctl(fd,0,0);//GPB5=0ioctl(fd,1,1);//GPB6=1ioctl(fd,0,2);//GPB7=0ioctl(fd,1,3);//GPB8=1printf("Content type: text/html\n\n");//ajax 返回信息时必须用到,说明返回是个网页printf("car foward ");//

      区域输出"car foward "}/***************右转:控制左轮,右轮停止 ********************/ if(cgiFormSubmitClicked("carright")==cgiFormSuccess){ioctl(fd,0,2); // GPB7=0 ioctl(fd,1,3); // GPB8=1 printf("Content type: text/html\n\n"); printf("turn right ");}/***************左转:控制右轮,左轮*************************/ if(cgiFormSubmitClicked("carleft")==cgiFormSuccess){ioctl(fd,0,0); //GPB5=0 ioctl(fd,1,1); //GPB6=1 printf("Content type: text/html\n\n"); printf("turn left ");}/*****************停止:右轮、左轮停止****************************/ if(cgiFormSubmitClicked("carstop")==cgiFormSuccess){ioctl(fd,0,0); // GPB5=0 ioctl(fd,0,1); // GPB6=0 ioctl(fd,0,2); // GPB7=0ioctl(fd,0,3);// GPB8=0printf("Content type: text/html\n\n");printf("car stop ");}}2. 舵机控制程序舵机程序不列出,大概和直流电机控制程序类似。

      cgic 库的移植及编译 cgic 程序过程省略4. 视频服务器 MJPG-steamer 移植1. 首先需要移植 jpeg 库,版本是:jpeg-6b;和 boa 一样, 首先使用. /configure --build=i386-linux,--host=arm-linux--prefix=/home/wendi/jpeg-6b/jpeg --enable-shared --enable-static其中“--prefix=/home/wu/jpeg-6b/jpeg” 指定,make install 时 jpeg 库的安装位置,然后 make ,make install,拷贝库到文件系统中2. 移植 mjpg-streamer第一步 下载源码 tar xvf mjpg-streamer-r63.tar.gz第二步第三步解压修改源码cd mjpg-streamer-r63修改顶层makefile 及 plugins 目录中的各级makefile 将所有CC=gcc修改为CC=arm-none-linux-gnueabi-gcc修改 plugins/input_uvc/Makfile修改CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC为CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC-I/home/linux/s3c2410-2.6.35/video/jpeg/include修改$(CC) $(CFLAGS) -ljpeg -o $@。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.