(物联网)A智能家居详细设计基于Android的智能家居三个火枪手2013年5月目录第1 章项目概述 (1)1.1 项目背景 (1)1.2 术语定义 (2)第2 章技术方案 (3)2.1 系统描述 (3)2.2 功能描述 (3)2.3 项目功能图 (4)2.4 所涉及的系统、工具 (4)第3 章前端数据中心(A8)总体设计 (5)3.1 程序设计流程图 (5)3.2 线程定义 (5)3.3 所用类定义 (6)第4 章前端A8模块设计 (7)4.1 A8-A NDROID A PPLICATION层设计 (7)4.1.1 数据流分析 (7)4.1.2 Application层详细设计与实现 (9)4.2 A8-数据传递架构模块 (16)4.2.1 层次接口表 (16)4.2.2 HAL层 (17)4.2.3 JNI层 (19)4.2.4 Framework层 (20)4.2.5 整体流程 (21)4.2.6 关键代码分析 (22)4.3 传输协议模块设计 (32)4.3.1 A8接收数据格式 (32)4.3.2 M0接收命令数据结构 (33)第5 章终端M0模块设计 (35)5.1 终端设备方案描述 (35)5.2 终端设备工作流程 (35)5.3 功能模块描述 (36)5.3.1 温湿度传感器DHT10 (36)5.3.2 ZigBee通信部分 (37)5.3.3 RFID读卡模块 (40)5.3.4 IIC接口部分 (41)第6 章系统测试 (45)6.1 项目演示 (45)基于Android的智能家居AcE team第 1 章项目概述1.1项目背景随着社会电子信息化的不断发展,人们在家居中使用的电器越来越多,由此带来的安全隐患也有了明显的增多。
在这些电器中一旦出现一些异常,便会给人们带来很大的损失。
为了降低电器的不合理使用带来的异常情况,就要求在异常发生时用户能及时得到信息,并通过实时监控采取一定的操作排除异常。
因此,远程监控系统的作用是非常巨大的。
90年代末,随着多媒体技术、视频压缩编码技术、网络通讯技术的发展,数字视频监控系统迅速崛起,现今市场上由两种数字视频监控系统类型,一种是以数字录像设备为核心的视频监控系统,另一种是以嵌入式视频web服务器为核心的视频监控系统。
以数字录像设备为核心的视频监控系统采用PC机作为多媒体监控主机,综合了视频矩阵、图像分割器、录像机等众多的功能,使系统结构大为简化,采用计算机网络技术,数字多媒体远程网络监控不受距离限制,采用大容量磁盘阵列存盘器或光盘存储器,可以节省大量的磁盘介质,同时有利于系统实现多媒体信息查询。
但随着基于PC机的视频监控录像系统的发展,在实际使用过程中,也暴露出一些不足,主要是系统工作的不稳定性。
以嵌入式视频web服务器为核心的视频监控系统,采用嵌入式实时多任务操作系统。
摄像头采集到的图片信息经过压缩,通过内部总线送到内置的web 服务器,网络上的用户可以直接用浏览器观看web服务器上的由摄像头采集的图像。
由于把图片采集和web功能集中到一个体积很小的设备内,可以直接连入局域网,用户无需安装任何硬件设备,仅用浏览器即可观看。
同时还具有以下优点:布控区域广阔,嵌入式视频web服务器监控系统web服务器直接连入网络,没有线缆长度和信号衰减的限制,同时网络是没有距离概念的,彻底抛弃了地域的概念,扩展布控的区域。
系统具有几乎无限的无缝扩展能力。
所以设备都以IP 地址进行标示,增加设备只是意味着IP地址的扩充。
性能稳定可靠,无需专人管理。
嵌入式web服务器实际上是基于嵌入式微处理器技术,采用嵌入式实时多任务操作系统,对于用户来讲,上网进行登陆,便可对家中情况进行监控。
除了WEB服务器实时控制之外,当前智能手机的发展趋势已经愈加明显。
智能手机(Smartphone),是指“像个人电脑一样,具有独立的操作系统,可以由用户自行安装软件、游戏等第三方服务商提供的程序,通过此类程序来不断对手机的功能进行扩充,并可以通过移动通讯网络来实现无线网络接入的这样一类手机的总称”。
而当前应用在智能手机上的操作系统中Android操作系统占有相当大的比例。
Android( 中文名:安卓) 是基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
随着Android应用的更见广泛,了解并能使用Android来完成我们对智能家居的控制已经显得愈加重要。
现在监控系统发展到第三代,前端一体化、视频十字化、监控网络化、系统集成化成为视频监控系统公认的发展方向,它以网络为依托,以数字视频的压缩、传输、存放和播放为核心,以智能实用的图像分析为特点,并为报警系统、门禁系统完美的整合到一个使用平台上,引发了视频控制行业的一次技术革命。
1.2术语定义Android: Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。
HAL:硬件抽象层。
JNI:JNI是Java Native Interface的缩写,中文为JAVA本地调用。
RFID:射频识别即RFID(Radio Frequency IDentification)技术,又称电子标签、无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触。
A8: ARM Cortex-A8处理器是第一款基于ARMv7架构的应用处理器,并且是有史以来ARM开发的性能最高、最具功率效率的处理器。
M0:Cortex-M0处理器,是市场上现有的最小、能耗最低、最节能的ARM 处理器。
第 2 章技术方案2.1系统描述Android是一个开放源码的操作系统专门为移动电话而设计的系统。
Android手机将开辟新的应用,使家居智能化运用于普通家庭。
Android 界面显示(Cortex_A8)来自于Cortex_m0模拟量,并可对Cortex_m0进行控制或操作。
本系统做为裁减项目,实现了M0采集房间信息,通过无线方式发送到A8进行监控、控制。
A8即可作为移动终端设备(如phone、pad等),亦可作中央监控服务器设备。
本项目采用后者方案,即作中央监控。
若需作移动设备,只需将程序移植到移动设备上,再在中央端移植web服务器,移动设备登陆服务器即可查看房屋信息。
2.2功能描述1.检测室内温度、湿度、光感、电压情况(通过Cortex_m0采集的信息)。
2.通过温度、湿度的情况来对应调节风扇开关(控制Cortex_m0)。
3.根据光敏传感器情况对应调节led灯亮灭(控制Cortex_m0)。
4.根据三轴加速度情况对应调节蜂鸣器开关(控制Cortex_m0)。
5.显示Rfid信息等功能(通过Cortex_m0采集)。
2.3项目功能图图2.1 项目功能图2.4所涉及的系统、工具表2.1 系统与工具第 3 章前端数据中心(A8)总体设计3.1程序设计流程图图3.1 程序设计流程图3.2线程定义1. SmartHomeActivity,程序主Activity界面,打开程序首先运行。
2. NodeInfoActivity,从界面Activity,用来显示详细设备采集信息和控制按键。
3. MainReadThread,读数据主线程,该线程只负责对通过Zigbee获取的数据转发给读进程,不进行数据操作。
4. MainHandlerThread,处理数据线程,该线程对从读进程传来的数据进行数据校验并转发。
5. NodeWriteThread,控制线程,该线程负责处理由用户对设备的操作。
3.3所用类定义1. Data,用来存储和处理设备的采集数据。
2. NodeCmd,定义操作方法,实现对设备的读操作和控制操作。
3. NodeInfo,定义设备的所有采集信息,控制器状态和WatchDog。
4. NodeList,使用链表存储设备信息。
5. MyUartService:提供与底层的接口,以读写串口。
第 4 章前端A8模块设计4.1A8-Android Application层设计4.1.1数据流分析4.1.1.1NEWNODE,新节点加入1.数据处理流程图图4.1 NEWNODE数据流程图2.数据格式NEWNODE数据格式3.数据处理详细描述Cortex-M0开启,通过Zigbee发送NEWNODE数据给Cortex-A8,程序通过MainReadThread线程读取到数据,交由MainHandlerThread线程处理。
MainHandlerThread对NOEWNODE进行校验,判断是否合法,如果数据无误,通过发送Handler消息交由SmartHomeActivity主界面UI线程,SmartHomeActivity 判断链表是否已经存在该节点,不存在则加入链表并创建节点。
4.1.1.2NODEINFO,节点信息更新。
1.数据处理流程图图4.2 NODEINFO数据流程图2.数据格式NODEINFO数据3.数据处理详细描述Cortex-M0开启,通过Zigbee发送NEWNODE数据给Cortex-A8,程序通过MainReadThread线程读取到数据,交由MainHandlerThread线程处理。
MainHandlerThread对NODEINFO进行校验,判断是否合法,如果数据无误,通过发送Handler消息交由SmartHomeActivity主界面UI线程,SmartHomeActivity 判断链表是否已经存在该节点,存在则更新该链表信息,并判断是否进入该节点从界面,如果进入发送Broadcast通知从界面更新数据。
4.1.1.3RFID,用户登录或退出。
1.数据处理流程图图4.3 RFID数据流程图2.数据格式RFID数据格式3.数据处理详细描述Cortex-M0开启,通过Zigbee发送NEWNODE数据给Cortex-A8,程序通过MainReadThread线程读取到数据,交由MainHandlerThread线程处理。
MainHandlerThread对RFID进行校验,判断是否合法,如果数据无误,通过发送Handler消息交由SmartHomeActivity主界面UI线程,SmartHomeActivity发送Broadcast通知从界面,从界面判断是否为自己设备,是则更新数据。
4.1.2Application层详细设计与实现4.1.2.1类对象详细描述1 .Data类,负责对接受来数据进行处理表4.1 Data成员属性表表4.2 Data成员方法表2 .NodeCmd类,负责与底层进行交互,实现对硬件设备读,写操作。
表4.3 NodeCmd成员属性表表4.4 NodeCmd成员方法表3 .NodeInfo类,负责存储一个设备的信息。