基于Android手机控制的智能遥控器摘要:为了克服家用电器专用遥控器的缺陷,结合智能家居的相关概念和技术,提出一种基于Android手机的智能遥控器方案。利用Android平台的应用软件,通过本地蓝牙把控制信号发送到蓝牙模块,单片机通过蓝牙模块接收到Android平台发送过来的信号,进行相应的处理,接着通过红外发射模块将结果信号发射出去,从而实现智能手机遥控电器的功能。智能Android系统手机的普遍性将使得更多的智能化人性化的产品与之相结合,推动多功能,便携,智能为一体的发展趋势。关键词:智能遥控器;Android;蓝牙通信;红外线Android-basedintelligentremotecontrollerAbstract:Inordertoovercomethedefectofhouseholdappliancesremotecontroller,weputforwardaproposalabouthowthesmarthone,whichhasinstalledAndroidSystem,actsasaremotecontrollerbasedontherelevantconceptsandtechniquesofintellignethousehold.It’sdesignedthatMono-ChipComputerreceivessignalsfromtheAndroidPlatformbybluetoothmodule,whichcanreceivecontrolsignalsthroughlocalbluetoothbyusingapplicationsofAndroidPlatform,andprocessesthemsothatwecanlauchtheresultsignalsusingtheinfraredemissionmoduletoachievethefunctionofcontrollingelectricappliancesetbysmartphone.Thepopulationoftheandroidsmartphonewillbringmoreintelligentandhumanizedproductswiththemandthatisabletopromotethedevelopmentofmultifunction,convienceandintelligence’scooperation.Keywords:intelligentremotecontroller;android;bluetoothcommunication;infrared第一章概述目前,市面上的家用电器如电视、空调、DVD等都有自己专用的红外遥控器;另外,还有一种叫万能遥控器,可以实现控制不同品牌的家用电器。它们都具有体积小、功耗低、成本低等优点。但缺点也很明显,如通信范围小,穿透力差,要求通讯双方具有无障碍直线信道等。Android系统是Google公司推出的开源手机平台,采用Linux内核,是一个标准化的、开放式的手机平台[1]。它具有强大的无线网接入能力,丰富、便捷的开发工具,和开放的平台等特点。基于当前安卓智能手机的普及,为了满足智能家居的需求,本文设计了一款基于Android手机控制的智能遥控器。把安卓智能手机作为控制平台,采用蓝牙通信接口,把安卓智能手机与家用电器结合在一起,从而实现手机的无线智能遥控的功能。第二章设计原理2.1方案选择红外协议需要载波调制信息,设计方案有:方案一:采用555定时器调制38KHz载波信号供单片机加载信息;555定时器成本低,性能可靠,但占空比调制困难,频率确定无法改变。方案二:采用单片机内部的PWM机制调制38KHz载波信号加载信息;这个方案节约空间、抗噪性能强,可随时改变频率与占空比,但程序不易编写众多遥控器一体对数据库存储需求大,方案设计有:方案一:采用AT24Cxx扩展外部存储器;方案二:采用自带高存储容量的存储器;综合以上考虑,本设计采用STC15系列单片机,这款单片机有多8位,7位,6位脉宽调节模式,能满足本方案的38KHz需求,且此单片机Flash程序存储区有61K,不需要扩展存储空间也能满足加载万能遥控器的数据库。功能满足的情况下,也为了不让硬件过剩的原则,我们采用了载波方案二和数据库存储方案二。2.2电路设计本设计总模块框图图2-2总模块框图电路设计主要分为电源模块,蓝牙模块,单片机控制模块,红外发射模块组成。其中电源模块采用电源适配器负责为其他模块电路提供稳定的5V电压。蓝牙模块负责与手机蓝牙经行相互通信,传递控制信息;单片机控制模块负责识别以及处理从蓝牙模块传递过来的控制信息,加载数据库信息到PWM调制的38KHz载波上驱动红外发射模块;红外发射模块负责发送携带信息的红外光波,电视或空调等接收控制。2.3蓝牙智慧盒软件设计IAP15F2K61S2单片机程序主要是用来接收、分析、处理蓝牙模块过来的数据,完成以后通过红外模块发射到电器上,最终达到遥控电器的目的。2.3.1蓝牙智慧盒软件流程框图软件采用模块化编程,把遥控器分为四种模式:蓝牙搜索模式:①蓝牙智慧盒开机②Android应用软件退出都会进入此模式自动搜索模式:用户在用自动搜索功能匹配电视机时进入此模式手动搜索模式:用户在用手动搜索功能匹配电视机时进入此模式用户模式:用户在匹配电视完成后,进行遥控电视进入此模式每种模式都有编写相应函数供其调用。2.3.2红外编码程序本软件包含了3种红外编码格式:三星的TC9012,松下的LC7464M和NEC的uPD6121G。受篇幅限制,这里主要介绍TC9012编码。1、红外载波程序⑴TC9012载波要求:频率38KHz占空比1/3载波波形参考图:38KHz1/3载波实测波形图:38.46KHz1/3占空比由载波实测波形图可以看出,实测波形与参考波形频率误差为1.2%,占空比误差为-0.6%,满足TC9012载波要求,说明我们用PWM产生的38KHz载波的程序是正确的,下面是具体的程序代码。⑵38KHz载波核心代码:SYSclk=22118400HzPWM0频率为:SYSclk/(65536-[TH0,TL0])/64=22118400/(65536-[TH0,TL0])/64=38400Hz2、红外发送数据程序TC9012的一帧数据中含有32位码,包含两次8位用户码,8位数据码各8位数据码的反码。引导码由4.5ms的载波和4.5的载波关断波形所构成,以作为用户码、数据码的先导。引导码参考图引导码实测:有载波4.52ms引导码实测:无载波4.52ms由以上两实测图可以看到,引导码有载波误差0.4%,无载波误差0.4%,是满足TC9012引导码开载波4.5ms+关载波4.5ms的要求的。数据0实测:高电平0.56ms数据0实测:高低电平总长1.14ms由以上两实测图可以看到,数据0高电平误差0%,高低电平总长误差1.3%,是满足TC9012数据0高0.56ms,总长1.125ms的要求的。数据1实测:高电平0.56ms数据1实测:高低电平总长2.26ms由以上两实测图可以看到,数据0高电平误差0%,高低电平总长误差0.4%,是满足TC9012数据1高0.56ms,总长2.25ms的要求的。2.4Android应用软件设计本应用软件的设计是为了能够搜索,连接,控制我们的蓝牙智慧盒,从而实现远程控制目的。开发工具:Eclipse集成开发环境,JDK,Android-SDK。编译版本:android2.3.3。2.4.1Android应用流程介绍下面是应用的具体流程;2.4.2资源规划和权限配置为了兼容不同手机屏幕尺寸和分辨率,放了三套不同分辨率和尺寸的图片分放在res/drawable-hdpi,res/drawable-mdpi,res/drawable-xhdpi目录。本应用设计用到本地蓝牙适配器功能,多分辨率支持功能,窗体纵向显示功能的使用,在AndroidMainfest.xml中添加允许使用蓝牙功能的权限uses-permissionandroid:name=android.permission.BLUETOOTH/uses-permissionandroid:name=android.permission.BLUETOOTH_ADMIN/。并且界面的窗体均为纵向显示,这里设置窗体显示通过activity标签属性android:screenOrientation=“portrait”。设置多屏幕分辨率支持supports-screensandroid:smallScreens=trueandroid:normalScreens=trueandroid:largeScreens=trueandroid:anyDensity=true/2.4.3欢迎窗体的设计与实现应用启动后是一个欢迎窗体,欢迎窗体全屏显示,3秒钟后自动跳转到TV主窗体。欢迎窗体的实现:1)在onCreate()方法中初始化窗体信息,加载background为drawable目录下的welcome图片的布局文件activity_welcom.xml。2)创建一个线程类实现3秒后自动跳转。2.4.4TV主窗体的设计与实现TV主窗体的功能结构:1)图像按钮监听事件:连接状态为STATE_CONNECTED情况下,调用蓝牙服务的同步write方式发送3个字节控制信息给蓝牙智慧盒。2)Handler更新UI机制:创建一个handler类,当收到蓝牙服务反馈信息或读取到蓝牙智慧盒反馈信息时,更新UI界面提示用户。3)蓝牙连接Activity参数捕捉:捕捉用户选择的蓝牙设备,并创建一个蓝牙服务类,传递此设备和handler。启动蓝牙服务开始蓝牙连接。4)菜单监听事件:捕捉用户选择菜单的动作进行相应处理。菜单有:a蓝牙连接:跳到蓝牙搜索连接窗体。b手动搜索或自动搜索:连接状态为STATE_CONNECTED情况下,调用蓝牙服务的同步write方式写相应的3个字节控制信息给蓝牙智慧盒。c程序退出:系统退出。5)捕捉返回事件:防止用户误操作增加了温馨提示功能,捕捉back事件onkeydown(),创建一个AlertDialog类,当用户点击确定时,程序退出,否则返回主界面。2.4.5蓝牙服务蓝牙服务是一个service类,提供蓝牙的连接,状态反馈,线程读写数据,启动和停止方法。1)蓝牙连接:device.createRfcommSocketToServiceRecord(MY_UUID)获取套接口,mySocket.connect()套接口远程连接蓝牙智慧盒。并且通过bundler传递message给UI界面更新。2)获取连接状态方法:返回当前蓝牙服务的状态。3)Start和Stop方法:线程的初始化和关闭线程。4)同步Write方法:防止多线程的干扰,采用关键字synchronized同步写方法。创建一个线程类,传递参数byte[]写到套接口的字节流outputstream中。第三章调试与测试功能测试:通过以上测试我们可以看到,本作品是能够达到我们的设计要求。结论基于Android手机的智能遥控器产品新颖,实用方便,倡导绿色、环保的生活理念,具有经济、社会效益。从用户的角度出发,多功能、低成本、强适应和人性化使得该产品将会获得发展契机。参考文献[1]EdBurnette.Hello,Android[M].USA:PragmaticProgrammers,LLC,2010年[2]林小茶.C语言程序设计(第二版)[M].北京:中国铁道出版社,2007年.[3]郭现杰,张权.从零开始学Java[M].北京:电子工业出版社,2012年.[4]翟大昆,陈春茶.Android项目开发详解[M].北京:机械工业出版社,2012年.[5]刘焕成.工程背景下的单片机原理及系统设计[M].北京:清华大学出版社,2008年.[6]高彩丽,许黎民,袁海等.Android应用开发范例精解[M].北