基于Android的教育机器人平台设计项目论证报告.docx
《基于Android的教育机器人平台设计项目论证报告.docx》由会员分享,可在线阅读,更多相关《基于Android的教育机器人平台设计项目论证报告.docx(37页珍藏版)》请在冰豆网上搜索。
基于Android的教育机器人平台设计项目论证报告
基于Android的教育机器人平台设计
项目论证报告
指导教师:
项目组成员:
静
通信专业1102班级
王栋
自动化专业XX班级
何谦
自动化专业XX班级
东
数学专业1101班级
露
“智能机器人”创新实践班
201X年X月X日
1 项目描述
1.1 项目简介
智能手机现在已经全方位进入我们的生活,说到智能手机不得不提与他们操作系统的龙头android操作系统。
由于安卓系统的实际性和可操作性使得安卓迅速成为主流的操作系统。
此外安卓系统最大的优点是开源,这样对于安卓软件的开发就没了限制,使得用户可用到广泛的免费软件,这样安卓软件的开发就有了空前的市场,安卓开发迎来了一轮热潮。
由于系统的开源性和可操作性,同时系统的流畅性和大量亲民化的可选择设备使得安卓系统在智能手机市场占了头把交椅。
根据市场研究机构ComScore发布的最新调查显示,安卓智能手机在美国的优势进一步扩大,市场份额达到43.7%。
在中国更是恐怖:
“每10部手机,7部都是安卓手机”。
因此我们组的基于安卓系统的wifi控制小车有着广大的潜在用户。
如今安卓的应用领域和市场份额在急速向平板电脑和消费电子,智能家居领域扩。
目前基于安卓手机和wifi技术开发的娱乐软件较多,而控制机电产品的软件却相对较少,我们组设计的基于安卓系统的wifi控制小车将是以手机作为手持终端,通过wifi传输指令和信息控制小车和回传数据的新型wifi小车,由于遥控器是手机,因此携带非常方便,基于wifi的控制系统,不仅可以控制小车,稍微改动就可以用来控制电脑,家用电器等实现智能家居。
因此该项目的成果将不仅仅局限于一个遥控小车,更具有价值的是手机远程遥控系统和智能家居。
1.2 项目任务要求
本课题要求利用安卓手机系统开发一个控制软件,该软件将实现用wifi技术对小车进行控制(包括前进,后退,左转,右转,速度控制)和显示小车传回的数据信息(速度,温度,湿度,CO浓度),同时利用STM32开发板和其他硬件外设设计一辆可wifi控制的小车
(1)实现手机和小车的wife连接
(2)实现数据的收发和对小车的实时控制
(3)软件操作界面简洁美观,可操作性强
(4)小车外形结构合理
2 总体设计方案的选择与论证
基于ARMCortex-M3的STM32F103VET6的XK-I教育机器人平台总体框图如图1所示
图1硬件结构框图
硬件平台是机器人的躯干和大脑,主要包括主控制器ARMCortex-M3的STM32F103VET6、外围传感器以与相应的外围接口电路。
结构平台是机器人要完成一个任务,或实现一定的功能所需要的外在形体,比如一个机器手,除了动作部件外,还有结构部件组成一个有形的机器手。
机械结构的部件设计要让学生能够学习到机械结构方面的知识以与动手能力,目前市场出现的积木结构,非常适合教学,但是目前市场的积木在规格,尺寸上都没有形成统一的标准。
因此,在设计结构部件时,要充分考虑到统一标准。
软件平台是机器人的灵魂,机器人要完成一个任务,除了硬件平台、结构平台提供的有形支撑外,还要给它输入一种思维,那就是软件平台所要完成的功能。
整个过程控制思想如下:
手机发现并连接串口服务器的WIFI,通过WIFI手机和串口服务器便建立了无形的连接,通过手机软件端tcpsocket套接字编程实现两端的端到端通信,实现串口服务器和手机之间的数据通信,小车端通过Uart来实现单片机串口通信实现单片机和串口服务器之间的数据通信,这样就间接地实现了小车和手机的互联通信。
单片机对收到的控制信息进行处理和识别来控制小车相应的部件、传感器,从而达到控制小车和数据采集回显的目的。
3 分模块的选择与论证
3.1单片机模块部分
3.1.1主控芯片
方案一:
芯片选择ATmega16。
ATmega16是8位AVR微控制器具有16KB系统可编程Flash的8位AVR微控制器。
基于增强型AVRRISC结构。
ATmega16AVR核具有丰富的指令集和32个通用工作寄存器。
所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期同时访问两个独立的寄存器。
这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。
是8位微控制器中性价比非常高的单片机。
方案二:
芯片选择STM32F103VET6。
STM32系列32位闪存微控制器基于突破性的ARMCortex-M3核,这是一款专为嵌入式应用而开发的核。
STM32F103VET6处理器价格非常便宜,相当具有竞争力,完全可以取代传统的单片机应用;而其主频却高达72MHz,非常适合多任务工作。
STM32F103VET6还拥有11个定时器,3个USART接口,16个外部中断。
适合作为外设多、任务多的控制控制芯片。
本项目主控芯片选择STM32F103VET6。
主控芯片的选择主要是考虑到本项目需要的传感器非常多,需要一块芯片完成所有的控制和数据采集,这时STM32F103VET6就非常实用。
性能较一般的单片机有很大的提升。
无论是从处理速度上还是端口资源上,STM32F103VET6完全能满足本项目所需。
3.1.2通信部分
方案一:
通信选择蓝牙通信。
以教育机器人平台为本体,通过蓝牙与安卓手机平台建立连接。
该方案优点就是连接简单,底层只需要建立蓝牙驱动程序,然后将蓝牙与安卓平台实现点对点连接。
不足之处是蓝牙通信距离相当的短,只有10m的距离,而且不是很稳定。
方案二:
使用Wi-Fi转RS232通信模块,将机器人本体与手机平台实现点对点连接。
该方案不需要自己写底层通信协议,只需将通信双方连接在同一网络中,其中一方充当服务器,即可进行数据传输。
在机器人底层处理传输的数据,然后转化为机器人执行的动作。
从通信质量和通信有效距离来看,通信方案选用方案二,使用使用Wi-Fi转RS232通信模块,将机器人本体与手机平台实现点对点连接,通过Android手机发送指令,Wi-fi模块接收并处理后将数据传送到芯片,从而实现控制。
3.1.3避障模块
避障模块是选用的HC-SR04超声波传感器。
超声波传感器通过超声波发射装置发出超声波后计时,声波遇到障碍物后返回声波,通过发送和接收的时间误差来计算距离。
超声波测距的公式为L=C×T,式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。
其中传播速度C还与介质温度和湿度有关系,其近似公式为:
C=C0+0.607×T℃,C0为零度时的声波速度332m/s;这样有效地提高了超声波测距的精度。
本项目小车使用4路超声波,每一路超声波的有效角度为15度,使用4路可以满足项目。
3.1.4温湿度模块
温湿度传感器采用数字温湿度传感器DHT11。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
传感器包括一个电阻式感湿元件和一个NTC测温元件,能直接与单片机相接进行测量。
因此具有超快响应、抗干扰能力强、性价比极高等优点,而且传输距离高达20m。
按照数据手册给出的时序图,测出的数据格式为8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。
测量输出的精度为小数点后一位,测量围为20-90%RH、0-50℃,满足本项目要求。
3.1.5烟雾传感器
烟雾传感器采用MQ-2烟雾传感器。
MQ-2对液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等。
原理是在探测器的离室放一α放射源Am241,其不断地持续放射出α粒子射线,以高速运动撞击空气中的氮、氧等分子,在α粒子的轰击下引起电离,产生大量的带正负电荷的离子。
当烟雾粒子进入电离室后,由于气熔胶吸附大量的正负离子,使其中和。
烟雾越浓,导致离子复合几率加快,从而使空气中电离电流迅速下降,电离室阻抗增加,因此根据R值变化可以感受到烟雾浓度的变化,从而实现对火灾的探测。
3.1.6电机驱动
电机驱动用的是L298N驱动电路,此驱动电路的外围电路相对简单,驱动芯片容易控制且相对廉价,它能产生四相控制信号,可用于计算机控制四相单相电机等,使用的是5V的电源电压,最大工作电流为2.5A,它抗干扰能力强,可以实现正反转和PWM调速。
是使用方法成熟的驱动芯片。
电机使能,输入引脚与输出引脚关系如图:
ENA(B)
IN1(IN3)
IN2(IN4)
电机运行情况
H
H
L
正转
H
L
H
反转
H
同IN2(IN4)
同IN1(IN3)
快速停止
L
X
X
停止
3.1.7电机选择
电机选用带有速度测量霍尔传感器的直流减速电机GB37Y3530。
项目中加入wifi模块和锂电池后,车身重量上升,GB37Y3530扭矩大,适合本项目使用。
尾部的双通道霍尔效应编码器测出速度后用于PID运算,让机器人行走速度更为精确。
3.1.8硬件结构框图
图2硬件总框图
3.1.9WIFI通信流程图
图3
3.1.10单片机软件工作流程图
图4
3.2安卓软件部分
3.2.1安卓平台介绍
Android系统是在Google公司基于Linux系统开发的一款手机操作系统,它由5个部分构成:
1.应用程序层
2.应用程序框架
3.函数库
4.Android运行时
5.Linux核
3.2.2搭建安卓开发环境
安卓开发软件一般有NetBeans和Eclipse。
现在普遍流行的是用eclipse,在eclipse上搭建安卓开发环境非常简单,只需要下载最新的安卓SDK,在eclipse的Help里面的InstallNewSoftware里面就可以导入安卓SDK。
安卓使用的是模块化的程序设计结构,界面布局等资源文件和程序主体文件是分开的,极大的方便了软件的设计。
同时,安卓还支持可视化布局,可以很直观的看到软件布局效果图。
安卓可以通过AVD在电脑端实现虚拟手机进行模拟测试。
3.2.2.1软件流程图:
图5
3.2.2.2软件细节描述:
(1)界面设计
安卓的界面布局有5种:
分别是:
线性布局,表格布局,帧布局,相对布局和网格布局。
而其中最常用的是相对布局,因为它有很强的兼容性,可以在任何屏幕大小的安卓手机上正确运行。
所以布局方面我选的是相对布局。
(2)测试界面
功能选择界面:
图6
普通模式界面:
图7
重力感应界面:
超声波蔽障界面:
设置界面:
(3)通信模块设计:
Android支持JDK自身的TCP和UDP编程API,由于TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。
一旦建立连接,两端的程序就可以通过虚拟链路进行通信。
JAVA对基于TCP协议的网络通信提供了良好的封装,Java使用Socket对象来代表两端的通信接口,并通过Socket产生I/O流来进行网络通信。
所以此处我们采用的基于TCP的网络通信方式,让我们的数据包稳定准确的传输。
客户端通常使用Socket的构造器来连接到指定的服务器,Socket有两种构造器:
Socket(InetAddress/StringremoteAddress,intport):
没有指定本地地址,本地端口,默认使用本地主机的默认IP地址。
Socket(InetAddress/StringremoteAddress,intport,InetAddresslocalAddr,intlocalPort):
指定了本地IP地址和端口号适用于本地主机有多个IP地址的情况。
所以我们使用第一种来构造Socket:
Scokets=newSocket(“xxx.xxx.xxx.xxx”,xxxx);
当客户端和服务器产生了对应的Socket后,程序就无需区分服务器和客户端了。
我们可以通过InputStreamgetInputStream();来返回Socket对象对应的输入流,让程序通过该输入流从Socket中取出数据。
通过OutputStreamgetOutputStream();返回Socket对象对应的输出流,让程序输出流向Socket中输出数据。
Wifi模块采用的是wifi转232串口的WF3002,所以我们不用关心wifi是如何转串口的,我们只需要设置模块的IP地址和端口号,把它当做主机,这样就可以通过Socket来通信了。
传输格式:
我们打算在传输容的头部加上标志,比如如果传输的是功能选择信息,那么就在信息的首部加上功能选择标志,同理,如果收到的消息不符合我们的规则,那么这条消息就可能是错误的,我们选择重新发送。
如果2次以上还是原样就忽略此消息。
加入多线程:
由于小车与手机之间的数据交换是很频繁的,即服务器与客户端之间的数据交换是一直存在的,而传统的BufferedReader的readLine()方法读取数据时,该方法成功返回之前,线程会被阻塞,程序无法继续执行,所以我们应该为系统单独启动一条线程,专门负责读取服务器数据。
所以客户端应该包含两条线程,一条负责生成主界面并响应用户动作,并将用户输入的数据写入Socket对应的输出流中,另一条负责读取Socket对应输入流中的数据并将数据显示在程序界面上。
(4)重力感应模块设计:
Androd系统提供了对传感器的支持,如果手机设备硬件提供了这些传感器,安卓应用可以通过传感器来获取设备的外界条件,包括手机设备的运行状态,当前摆放方向,外界的磁场,温度和压力等。
安卓系统提供了驱动程序去管理这些传感器硬件,当传感器硬件感知到外部环境发生改变时,安卓系统负责管理这些传感器数据。
重力感应即是应用的手机的加速度传感器,通过手机3个方向的加速度的不同实现重力感应的效果。
图8
如图x、y、z3个方向,以屏幕的左下方为原点,箭头指向的方向为正。
从-10到10,以浮点数为等级单位:
手机屏幕向上(z轴朝天)水平放置的时侯,(x,y,z)的值分别为(0,0,10);
手机屏幕向下(z轴朝地)水平放置的时侯,(x,y,z)的值分别为(0,0,-10);
手机屏幕向左侧放(x轴朝天)的时候,(x,y,z)的值分别为(10,0,0);
手机竖直(y轴朝天)向上的时候,(x,y,z)的值分别为(0,10,0);
通过这样的规则就可以很方便的编程实现重力感应了。
超声波模块设计:
超声波模块主要功能在单片机上编程实现,所以我这里只是发送一个命令信息来启动超声波模式。
语音识别模块设计:
(暂未实现)
3.3硬件平台设计
3.3.1硬件结构框图
3.3.2电路电源
电源模块为系统其他各个模块提供所需要的电源,可靠的电源方案是整个硬件电路稳定可靠运行的基础。
采用11.1V2200mah30C型号的锂充电电池直接对电机进行供电,LM2576系列是美国国家半导体公司生产的3A电流输出降压开关型集成稳压电路,它含固定频率振荡器(52kHz)和基准稳压(1.23V),并具有完善的保护电路,包括电流限制与热关断电路等,利用该器件只需极少的外围器件便可构成高效稳压电路,故选用LM2576将电压转换成5V供,LM1117是一个低压差电压调节器系列,LM1117提供电流限制和热保护,选用LM1117组成稳压电路,将电压转换成3.3V,向单片机供电。
由于电路需要用到AD转换,故将数字地与模拟地区分开来,使电路更加稳定。
3.3.3超声波避障
超声波传感器是一款通过超声波发射装置发出超声波,根据接收器接到超声波时的时间差就可以知道距离了。
本次设计采用四路超声波传感器,减小机器人行驶过程中的盲区,增加活动的灵活度与准确性。
3.3.4温湿度传感器和烟雾传感器
空气温湿度传感器用来测量空气中的温度和适度,广泛应用于农业、林业、气象、环境控制等行业以与温室大棚、气候室、仓储等场所。
本烟雾传感器就是通过监测烟雾的浓度来实现火灾防的,烟雾报警器部采用离子式烟雾传感,离子式烟雾传感器是一种技术先进,工作稳定可靠的传感器,被广泛运用到各种消防报警系统中,性能远优于气敏电阻类的火灾报警器,本电路中设计了温湿度传感器和烟雾传感器模块,可以实时检测周围环境,并在危害产生之前进行报警。
3.3.5电机驱动电路
设计中采用的是L298驱动电路,此驱动电路的外围电路相对简单,L298采用的是H桥驱动电路,L298置两个H桥,每个桥提供1A的额定工作电流和最大3A的峰值电流,但其最大的不足是需要外接泄放二极管,对电路的连接产生了一定的影响。
LMD18200是美国国家半导体公司推出的专用于直流电动机驱动的H桥组件,同一芯片上集成有CMOS控制电路和DMOS功率器件。
此种芯片瞬间驱动电流可达6A,正常工作电流可达3A,具有很强的驱动能力,而且此种芯片部还具有过流保护的测量电路,可实现电路的过流保护功能。
但由于其价格昂贵,过流保护可通过外围电路与单片机部编程实现,故选用L298驱动电路。
3.3.6wifi模块
该机器人是通过wifi进行控制,设计采用无线数传设备WIFI转串口模块Wifi串口服务器RS232WI-FI,该模块采用DB9接口,模仿电脑9针串口,支持1200~115200bps围的波特率,支持IEEE802.11b/g无线标准。
3.3.7扩展模块
考虑到日后可能需要为机器人增加功能,故把主控芯片未用到的引脚连出来待用,从而方便机器人的改造升级。
3.3.8扩材料选择
小车底盘:
亚克力板由甲基烯酸甲酯单体(MMA)聚合而成,即聚甲基丙烯酸甲酯(PMMA)板材有机玻璃,是一种经过特殊工艺加工的有机玻璃。
同时亚克力板具有极佳的耐候性,较高的表面硬度和表面光泽以与较好的耐高温性能。
PC板有亚克力板同样的性能,但由于亚克力板更容易加工,透光性更好,做小车底盘方便美观,故选用亚克力板。
设计采用3mm厚的亚克力板,市场上销售的亚克力板价格一般为3mm*200mm*300mm8元,5mm*200mm*300mm12元。
采用3mm厚的亚克力板不仅价格便宜而且利于切割,方便日后的加工改造。
电机的选择:
小车底盘采用两层,每层长为250mm,宽为100mm,约重3mm*3.14*0.125*0.125*1.2*2=353.25g,再加上电池的重量303g以与其它器件的重量,小车约重750g左右,选用直径65mm的常用车轮,车轮与地面的滑动摩擦系数约为0.4,同时,电机的额定功率一般要大于负载功率的1.1~1.6倍,结合电机的参数即可计算出功率、转速等(P=F*V;V=W*R;P=F*R*W=T*W)。
4 经费预算与人员安排
4.1经费预算
组别
原件名称
单价(元)
数量
总价
硬件
减速电机
90.0
2
180
超声波传感器
7.29
6
43.74
温湿度传感器
10.59
2
21.18
烟雾传感器
20.39
2
40.78
WIFI模块
209
1
209
车轮
10
2
20
万向轮
5
1
5
亚克力板
8
4
32
STM32F103VET6
25
1
25
钮扣电池
3
1
3
纽扣电池插座
1
1
1
串口母头
1
1
1
MAX232
1
1
1
PCB开板
160
1
160
锂电池
135
1
135
铜柱
0.1
20
2
TLP521-4
5
2
10
LCD12864
35
1
35
LM1117
2
2
4
LM2576
2
2
4
L298N
9
1
9
软件
《疯狂安卓讲义》
71.3
1
71.3
《STM32开发指南》
57.5
1
57.5
4.2人员安排
组员
负责任务
王栋
安卓软件部分
何谦
单片机软件部分
东
小车结构和电路设计
露
文档处理
4.3进度安排
时间
计划任务
7月初到7月中旬
完成对小车整体设计方案的确立
7月中旬到7月底
分模块设计完成理论的论证
8月中旬到8月底
购买器件,制作pcb电路板和小车结构,完善并优化软件
8月底到9月初
完成小车的制作
5 总结
我们认为此项目的独特创新之处在于小车的控制是通过手机来实现,而不是遥控手柄或电脑,从而使得使用更加方便,实现用wifi技术对教育机器人的实时控制。
稍微改动就可以用来控制电脑,家用电器等实现智能家居。
因此该项目的成果将不仅仅局限于一个遥控小车,更具有价值的是手机远程遥控系统和智能家居。
附录
附录一:
超声波蔽障代码
#include"UltrasonicWave.h"
#include"usart1.h"
#include"TIM4.h"
#defineTRIG_PORTGPIOA
#defineECHO_PORTGPIOA
#defineTRIG_PIN_AGPIO_Pin_1
#defineECHO_PIN_AGPIO_Pin_0
#defineTRIG_PIN_BGPIO_Pin_3
#defineECHO_PIN_BGPIO_Pin_2
#defineTRIG_PIN_CGPIO_Pin_5
#defineECHO_PIN_CGPIO_Pin_4
#defineTRIG_PIN_DGPIO_Pin_7
#defineECHO_PIN_DGPIO_Pin_6
unsignedshortintUltrasonicWave_Distance_A,UltrasonicWave_Distance_B;
unsignedshortintUltrasonicWave_Distance_C,UltrasonicWave_Distance_D;//计算出的距离
/*
*函数名:
DelayTime_us
*描述:
1us延时函数
*输入:
Time延时的时间US
*输出:
无
*/
voidDelayTime_us(intTime)
{
unsignedchari;
for(;Time>0;Time--)
for(i=0;i<72;i++);
}
/*
*函数名:
UltrasonicWave_Configuration
*描述:
超声波模块的初始化
*输入:
无
*输出:
无
*/
voidUltrasonicWave_Configuration(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=TRIG_PIN_A|TRIG_PIN_B|TRIG_PIN_C|TRIG_PIN_D;//PC8接TRIG
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设为推挽输出模式
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(TRIG_PORT,&GPIO_InitStructure);//初始化外设GPIO
GPIO_InitStructu