基于MJPGStreamer的嵌入式WEB视频监控小车的设计报告Word格式.docx
- 文档编号:15896922
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:18
- 大小:229.42KB
基于MJPGStreamer的嵌入式WEB视频监控小车的设计报告Word格式.docx
《基于MJPGStreamer的嵌入式WEB视频监控小车的设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《基于MJPGStreamer的嵌入式WEB视频监控小车的设计报告Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
B/S结构,基于linux,要有视频画面,实现无线传送数据,可移动。
1.2目标实现方式
a)S3C2440(ARM9)可以运行linux系统,手上正好有TQ2440开发板。
b)视频画面通过USB摄像头获取,网页上的视频画面由视频服务器获取。
c)通过USB无线网卡连接无线路由器,实现无线传送数据。
d)把整个系统放在可移动的小车上,实现可移动要求。
1.3系统总体设计
1.4总结
用到linux系统,就会涉及到U-boot,文件系统,内核;
用USB类型的摄像头和无线网卡就要移植相应的驱动;
要实现B/S结构,需要WEB和视频服务器;
要实现对直流电机和舵机的控制,需要编写I/O字符驱动;
网页部分需要网页编程和javascript。
总之,要把该目标实现,需要多方面的知识,虽然每部分用的知识不是很深,但是要把多方面的知识结合起来就有点难度,特别对于linux初学者来说,本着求知的态度,一部分一部分学,一边学一边做。
二.系统硬件部分
2.1小车车体
通过改装电动玩具坦克车,保留坦克车的车底。
2.2小车电源部分
1.功率计算:
A.开发板电压:
4.8V,电流:
0.6P=2.88W(无线网卡和USB集线器包含在内)
B.舵机电压:
5V,电流:
0.06AP=0.6W(备注:
两个辉盛SG90)
C.直流电机电压:
5V,电流:
0.2AP=2W(备注:
2个直流电机)
D.L298N电机驱动模块,L7805电源转换芯片。
总功率:
P>
=5.48W
电池:
1.2V*4(8800ma)给开发板供电;
1.2V*8(8000ma)给L298N模块和L7805电源模块供电;
舵机的输入电源为经L7805转换后的5V。
2.电路原理图
L7805转换电路
L298N电机驱动模块电路
三.网页部分
1.WEB服务器boa
1.BOA服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。
2.boa移植到linux
①tarxzfboa-0.94.14.tar.gz解压
②cdboa-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.cgi
2.网页设计及javascript
1.网页设计
网页分三部分:
视频显示区、小车控制按键区、摄像头转动按键区;
2.javascript
Javascrpt也分为三部分:
视频图片处理脚本、按键处理脚本、AJAX异步通信脚本。
重点脚本说明:
/*异步访问提交处理*/
functioncarstop()
{
xhr=createXHR();
if(xhr)
{
xhr.onreadystatechange=callbackFunction;
//调用callbackFunction()返回信息
xhr.open("
GET"
"
/cgi-bin/car.cgi?
carstop=1&
cur_time="
+newDate().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<
stdio.h>
stdlib.h>
unistd.h>
sys/ioctl.h>
fcntl.h>
string.h>
time.h>
intfd;
//保存打开文件返回值
intcgiMain()
{
fd=open("
/dev/leds"
0);
//打开设备文件
if(fd<
0)//返回值=-1
perror("
opendeviceleds"
printf("
ledsshow,pleasectrl+ctoexit"
/*******************前进:
左轮、右轮前进*************************/
if(cgiFormSubmitClicked("
carforward"
)==cgiFormSuccess)
//若"
按下
ioctl(fd,0,0);
//GPB5=0
ioctl(fd,1,1);
//GPB6=1
ioctl(fd,0,2);
//GPB7=0
ioctl(fd,1,3);
//GPB8=1
Contenttype:
text/html\n\n"
//ajax返回信息时必须用到,说明返回是个网页
printf("
carfoward......"
//<
divid="
x"
>
区域输出"
/***************右转:
控制左轮,右轮停止********************/
carright"
ioctl(fd,0,2);
turnright......"
/***************左转:
控制右轮,左轮*************************/
carleft"
//GPB5=0
//GPB6=1
turnleft......"
/*****************停止:
右轮、左轮停止****************************/
carstop"
ioctl(fd,0,1);
//GPB6=0
ioctl(fd,0,3);
//GPB8=0
printf("
carstop......"
}
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”指定,makeinstall时jpeg库的安装位置,然后make,makeinstall,拷贝库到文件系统中。
2.移植mjpg-streamer
第一步下载源码tarxvfmjpg-streamer-r63.tar.gz
第二步解压
第三步修改源码
cdmjpg-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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MJPGStreamer 嵌入式 WEB 视频 监控 小车 设计 报告