刘 晋,张 帆,冯佳玉,邓 彤,崔 璨
(辽宁师范大学计算机与信息技术学院,辽宁 大连 116081)
智能家居是“建筑自动化”在个人住宅领域的扩展[1]。随着物联网的飞速发展,基于物联网的智能家居逐渐吸引消费者的眼球。但由于智能家居的成本过高,其关联设备又过于繁杂,用户不大可能一次性购买所有关联设备,如何科学地配备智能家居就成为了值得探讨的问题[2-3]。智能家居在安装后的调试与维护也比较复杂,这些也都是成本投入。同时现在仍旧存在很多智能家具设备需要通过计算机端来控制,这也让“智能化”大打折扣。
针对以上问题,设计了一款极具性价比的物联网智能家居系统。它使用了物联网WiFi芯片ESP8266进行无线通信,其通信范围更广、成本更低、更便于开发[4]。采用此款WiFi芯片进行物联网家居设计开发更具实际价值。借助云平台进行数据的中转储存,在云端进行相关接口功能维护及状态查看的方式也更为智能、便捷。选择计算机作为控制终端,其不可移动性也会给用户带来不便。在本系统中,使用手机应用程序(application,APP)控制操纵设备的方式,移动性更强也更显智能[5]。
智能家居网关的硬件设计很大程度上决定了整个智能家居性能。设计网关的硬件时则必须遵循安全、稳定、低成本的设计原则。
在本文设计的物联网智能家居系统中,使用以STM32F103RCT6芯片为核心的STM32单片机作为主控制器,它主要有以下4个优势。
①成本低。此款单片机市场价位非常低,但却能满足本系统设计的相关功能,符合本文研发价格低廉、简单实用智能家居系统的定位。
②功能强大。该款单片机芯片主频频率达到72 MHz,具有48 KB SRAM、256 KB的Flash、51个I/O接口、及丰富的通信接口可供功能扩展。其工作电压为2到3.6 V,具有多种省点模式保证其低功耗运转;同时,其-40~+105 ℃的工作环境保证了设备一年四季的稳定运行。
③功耗低。系统使用的Cortex-M3内核非常节省功耗。
④开发便捷。该款单片机为意法半导体主流产品之一,可节约开发成本。
在STM32外围电路则搭载烟雾检测模块(MQ-2)、温湿度采集模块(DHT11)、红外感应模块(D-SUN)、WIFI模块(ESP8266)、步进电机驱动模块、LED驱动模块及报警电路进行相关功能的设计。系统硬件架构框图如图1所示。
图1 系统硬件架构图
传统的智能家居系统以家庭网关为核心,设备均与家庭网关相连,并接收其指令。而在本文设计的智能家居系统中,家庭网关只是连接传感器、家电等硬件终端和云数据中心的中介,而非系统中枢[6]。
相较于传统的以家庭网关为核心的家居系统,通过借助接入云平台的方式控制管理家居设备则更具有优势。首先,它减少了家居网关设计时的复杂度,降低了组网管理带来的设计成本;其次,云服务器对大量数据进行储存统筹,也更有利于发现智能家居领域大家的需求量在哪,为整个领域更好的发展带来帮助;最后,云服务器高性能的计算能力和储存能力可以接收来自各方的大量智能家居系统上传数据,在更大的范围内进行管理安排。
该智能家居系统将云平台作为核心,借助机智云平台搭建出以应用域、网络域、设备域组成的云物联系统基本架构,把嵌入式技术、传感器技术、无线通信技术进行充分融合,充分做到“以人为中心”[7-8]。云平台系统架构如图2所示。
图2 云平台系统架构图
同时将手机作为移动控制终端使用,通过使用机智云平台进行数据的储存与中转,最终实现APP与智能设备间的通信,完成远程家居控制和监测。
μC/OS-III是一个可剪裁、可固化、可剥夺型的实时内核,管理任务的数目不受限制[9]。
它包括了资源管理、任务管理、中断管理、时间管理、定时器管理、内存管理等多种实时内核所需要的功能,同时具有很好的移植性,可读性很强。其内核最小可以剪裁到4 KB,消耗程序储存器资源极少,并具有很高的执行效率[10]。
在μC/OS-III嵌入式操作系统中,可以创建无数多个任务,让这些任务并发运行,就如同有多个主函数在运行一样。正是利用这样的特点,在该家居系统中使用μC/OS-III系统对ApptaskLed、ApptaskMotor、ApptaskDht11、ApptaskMQ-2、ApptaskD-SUN等任务进行并发运行,并通过任务信号量协调管理如门禁端红外探测器与LED等特定任务之间的关系。同时,通过使用内存管理的方式,尽量减少内存在分配与释放过程造成的内存碎片,避免了内存的浪费。
系统通过无线进行通信,使用的WiFi芯片为ESP8266。它是由乐鑫公司生产的超低功耗WIFI芯片,其工作电压为2.5~3.6 V,工作电流为80 mA,内置32位CPU;同时,它支持CloudServerDevelopment、固件烧写及SDK开发,故广泛应用在智能家居领域[11]。ESP8266硬件接口丰富,可支持UART、IIC、PWM、GPIO和ADC接口。该系统中使用ESP8266模块的TXD和RXD引脚与MCU进行串口传透的方式通信[12]。
设备端作为客户端运行,只具有私网的IP地址,只能主动去访问外部服务器,而不能由外部服务器主动去访问设备本身。因此,需要通过“ESPFlashDownloadTool”软件向WiFi芯片ESP8266烧写机智云固件程序GAgent。GAgent的主要作用是让ESP8266模块主动连接云服务器,并实与云端的TCP/UDP通信。
在向WIFI芯片成功烧取固件后,只要在集成控制板MCU上集成WIFI模块ESP8266,并实现它们之间的串口通信,即可接入云端完成设备端与云端通信。设备端与云端通信如图3所示。
图3 设备端与云端通信图
本系统使用Android原生SDK进行APP的开发。通过对该SDK中进行相关业务逻辑处理的编写及封装即可实现和设备端及云端进行通信。
APP与设备端的具体传透数据方法如下。
①在云平台创建传感器、步进电机等相关的数据点。
②微处理单元(micro computer unit,MCU)按照数据点的定义格式进行数据传透,下载设备的串口通信协议文档查看MCU上报数据格式,上报数据由包头、包长度、命令、包序号、flags、类型、校验和组成。上报数据格式如表1所示。
表1 上报数据格式
③APP端接收到MCU上报数据,并通过didReceiveData接收接口查看。APP端接收到一个叫“kuozhan”的key,其对应的值即为传透的数据。同时在GizWIFIDevice类的write接口中,APP按照数据点定义发送的相关数据。至此就可以完成APP与MCU之间的具体数据传透。
具体实现SDK开发包括了加载、初始化、用户注册、登陆、设备配置、设备界面优化、设备发现、设备连接、扫码绑定设备、WiFi绑定设备、设备控制等功能。其详细开发流程如图4所示。
图4 SDK开发流程图
该系统使用的移动终端为Android智能手机,开发使用的APP框架为机智云安卓APP开源框架,开发语言为Java,编译环境为Eclipse,旨在创建良好的图形界面进行人机交互,带来更好的用户体验[13]。
首先,在云平台处创建设备功能相关的数据点后,云端则根据创建的数据点生成相应的APP参考代码;然后,进行工程配置信息、控制页面、界面UI设计、页面布局、控制逻辑代码的开发。
在完成APP开发后,即可使用手机连接无线网或局域网登录APP并连接设备,实现对门禁端门锁的控制及室内温度湿度的监测。
①LED驱动模块与人体感应模块D-SUN。
该智能家居系统中,LED模块和红外模块配合使用于门禁端。LED模块作为门口的照明灯来使用;D-SUN为人体红外感应模块,它具有灵敏度高、强稳定性、低功耗、超低压的工作特性,在本系统中D-SUN使用于门禁端进行人体感应工作。
②电控锁。
门禁端的锁具采用的是电控锁,电控锁是一个由继电器控制的机械锁装置。该智能家居系统中的电控锁使用的是12 V步进电机,通过它产生角位移的方式打开门锁。脉冲信号的频率和脉冲数决定了步进电机的当前状态,给电机加一个脉冲信号,电机便转过一个步距角。该智能家居系统中,当设备端接收到APP相关指令后作出响应,控制电控锁转动打开门锁。
③门禁端功能。
门禁端功能实现:当有访客按下门铃时,设备端KEY按键被按下,按键中断服务程序激活,门铃Beep程序无线循环,门铃持续发出响声;住户听到门铃声后,使用APP向设备发送开锁指令,设备端接到指令后打开门锁;当访客进门后,触发设备端的红外感应模块D-SUN,开启LED灯完成门口的照明工作。
①温湿度传感器模块DHT11。
DHT11是一款含有已校准数字信号输出的温湿度复合传感器,其功耗非常低,在5 V电源电压下,工作电流平均值仅为0.5 mA。 DHT11通信时序如图5所示。
图5 DHT11通信时序图
DHT11是通过单总线与微处理器通信,只需要一根线,一次传输40位数据,高位先出。
STM32向 DHT11发送起始信号, DHT11由低功耗模式切换至高速模式,等待主机开始信号结束。结束后,DHT11响应输出拉高并准备输出,之后发送40位的数据,触发信号采集。最终将采集温度的高8位数据及湿度的高8位数据上传到云平台,实现对环境温度和湿度的监测。
②烟雾气敏传感器模块MQ-2。
该系统采用的气体传感器为MQ-2,MQ-2的气敏材料为二氧化锡。它是一种透明导电材料,在空气中具有极低的导电性。当MQ-2传感器监测到可燃气体时,导电率会随可燃气体浓度不断增大,使用简单电路及可将导电率转换为气体浓度的输出信号。同时,由于其高灵敏度、稳定性高、寿命长、快速响应恢复等特点,MQ-2尤其适合家庭和工厂对可燃气体的监测[14]。
该智能家居系统中的MQ-2模块采用AO模拟信号输出口,通过ADC来读取MQ-2输出模拟电压值。设备端采集相关数据,并由APP显示当前环境下气体浓度值。
③室内监测功能。
设备端通过DHT11及MQ-2传感器采集温湿度、气体浓度等数据,之后通过云平台将数据上传给手机APP,手机APP接收到传感器采集的信息完成进行室内监测工作。如果房间内温湿度、气体浓度大于设定值,设备端发出警报,同时手机接收警报信息,住户听到报警后即可采取相应措施处理。
该智能家居系统可以在PC端通过登录机智云平台进行虚拟设备模拟的方式判断APP与设备间的通信情况及验证接口相关功能。通过这种方式对APP及设备检查维护也更为便捷。经测试,由虚拟设备端向APP上报数据及APP向虚拟设备端下达指令数据均一切正常,说明APP相关功能接口及设备端功能接口也都正确,具备相互通信的能力。
同时,通过串口调试助手进一步测试观察WiFi模式配置数据、MCU与WiFi之间的通信数据、相关控制指令数据、接收数据及手机与云端和设备的连接状态、信号强度等。经过测试发现,手机端与设备端、云端连接一切正常。
当使用APP向设备发送指令,通过串口调试助手即可观察相关指令数据交换,确定设备状态;同时也可以观察设备端采集的各传感器采集到的数据情况。
在测试中,通过APP向设备端发送相关控制指令,观察设备状态及串口打印的数据。通过测试发现,对设备端相关控制数据及相关传感器采集到的相关数据均一切正常。
在APP对设备施加远程控制的同时,根据串口打印数据显示情况,对相关传感器的数据采集情况及远程设备的控制情况进行了记录。数据测试情况如表2所示。
表2 数据测试情况
本文主要进行的是设备端与移动控制端间的通信距离与抗干扰能力的测试。因为该系统主要使用在家庭中做智能控制,故进行通信测试的距离选取100 m作为测试的最远距离。
①传输距离的测试。固定设备将作为移动控制端的手机与设备之间隔开100 m的距离,之后使用手机APP向设备端发送指令。此时,发送方会给出消息序列号sn,接收方响应命令时会将sn返回给发送方。最终通过串口助手观察得到发送的控制指令及设备端的应答指令数据一切正常。
②信号抗干扰能力的测试。这里的抗干扰能力主要指的是信号的“穿墙能力”。首先将设备端固定在6楼的高度;之后将手机控制端带到1楼的位置进行设备控制。经测试发现,在有障碍的情况下,在6层楼这个高度内,设备端与手机端的通信情况仍然稳定性正常。
通过串口助手打印的数据可知,在两种测试情况下,控制设备传输数据时的丢包率也极低,完全达到了本系统低成本、稳定的设计要求。
本研究设计的基于机智云平台的智能家居系统APP端与设备端之间通信稳定,在家庭中这个范围内使用基本不存在数据掉包的情况;μC/OS-III操作系统的引入让系统更加稳定;WiFi芯片ESP8266及相关性价比极高的传感器模块也降低了成本;所借助的机智云平台提供了智能的信息中转环境,使设计者在云平台上通过控制虚拟设备的方式即可进行APP与设备相关接口维护。整个系统运行稳定,具备一定的市场价值和研究价值。