基于Arduino的WiFi视频小车设 计 制 作 方 案_第1页
基于Arduino的WiFi视频小车设 计 制 作 方 案_第2页
基于Arduino的WiFi视频小车设 计 制 作 方 案_第3页
基于Arduino的WiFi视频小车设 计 制 作 方 案_第4页
基于Arduino的WiFi视频小车设 计 制 作 方 案_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、“基于Arduino的WiFi视频小车”设 计 制 作 方 案云南施甸第二完全中学二一六年十一月一日目录一、项目产生的背景分析 21.1项目想法 21.2用户将如何从产品中获益 2-3二、方案设计 32.1小车整体系统2-32.2小车部件介绍3-5三、小车组装 63.1小车配件购置63.2小车部件组装7-103.3小车程序代码的调试113.3.1小车驱动安装113.3.2小车编程环境(arduino 1.6.3)11-20四、实践总结 21五、小车设计制作的里程碑21六、本项目初步预算工具清单列表22 “基于Arduino的WiFi视频小车”设计制作方案一、项目产生的背景分析1.1项目想法现在

2、是一个智能化的时代,各种智能化设备正在逐步替代人为的操作。随着汽车工业的迅速发展,关于智能汽车的研究也越来越受人关注。设计的智能小车能够实现自动寻迹、避障功能、可控制行驶速度、电脑手机wifi连接控制行驶及其他的控制方式。本系统能实现对小车的运动状态进行实时控制。系统控制灵活、可靠、精度高,可满足对系统的各项要求。通过对本小车的研究,我们可以初步构建智能汽车的模型与理论基础。所谓的wifi智能小车就是可以通过WIFI网络控制的视频传输可移动甚至可以安装其他机械手各类传感器实现数据互动的小车,对于那些不安全的以及人无法进入的场所进行无线监测,wifi小车监控是一个很好的解决方案,能够很好的进行监

3、控控制。现在无线wifi功能的设备随处可见,本设计利用现有的网络资源搭建一台wifi视频监控小车,即利用带有wifi的设备进行控制小车,实现无线监控。1.2用户将如何从产品中获益本设计产品的受益人群包括814岁的学生和广大电子爱好者,从中不仅锻炼了动手能力,学习Arduino编程的一些基础知识,激发他们爱好科技的兴趣二、方案设计2.1小车整体系统该小车硬件部分由Arduino UNO单片机、电机驱动模块XB-L293D、keys红外接收模块、无线路由模块、视频监控模块、循迹模块、避障模块。系统结构如下图:外接电源避障模块轮子Keys红外接收器循迹模块无线路由模块XB-L293D驱动板4个直流电

4、机Arduino UNO主控板视频监控模块2.2小车部件介绍小车主板:arduino是该小车的控制中心,需要保证小车的正常运行,在装配时必须胆大心细,保证组装无误。小车电机驱动板:一般情况下,单片机不能直接驱动电机,故必须外加驱动电路。最常见的比如H桥电路,由于本小车是四个驱动电机,所以该电路设计成了双H桥驱动电路。该驱动电路可以直接驱动两路330V直流电机,将小车一侧的两个电机并在一起,IN1、IN2、IN3、IN4引脚从arduino板接入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机停转。这样就实现了小车的四轮驱动控制小车避障、循迹模块:利用红外光电传感器对路面黑色轨迹

5、进行检测并将检测的信号反馈会arduino单片机,arduino单片机会返回的信号进行分析判断,及时控制电机控制小车的方向,从而实现避障、循迹。避障传感器 循迹传感器红外通信模块:红外遥控系统主要分为调制、发射和接收三部分。红外接收模块中的一体化红外接收头,内部集成了红外接收电路,包括红外检测二极管,放大器,限幅器,带通滤波电容,积分电路,比较器等。能够将接收到的调制波进行解调。要使用遥控器控制arduino,首先我们得知道遥控器各按键对应的编码,不同的遥控器,不同的按键,不同的协议,对应不同的编码。通过得到的编码,改到程序中,就能实现与红外模块的通信。无线路由模块:可通过WIFI操控前进、后

