




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Arduino开源平台的wifi视频监控小车这个创意是个舶来品。记得有个国外作者做了一个基于Arduino和wifi路由器的智能机器人。要求有摄像头,能够拍摄小车经过地方的影像。要求使用Arduino模块实现控制。要求使用PC通过路由器控制小车。实现这样的机器人很难吗?能不能做一个简化版的?组件列表A4WD小车;ROMEO控制板;5节2300MAH电池;12V电池包;充电器;上海贝尔 RG-100A路由器;中星微301摄像头 ;两自由度DF15MG云台。图1 基于Arduino开源平台的WiFi视频监控小车图2 Arduino_romeo主控板图3 小车图4 云台和摄像头图5 摄像头源代码
2、- 基于Arduino开源平台的wifi视频监控小车2012年06月25日 12:04来源:互联网作者:秩名我要评论(0)源代码下面放出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;
3、/云台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); /置高,设置方向向前elsedigitalWrite(IN1,HIGH);/置低,设置方向向后if(M1_EN=0)/M1电机的速度analogWrite(EN1,LOW);/置低,停止elseanalogWrite(EN1,M1_EN);/否则,就设置相应的数值/M2/if(M2_DIR
4、=FORW)/M2电机的方向digitalWrite(IN2,LOW);/置高,方向向前elsedigitalWrite(IN2,HIGH);/置低,方向向后if(M2_EN=0)/M2电机的速度analogWrite(EN2,LOW);/置低,停止elseanalogWrite(EN2,M2_EN);/否则,就设置相应的数值void setup()int i;for(i=4;i=7;i+)/设置控制电机的各端口为输出模式pinMode(i, OUTPUT);Serial.begin(19200);/设置波特率为19200bpsservoX.attach(10);servoY.attach(1
5、1);/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越高
6、,运动速度越快,范围为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%占空比机器人向后)。/
7、返回值:/字头 桢长度 命令字 应答标志 校验和/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; /接收暂存器1int temp_char0 = 0; /接收暂存器1int i,x,y; /变量int state = 0; /
8、接收数据帧状态 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(t
9、emp_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(da
10、ta_index dataLen) & (dataLen =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 -
11、 RxData4*2; /将0X00最大速度 到0X7F 最小速度,转换为0最小到255最大速度的值else /大于0X80的控制数据 代表反转Moto1D = BACK; /反转Moto1S = (RxData4 - 0X80)*2; /将0XFF最大速度 到0X81 最小速度,转换为0最小到254最大速度的值/电机2控制量变换/if(RxData5 = 0X80) Moto2S = 0;else if(RxData5 0X80) /小于0X80的控制数据 代表正转Moto2D = FORW; /正转Moto2S = 0xff - RxData5*2; /将0X00最大速度 到0X7F 最小
12、速度,转换为0最小到255最大速度的值else /大于0X80的控制数据 代表反转Moto2D = BACK; /反转Moto2S = (RxData5 - 0X80)*2; /将0XFF最大速度 到0X81 最小速度,转换为0最小到254最大速度的值Motor_Control(Moto1D,Moto1S,Moto2D,Moto2S);/电机速度及其方向控制state = 0;程序使用了一种帧结构 每个数据命令都是 55 AA开头,最后一个字节有一个简单的校验和。这样是为了防止路由器发出错误数据干扰小车。因为据我观察,路由器在启动的时候会发出一大堆字符。如果协议太简单小车可能会读取到错误数据乱
13、动作。程序做了小车速度控制,及其两个云台舵机控制在里面。云台X轴舵机接数字10口,Y轴舵机接11口。其他功能可以在上面增加。此时下载好程序后可以通过 JoystickInterface 这个软件用USB线连接测试一下小车是否能够可靠运行。如果USB线能控制,将路由器的串口线接在ROMEO的串口,对应关系为 路由器G接ROMEO板GND,T接RX,R接TX。注意接线最好都断电操作。修改控制按键键值,下面是一些控制代码,将键抬起设置为停止这样就可以在无按键的时候小车自动停止。停止 55AA0202808003100% 速度前进 55AA0202000003100% 速度后退 55AA0202FFF
14、F01100% 速度左转 55AA0202FF0002100% 速度右转 55AA020200FF02直至Wifi监控小车就算基本功能实现完毕。后面还有很多功能可以试试,比如通过以太网远程遥控。加一些传感器,车灯什么的。可以发挥的空间很大。相关问题Q:什么是Wifi Robot无线远程智能遥控小车?A:Wifi Robot无线远程智能遥控小车就是利用非常成熟的WIFI无线网络为数据载体,实现控制数据,音视频双向数据交换而达到控制小车和视频监控等等功能。Q:Wifi Robot无线远程智能遥控小车有什么功能?A:Wifi Robot无线远程智能遥控小车是集无线通讯、实时四驱、多向机械云台、视频监控、电器红外遥控、环境温度检测、为一体的多功能智能遥控车。Q:Wifi Robot无线远程智能遥控小车用在什么地方?A:Wifi Robot无线远程智能遥控小车可以放在公司作为产品演
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村租地种植转让合同范本
- 付义务赠与合同范本
- 发包土地合同范本
- 出让厂房用地合同范本
- 保理合同保证合同范本
- 卖菜门店转让合同范本
- 厨师绩效合同范本6
- 高血压临床管理探讨-从基础到临床的全程管理策略
- 2025年水利职业技能大赛(河道修防技术赛项)备赛参考试指导题库(含答案)
- 腿部残疾护理方法
- 骶髂关节损伤郭倩课件
- 内科学疾病概要-支气管扩张课件
- 2025陕西渭南光明电力集团限公司招聘39人易考易错模拟试题(共500题)试卷后附参考答案
- 预防感冒和流感的方法
- 2024年黑龙江职业学院高职单招语文历年参考题库含答案解析
- 2024年南京旅游职业学院高职单招语文历年参考题库含答案解析
- 股指期货基础知识介绍培训课件
- 2024年北京东城社区工作者招聘笔试真题
- xx学校培训部工作职责
- T-GXAR 005-2024 制冷机房运行维护规程
- 开工第一课安全培训总结精彩
评论
0/150
提交评论