已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于android的教育机器人平台设计项目论证报告指导教师:项目组成员:张静通信专业1102班级王栋自动化专业xx班级何谦自动化专业xx班级李东数学专业1101班级张露“智能机器人”创新实践班201x年x月x日2目录目录ii1 项目描述- 1 -1.1 项目简介- 1 -1.2 项目任务要求- 1 -2 总体设计方案的选择及论证- 3 -3 分模块的选择及论证- 5 -3.1单片机模块部分- 5 -3.1.1主控芯片- 5 -3.1.2通信部分- 5 -3.1.3避障模块- 6 -3.1.4温湿度模块- 6 -3.1.5烟雾传感器- 6 -3.1.6电机驱动- 7 -3.1.7电机选择- 7 -3.1.8硬件结构框图- 7 -3.1.9 wifi 通信流程图- 8 -3.1.10单片机软件工作流程图- 9 -3.2安卓软件部分- 10 -3.2.1安卓平台介绍- 10 -3.2.2搭建安卓开发环境- 10 -3.3硬件平台设计- 14 -3.3.1硬件结构框图- 14 -3.3.2电路电源- 14 -3.3.3超声波避障- 15 -3.3.4温湿度传感器和烟雾传感器- 15 -3.3.5 电机驱动电路- 15 -3.3.6wifi模块- 15 -3.3.7扩展模块- 15 -3.3.8扩材料选择- 16 -4 经费预算及人员安排- 17 -4.1经费预算- 17 -4.2人员安排- 17 -4.3进度安排- 18 -5 总结- 19 -附 录- 20 -ii1 项目描述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)小车外形结构合理- 1 -2 总体设计方案的选择及论证基于arm cortex-m3的stm32f103vet6的xk-i教育机器人平台总体框图如图1所示图 1硬件结构框图硬件平台是机器人的躯干和大脑,主要包括主控制器arm cortex-m3的stm32f103vet6、外围传感器以及相应的外围接口电路。结构平台是机器人要完成一个任务,或实现一定的功能所需要的外在形体,比如一个机器手,除了动作部件外,还有结构部件组成一个有形的机器手。机械结构的部件设计要让学生能够学习到机械结构方面的知识以及动手能力,目前市场出现的积木结构,非常适合教学,但是目前市场的积木在规格,尺寸上都没有形成统一的标准。因此,在设计结构部件时,要充分考虑到统一标准。软件平台是机器人的灵魂,机器人要完成一个任务,除了硬件平台、结构平台提供的有形支撑外,还要给它输入一种思维,那就是软件平台所要完成的功能。整个过程控制思想如下:手机发现并连接串口服务器的wifi,通过wifi手机和串口服务器便建立了无形的连接,通过手机软件端tcp socket套接字编程实现两端的端到端通信,实现串口服务器和手机之间的数据通信,小车端通过uart来实现单片机串口通信实现单片机和串口服务器之间的数据通信,这样就间接地实现了小车和手机的互联通信。单片机对收到的控制信息进行处理和识别来控制小车相应的部件、传感器,从而达到控制小车和数据采集回显的目的。3 分模块的选择及论证3.1单片机模块部分3.1.1主控芯片方案一:芯片选择atmega16。atmega16是8位avr微控制器具有16kb系统内可编程flash的8位avr微控制器。基于增强型avr risc结构。atmega16 avr 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算逻单元(alu)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的cisc 微控制器最高至10倍的数据吞吐率。是8位微控制器中性价比非常高的单片机。方案二:芯片选择stm32f103vet6。stm32系列32位闪存微控制器基于突破性的arm cortex-m3内核,这是一款专为嵌入式应用而开发的内核。stm32f103vet6处理器价格非常便宜,相当具有竞争力,完全可以取代传统的单片机应用;而其主频却高达72mhz,非常适合多任务工作。stm32f103vet6还拥有11个定时器,3个usart接口,16个外部中断。适合作为外设多、任务多的控制控制芯片。本项目主控芯片选择stm32f103vet6。主控芯片的选择主要是考虑到本项目需要的传感器非常多,需要一块芯片完成所有的控制和数据采集,这时stm32f103vet6就非常实用。性能较一般的单片机有很大的提升。无论是从处理速度上还是端口资源上,stm32f103vet6完全能满足本项目所需。3.1.2通信部分 方案一:通信选择蓝牙通信。以教育机器人平台为本体,通过蓝牙与安卓手机平台建立连接。该方案优点就是连接简单,底层只需要建立蓝牙驱动程序,然后将蓝牙与安卓平台实现点对点连接。不足之处是蓝牙通信距离相当的短,只有10的距离,而且不是很稳定。方案二:使用wi-fi转rs232通信模块,将机器人本体与手机平台实现点对点连接。该方案不需要自己写底层通信协议,只需将通信双方连接在同一网络中,其中一方充当服务器,即可进行数据传输。在机器人底层处理传输的数据,然后转化为机器人执行的动作。从通信质量和通信有效距离来看,通信方案选用方案二,使用使用wi-fi转rs232通信模块,将机器人本体与手机平台实现点对点连接,通过android手机发送指令,wi-fi模块接收并处理后将数据传送到芯片,从而实现控制。3.1.3避障模块避障模块是选用的hc-sr04超声波传感器。超声波传感器通过超声波发射装置发出超声波后计时,声波遇到障碍物后返回声波,通过发送和接收的时间误差来计算距离。超声波测距的公式为l=ct,式中l为测量的距离长度;c为超声波在空气中的传播速度;t为测量距离传播的时间差(t为发射到接收时间数值的一半)。其中传播速度c还与介质温度和湿度有关系,其近似公式为:c=c0+0.607t,c0为零度时的声波速度332m/s;这样有效地提高了超声波测距的精度。本项目小车使用4路超声波,每一路超声波的有效角度为15度,使用4路可以满足项目。3.1.4温湿度模块温湿度传感器采用数字温湿度传感器dht11。dht11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器包括一个电阻式感湿元件和一个ntc测温元件,能直接与单片机相接进行测量。因此具有超快响应、抗干扰能力强、性价比极高等优点,而且传输距离高达20m。按照数据手册给出的时序图,测出的数据格式为8bit湿度整数数据+8bit湿度小数数据 +8bit温度整数数据+8bit温度小数数据+8bit校验和。测量输出的精度为小数点后一位,测量范围为2090rh 、050 ,满足本项目要求。3.1.5烟雾传感器烟雾传感器采用mq-2烟雾传感器。mq-2对液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等。原理是在探测器的离室内放一放射源am241,其不断地持续放射出粒子射线,以高速运动撞击空气中的氮、氧等分子,在粒子的轰击下引起电离,产生大量的带正负电荷的离子。当烟雾粒子进入电离室后,由于气熔胶吸附大量的正负离子,使其中和。烟雾越浓,导致离子复合几率加快,从而使空气中电离电流迅速下降,电离室阻抗增加,因此根据r值变化可以感受到烟雾浓度的变化,从而实现对火灾的探测。3.1.6电机驱动电机驱动用的是l298n驱动电路,此驱动电路的外围电路相对简单,驱动芯片容易控制且相对廉价,它能产生四相控制信号,可用于计算机控制四相单相电机等,使用的是5v的电源电压,最大工作电流为2.5a,它抗干扰能力强,可以实现正反转和pwm调速。是使用方法成熟的驱动芯片。电机使能,输入引脚与输出引脚关系如图:en a(b)in1(in3)in2(in4)电机运行情况hhl正转hlh反转h同in2(in4)同in1(in3)快速停止lxx停止3.1.7电机选择电机选用带有速度测量霍尔传感器的直流减速电机gb37y3530。项目中加入wifi模块和锂电池后,车身重量上升,gb37y3530扭矩大,适合本项目使用。尾部的双通道霍尔效应编码器测出速度后用于pid运算,让机器人行走速度更为精确。3.1.8硬件结构框图图2 硬件总框图3.1.9 wifi 通信流程图 图33.1.10单片机软件工作流程图 图43.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里面的install new software里面就可以导入安卓sdk。安卓使用的是模块化的程序设计结构,界面布局等资源文件和程序主体文件是分开的,极大的方便了软件的设计。同时,安卓还支持可视化布局,可以很直观的看到软件布局效果图。安卓可以通过avd在电脑端实现虚拟手机进行模拟测试。3.2.2.1软件流程图: 图53.2.2.2软件细节描述:(1) 界面设计安卓的界面布局有5种:分别是:线性布局,表格布局,帧布局,相对布局和网格布局。而其中最常用的是相对布局,因为它有很强的兼容性,可以在任何屏幕大小的安卓手机上正确运行。所以布局方面我选的是相对布局。(2) 测试界面功能选择界面: 图6普通模式界面:图7 重力感应界面: 超声波蔽障界面: 设置界面: (3)通信模块设计:android支持jdk自身的tcp和udp编程api,由于tcp/ip通信协议是一种可靠的网络协议,它在通信的两端各建立一个socket,从而在通信的两端之间形成网络虚拟链路。一旦建立连接,两端的程序就可以通过虚拟链路进行通信。java对基于tcp协议的网络通信提供了良好的封装,java使用socket对象来代表两端的通信接口,并通过socket产生/o流来进行网络通信。所以此处我们采用的基于tcp的网络通信方式,让我们的数据包稳定准确的传输。客户端通常使用socket的构造器来连接到指定的服务器,socket有两种构造器:socket(inetaddress/string remoteaddress,int port):没有指定本地地址,本地端口,默认使用本地主机的默认ip地址。socket(inetaddress /string remoteaddress,int port,inetaddress localaddr,int localport):指定了本地ip地址和端口号适用于本地主机有多个ip地址的情况。所以我们使用第一种来构造socket:scoket s= new socket(“xxx.xxx.xxx.xxx”,xxxx);当客户端和服务器产生了对应的socket后,程序就无需区分服务器和客户端了。我们可以通过inputstream getinputstream();来返回socket对象对应的输入流,让程序通过该输入流从socket中取出数据。通过outputstream getoutputstream();返回socket对象对应的输出流,让程序输出流向socket中输出数据。wifi模块采用的是wifi转232串口的wf3002,所以我们不用关心wifi是如何转串口的,我们只需要设置模块的ip地址和端口号,把它当做主机,这样就可以通过socket来通信了。传输格式:我们打算在传输内容的头部加上标志,比如如果传输的是功能选择信息,那么就在信息的首部加上功能选择标志,同理,如果收到的消息不符合我们的规则,那么这条消息就可能是错误的,我们选择重新发送。如果2次以上还是原样就忽略此消息。加入多线程:由于小车与手机之间的数据交换是很频繁的,即服务器与客户端之间的数据交换是一直存在的,而传统的bufferedreader的readline()方法读取数据时,该方法成功返回之前,线程会被阻塞,程序无法继续执行,所以我们应该为系统单独启动一条线程,专门负责读取服务器数据。所以客户端应该包含两条线程,一条负责生成主界面并响应用户动作,并将用户输入的数据写入socket对应的输出流中,另一条负责读取socket对应输入流中的数据并将数据显示在程序界面上。(4) 重力感应模块设计: androd系统提供了对传感器的支持,如果手机设备硬件提供了这些传感器,安卓应用可以通过传感器来获取设备的外界条件,包括手机设备的运行状态,当前摆放方向,外界的磁场,温度和压力等。安卓系统提供了驱动程序去管理这些传感器硬件,当传感器硬件感知到外部环境发生改变时,安卓系统负责管理这些传感器数据。 重力感应即是应用的手机的加速度传感器,通过手机3个方向的加速度的不同实现重力感应的效果。图8如图x、y、z 3个方向,以屏幕的左下方为原点,箭头指向的方向为正。从-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.1v 2200mah 30c型号的锂充电电池直接对电机进行供电,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针串口,支持1200115200bps范围内的波特率,支持ieee802.11b/g无线标准。3.3.7扩展模块考虑到日后可能需要为机器人增加功能,故把主控芯片未用到的引脚连出来待用,从而方便机器人的改造升级。3.3.8扩材料选择小车底盘:亚克力板由甲基烯酸甲酯单体(mma)聚合而成,即聚甲基丙烯酸甲酯(pmma)板材有机玻璃,是一种经过特殊工艺加工的有机玻璃。同时亚克力板具有极佳的耐候性,较高的表面硬度和表面光泽以及较好的耐高温性能。pc板有亚克力板同样的性能,但由于亚克力板更容易加工,透光性更好,做小车底盘方便美观,故选用亚克力板。设计采用3mm厚的亚克力板,市场上销售的亚克力板价格一般为3mm*200mm*300mm 8元,5mm*200mm*300mm 12元。采用3mm厚的亚克力板不仅价格便宜而且利于切割,方便日后的加工改造。电机的选择:小车底盘采用两层,每层长为250mm,宽为100mm,约重3mm*3.14*0.125*0.125*1.2*2=353.25g,再加上电池的重量303g以及其它器件的重量,小车约重750g左右,选用直径65mm的常用车轮,车轮与地面的滑动摩擦系数约为0.4,同时,电机的额定功率一般要大于负载功率的1.11.6倍,结合电机的参数即可计算出功率、转速等(p=f*v;v=w*r;p=f*r*w=t*w)。 - 42 -4 经费预算及人员安排4.1经费预算组别原件名称单价(元)数量总价硬件减速电机90.02180超声波传感器7.29643.74温湿度传感器10.59221.18烟雾传感器20.39240.78wifi模块2091209车轮10220万向轮515亚克力板8432stm32f103vet625125钮扣电池313纽扣电池插座111串口母头111max232111pcb开板1601160锂电池1351135铜柱0.1202tlp521-45210lcd1286435135lm1117224lm2576224l298n919软件疯狂安卓讲义71.3171.3stm32开发指南57.5157.54.2人员安排组员负责任务王栋安卓软件部分何谦单片机软件部分李东小车结构和电路设计张露文档处理4.3进度安排时间计划任务7月初到7月中旬完成对小车整体设计方案的确立7月中旬到7月底分模块设计完成理论的论证8月中旬到8月底购买器件,制作pcb电路板和小车结构,完善并优化软件8月底到9月初完成小车的制作5 总结我们认为此项目的独特创新之处在于小车的控制是通过手机来实现,而不是遥控手柄或电脑,从而使得使用更加方便,实现用wifi技术对教育机器人的实时控制。稍微改动就可以用来控制电脑,家用电器等实现智能家居。因此该项 目的成果将不仅仅局限于一个遥控小车,更具有价值的是手机远程遥控系统和智能家居。附 录附录一: 超声波蔽障代码#include ultrasonicwave.h#include usart1.h#include tim4.h#definetrig_port gpioa #defineecho_port gpioa#definetrig_pin_a gpio_pin_1 #defineecho_pin_a gpio_pin_0#definetrig_pin_b gpio_pin_3 #defineecho_pin_b gpio_pin_2#definetrig_pin_c gpio_pin_5 #defineecho_pin_c gpio_pin_4#definetrig_pin_d gpio_pin_7 #defineecho_pin_d gpio_pin_6unsigned short int ultrasonicwave_distance_a,ultrasonicwave_distance_b;unsigned short int ultrasonicwave_distance_c,ultrasonicwave_distance_d; /计算出的距离 /* * 函数名:delaytime_us * 描述 :1us延时函数 * 输入 :time 延时的时间 us * 输出 :无 */void delaytime_us(int time) unsigned char i; for ( ; time0; time-) for ( i = 0; i 10us的脉冲,然后测量返回的高电平时间 * 输入 :无 * 输出 :无 */int ultrasonicwave_startmeasure_a() gpio_setbits(trig_port,trig_pin_a); /送10us的高电平 delaytime_us(20); /延时20us gpio_resetbits(trig_port,trig_pin_a);/低电平 while(!gpio_readinputdatabit(echo_port,echo_pin_a); /等待高电平 tim_cmd(tim4, enable); /开启时钟 while(gpio_readinputdatabit(echo_port,echo_pin_a); /等待低电平 tim_cmd(tim4, disable); /定时器2失能 ultrasonicwave_calculatetime_a(); /计算距离 tim_setcounter(tim4,0);/给定时器装入初值return ultrasonicwave_distance_a;/printf(rndistance:%d%d cmrn,ultrasonicwave_distance/256,ultrasonicwave_distance%256); int ultrasonicwave_startmeasure_b() gpio_setbits(trig_port,trig_pin_b); /送10us的高电平 delaytime_us(20); /延时20us gpio_resetbits(trig_port,trig_pin_b);/低电平 while(!gpio_readinputdatabit(echo_port,echo_pin_b); /等待高电平 tim_cmd(tim4, enable); /开启时钟 while(gpio_readinputdatabit(echo_port,echo_pin_b); /等待低电平 tim_cmd(tim4, disable); /定时器2失能 ultrasonicwave_calculatetime_b(); /计算距离 tim_setcounter(tim4,0);/给定时器装入初值return ultrasonicwave_distance_b;/printf(rndistance:%d%d cmrn,ultrasonicwave_distance/256,ultrasonicwave_distance%256); int ultrasonicwave_startmeasure_c() gpio_setbits(trig_port,trig_pin_c); /送10us的高电平 delaytime_us(20); /延时20us gpio_resetbits(trig_port,trig_pin_c);/低电平 while(!gpio_readinputdatabit(echo_port,echo_pin_c); /等待高电平 tim_cmd(tim4, enable); /开启时钟 while(gpio_readinputdatabit(echo_port,echo_pin_c); /等待低电平 tim_cmd(tim4, disable); /定时器2失能 ultrasonicwave_calculatetime_c(); /计算距离 tim_setcounter(tim4,0);/给定时器装入初值return ultrasonicwave_distance_c;/printf(rndistance:%d%d cmrn,ultrasonicwave_distance/256,ultrasonicwave_distance%256); int ultrasonicwave_startmeasure_d() gpio_setbits(trig_port,trig_pin_d); /送10us的高电平 delaytime_us(20); /延时20us gpio_resetbits(trig_port,trig_pin_d);/低电平 while(!gpio_readinputdatabit(echo_port,echo_pin_d); /等待高电平 tim_cmd(tim4, enable); /开启时钟 while(gpio_readinputdatabit(echo_port,echo_pin_d); /等待低电平 tim_cmd(tim4, disable); /定时器2失能 ultrasonicwave_calculatetime_d(); /计算距离 tim_setcounter(tim4,0);/给定时器装入初值return ultrasonicwave_distance_d;/printf(rndistance:%d%d cmrn,ultrasonicwave_distance/256,ultrasonicwave_distance%256); 附录二: 重力感应核心代码package com.example.wifi_car;import android.app.activity;import android.content.context;import android.hardware.sensor;import android.hardware.sensorevent;import android.hardware.sensoreventlistener;import android.hardware.sensormanager;import android.os.bundle;import android.os.handler;import android.os.message;import android.widget.edittext;import android.widget.textview;public class zhongliganying extends activityimplements sensoreventlistener/ 定义系统的sensor管理器handler handler;sensormanager sensormanager;textview wendu,shidu,conongdu;clientthread clientthread;overridepublic void oncreate(bundle savedinstancestate)super.oncreate(savedinstancestate);setcontentview(r.layout.zhongliganying);/ 获取程序界面上的文本框组件wendu= (textview) findviewbyid(r.id.wed);shidu= (textview) findviewbyid(r.id.shi);conongdu= (textview) findviewbyid(r.id.co);/ 获取系统的传感器管理服务sensormanager = (sensormanager) getsystemservice(context.sensor_service); /handler =new handler()overridepublic void handlemessage(message msg)if(msg.what=0x123)/show.append(n+msg.obj.tostring();clientthread = new clientthread(handler);new thread(clientthread).start();overrideprotected void onresume()super.onresume();/ 为系统的加速度传感器注册监听器sensormanager.registerlistener(this,sensormanager.getdefaultsensor(sensor.type_accelerometer),sensormanager.sensor_delay_normal); /overrideprotected void onstop()/ 取消注册sensormanager.unregisterlistener(this);super.onstop();/ 以下是实现sensoreventlistener接口必须实现的方法/ 当传感器的值发生改变时回调该方法overridepublic void onsensorchanged(sensorevent event)/float x=event.valuessensormanager.data_x,y=event.valuessensormanager.data_y,z=event.valuessensormanager.data_z;float values=event.values;float x=values0,y=values1,z=values2;string s=null;stringbuilder sb = new stringbuilder();sb.append(x方向上的加速度:);sb.append(values0);sb.append(ny方向上的加速度:);sb.append(values1);sb.append(nz方向上的加速度:);sb.append(values2);/show.settext(sb.tostring();if(x3) s=top;else if(x3&z3) s=bottom;else if(y3&z0) s=right;else if(y0) s=left;else s=stop;trymessage msg=new message();msg.what=0x345;msg.obj=s;clientthread.revhandler.sendmessage(msg);catch(exception e)e.printstacktrace();/ 当传感器精度改变时回调该方法。overridepublic void onaccuracychanged(sensor sensor, int accuracy)附录三: sockets通信核心代码package com.example.wifi_car;import java.io.bufferedreader;import java.io.ioex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四上数学重难点大单元课件
- 健康扶贫培训会议
- 2026苏教二上认识乘法教学设计教案
- 电解槽安全管理
- 1.2规划初中生活(教学设计) 2026-2027学年统编版道德与法治 七年级上册
- 2026四上数学万以上数认识趣味课件
- 2026四上数学数学广角优化大单元课件
- 教学材料《Linux操作系统》-项目七
- 教学材料《Linux操作系统》-项目八
- 再生透水混凝土花箱自动灌溉滴头流量监理细则
- 2024版人教版初中语文九上名著《唐诗三百首》复习题
- GB/T 17623-2026绝缘油中溶解气体组分含量的气相色谱测定法
- 2026广东珠海市斗门区招聘公办中小学教师134人(编制)考试参考试题及答案解析
- 2026年中国时尚耳夹数据监测研究报告
- 广西壮族自治区梧州市2026年高三第一次模拟考试物理试卷(含答案解析)
- 2026广州医药集团有限公司春季校园招聘笔试历年典型考点题库附带答案详解
- 上海市二级注册建造师继续教育(建筑工程)考试题库
- (2025年)市场监管法律知识复习试题考前模拟测试题附答案
- 新疆建设工程消防设计审查、验收常见问题技术解析(2024年)
- pe管道顶管施工方案
- 《DLT 1231-2018电力系统稳定器整定试验导则》专题研究报告深度
评论
0/150
提交评论