6、退、左转、右转、视频监控和拍照等。三、小车组装3.1小车配件购置本小车配件通过淘宝网购配置来的。/index.htm?spm=a1z10.1-c.w5002-.2.1RiEGw,具体配置清单如下:3.2小车部件组装电机、轮子、底盘安装在安装时多研究一下说明书,四驱电机接线时一定要特别注意不能接错,否则会导致小车整体功能不能实现。路由器、视频安装电机驱动板安装安装时驱动板对位空的铜柱螺丝没必要一次性扭紧,到整车安装完成后再扭紧,在这一步最为重要,除主板接线外,其他的线接到驱动板时,必须按原理接线图来进行一一连接,同时线的排线安放整齐用扎带来进行适当固

7、紧。L293D原理图Arduino uno R3主板安装安装时把小车主板四个空装入底盘的铜柱,固定好主板,接下来就是把线连接好,切记一定要按说明书上的连接示意图来进行连接,此步一定要细心些。这样整个小车就组装好了。如下组装好的整车图:小车排线连接图3.3小车程序代码的调试3.3.1小车驱动安装3.3.2小车编程环境(arduino 1.6.3)XB-4WD-ARDUINO-WIFI智能小车前进后退左转右转方法【调速】程序:/* 电机的引脚定义及接线说明*/int L_IN_Positive=14; /ARDUINO(A0)- L293驱动板(L+) int L_IN_Negative=15;

8、/ARDUINO(A1)- L293驱动板(L-) int R_IN_Positive=16; /ARDUINO(A2)- L293驱动板(R+) int R_IN_Negative=17; /ARDUINO(A3)- L293驱动板(R-)/* 端口初始化*/void setup() pinMode(L_IN_Positive, OUTPUT); /定义数字14 接口为输出接口 pinMode(L_IN_Negative, OUTPUT); /定义数字15 接口为输出接口 pinMode(R_IN_Positive, OUTPUT); /定义数字16 接口为输出接口 pinMode(R_IN

9、_Negative, OUTPUT); /定义数字17 接口为输出接口/* 小车前进*/void front_run(int a) /前进 digitalWrite(L_IN_Positive, HIGH); digitalWrite(L_IN_Negative, LOW); analogWrite(L_IN_Positive,150); analogWrite(L_IN_Negative, 0); digitalWrite(R_IN_Positive, HIGH); digitalWrite(R_IN_Negative, LOW); analogWrite(R_IN_Positive,150

10、); analogWrite(R_IN_Negative,0); delay(a * 100); /* 小车后退*/void back_run(int b) /后退 digitalWrite(L_IN_Positive, LOW); digitalWrite(L_IN_Negative, HIGH); analogWrite(L_IN_Positive,0); analogWrite(L_IN_Negative, 150); digitalWrite(R_IN_Positive, LOW); digitalWrite(R_IN_Negative, HIGH); analogWrite(R_IN

11、_Positive,0); analogWrite(R_IN_Negative,150); delay(b * 100); /* 小车左转*/void left_run(int c) /左转 digitalWrite(L_IN_Positive, LOW); digitalWrite(L_IN_Negative, LOW); analogWrite(L_IN_Positive,0); analogWrite(L_IN_Negative, 0); digitalWrite(R_IN_Positive, HIGH); digitalWrite(R_IN_Negative, LOW); analog

12、Write(R_IN_Positive,150); analogWrite(R_IN_Negative,0); delay(c * 100); /* 小车右转*/void right_run(int d) /右转 digitalWrite(L_IN_Positive, HIGH); digitalWrite(L_IN_Negative, LOW); analogWrite(L_IN_Positive,150); analogWrite(L_IN_Negative, 0); digitalWrite(R_IN_Positive, LOW); digitalWrite(R_IN_Negative,

13、 LOW); analogWrite(R_IN_Positive,0); analogWrite(R_IN_Negative,0); delay(d * 100); /* 主程序*/void loop() front_run(1); /前进 delay(1000); back_run(1); /后退 delay(1000); left_run(1); /左转 delay(1000); right_run(1); /右转 delay(1000); 注意在上传程序时串口设置在COM3上,主板上的针脚5V GND和数字针脚0、1上的线先不要插入,否则会出现上传错误。XB-4WD-ARDUINO-WI

