毕业设计学年设计wifi智能车Arduino.docx
- 文档编号:7121550
- 上传时间:2023-01-20
- 格式:DOCX
- 页数:13
- 大小:428.80KB
毕业设计学年设计wifi智能车Arduino.docx
《毕业设计学年设计wifi智能车Arduino.docx》由会员分享,可在线阅读,更多相关《毕业设计学年设计wifi智能车Arduino.docx(13页珍藏版)》请在冰豆网上搜索。
毕业设计学年设计毕业设计学年设计wifi智能车智能车Arduino简单控制系统设计与实现学年设计任务书学院计算机与信息工程专业网络工程课程名称简单控制系统设计与实现学年设计题目基于Android和Arduino的遥控小车的设计与实现完成期限自2015年6月25日至2015年7月10日共2周内容及任务一、项目目的通过基于Android和Arduino的遥控小车的设计与实现,可以熟悉Arduino基本的原理和电路连接方法;熟悉电机驱动模块和WiFi模块的工作原理;熟悉电机驱动模块的使用。
复习嵌入式程序设计、数字电路、Java编程、模拟电路等相关课程知识,培养学生对应用系统开发能力。
二、项目任务的主要内容和要求设计使用Arduino开发套件和Android手机软件,通过WiFi发送控制指令至Arduino开发板,Arduino开发板接收到控制指令后,根据指令驱动遥控小车的转速和方向。
三、设计要求:
1.编写安卓软件通过WiFi向Arduino板发送数据2.Arduino板根据接收的数据控制小车移动3.开发板通过电机驱动模块控制电机运转四、项目设计(研究)思路1、查找资料,熟悉单片机、L298N、WiFi模块(HLK-RM04)使用方法及引脚功能。
设计Arduino电路图以及程序。
2、编译软件,烧写软件,调试,最后完成工作。
四、具体成果形式和要求1.能够显示在手机安卓界面显示所需的控制按钮;2.通过设置5个按钮可以控制小车前后左右与停止;进起止日期工作内容度安排6.25-6.30根据要求查找资料,进行代码的编写及调试7.1-7.4连接电路,进行代码与电路的测试7.5-7-6书写设计文档,对设计进行测试、完善7.6-7.10修改报告,完善报告,提交文档主要参考资料1赵生慧.Java面向对象程序设计M.北京:
中国水利水电出版社,2010.2陈吕洲.Arduino程序设计基础M.北京:
北京航天航空出版社,2014.3陈大钦.电子技术基础实验M.北京:
高等教育出版社,2004.4何立民.单片机高级教程.第1版M北京:
北京航空航天大学出版社,2001.5吴亚峰.Android核心技术与实例讲解M北京:
电子工业出版社,2010指导教师意见(签字):
年月日系(教研室)主任意见(签字):
年月日简单控制系统设计与实现学年设计任务书学院名称:
计算机与信息工程学院班级名称:
网工122学生姓名:
赵频扬学号:
2012211531题目:
基于Android和Arduino的遥控小车的设计与实现指导教师:
王汇彬起止日期:
2015年6月25日至2015年7月10日一、选题背景随着科技的发展,芯片技术已经越来越与我们的生活紧密联系,给生活带来了不少的便利,不管是智能手机还是相机或电脑,都离不开芯片技术的发展与进步。
在最近几年,出现了一种叫做Arduino的芯片开发板,它的成本低廉,开发简单方便,而且功能强大。
可以非常方便的连接各种传感器,是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的开发板板)和软件(ArduinoIDE)。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。
在这里就是使用的Arduino的开发平台,充分利用它的各种便利特性设计了这样的一款智能小车,这款设计可以利用WiFi控制开发板进而实现远程控制小车运行,它虽然只是一个简单的应用而已但是已经能够初步表现出了Arduino开发平台的宽广潜力和应用价值。
过去人们常见的电动四驱车玩具,一般只能往前跑行驶,甚至无法控制它。
再到后来便有了遥控车,这种遥控车便是利用无线电遥控,通过无线电来控制舵机从而达到操纵车子的运行方向以及前后的目的。
但是这种车子还要顾及到使用者的能力以及操纵的水平。
而且现在有很多设计控制距离过短,无线电干扰等一系列的限制从而引发了一种全新的模式,那就是WiFi智能小车,它不需要人来进行控制,能够自动利用传感器来感知和读取环境中的数据,从而按照要求来自动工作,这样的话就能够在人类不能涉足地方进行工作,而且还能够极大的减轻了人力和物力,因为具有非常大的使用价值和广阔的前景。
二、设计理念2.1设计原理与方法本设计中直流电机控制系统的主要功能包括:
实现对直流电机的正转、反转,并且可以调整电机的转向,能够通过Android软件很方便的实现电机的智能控制。
主体电路:
主要由AT89S52单片机的I/O端口、定时计数器、外部中断扩展等控制直流电机的的正转和反转,并且可以调整电机的转速,能够很方便的实现电机的智能控制。
其间是通过AT89S52单片机产生脉宽可调的脉冲信号并输入到L298驱动芯片来控制直流电机工作的。
该直流电机控制系统由以下电路模块组成:
设计控制部分:
主要由AT89S52单片机的外部中断扩展电路组成。
直流电机控制实现部分主要由电机和L298直流电机驱动模块组成。
智能小车采用四轮驱动,左侧两轮由相同引脚控制,方向速度一致,右侧两轮由另外相同引脚控制,方向速度一致。
通过WiFi发送控制指令至Arduino开发板,Arduino开发板接收到控制指令后,根据指令驱动遥控小车的转速和方向。
为实现所有功能,需要一个控制中心,即主控单元,实时接收各方面信息并处理,然后发出指令,从而实现功能。
要实现无线遥控功能,需要一个WiFi模块并编写一个Android控制程序,智能小车主体还要设置一个信号接收的模块接受遥控的指令并把信号转换为电信号传输给主控单元,再由主控单元处理并发送指令,驱动发动机转动和控制轮子以改变方向。
2.2软件部分a)ArduinoArduino可以快速使用与MacromediaFlash,Processing,Max/MSP,PureData,SuperCollider等软件结合,作出互动作品。
Arduino可以使用现有的电子元件例如开关或者传感器或者其他控制器件、LED、步进马达或其他输出装置。
Arduino也可以独立运行,并与软件进行交互,例如:
MacromediaFlash,Processing,Max/MSP,PureData,VVVV或其他互动软件,Arduino的IDE界面基于开放源代码,可以让我们免费下载使用,开发出更多令人惊艳的互动作品。
Arduino可使用ICSP线上烧入器,将bootloader烧入新的IC晶片;可依据官方电路图,简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:
红外线,超声波,热敏电阻,光敏电阻,伺服马达等);支援多样的互动程序例如:
MacromediaFlash、Max/Msp、VVVV、PD、C、Processing等;使用低价格的微处理控制器(ATMEGA8-168);USB接口,不需外接电源。
另外有提供9V直流电源输入;在应用方面,利用Arduino,突破以往只能使用鼠标,键盘,CCD等输入的装置进行互动内容的设计,可以更简单地达成单人或多人游戏互动。
b)ArduinoIDE这是Arduino运行界面。
Arduino语言是一种类c的语言。
在这个界面里有我们编程时最常用的组件。
当我们把鼠标放在上面就会在右侧出现按键的功能。
图2-1ArduinoIDE运行界面c)Eclipse的功能:
Eclipse1是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C+、COBOL、PHP、Android等编程语言的插件已经可用。
Eclipse专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成EclipsePlatform、JDT、CDT和PDE。
JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,EclipsePlatform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
它提供建造块和构造并运行集成软件开发工具的基础。
本次设计利用Eclipse软件中的Android编程语言实现WiFi连接、数据发送功能与界面显示。
layout界面布局如图2-2所示图2-2Android界面布局本次设计不仅使用Eclipse编写Android布局文件(activity_main.xml),还需要将WiFi连接与数据发送的代码(如图2-3)进行编写。
通过编写一个MainActivity.java文件,对布局文件中的五个按钮设置事件监听。
图2-3MainActivity.java部分代码2.3硬件部分单片机部分设计采用AtmelAtmega328微处理控制器。
其性能为:
DigitalI/O数字输入/输出端共013。
AnalogI/O模拟输入/输出端共05。
支持ISP下载功能。
输入电压:
接上电脑USB时无须外部供电,外部供电7V12V直流电压输入。
输出电压:
5V直流电压输出和3.3V直流电压输出。
图2-4Arduino单片机实物图电机、电机驱动模块采用由双极性管组成的H桥电路(L298N)。
用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。
这种电路由于工作在管子的饱和截止模式下,则效率非常高;H桥电路保证了可以简单地实现转速和方向的控制,电子开关的速度很快,稳定性也很高。
而且它有更强的驱动能力。
而且L298N有过电流保护功能,当出现电机卡死时,可以保护电路和电机。
这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。
因此决定采用使用功率三极管作为功率放大器的输出控制直流电机。
三、总体设计设计需求:
使用Arduino开发套件和Android手机软件,通过WiFi发送控制指令至Arduino开发板,Arduino开发板接收到控制指令后,根据指令驱动遥控小车的转速和方向。
硬件支持:
智能小车的硬件部分有Arduino单片机、电源、四个直流电动机、电机驱动板、车身等。
电源连接在Arduino单片机上给整个小车供电。
小车以Arduino单片机为核心,Android手机通过WiFi来控制连接在电机驱动板上的直流电动机的运转,从而实现小车的前、后、左、右以及停止。
图3-1硬件设计框架四、详细设计4.1Arduino端本设计是通过利用WiFi模块(HLK-RM04)接收来自Android客户端的数据,最后利用Arduino单片机与L298N电机驱动模块控制小车移动方向。
具体过程如下:
先把WiFi模块连接到Arduino板,然后通过移动客户端向单片机发送数据。
单片机根据相应的数据进行处理,进而控制电机转动。
Arduino端代码主要功能:
通过WiFi模板接收数据,单片机处理接收的数据并通过L298N驱动模块控制小车转动。
L298N模块的IN1、IN2、IN3、IN4分别连接arduino的、11、12、13接口,电源12V口接arduino的5V,GND接地。
把Arduino的RX接WiFi模块的TX,Arduino的TX接WiFi模块的RX。
备注:
若修改代码,需要重新烧录程序时,请先把RX/TX的连线断开,代码烧录成功后,再重新连接RX/TX。
因为在烧录程序时也是使用RX/TX引脚,为了避免程序烧录不成功,需要先把WiFi的TX/RX断开。
程序设计流程图如图4-1所示。
图4-1程序设计流程图首先定义三个函数分别为:
mRun(前进)、mBack(后退)、mStop(停止)。
电机的右转或左转取决于电机端的接线和控制脚的顺序void_mRun(intpin1,intpin2)小车向前,pin1引脚置高电平,pin2引脚置低电平void_mBack(intpin1,intpin2)电机向后,pin1引脚置高电平,pin2引脚置低电平void_mStop(intpin1,intpin2)小车停止,实际就是将pin1、pin2置高电平当需要转向时,则在函数中调用_mRun(in3,in4),_mBack(in1,in2),使两侧电机转向相反。
从而实现左转或右转。
若单片机接收的字符为“f”左右两侧电机同时向前转动,则小车向前行进。
if(getstr=f)Serial.println(goforward!
);_mStop(in1,in2);_mStop(in3,in4);_mRun(in1,in2);_mRun(in3,in4);同理,当单片机接收的字符为“b”左右两侧电机同时向后转动,小车向后行进。
当若单片机接收的字符为“l”左侧电机向后转动,右侧电机向前转动则小车一直向左转。
elseif(getstr=l)Serial.println(goleft!
);_mStop(in1,in2);_mStop(in3,in4);_mRun(in1,in2);_mBack(in3,in4);同理,若单片机接收的字符为“r”左侧电机向前转动,右侧电机向后转动则小车一直向右转。
4.2Android端Android手机连接电脑,把应用程序安装到真实的手机上。
打开手机WiFi功能,并加入到WiFi模块生成的网络中。
设置服务器的IP和端口。
检查是否可以在手机界面上的按钮发送信号。
首先在应用程序界面中添加五个按钮,分别命名为前进、后退、左转、右转、停止。
对这五个按钮设置事件监听。
当按下“前进”按钮时,手机端则发送“f”字符。
Arduino端通过WiFi收到字符,再进行处理后使小车前进。
再以同样的方式分别对其他四个按钮进行类似的处理。
程序设计流程图如图4-2所示。
图4-2程序设计流程图首先定义五个按钮,分别对按钮设置事件监听caseR.id.button1:
/当“前进”按钮按下时,发送f字符sendScoket(f);break;caseR.id.button2:
/当“后退”按钮按下时,发送b字符sendScoket(b);break;caseR.id.button3:
/当“左转”按钮按下时,发送l字符sendScoket(l);break;caseR.id.button4:
/当“右转”按钮按下时,发送r字符sendScoket(r);break;caseR.id.button5:
/当“停止”按钮按下时,发送s字符sendScoket(s);break;通过Socket套接字发送字符trySocketsocket=newSocket(serverIp,serverPort);OutputStreamos=socket.getOutputStream();DataOutputStreamdos=newDataOutputStream(os);dos.write(msg);编写layout布局文件,编译完成后安装到手机效果图如图4-3所示。
图4-3Android应用程序界面图4.3WiFi模块把WiFi模块的1号引脚接5v电源,2号引脚接地。
上电完成后,查找WiFi信号,连接到该网络中.备注:
WiFi信号以“HI-LINK_”开头。
查看无线网络连接的详细信息:
图4-4无线网络属性打开浏览器,在地址栏中输入:
192.168.11.254,输入用户名和密码(均为admin)进入数据配置。
图4-5身份认证界面前面已经将WiFi模块设置为服务器模式,且用调试助手测试,手机可通过连接服务器向单片机发送数据。
Android应用程序在MainActivity.java中设置服务器的IP和端口。
privateButtonbtn1,btn2,btn3,btn4,btn5;privateStringserverIp=192.168.16.100;privateintserverPort=8080;图4-6WiFi数据配置界面4.4测试与运行接通Arduino板与电机的电源,在Android手机上连接接WiFi模块的服务器,打开编写的应用程序。
当有按钮按下时,小车根据按钮的功能做出对应的动作。
实物图如图4-7所示图4-7连接后的实物图五、结论通过基于Android和Arduino遥控小车的设计与实现学年设计,使我更加完善了自己所学的知识,同时也扎实的以及全面的巩固了有关以前学到的一些单片机与Android方面的知识。
WiFi遥控小车的设计涉及的知识面很多,在这个设计中依然存在一些不足,有待进一步的完善。
此次设计相对于平时实验课也更深入一些,让我在其中确实学习到不少东西。
在这次的学年设计大部分由个人独立完成。
在实现的过程中,我个人也遇到了许多的问题,例如L298N电机驱动模块的连接方法以及WiFi模块的配置、使用方法。
经过一次次的思考和查阅资料,然后自己请教了老师同学,经终于找到了设计中遇到的一些问题的解决方法。
也找到了出来我以前学习中没有解决的问题。
另外,在这次设计过程中学到了课堂上没有的学到的东西,例如Android应用程序的编写。
在实践中学习到真实的知识,通过亲自动手制作各个部分,使我掌握了很多以前不了解的知识,学到的知识也不再是空谈了。
在这次学年设计过程中,我不断发现设计中的错误和自己的错误,我也在不断的修改设计中的问题也不断改正自己的问题,不断领悟到新的知识的内涵,不断获取到新的不同的知识,让自己也学到了很多的课外知识。
参考文献参考文献1赵生慧.Java面向对象程序设计M.北京:
中国水利水电出版社,2010.2陈吕洲.Arduino程序设计基础M.北京:
北京航天航空出版社,2014.3陈大钦.电子技术基础实验M.北京:
高等教育出版社,2004.4何立民.单片机高级教程.第1版M北京:
北京航空航天大学出版社,2001.5吴亚峰.Android核心技术与实例讲解M北京:
电子工业出版社,2010学生签名:
填表日期:
年月日指导教师评语成绩评定指导教师签名:
填表日期:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 学年 设计 wifi 智能 Arduino
![提示](https://static.bdocx.com/images/bang_tan.gif)