资源描述
- -
基于Android的智能家电控制器的设计与实现 章良
〔第二工业大学 计算机与信息学院〕
【容摘要】:此工程通过一个简单低本钱中间件,实现便携智能设备与现在家庭中已有的通过红外控制家电之间经行通讯,实现不用任何改造,无需购置昂贵的终端,通过已有的便携智能设备安装对应APP,既可以直接智能控制家中任意家电。家庭中的灯具,厨具等都稍加改造即亦可以通过你的智能终端控制。
【关键词】: 智能家控 智能终端 APP 通讯 安卓
一、 工程背景〔创作意图〕
随着智能终端越来越普及,它给带来的人机交互感彻底的颠覆了传统的概念。人们对于智能和人机交互的控制感觉有了更深的体验,对于智能的追求又到了一个新的纪元。智能家电控制在电子兴起的时候就被人们所提起过,并有好多人为此努力过,但是现在仍然处在一个很低的阶段,如家电单一的遥控功能,窗帘按钮等等都是。而且目前各个厂家各种不同规格的,不同通讯协议,在现在这个状态很难统一。所以根据现在的情况我们制作一个中间产品连接起现有的家电和智能终端,到达通过最简单途径实现智能家电控制的任务能到达很好的交互体验。
二、 实现目标
1.设计一个小巧中间件里面包括MCU控制面板,与智能终端通讯的蓝牙模块,与家电通讯的红外通讯模块,红外模块具有自我学习功能能通过对特定遥控学习并把它存储在智能终端上以便下次继续使用。
2.设计安卓智能操作系统终端APP,能很好实现的人机体验通过文件系统根据拟定的协议与单片机通讯,根据不同家电给定特定的伪代码能够使单片机产生特定的通讯格式完成对不同家电的控制,间接实现家电通讯的统一,省去家庭中几乎所有遥控器使得一个终端遥控所有的功能,APP具有上网更新及下载资料功能,提供学习到遥控代码的功能。通过APP嵌入销售信息增加对产品的销售,APP使用量也是一笔很多财富。
图1 功能示意图
三、 硬件设计
1.MCU STC89C52简介
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51核,但做了很多的改良使得芯片具有传统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、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停顿,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选
2.蓝牙通讯
该工程采用的是低功耗透明传输的蓝牙从机模块HC-07,主要应用方面是用于单片机跟电脑或者手机配对通讯。从机是被动设备,只能等待手机或者电脑去配对它,它不可以主动去搜索周围的蓝牙设备。从机模块是透明串口,不需要单片机去做任何配置,也不用管蓝牙的任何事情。对于单片机来讲,模就是根串口线,手机配对连接了模块,就相当于手机跟单片机之间有根串口线连着了,直接串口通讯就行了。这样简化了开发过程如果一门的去考虑蓝牙的东西,就会是开发非常的复杂。
用的方法是给模块连接电源,因为使用单片机是5V所以那么连接模块的5V排针接口。然后把模块的通信线RXD TXD连接到单片机的TXD和RXD,另外两个引脚AT是给主从一体用发送AT指令用的的,RS是给模块复位的,正常通讯不用连接。
TX:传送数据RX:接收数据
5V:提供5V电源
3.3V:提供3.3V电源
RS:复位引脚
GND:地线
AT: AT指令
图2 蓝牙模块底片图
图3HC-07蓝牙模块实物图
3. 红外学习遥控接收电路设计
所有红外遥控器的输出都是用编码后的串行数据对38kHz~40kHz的方波进展脉冲幅度调制而产生的。如果直接对已调波进展测量,而其脉宽只有20多微秒,由于单片机的指令周期是微秒级,会产生很大的误差。因此,先要对已调波进展解调,对解调后的波形进展测量。将CX20216或一体化红外接收头解调出的遥控编码脉冲直接连入STC89C52单片机的INT0和T0脚,定时器T0和T1都初始化为定时工作方式1,T0的GATE位置位。每次外部中断首先停顿定时,记录T0、T1的计数值,然后将T0、T1的计数值清零,并重新启动定时。T0的值即为高电平脉宽,T1~T0的值为低电平脉宽。T0、T1与红外编码信号脉宽的对应关系并且存储到外部储蓄器24C256中等待发送调用。
图4 红外学习遥控接收电路设计
4. 红外学习遥控发送电路设计
遥控信号的复原是通过STC89C52的T2特殊输出口进展二进制脉冲码的高电平与低电平的调制输出,其中调制为利用单片机特殊功能进展部调制这也是本设计的一个创新点,调制后的信号如图3.5-2驱动红外发光管工作。该设计的硬件电路相对简单,因此系统的调试重点在软件上。
图5 红外学习遥控发送电路设计
四、 软件设计
1.红外学习遥控程序设计
设计的主要思路是通过对红外二进制脉冲的宽度进展测量,从而获得红外遥控的波形信息,进而实现存储、复原。根据遥控信号编码和发射过程,遥控信号的识别〔也叫解码过程〕是去除38KHz载波信号后识别出二进制脉冲码中的0和1。红外接收头的解调信号送到INT0引脚,由部定时器完成上下电平长度的采集,然后进展数据保存,由单片机进展高电平与低电平的宽度的测量。遥控信号的复原是通过P1.0〔T2〕输出二进制已调脉冲。对遥控信号复原的调制在单片机的部进展,利用了定时器2的捕获工作方式,定时器2是一个16位定时/计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能存放器T2CON的C/T2位选择。定时器2有三种工作方式:捕获方式,自动重装载〔向上或向下计数〕方式和波特率发生器方式,工作方式由T2CON的控制位来选择,在捕获方式下,通过T2CON控制位EXEN2来选择两种方式。如果EXEN2=0,定时器2是一个16位定时器或计数器,计数溢出时,对T2CON的溢出标志TF2置位,同时激活中断。如查EXEN2=1,定时器2完成一样的操作,而当T2EX引脚外部输入信号发生1至0负跳变时,也出现TH2和TL2中的值分别被捕获到RCAP2H和RCAP2L中。另外,T2EX引脚信号的跳变使得T2CON中的EXF2置位,与TF2相仿,EXF2也会活中断。本系统正是利用了捕获方式的RCAP2H和RCAP2L自动重装载,产生38K调制信号,准备复原的0,1信号的调制通过TF2标志进展调制,该方案不仅合理的利用硬件资源,而且还提高了系统的可靠性。
2.安卓程序设计
2.1android简介
Android是一种以Linux为根底的开源代码操作系统,主要应用于手机,因为其良好的人机交互能力和能够安装使用众多功能各异的应用软件而深受人们喜爱,基于Android 2.1版本开发的智能家电控制系统。
2.2Android开发环境的搭建
首先在网上下载JDK4.0、Eclipse3.4(Europe) 、Eclipse IDE for java Developers。
Android SDK1.5 、APT插件。
(1) 安装JDK
将下载好的JDK安装好以后,设置环境变量步骤如下:
1) 我的电脑->属性->高级->环境变量->系统变量中添加以后环境变量:
2) JAVA_HOME值为:D:\Program Files\Java\jdk1.6.0_18 (你安装JDK的目录)
3) 在开场追加 %JAVA_HOME%\bin;
安装完成后,可以检查JDK是否安装成功。翻开cmd窗口,输入java-version查看JDK版本信息,出现以后画面表示安装成功。
平台安装图1
(2) 安装Eclipse
将根据上面给的地址下载后安装即可,也可以选择下载绿色版,解压即可使用。
(3) 安装Android JDK
运行SDK Setup.exe,点击Available Packages。如果没有出现可安装的包,请点击Settings,选中Misc中的"Force s://..."这项,再点击Available Packages。选择希望安装的SDK及其文档或者其它包,点击Installation Selected、AcceptAll、Install Accepted,开场下载安装所选包。在用户变量中新建PATH值为:Android SDK中的tools绝对路径〔本机为D:\AndroidDevelop\android-sdk-windows\tools〕。
平台安装图2
点击“确定〞重新启动计算机,重启之后进入cmd窗口,检查SDK是不是安装成功,运行android –h ,如果有类似下面的输出,表示安装成功。
平台安装图3
(4) 安装ADT
1) 翻开Eclipse IDE,进入菜单中的〞help〞->〞Install New Software〞。
2) 点击Add...按钮,弹出对话框要求输入Name和Location:Name自己随便取,Location输入dl-ssl.google./android/eclipse。如下列图所示:
平台安装图4
3) 确定返回后,在work with后的下拉列表中选择我们刚刚添加的ADT,我们会看到下面出有Developer Tools,展开它会有Android DDMS和Android Development Tool,勾选他们。 如下列图所示:
平台安装图4
完成之后就按提示一步一步next:
i、选择Window > Preferences...
ii、在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:
D:\AndroidDevelop\android-sdk-windows
iii、点击Apply、OK。配置完成。
(5) 创立AVD
为使Android应用程序可以在模拟器上运行,必须创立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,在右侧勾选
s://dl-ssl.google./android/repository/repository.xml,如下图:
平台安装图5
2) 然后点击Install Selected按钮,接下来就是按提示做就行了
要做这两步,原因是在1.3、Android SDK安装中没有安装一些必要的可用包(Available Packages〕。
这样安卓的开发环境就搭好了。
2.3主要开发容
(1)应用XML语言经行UI设计
局部代码:
<?xml version="1.0" encoding="utf-8"?>
<gjz.bluetooth.AnimationTabHost
<LinearLayout android:orientation="vertical"
android:id="+id/LayoutSwitch"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" 图6 UI初步设计
android:id="android:id/tabcontent">
</FrameLayout>
</LinearLayout>
</gjz.bluetooth.AnimationTabHost>
(2)调用蓝牙API与蓝牙通讯。
/* 取得默认的蓝牙适配器 */
private BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter();
Override
public void onStart() {
super.onStart();
// If BT 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 FileTest1{
public static void main(String args[]){
System.out.println("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讲义?刚 编著 电子工业
- word.zl
展开阅读全文