14、FI智能小车红外遥控器程序代码/#include /* 红外的引脚定义及接线说明/int RECV_PIN = 7; /ARDUINO(7)- L293D驱动板(红外)/ 电机的引脚定义及接线说明*/int L_IN_Positive=14; /ARDUINO(A0)- L293D驱动板(L+) int L_IN_Negative=15; /ARDUINO(A1)- L293D驱动板(L-) int R_IN_Positive=16; /ARDUINO(A2)- L293D驱动板(R+) int R_IN_Negative=17; /ARDUINO(A3)- L293D驱动板(R-)/* 控制

15、小车的红外编码*/long front_run = 0x00FF18E7; long back_run = 0x00FF4AB5;long left_run = 0x00FF5AA5;long right_run =0x00FF10EF;long stop = 0x00FF38C7;IRrecv irrecv(RECV_PIN); /库函数decode_results results;void dump(decode_results *results) int count = results-rawlen; if (results-decode_type = UNKNOWN) Serial.p

16、rintln(Could not decode message); else if (results-decode_type = NEC) Serial.print(Decoded NEC: ); else if (results-decode_type = SONY) Serial.print(Decoded SONY: ); else if (results-decode_type = RC5) Serial.print(Decoded RC5: ); else if (results-decode_type = RC6) Serial.print(Decoded RC6: ); Seri

