1、 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字符驱动
2、;网页部分需要网页编程和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个直流电机)DL298N 电
3、机驱动模块,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 tar xzf boa-0.94.14.tar.gz 解压 cd boa-0.94
4、.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
5、.249/cgi-bin/cgi-test.cgi2.网页设计及javascript 1. 网页设计 网页分三部分:视频显示区、小车控制按键区、摄像头转动按键区; 2. javascript Javascrpt也分为三部分:视频图片处理脚本、按键处理脚本、AJAX异步通信脚本。 重点脚本说明:/*异步访问提交处理*/ function carstop() xhr = createXHR(); if(xhr) xhr.onreadystatechange=callbackFunction; /调用callbackFunction()返回信息 xhr.open(GET,/cgi-bin/car.c
6、gi?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能够设置和接
7、收cookies; 5用一致的方式处理From元素里的回车; 6提供字符串,整数,浮点数,单选或多选功能来接收数据; 7提供数字字段的边界检查; 8能够将CGI环境变量转化成C中的非空字符串; 9提供CGI程序的调试手段,能够回放CGI程序执行时的CGI状态;1.直流电机的控制程序#include cgic.h#include stdlib.hunistd.hsys/ioctl.hfcntl.hstring.htime.hint fd; /保存打开文件返回值int cgiMain() fd=open(/dev/leds,0); /打开设备文件 if(fd0) / 返回值=-1 perror(o
8、pen device leds printf(leds show,please ctrl+c to exit/*前进:左轮、右轮前进*/ 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=1Content type: text/htmlnn /ajax返回信息时必须用到,说明返回是个网页 printf(car foward . /区域输出/*右转
9、:控制左轮,右轮停止 */carright ioctl(fd,0,2);turn right ./*左转:控制右轮,左轮*/carleft /GPB5=0 /GPB6=1turn left ./*停止:右轮、左轮停止*/carstop ioctl(fd,0,1); / GPB6=0 ioctl(fd,0,3); / GPB8=0 printf(car stop . 2.舵机控制程序舵机程序不列出,大概和直流电机控制程序类似。cgic库的移植及编译cgic程序过程省略4. 视频服务器 MJPG-steamer移植 1.首先需要移植 jpeg库,版本是:jpeg-6b; 和boa 一样,首先使用.
10、 /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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1