1、0基于 Android 的智能家电控制器的设计与实现 刘章良(上海第二工业大学 计算机与信息学院) 【内容摘要】:此项目通过一个简单低成本中间件,实现便携智能设备与现在家庭中已有的通过红外控制家电之间经行通讯,实现不用任何改造,无需购买昂贵的终端,通过已有的便携智能设备安装对应 APP,既可以直接智能控制家中任意家电。家庭中的灯具,厨具等都稍加改造即亦可以通过你的智能终端控制。【关键词】: 智能家控 智能终端 APP 通讯 安卓一、 项目背景(创作意图) 随着智能终端越来越普及,它给带来的人机交互感彻底的颠覆了传统的概念。人们对于智能和人机交互的控制感觉有了更深的体验,对于智能的追求又到了一个
2、新的纪元。智能家电控制在电子兴起的时候就被人们所提起过,并有好多人为此努力过,但是现在仍然处在一个很低的阶段,如家电单一的遥控功能,窗帘按钮等等都是。而且目前各个厂家各种不同规格的,不同通讯协议,在现在这个状态很难统一。所以根据现在的情况我们制作一个中间产品连接起现有的家电和智能终端,达到通过最简单途径实现智能家电控制的任务能达到很好的交互体验。二、 实现目标1.设计一个小巧中间件里面包括 MCU 控制面板,与智能终端通讯的蓝牙模块,与家电通讯的红外通讯模块,红外模块具有自我学习功能能通过对特定遥控学习并把它存储在智能终端上以便下次继续使用。2.设计安卓智能操作系统终端 APP,能很好实现的人
3、机体验通过文件系统根据拟定的协议与单片机通讯,根据不同家电给定特定的伪代码能够使单片机产生特定的通讯格式完成对不同家电的控制,间接实现家电通讯的统一,省去家庭中几乎所有遥控器使得一个终端遥控所有的功能,APP 具有上网更新及下载资料功能,提供学习到遥控代码的功能。通过 APP 嵌入销售信息增加对产品的销售,APP 使用量也是一笔很多财富。图 1 功能示意图 三、 硬件设计11.MCU STC89C52简介STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统
4、51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能:8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构) ,全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RA
5、M内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选 2.蓝牙通讯 该项目采用的是低功耗透明传输的蓝牙从机模块 HC-07,主要应用方面是用于单片机跟电脑或者手机配对通讯。从机是被动设备,只能等待手机或者电脑去配对它,它不可以主动去搜索周围的蓝牙设备。从机模块是透明串口,不需要单片机去做任何配置,也不用管蓝牙的任何事情。对于单片机来讲,模就是根串口线,手机配对连接了模块,就相当于手机跟单片机之间有根串口线连着了,直接串口通讯就行了。这样简化了开发过程如果一门的去考虑蓝牙的东西,就会是开发非常的复杂。用的方法是给模块连接电源,因为
6、使用单片机是 5V 所以则连接模块的 5V 排针接口。然后把模块的通信线 RXD TXD 连接到单片机的 TXD 和 RXD,另外两个引脚 AT 是给主从一体用发送 AT 指令用的的, RS 是给模块复位的,正常通讯不用连接。TX: 传送数据RX: 接收数据 5V:提供 5V 电源3.3V:提供 3.3V 电源RS:复位引脚GND:地线AT: AT 指令图 2 蓝牙模块底片图2图 3 HC-07 蓝牙模块实物图3. 红外学习遥控接收电路设计所有红外遥控器的输出都是用编码后的串行数据对 38kHz40kHz 的方波进行脉冲幅度调制而产生的。如果直接对已调波进行测量,而其脉宽只有 20 多微秒,由
7、于单片机的指令周期是微秒级,会产生很大的误差。因此,先要对已调波进行解调,对解调后的波形进行测量。将 CX20106 或一体化红外接收头解调出的遥控编码脉冲直接连入 STC89C52 单片机的INT0 和 T0 脚,定时器 T0 和 T1 都初始化为定时工作方式 1,T0 的 GATE 位置位。每次外部中断首先停止定时,记录 T0、T1 的计数值,然后将 T0、T1 的计数值清零,并重新启动定时。T0 的值即为高电平脉宽,T1T0 的值为低电平脉宽。T0、T1 与红外编码信号脉宽的对应关系并且存储到外部储蓄器 24C256 中等待发送调用。图 4 红外学习遥控接收电路设计4. 红外学习遥控发送
8、电路设计遥控信号的还原是通过 STC89C52 的 T2 特殊输出口进行二进制脉冲码的高电平与低电平的调制输出,其中调制为利用单片机特殊功能进行内部调制这也是本设计的一个创新点,调制后的信号如图 3.5-2 驱动红外发光管工作。该设计的硬件电路相对简单,因此系统的调试重点在软件上。图 5 红外学习遥控发送电路设计1 2 3 5 6 7vss4vdd8cx20106 IC1CX20106C3330C11UC23.3UC4100UR1R2200K R310KVCCGND到到到到PNP1VCC到到到T2 R4GND R13四、 软件设计1.红外学习遥控程序设计设计的主要思路是通过对红外二进制脉冲的宽
9、度进行测量,从而获得红外遥控的波形信息,进而实现存储、还原。根据遥控信号编码和发射过程,遥控信号的识别(也叫解码过程)是去除 38KHz 载波信号后识别出二进制脉冲码中的 0 和 1。红外接收头的解调信号送到 INT0 引脚,由内部定时器完成高低电平长度的采集,然后进行数据保存,由单片机进行高电平与低电平的宽度的测量。遥控信号的还原是通过 P1.0(T2)输出二进制已调脉冲。对遥控信号还原的调制在单片机的内部进行,利用了定时器 2 的捕获工作方式,定时器 2是一个 16 位定时/计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器 T2CON 的 C/T2 位选择
10、。定时器 2 有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由 T2CON 的控制位来选择,在捕获方式下,通过 T2CON 控制位 EXEN2 来选择两种方式。如果 EXEN20,定时器 2 是一个 16 位定时器或计数器,计数溢出时,对 T2CON 的溢出标志 TF2 置位,同时激活中断。如查 EXEN21,定时器 2 完成相同的操作,而当 T2EX 引脚外部输入信号发生 1 至 0 负跳变时,也出现 TH2 和 TL2 中的值分别被捕获到 RCAP2H 和 RCAP2L 中。另外,T2EX 引脚信号的跳变使得 T2CON 中的 EXF2 置位,与 T
11、F2 相仿,EXF2 也会活中断。本系统正是利用了捕获方式的 RCAP2H 和 RCAP2L 自动重装载,产生 38K 调制信号,准备还原的 0,1 信号的调制通过 TF2 标志进行调制,该方案不仅合理的利用硬件资源,而且还提高了系统的可靠性。2.安卓程序设计2.1android 简介Android 是一种以 Linux 为基础的开源代码操作系统,主要应用于手机,因为其良好的人机交互能力和能够安装使用众多功能各异的应用软件而深受人们喜爱,基于Android 2.1 版本开发的智能家电控制系统。2.2Android 开发环境的搭建首先在网上下载 JDK4.0、Eclipse3.4(Europe)
12、 、Eclipse IDE for java Developers。Android SDK1.5 、APT 插件。(1) 安装 JDK将下载好的 JDK 安装好以后,设置环境变量步骤如下:1) 我的电脑-属性-高级-环境变量-系统变量中添加以后环境变量:2) JAVA_HOME 值为:D:Program FilesJavajdk1.6.0_18 (你安装 JDK 的目录)3) 在开始追加 %JAVA_HOME%bin;安装完成后,可以检查 JDK 是否安装成功。打开 cmd 窗口,输入 java-version 查看JDK 版本信息,出现以后画面表示安装成功。4平台安装图 1(2) 安装 Ec
13、lipse将根据上面给的地址下载后安装即可,也可以选择下载绿色版,解压即可使用。(3) 安装 Android JDK运行 SDK Setup.exe,点击 Available Packages。如果没有出现可安装的包,请点击Settings,选中 Misc 中的“Force https:/.“这项,再点击 Available Packages。选择希望安装的 SDK 及其文档或者其它包,点击 Installation Selected、 Accept All、Install Accepted,开始下载安装所选包。在用户变量中新建 PATH 值为:Android SDK 中的 tools 绝对路
14、径(本机为 D:AndroidDevelopandroid-sdk-windowstools) 。平台安装图 2点击“确定”重新启动计算机,重启之后进入 cmd 窗口,检查 SDK 是不是安装成功,运行 android h ,如果有类似下面的输出,表示安装成功。5平台安装图 3(4) 安装 ADT1) 打开 Eclipse IDE,进入菜单中的 ”help”-”Install New Software”。2) 点击 Add.按钮,弹出对话框要求输入 Name 和 Location:Name 自己随便取,Location 输入 http:/dl- 43) 确定返回后,在 work with 后的
15、下拉列表中选择我们刚才添加的 ADT,我们会看到下面出有 Developer Tools,展开它会有 Android DDMS 和 Android Development Tool,勾选他们。 如下图所示:平台安装图 4完成之后就按提示一步一步 next:i、选择 Window Preferences.ii、在左边的面板选择 Android,然后在右侧点击 Browse.并选中 SDK 路径,本机6为: D:AndroidDevelopandroid-sdk-windowsiii、点击 Apply、OK。配置完成。(5) 创建 AVD为使 Android 应用程序可以在模拟器上运行,必须创建
16、AVD。在 Eclipse 中。选择 Windows Android SDK and AVD Manager。点击左侧面板的Virtual Devices,再右侧点击 New。填入 Name,选择 Target 的 API,SD Card 大小任意,Skin 随便选,Hardware 目前保持默认值。点击 Create AVD 即可完成创建 AVD。注意:如果你点击左侧面板的 Virtual Devices,再右侧点击 New,而 target 下拉列表没有课选项时,这时候你:1) 点击右侧面板的 Available Packages,在右侧勾选https:/dl- 52) 然后点击 Inst
17、all Selected 按钮,接下来就是按提示做就行了要做这两步,原因是在 1.3、Android SDK 安装中没有安装一些必要的可用包(Available Packages) 。这样安卓的开发环境就搭好了。2.3 主要开发内容(1)应用 XML 语言经行设计部分代码:7(2)调用蓝牙 API 与蓝牙通讯。/* 取得默认的蓝牙适配器 */private BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter();Overridepublic void onStart() super.onStart();/ If BT
18、 is not on, request that it be enabled.if (!mBtAdapter.isEnabled() IntentenableInten=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);startActivityForResult(enableIntent, 3); (3)用 java 写文件系统,并拟定协议储存各个遥控型号的数据类型。import java.io.*;class FileTest1public static void main(String args)System.out.println(“
19、path separator “+File.pathSeparator);System.out.println(“Separator “+File.separator);File f=new File(“d:temp“,“text“);System.out.println(“path “+f.getPath();System.out.println(“absolute path“+f.getAbsolutePath();五、 结论本项目研究正处在手机、pad 等智能终端几乎成为人人拥有的必备品,人们对于交互体验感有很强的要求。而智能家电仍然处于一个十分落后的阶段,而且最近几年已经拥有的电视机很难做到更新换代,所以本项目研制此中间产品,并设计 APP 为此阶段人们能够更快速便捷体会到智能生活带来很大的帮助,而且对于智能生活起到了过度和推进的作用。参 考 文 献:51 单片机 C 语言教程郭天祥 编著 电子工业出版社单片机原理与接口李朝青 编著 北京航空航天大学出版社java 面向对象程序设计 耿祥义 张跃平 清华大学出版社java 编程思想 (美)Bruce Eckel 著 陈昊鹏 译 机械工业出版社疯狂 Android 讲义李刚 编著 电子工业出版社