毕业设计学设计wifi智能车Arduino.docx
《毕业设计学设计wifi智能车Arduino.docx》由会员分享,可在线阅读,更多相关《毕业设计学设计wifi智能车Arduino.docx(16页珍藏版)》请在冰点文库上搜索。
![毕业设计学设计wifi智能车Arduino.docx](https://file1.bingdoc.com/fileroot1/2023-5/27/c5a26a1f-2131-4895-8e9f-ab3de6a0c394/c5a26a1f-2131-4895-8e9f-ab3de6a0c3941.gif)
毕业设计学设计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)Arduino
Arduino可以快速使用与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的功能:
Eclipse[1]是一个开放源代码的、基于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数字输入/输出端共0~13。
AnalogI/O模拟输入/输出端共0~5。
支持ISP下载功能。
输入电压:
接上电脑USB时无须外部供电,外部供电7V~12V直流电压输入。
输出电压:
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套接字发送字符
try{
Socketsocket=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
学生签名:
填表日期:
年月日
指导教师评语
成绩评定
指导教师签名:
填表日期:
年月日