基于Android平台的传感器在物联网智能家居中应用探索
2014-07-24向守超秦凤梅
向守超 秦凤梅
摘要:该文提出了基于Android平台应用程序与常用家居传感器在智能家居网络中的应用探索。用户远程使用Android智能手机,通过Intenter网络或移动网络和家庭ZigBee协调器相连接,实现对家庭环境的检测,应急处理和家电控制等功能。同时也通过JNI技术简单解释了传感器物理层与Android应用程序直接的应用原理。从而让用户在技术层面上对物联网智能家居有一个更深层次的认识。
关键词:Android;物联网;智能家居;传感器
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2014)15-3617-02
1 研究的背景和意义
随着智能家居系统的出现和发展,人们对居住环境的要求发生了新的改变,不再只关心住处的绿化比例、采光好坏,地理位置以及基础配套设置,更希望享受智能化的家居环境。智能家居就是通过物联网技术将家中的各种设备连接在一起的居住环境,它以家庭住宅为基础,综合运用布线技术、网络技术、自动化控制技术以及安全防范等技术来将家庭中有关的设施集成起来,构建出高质优效的家庭日程事务管理系统,提升家庭居住的安全性和舒适性。
在智能家居系统的不断推广中,人们开始对物联网的概念更加熟悉,同时更希望能够深层次了解物联网的结构、部分核心技术和基本运行原理。从而让用户在智能家居环境生活更放心。
2 关键词概述
传感器(英文名称:transducer/sensor)是一种硬件的检测装置工具,它的硬件抽象层是由C/C++语言编写的,能感受到一些特定的被测量信息,并能将这些信息按一定规律转换成相应的电信号或其他信号,并实现信息输出功能。传感器也是Android嵌入式开发的终端设备,是实现自动检测和自动控制的主要环节。
Android是Google公司基于Linux平台的开源移动操作系统,后由开放手机联盟Open Handset Alliance)开发,主要使用在移动设备上。该平台由操作系统、中间件、用户界面和应用程序四大部分组成。它采用软件叠层(Software Stack)的架构,主要由底层、中间层和上层三部分组成。底层以Linux内核工作为基础,只提供基本功能,由C语言开发;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,由各公司自行开发,包括通话程序,短信程序等,由java作为编写程序的一部分开发。
物联网(Internet of Things,缩写IOT)是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。在架构上可以分为感知层、网络层和应用层。感知层指通过各种传感器采集数据,包括温度传感器、光度传感器、摄像头等多种感知终端。网络层指数据的传输途径,包括互联网、有线和无线通信网等。应用层指物联网和用户的接口。
3 智能家居网络的设计探索
本文实现的基于Android平台传感器在智能家居中的应用探索,智能家居网关具备智能家居控制枢纽和无线路由两大功能,是应用在家庭环境监测系统,应用控制系统中,是智能家居系统的重要部分。家庭环境监测系统由ZigBee协调器组成的无线传感器网络、家庭智能网络和Intenet或移动网络三个部分组成,通过无线方式与智能终端产品进行数据交互。其中ZigBee协调器带有不同的传感器模块构成了智能家居网关的主体部分,是由基于Android平台的嵌入式开发的应用程序组成,对家庭内部数据进行持续的采集,并发送到服务器;如果ZigBee终端节点接受到外网相关数据信息,也可以发送到相关的传感器执行。ZigBee协调器与各种传感器共同组成了基于ZigBee技术的智能家居网关,是家庭环境监测系统的核心部分,实现家庭环境数据采集和把数据转移到网络,实现智能家庭的环境信息数据采集和通过网络进行信息数据交互,当然,智能家居网关必须要能够连接到Interner、移动网络等外部网络,才能真正实现数据交互。
智能家居网关是家庭环境信息数据的采集网络与家庭外部网络之间数据信息交互的桥梁。智能家居网关具有远程工作模式和本地工作模式两种工作模式,智能家居网关能够将获取到的传感器终端采集的信息数据进行传输和存储,提供远程查询功能,用户通过移动网络和云端的存储,时时查询家庭环境数据信息和状态数据。在出现温度、湿度、红外等传感器特殊信息时,网关能够抓拍相关图片通过短信、微信、彩信等方式将这些信息及时主动告知用户。用户可以通过Android智能终端实现智能家居网关的远程工作模式,启动相应的其他传感器功能,进行应急处理,避免造成不必要的损失。
4 Android平台的JNI实现
JNI是Java Native Interface的缩写,中文为JAVA本地调用。在Android應用开发中,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。
在Android嵌入式开发中,App应用程序访问硬件抽象层(HAL)一般是经过Manager管理器调用相应的服务(service)来实现。如图2所示。
图2 JNI实现原理图
在传感器驱动中加载相关的事件,当传感器硬件抽象层获取到不同信息的时候,会通知Java服务层当前数据发生了变化,需要重新获取。Java服务线程获取到信息就会通过ZigBee协调器发送到移动网络同时发送给服务器。其参考代码如下:
static void temperature_dev_poll(structinput_polled_dev *dev) {
char *buf;
char *envp[3];
sysfs_notify(&dev→input→dev.kobj,NULL, "value");
buf = kmalloc(32,GFP_ATOMIC);
if(!buf){
printk(KERN_ERR "%s kmalloc failed\n", __func__);
return;
}
envp[0] = "NAME=temperature";
snprintf(buf , 32 , "TEMPERATURE=%d",tempValue);
envp[1] = buf;
envp[2] =NULL;
kobject_uevent_env(&dev→input→dev.kobj,KOBJ_CHANGE,envp);
kfree(buf);
printk(KERN_INFO "Current Temperature: %d\n",tempValue);
if((tempValue++)==100)
tempValue=0;
input_event(dev→input,EV_ABS,ABS_PRESSURE,tempValue);
input_sync(dev→input); }
5 结束语
本文所讨论的基于Android平台的物联网智能家居系统主要以讨论智能家居网关为主要内容,并简单对传感器的JNI技术进行了阐述。而智能家居网关是智能家居系统的核心部分,也是我们本文探索的重点。智能家居网关系统是智能家居环境检测系统和家庭监控系统的重要组成部分,是连接家庭各种传感器设备与Intenter网络或移动网络的桥梁。用户可以通过系统既可以查
询各种传感器信息,也可以远程通过Android智能终端控制家庭相关家电或设备,处理紧急事务。网关系统不但可以将接收到传感器相关特殊信息能够及时通过移动网络主动通知用户,还能够定时将接收到的传感器传来的相关信息数据通过Intenter外网传输到云端,供用户随时查询监控。
参考文献:
[1] 马志强.基于Android平台即时通信系统的设计与实现[D] 北京交通大学,2009.
[2] 黎美.基于ZigBee无线网络技术的现代温室环境系统研究[D].合肥:安徽农业大学,2010.
[3] 杨彬彬.智能家居安防監控系统的设计及软件实现[D].济南:山东大学,2008.
[4] 朱宇阳.智能家居系统嵌入式网关设计[D].上海:华东师范大学,2009.
[5] 陈颖莹.ZigBee+Arduino+Android圆梦智能家庭[J].电子技术应用,2011(8).
[6] 张亮.基于ZigBee技术的智能家居环境检测系统[D].武汉科技大学,2009.
[7] 朱乃昌.基于Android的物联网无线报警系统[D].北京:北京邮电大学,2012.