山 东 省 应 用 物 联 网 设 计 大 赛
主处理器硬件接口实现无缝连接,解决智能家居内部网络的数据通信问题。
实验箱内A8网关硬件电路以ARM系列的 Cortex-A8处理器为控制核心,主要包括电源模块、按键模块、触摸屏模块、存储电路模块、通信接口模块等,完全能够满足本设计的要求,如图6-2所示。因此,以下只介绍网关软件设计过程。
图6-2 网关硬件结构图
6.2 网关软件开发平台的搭建
网关软件开发平台如图 6-3 所示,包括 U-Boot、文件系统、Linux 内核以及嵌入式 Qt库。U-Boot 用作引导加载程序,负责加载内核;文件系统存储系统应用以及用户数据等;内核是整个操作系统的核心,负责对上层的抽象化;Qt 库提供应用软件图形 API。软件平台搭建完成后,可以通过Qt进行网关应用程序的开发。
22
山 东 省 应 用 物 联 网 设 计 大 赛
图6-3 软件平台框图
6.3 网关应用程序设计
本设计采用Qt进行网关应用程序开发。Qt是一个跨平台的C++图形用户界面库。Qt是完全面向对象的,提供了丰富的窗口部件集,给应用程序开发者建立艺术级的图形用户界面所需的应用功能。而且很容易扩展,允许真正地组件编程。最为重要的是Qt使用“一次编写,随处编译”的方式来构建多平台图形用户程序。 6.3.1 网关工作流程
本设计的网关工作流程图如图6-4所示。本设计中的传感器的数据监控、设备的定时控制均由设备监控进程来进行维护,用户退出时会自动保存用户的配置,在启动时自动导入配置,并将该配置同步给设备监控进程。在此之后设备的监控全部由设备监控进程来负责,在设备状态更新或者由短消息控制设备定时状态得到更新时,由设备监控进程通知该用户界面进程来进行更新,以保证设备状态信息的同步。
在系统启动开始需要用户输入密码,进行授权验证。如果密码验证错误次数超过阈值,则直接退出系统。如果验证成功,则进行系统启动,向设备监控进程请求设备的开关状态以及传感器的数据,初始化系统界面,之后进入循环判断流程:如果有从设备监控进程发来的设备状态信息同步数据,则进行数据的更新;如果用户点击设置按钮,进行系统参数设置,如果选择保存设置,则根据改变的参数类别,将其保存至文件或者通知相应的进程。
23
山 东 省 应 用 物 联 网 设 计 大 赛
图6-4 网关工作流程图
6.3.2 应用程序界面设计
网关应用程序的功能可分为后台服务和功能控制。后台服务主要会检查如下这些情况:温湿度的实时数值,以反映在主界面之上;检查当前的灯光强度以自动控制窗帘的开或关;检查当前的温度以自动控制空调的开或关;检查是否发生火灾或入侵作出相应的动作。功能控制包括六大部分分别是门禁控制、厨房控制、窗帘控制、灯光控制、警报消除以及短信控制。各级功能控制会负责自己所控制的区域,不会互相交叉影响。
1. 主界面设计
根据网关应用程序的功能,主用户界面如图6-5所示。该界面提供给用户当前各个传感器的实时数据,设备定时信息的总览,并在状态栏中实时显示各个传感器的连线状态信息等,当和某个传感器失去连线时,会显示在主界面上,并有警告对话框提示用户进行检查。该界面中下端的设置按钮以及上端工具栏中按钮以及菜单栏设置栏中的选项均可调出系统对应的配置对话框供用户进行配置,该部分对话框设计的部件在系统初始化时已经创建,仅是隐藏未显示,在调用时显示即可,以此来加速对话框的显示,给用户提供流畅的显示。
24
山 东 省 应 用 物 联 网 设 计 大 赛
图6-5主界面
2.传感器设置界面设计
本设计中传感器设置界面如图6-6所示,该界面提供给用户如下设置选项:蜂鸣器使能、
门禁报警使能、温度报警阈值设定、天然气报警设置,该保存命令框的功能同上述设置 GSM 短消息配置大体相同,但本界面的设置保存除保存在系统配置中外,还需要将这些信息同步给设备监控进程,使各个进程间的配置保持相同。该界面的在系统配置中保存界面配置信息的代码如下所示:
图6-6传感器设置界面
6.3.3 应用程序设计与实现
网关的主要功能是通过串口与ZigBee无线传感网络实现信息交互和通过Internet网络与控制终端(手机)实现远程控制。
25
山 东 省 应 用 物 联 网 设 计 大 赛
1. 串口通信
Linux系统对串口的读取仅能采用查询模式。此外,Qt中并没有特定的串口控制类,实际开发过程中多采用qextserialport类实现串口通信。
2.网络通信
网关网线连接无线路由器,通过Wi-Fi网络与智能交互终端等产品进行数据交互。在控制终端(手机)Wi-Fi功能的基础上,应用程序通过套接字通信的方法来实现网关和控制终端的TCP连接。套接字通信的基本思想比较简单,客户端建立一个到服务器的连接,一旦建立了,客户端就可以往套接字里面写数据,并向服务器发送数据;反过来,服务端读取客户端写入套接字的数据。因此,在Qt中建立一个TCP的服务器,在手机应用程序中建立一个TCP客户端,基于手机的Wi-Fi功能便可实现网关和手机的TCP连接。Qt提供了QTcpSocket类实现TCP传输协议,若是创建服务器应用程序,还需要QTcpServer类处理引入的TCP连接。
第7章 基于Android控制的智能家居终端设计
7.1 Android 系统体系结构
Android 主要是为移动平台而设计的软件包,其体系结构被分为四层,分别是 Linux 内核层、Android 运行时和组件库、应用框架层和应用层,如图7-1所示。使用 linux 内核实现任务调度,内存管理等核心功能。同时实现了一个 java 虚拟机以支持 java 程序的运行,提供了各种 C 库支持并把这些功能重新用 jar 包封装,使得 Android 程序的开发变成了纯 java 的开发。Google 公司提供了整套开发环境和工具。
26