17、al.print(results-value, HEX); Serial.print( (); Serial.print(results-bits, DEC); Serial.println( bits); Serial.print(Raw (); Serial.print(count, DEC); Serial.print(): ); for (int i = 0; i rawbufi*USECPERTICK, DEC); else Serial.print(-(int)results-rawbufi*USECPERTICK, DEC); Serial.print( ); Serial.pr

18、intln();/* 端口初始化*/void setup() Serial.begin(9600); pinMode(RECV_PIN, INPUT); pinMode(L_IN_Positive,OUTPUT); pinMode(L_IN_Negative,OUTPUT); pinMode(R_IN_Positive,OUTPUT); pinMode(R_IN_Negative,OUTPUT); irrecv.enableIRIn(); / Start the receiverint on = 0;unsigned long last = millis();/* 主程序*/void loop

19、() if (irrecv.decode(&results) if (millis() - last 250) on = !on; digitalWrite(13, on ? HIGH : LOW); dump(&results); if (results.value = front_run ) digitalWrite(R_IN_Positive,HIGH);/使直流电机(右)GO digitalWrite(R_IN_Negative,LOW); digitalWrite(L_IN_Positive,HIGH);/使直流电机(左)GO digitalWrite(L_IN_Negative,L

20、OW); if (results.value = back_run ) digitalWrite(R_IN_Positive,LOW);/使直流电机(右)后退 digitalWrite(R_IN_Negative,HIGH); digitalWrite(L_IN_Positive,LOW);/使直流电机(左)后退 digitalWrite(L_IN_Negative,HIGH); if (results.value = left_run ) digitalWrite(R_IN_Positive,HIGH);/使直流电机(右) STOP digitalWrite(R_IN_Negative,HI

21、GH); digitalWrite(L_IN_Positive,HIGH);/使直流电机(左)GO digitalWrite(L_IN_Negative,LOW); if (results.value = right_run ) digitalWrite(R_IN_Positive,HIGH);/使直流电机(右)GO digitalWrite(R_IN_Negative,LOW); digitalWrite(L_IN_Positive,HIGH);/使直流电机(左)STOP digitalWrite(L_IN_Negative,HIGH); if (results.value = stop )

22、 digitalWrite(R_IN_Positive,HIGH);/使直流电机(右)STOP digitalWrite(R_IN_Negative,HIGH); digitalWrite(L_IN_Positive,HIGH);/使直流电机(左)STOP digitalWrite(L_IN_Negative,HIGH); last = millis(); irrecv.resume(); / Receive the next value 在做此项调试时先把IRremote函式库资料夹放进Arduino libraries目录底下XB-4WD-ARDUINO-WIFI智能小车WIFI遥控程序代

23、码:/* 电机的引脚定义及接线说明*/int L_IN_Positive=14; /ARDUINO(A0)- L293驱动板(L+) int L_IN_Negative=15; /ARDUINO(A1)- L293驱动板(L-) int R_IN_Positive=16; /ARDUINO(A2)- L293驱动板(R+) int R_IN_Negative=17; /ARDUINO(A3)- L293驱动板(R-)int L_EN = 3; /ARDUINO(3) - L293驱动板(LEN)int R_EN = 5; /ARDUINO(5) - L293驱动板(REN)/* 控制编码*/i

24、nt wifi_value; /* 小车前进*/ void front_run(void) analogWrite(L_EN,255); /调节参数可调速度(0-255) analogWrite(R_EN,255); /调节参数可调速度(0-255) digitalWrite(L_IN_Positive,HIGH); digitalWrite(L_IN_Negative,LOW); digitalWrite(R_IN_Positive,HIGH); digitalWrite(R_IN_Negative,LOW); /* 小车后退*/void back_run(void) analogWrite

25、(L_EN,255); /调节参数可调速度(0-255) analogWrite(R_EN,255); /调节参数可调速度(0-255) digitalWrite(L_IN_Positive,LOW); digitalWrite(L_IN_Negative,HIGH); digitalWrite(R_IN_Positive,LOW); digitalWrite(R_IN_Negative,HIGH); /* 小车左转*/void left_run(void) analogWrite(L_EN,180); /调节参数可调速度(0-255) analogWrite(R_EN,180); /调节参数

26、可调速度(0-255) digitalWrite(L_IN_Positive,LOW); digitalWrite(L_IN_Negative,HIGH); digitalWrite(R_IN_Positive,HIGH); digitalWrite(R_IN_Negative,LOW); /* 小车右转*/ void right_run(void) analogWrite(L_EN,180); /调节参数可调速度(0-255) analogWrite(R_EN,180); /调节参数可调速度(0-255) digitalWrite(L_IN_Positive,HIGH); digitalWr

27、ite(L_IN_Negative,LOW); digitalWrite(R_IN_Positive,LOW); digitalWrite(R_IN_Negative,HIGH); /* 小车停止*/void stop_run(void) analogWrite(L_EN,0); analogWrite(R_EN,0); digitalWrite(L_IN_Positive,LOW); digitalWrite(L_IN_Negative,LOW); digitalWrite(R_IN_Positive,LOW); digitalWrite(R_IN_Negative,LOW); /* 端口初

28、始化*/void setup() Serial.begin(9600); /设置波特率为9600bps wifi_value=0; pinMode(L_IN_Positive,OUTPUT); pinMode(L_IN_Negative,OUTPUT); pinMode(R_IN_Positive,OUTPUT); pinMode(R_IN_Negative,OUTPUT); /* 主程序/void loop() if(Serial.available() wifi_value = Serial.read(); switch(wifi_value) case 4: /前进 front_run(

29、); wifi_value=0; break; case 2: /后退 back_run(); wifi_value=0; break; case 3: /左转 left_run(); wifi_value=0; break; case 1: /右转 right_run(); wifi_value=0; break; case 0: /停止 stop_run(); wifi_value=0; break; 在做此项调试时,先把小车的APP下载到手机并进行安装,安装完成后打开小车WALN设置,连接到小车专用的WIFI设置,界面如下:四、实践总结1、通过本次实践,不仅在考验我们动手能力的同时,还能提高我们对于代码作用驱动具体行动的方式的了解2、学习的方式的多样化理解:纸上得来终觉浅,很多东西不一定要通过看书来了解的,动手同样是一种不可或缺的方式3、能力提升的表现:理解能力,学习能力,动手能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论