




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于Arduino开源平台的WIFI视频监控小车市面上美国 WowWee公司推出路威(ROVIO)机器人,一个可以通过WiFi无线局域网络控制的八方移动的机器人摄像机,支持使用者利用内部网络或者通过INTERNET来进行远程遥控。通过网络,使用台式电脑、笔记本、智能手机(PDA,SMARTPHONE),PSP和WiLi遥控手柄进行控制,具有实时控制监控、声像传递、根据设定路线(path)巡航,拍照,自动EMAIL。在这里我们可以通过价廉的路由器搭建WIFI视频监控小车。加起来成本一千多元就可以搞定一台可以自己编程玩的机器人。下面是材料清单:材料清单序号材料名称单价1A4WD小车2052ROMEO控制板30035节2300MAH电池65412V电池包1305充电器906上海贝尔 RG-100A路由器557中星微301摄像头 208两自由度DF15MG云台259合计:11241. A4WD是一个铝合金结构的四轮驱动小车,每个轮子都有一个电机作为驱动,马力强劲。首先根据小车附带的安装说明书装配小车车体,如图就是装好的效果。在底盘里面装了5节2300MAH的镍氢充电电池。2. 接下来安装ROMEO扩展板,ROMEO扩展板是一个基于Arduino开源平台的扩展板。因为全球DIY爱好者都在使用,所以提供了丰富的例子程序。基本上想实现的功能都能够找到参考代码。Arduino封装了底层枯燥的寄存器操作,使程序开发都是基于应用的函数调用。输入输出口的定义也是非常直观。程序操作某个口,就对应硬件的某个接口。3. 安装两自由度DF15MG云台及其摄像头,DF15MG云台可以上下左右180度旋转。301摄像头是一个裸板没有外壳,所以体积非常小,用一个红外开关的支架就可以装上去,还需要用热熔胶固定。这里我把摄像头的USB线减掉了很长,消除了很大的牵绊。4. 最复杂也是最重要的设备来了,就是一个无线路由器。路由器需要支持OpenWrt。他是早年思科公司Linksys 释放出WRT54G路由器源码后,DIY爱好者在其上面进行修改增加了很多功能。OpenWrt是基于Linux。Linux 为我们提供了很多免费的软件,我们可以用一个很低的价钱购买像WRT54G的硬件,做成一个小型的 Linux 系统,现在OpenWrt已经提供了100多个已编译好的软件,而且数量还在不断增加,而 OpenWrt SDK 更简化了开发软件的工序。更多关于OpenWrt的资料可以访问OpenWrt 中文:5. 接下来我们来改造路由器。前面我购买过大亚DB120路由器,配置和现在使用的贝尔RG100A一样,我把机壳拆掉,将裸板直接装在了小车上,不幸的是,莫名其妙的就烧掉了。我觉得可能是不小心短路或者静电什么的。所以我建议还是在将必要的线引出后把塑料盖子装上。这个图是拆掉的内部主板图。配置如下:CPU: BCM6358 300Mhz FLASH: 32M内存:16M 6. 将TTL电平的串口引出,线序为1V 3.3V电源输出2G 地3T 数据发送输出4R 数据接收输入在这里只需要将 G, T ,R三条线引出来。我使用了一个USB转TTL的设备做测试,先看看路由器是否能够正常发送数据。将线从机壳后面引出后就可以将外壳固定在小车上面了。下面是安装好的图。7. 接下来的任务就是设置路由器。路由器的设置在爱果联盟 介绍。首先连接网线到电脑。通过网线烧写固件 openwrt-RG100A_DB120-jffs2-128k-cfe.bin这个固件支持RG100A和DB120两种 使用BCM6358处理器的路由器。其他使用这个芯片的路由器你也可以试试。具体如何烧写可以看 相关内容。烧写完毕重启路由器在GOOGLE浏览器输入 用户名:root 密码:admin设置路由器,为了方便调试,把IPV4 address设置成了WIFI 参数,设置为AP,无加密。设置一遍密码,我发现如果不设置一下,后面putty 软件无法登陆。设置完后reboot。等待跳转到登陆界面说明重启成功。8. 安装 winscp429setup.exe软件WinSCP是一个 Windows 环境下使用 SS H的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能就是在本地与远程计算机间安全的复制文件。打开WinSCP 如图设置登陆名密码及其文件传输协议。点击保存,然后登录。中途会有几个错误警告不用管。 安装winSCP好后用这个软件将wifirobot_1.2_brcm63xx.ipk上传至路由器root下的根目录。此时打开 putty.exe PuTTY 是自由的跨平台 Telnet/SSH 客户端,同时在 Win32 和 Unix 系统下模拟 xterm 终端。输入网址后就可以登录远程设备。此时输入用户名:root 密码:admin输入命令cd / 回车Ls / 回车显示root目录的文件 这个界面有点像DOS。此时能看到刚才拷贝进去的wifirobot_1.2_brcm63xx.ipk文件输入下面的命令执行安装程序:opkg install wifirobot_1.2_brcm63xx.ipk正常的会看到以下的进度且不会出现错误安装完成后,请先reboot重启下路由重启之后输入命令编辑wifirobot配置文件, 2.6版的需要修改两个配置文件。输入vi /etc/init.d/wifirobot 编辑配置用键盘方向键移到需要编辑的地方,输入小写a进入编辑状态,用数字键盘输入19200,删除键可以删除,编辑完后,按ESC退出编辑状态,将键盘切换为大写英文,连续输入两个大写Z即可保存退出!#!/bin/sh /etc/monSTART=80SSD=start-stop-daemonNAME=wifirobot#video_mod=gspca_zc3xxvideo_mod=gspca_ov519 (这两个是摄像头驱动,有#的就是被屏蔽的,如果大家手上的301摄像头有花屏现象,可以屏蔽另外一个换个驱动试试)ser_name=/dev/ttyS0 (路由TTL口设置,一般都是ttyS0)ser_speed=19200 (TTL波特率设置,要改成19200才能连接ROMEO板)video_name=/dev/video0start() killall mjpg_streamer /dev/null 2&1 |sleep 1 /usr/bin/stty -F $ser_name speed $ser_speed raw -echo /dev/null 2&1 echo Set the serial speed to & /usr/bin/stty -F $ser_name speed $ser rmmod $video_mod /dev/null 2&1 & sleep 2 insmod $video_mod /dev/null 2&1 & sleep 5 #ln -s /dev/v4l/video0 $video_name /usr/bin/mjpg_streamer -b -i input_uvc.so -device $video_name -fps 10 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf /dev/null 2&1 echo WifiRobot 1.2 started!ESC 两个大写ZZ保存退出,在继续修改第二个配置文件输入vi /web/app_car.php 编辑第二个配置文件rootOpenWrt:/# vi /web/app_car.php?php include lib.php; define(TTS_NAME, /dev/ttyS0); 将这个的也修改成ttyS0 $db_file=data.car; $DB=array_load($db_file); /print_r($_REQUEST); /exit; /$_REQUESTcmd; /$_REQUESTname; /$_REQUESTI; /sleep(10); function send_car($code) send2ser(TTS_NAME,$code); for ($x=0;$x=1000;$x+) return true; if ($_REQUESTcmd=is_read)/. send2ser(TTS_NAME,IR_RD); $tmp=read4ser(TTS_NAME); $ir_data=$tmpdata;- /web/app_car.php 1/283 0%ESC 两个大写ZZ保存退出;输入 cd /在输入ln -s /etc/init.d/wifirobot /etc/rc.d/S70wifirobot这样启动快捷就放到init.d里面,wifirobot程序会随路由自动启动。9. 用winSCP进到路由器,root/etc/config目录下,可以看到network和wireless这些网络配置文件,我们再次配置网络network部分:config interface loopback option ifname lo option proto static option ipaddr option netmask config interface lan option type bridge option ifname eth1 option proto static option netmask option nat 1 option ipaddr (本级路由IP,自行修改) option gateway (本级路由网关,自行修改) option dns 30 (外网DNS,根据当地情况自行修改) config interface wan option _ifname radio0 (这里要把eth?改成radio0) option ifname option proto static option ipaddr 0 (本级路由WAN口的IP,这时候WAN口就是WIFI无线的,自行修改) option netmask option gateway (上级路由网关,自行修改) option dns 30 (外网DNS,根据当地情况自行修改)wireless部分config wifi-device radio0 option type mac80211 option macaddr 00:1e:40:31:28:82 (本级路由WLAN口的MAC地址,每个路由都是不同的,不要直接套用我的,自行修改) option hwmode 11g option disabled 0 option channel 8 (要保持和上级路由一样的信号道,自行修改)config wifi-iface option device radio0 option encryption none (要和上级路由填写一样的WIFI密码) option ssid www (上级路由的SSID,自行修改) option network wan (这里是wan口) option mode stareboot重启路由此时电脑无线网卡重新搜索一个叫做 OpenWrt 无线节点,连接上。使用GOOGLE浏览器输入下面地址即可进入界面。 小车WEB控制界面地址:81/car.php视频地址:8080/?action=stream可以登录这个地址进行进行控制,不知何故使用IE是不能登陆的,使用GOOGLE的浏览器登录没有问题。登录后添加一个视频然后把地址改成上面的地址。通过USB转TTL串口设备连接电脑,电脑端打开一个串口调试软件,波特率设置为19200,然后点击界面按键,看看是否有数据发出。注意串口调试软件需要HEX方式显示。如果有数据说明控制都没有问题。至此路由设置完毕。10. 下面放出ROMEO板的源程序将这个程序使用Arduino 0022 下载进去:#include /舵机控制库/电机控制端口设置#define EN1 5/控制左侧电机速度 #define EN2 6/控制右侧电机速度#define IN1 4/控制左侧电机方向#define IN2 7/控制右侧电机方向#define FORW 0/前进#define BACK 1/后退 #define dataLenMax 16 /设置最大数据帧长度 不大于16Servo servoX; /云台X轴舵机 左右Servo servoY;/云台Y轴舵机 上下/控制电机转动子函数void Motor_Control(int M1_DIR,int M1_EN,int M2_DIR,int M2_EN) /M1/ if(M1_DIR=FORW)/M1电机的方向 digitalWrite(IN1,LOW); /置高,设置方向向前 else digitalWrite(IN1,HIGH);/置低,设置方向向后 if(M1_EN=0)/M1电机的速度 analogWrite(EN1,LOW);/置低,停止 else analogWrite(EN1,M1_EN);/否则,就设置相应的数值 /M2/ if(M2_DIR=FORW)/M2电机的方向 digitalWrite(IN2,LOW);/置高,方向向前 else digitalWrite(IN2,HIGH);/置低,方向向后 if(M2_EN=0)/M2电机的速度 analogWrite(EN2,LOW);/置低,停止 else analogWrite(EN2,M2_EN);/否则,就设置相应的数值void setup() int i; for(i=4;i=7;i+)/设置控制电机的各端口为输出模式 pinMode(i, OUTPUT); Serial.begin(19200);/设置波特率为19200bps servoX.attach(10); servoY.attach(11);/UART通讯命令字宏定义/#define UART_START0 0X55 /通讯数据帧头#define UART_START1 0XAA /通讯数据帧头#define UART_END 0X0A /返回数据包结束标志/ 命令字定义/ 波特率 57600BPS,无奇偶效验,一位停止位。文中的数字都是8位的十六进制数 /2路舵机控制/本指令可同时控制6路舵机,每路可单独控制位置和速度。/字头 桢长度 命令字 S1位置 S1速度 S2位置 S2速度 校验和/55 aa 4 01 /S1位置,s2位置为2个舵机的角度值,范围为0180,90为中位。/S1速度,s2速度为运动的速度值,spd越高,运动速度越快,范围为00xff。/返回值:/字头 桢长度 命令字 应答标志 校验和/55 aa 01 01 S SUM/返回操作标志。设置成功S返回0X01,失败无返回。/#define RC_MOTO_SET 0X01 / 2路舵机控制/2路电机调速控制/本指令可同时控制2路直流电机速度。(机器人头超前方,人面对机器人后方)/字头 桢长度 命令字 左电机 右电机 校验和/55 aa 2 02 S1 S2 SUM /S1,S2分别代表2个电机的PWM输出占空比。0x80代表电机停止,0x00代表正转最大速度(100%占空比,机器人向前),0xff代表反转最大速度(100%占空比机器人向后)。/返回值:/字头 桢长度 命令字 应答标志 校验和/55 aa 01 02 S SUM/返回操作标志。设置成功S返回0X01,失败无返回。/#define MOTO_SET 0X02 /2路电机调速控制void loop() /定义变量 int dataLen = 0; /数据长度 int start_flag = 0; /数据帧起始标志 int data_index = 0; /数据帧索引 int com_index = 0; /命令索引 int temp_char1 = 0; /接收暂存器1 int temp_char0 = 0; /接收暂存器1 int i,x,y; /变量 int state = 0; /接收数据帧状态 1代表有数据帧,0代表没有接收到数据帧 int SUM; /校验和 int RxData32; /数据存储寄存器 int Serial_flag; int Moto1S,Moto2S; /电机1.2 速度控制暂存 int Moto1D,Moto2D;/电机1.2 方向控制暂存 while(1) temp_char1 = Serial.read(); /读取串口数据if(temp_char1!=-1)/有数据接收到 Serial_flag=1; if(start_flag = 0) / 判断 是否有 0X55 0XAA 数据帧头 if( temp_char1 = UART_START1) if(temp_char0 = UART_START0) start_flag = 1; RxData0=UART_START0; RxData1=UART_START1; data_index = 0; com_index = 0; else temp_char0 = temp_char1; else if( com_index 2) switch(com_index) case 0 : RxData2 = temp_char1;/数据长度 dataLen = temp_char1; break; case 1 : RxData3 = temp_char1; /命令字 break; com_index+; else if(data_index dataLen)& (dataLen dataLenMax)/接收数据,同时数据不大于最大数据长度 RxDatadata_index+4 = temp_char1;data_index +; else RxDatadata_index+4 = temp_char1; state = 1; start_flag = 0; if(state = 1)/如果有数据帧接收到 SUM = 0; for(i=0; i=150) x=150; else if(RxData 4=150) y=150; else if(RxData6=30) y=30; else y = RxData6; servoX.write(x); servoY.write(y); state = 0; else if(RxData3 = MOTO_SET) /电机控制命令 /电机1控制量变换/ if(RxData4 = 0X80) Moto1S = 0; else if(RxData4 0X80) /小于0X80的控制数据 代表正转 Moto1D = FORW;/正转 Moto1S = 0xff - RxData4*2; /将0X00最大速度 到0X7F 最小速度,转换为0最小到255最大速度的值 else /大于0X80的控制数据 代表反转 Moto1D = BACK;/反转 Moto1S = (RxData4 - 0X80)*2;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年自考专业(建筑工程)考试历年机考真题集带答案详解(培优B卷)
- 农发行九江市都昌县2025秋招半结构化面试题库及参考答案
- 农发行十堰市竹溪县2025秋招信息科技岗笔试题及答案
- 2025年江苏省卫生健康委员会所属事业单位长期招聘81人(二)笔试备考题库及参考答案详解
- 农发行泸州市江阳区2025秋招笔试英文行测高频题含答案
- 监护仪考试题及答案
- 驾驶考试员考试题大全及答案
- 2025年“安全生产事故隐患排查”知识竞赛考试历年机考真题集完整版附答案详解
- 家纺知识考试题及答案
- 加法口算考试题及答案解析
- 2025四川达州宣汉县国有资产管理服务中心县属国有企业招聘劳动合同职工26人笔试历年参考题库附带答案详解
- 2025年下半年杭州市上城区丁兰街道办事处招聘编外工作人员11人考试参考题库及答案解析
- 2025年合肥市广播电视台(文广集团)招聘12人考试参考题库及答案解析
- 新教科版小学1-6年级科学需做实验目录
- GB/T 8492-2024一般用途耐热钢及合金铸件
- GB/T 17880.5-1999平头六角铆螺母
- 2023年陕西省直和西安市接收军转干部划分条件
- 客诉客退产品处理流程
- 自来水厂操作规程手册范本
- 中职实用美术设计基础 2基础教学课件
- 体育与健康人教版四年级-足球-脚背正面运球教案
评论
0/150
提交评论