基于嵌入式Linux的无线小车控制系统目录研究背景与意义基本框架及总体设计主要硬件和技术主要内容实物展示总结与展望研究背景与意义背景:遥控小车是玩具市场一种很常见的玩具,但是每个小车都有自己特定的遥控器,原装遥控器坏了很难与其它型号的进行匹配。现在手机使用非常普遍,如果利用手机,可以很方便的在一个硬件平台实现多种小车的遥控器。WiFi,使用最广的一种无线网络传输技术。则可以通过手机WiFi来控制小车。•意义1.利用本系统控制模块可扩展至对所有家电的控制2.可利用无线小车在危险环境作业、搜集数据等。研究背景与意义基本框架及总体设计本系统提供一种基于嵌入式Linux的小车的软件控制方案。配合小车车体、主控板和智能手机等硬件设备,本软件可帮助使用者更好地控制小车动作。该软件系统使小车智能化,有良好的实用价值,并且对设计基于移动设备的控制系统也有一定的参考意义。系统总体设计硬件系统设计软件系统设计总结基本框架及总体设计•总体设计多线程并行服务摄像头模块Android客户端模块电机驱动模块视频监控服务单元小车远程控制单元服务器模块系统框架图分为两部分:客户端模块,服务器模块。基本框架及总体设计•系统流程图开始打开手机WIFI连接小车WIFI重力感应器控制模式每隔200ms取得一次x,y,z数据处理数据并发送相应指令结束YN客户端系统流程图服务器端系统流程图主要硬件和技术•小车主控芯片介绍小车的主控芯片使用的是雷凌公司的RT5350,其运行的是嵌入式Linux操作系统,可运行简单的UDP服务器。RT5350可驱动WiFi模块,便于和上位机进行通信,实现控制命令的传输。另外带有GPIO口,可用于控制电机的运动状态。主要硬件和技术•电机驱动芯片介绍电机的驱动主要是对L298N驱动芯片的操作,只需控制器直接提供电压信号就可以实现电机的正反转,可以通过电源来调节输出电压,控制电机的转速。主要硬件和技术•AndroidAndroid是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,Google公司和开放手机联盟领导及开发。其具有一下特点:开放性不受束缚丰富的硬件方便开发Google应用系统详细设计•服务器端设计RT5350L298N电机I/O小车部分主要完成的任务是接收控制端发送的控制命令,解析控制命令和输出PWM信号到底层驱动来实现小车的运动。RT5350带有WiFi模块,可与上位机进行通信,实现接收控制命令,并可控制IO口输出PWM信号,通过电机驱动模块(L298N)来控制电机转动。服务器端设计(1)命令接收模块控制信息发送线程开始初始化DatagramSocketDatagramPacketsend客户端控制信息接收线程开始初始化Socketbindrecvfrom服务器端远程控制单元UDP控制信息交互过程服务器端设计(2)命令解析模块控制协议格式字节1字节2字节3字节4字节5字节6字节7同步字节地址码指令码1指令码2数据码1数据码2校验码小车控制信息Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0左排电机速度右排电机速度左电机方向右电机方向1.速度分为0-7级,0表示静止,7表示最大速度运行;2.0表示后退,1表示前进。服务器端设计(3)PWM转换模块脉冲宽度调制PWM(PulseWidthModulation)通过调整直流电源开关电压的固定频率脉冲宽度(占空比)来改变负载上得到的平均电压,达到实现电压调节。本系统小车的速度等级分为8级,因此可用PWM信号来控制实现不同的速度等级。若电压周期为T,小车的速度等级为t,则其占空比为t/T,1U(V)2343.3T(S)t/T服务器端设计(3)PWM转换模块本设计中PWM脉冲信号的产生,采取软件延时方法以及计时器延时方法来实现。PWM软件设计流程图。开始计算占空比计算高电平时间(t)输出高电平输出低电平延时(t)延时(T-t)PWM信号控制流程服务器端设计(4)电机驱动模块ENIN1IN2IN3IN4方向电机100停止M1101反转110正转111急刹100停止M2101反转110正转111急刹电机的驱动主要利用L298N驱动芯片完成,控制器直接提供电压信号即可实现电机的正反转。另外可以通过电源来调节输出电压,控制电机的转速。输入信号和小车运动的状况对应如表所示。输入信号与小车运动关系表系统详细设计•客户端设计系统客户端程序是基于Android平台用Java语言开发的,实现获取控制信息并发送给服务器,客户端通过UDP协议传输控制信息。获得重力感应控制信号客户端解析重力感应信号发送相应的控制信号客户端主要实现重力感应控制和信号发送,即手机通过WIFI与小车连接成功后,通过对手机的前、后、左、右翻转,改变重力传感器的方向进而将手机前后左右倾斜的角度的位置变化,识别相应的控制信号并将其发送到服务器端。客户端设计(1)重力感应器模块重力感应编程分为以下几个步骤:获取传感器管理对象、得到传感器对象、注册传感器对象和传感器事件监听,安卓系统提供SensorManager类来管理重力感应传感器对象,而数据处理和发送数据是在OnSensorChanged()方法中实现的。在本设计中,利用对手机的前、后、左、右翻转以及平放分别产生小车前进、后退、左转、右转和停止的控制信号。而速度大小则用倾斜的角度来衡量。重力方向与信号转换表如表。手势与信号转换表重力方向产生控制信号前下前进信号后下后退信号左下左转信号右下右转信号平放停止信号客户端设计(2)信号发送模块信号识别和信号转换是在客户端上实现,将转换后的信号发送给服务器端,服务器端接收到信号后驱动小车作出相应的动作。客户端与服务器端之间采用C/S方式进行通信,服务器运行在小车上,双方之间基于WiFi,并采用UDP传输协议来实现通信过程。实物展示总结与展望本设计是一个基于嵌入式Linux的手机远程控制的智能小车,创新性的运用WiFi进行上位机与下位机之间的通信。在设计期间主要完成的工作包括以下几个方面:(1)设计初期收集电机驱动、单片机等相关资料,对智能小车的实现原理由比较清晰的了解。(2)确定系统框图,对各模块实施方案进行比较,确定最终的智能小车控制的设计方案。(3)根据智能小车控制的原理图制作出电路连接图。(4)根据系统要求实现前进、后退、左转、右转等功能编写出小车端软件程序。(5)在eclipes开发环境下,应用java程序编程上位机程序,并且通过模拟器来检测手机程序。(6)软硬件调试通过后进行整体调试,并查找该系统存在的缺陷,进行完善。展望:由于时间仓促,本设计还有很多不足。在接下来的研究设计中,除了完善这些不足之外,我还希望添加其他功能,例如添加小车检测视频的功能,并把尝试把android手机远程控制应用在其他智能家居上。