陈 欣,阮锦新,邬依林,张 谦,陈勇昌,熊 燕
(广东第二师范学院计算机学院,广州 510303)
快速发展的信息技术革命正在推动着不同行业的变革,尤其是以物联网为代表的技术正快速渗透到工业生产和产品生命周期中,促进了工业智能化和数字化[1]。物联网本质上就是让各种物品相互连接形成一个庞大的网络,通过传感器与互联网提供通信,最终实现万物互联[2-3]。智能家居是物联网的典型应用,通过使用多种传感器对家居环境数据进行采集,并根据这些数据对家居设备做出相应的定制化控制,在这个过程中用户完全不需要对家居设备进行干预,而且智能家居系统通常具有24 小时不间断工作的优点[4]。
普通的家居设备之所以可以变得人性化和智能化,是因为其背后依靠强大的物联网进行通信和数据交换。传感器就像计算机的眼睛,不仅可以有效检测出相应的信息,同时还能够将检测到的信息以其他信号形式对外输出,这就意味着传感器可以帮助我们准确、快速地获得信息,甚至有些传感器的灵敏程度远超人的感官[5]。为了让智能家居系统更具定制化和智能化,可通过使用多种传感器以及后端智能控制策略,让家居设备信息上传到云端,实现基于云端的家居设备智能控制[6]。本文针对用户对家居设备智能控制的需求,选用STC89C52 单片机作为硬件主控,采用SpringBoot 后端框架开发云端,设计出贴近生活的智能家居系统。系统利用弱电控强电,具有高度灵活的设备绑定功能,可以让传感器作用于任意预留的设备控制端口并实现对相应家居设备的控制,传感器采集的数据还可以实时上传云端并进行可视化展示。
智能家居系统设计包括硬件选型、硬件电路设计以及软件设计。硬件选型是根据应用场景的实际需求选择相应的主控芯片、传感器和通信模块。硬件电路设计是对这些模块进行引脚定义和连接,使其构成一个完整的电路系统。软件设计包括单片机控制系统设计和云端系统设计。
主控芯片采用通用性高、性能稳定、价格低廉的STC89C52单片机[7-9],同时选用温湿度传感器、光敏传感器、人体红外射频传感器、超声波传感器,选用无线通信模块实现单片机之间的通信。主要使用的器件如表1所示。
表1 主要使用的器件
硬件电路设计基于单片机最小系统板,通过传感器、继电器模块以及家居设备的连接,组成完整的电路控制系统。控制系统的核心控制部件为STC89C52 系列单片机,通过使用最小系统板引出单片机的所有引脚,最小系统板的电路原理如图1所示。
图1 最小系统板原理
温湿度传感器模块、人体红外感应模块及可调光敏模块均为三引脚,其中两个为正负极,一个为数据端,数据端分别连接在单片机的P2.0、P2.4、P2.6 引脚。超声波传感器模块共四个引脚,控制引脚分别为Trig 触发引脚和Echo回响引脚,分别接在单片机的P2.1和P2.2引脚。通过对单片机电源模块的正负极进行拓展,将这些传感器模块的正负极接入到单片机的正负极中,实现模块供电。无线通信模块为八引脚,供电电压为3.3V,因此需要额外的供电电路进行供电,剩余的六个引脚为IQR、MIS、MSO、SCK、CS、RST,分别接在单片机的P3.2、P3.3、P3.4、P3.5、P3.6、P3.7 引脚。上述所有模块的接线原理如图2所示。
图2 传感器接线原理
使用了6个光耦继电器模块实现弱电控制强电,这些模块的信号脚接在单片机的P1.2~P1.7引脚,继电器模块组接线原理如图3所示。
图3 继电器模块接线原理
单片机控制系统主要实现传感器数据采集、指令识别以及端口控制和控制反馈。云端系统实现人机交互,为用户提供可视化的家居设备控制功能,同时将单片机采集到的数据入库并进行数据展示。
1.3.1 单片机控制系统设计
单片机控制系统设计包括时钟程序、端口控制程序、单总线通信、无线通信和串口通信等程序设计。
(1)时钟程序设计。单片机的时钟通过设置定时器T0 溢出值来触发CPU 中断,利用中断进行延时计数并以此划分出一条时间轴作为单片机运行的基准时间,其余的程序都会在这个设计好的“节拍”中有序运行。
(2)端口控制程序设计。根据用户的设定或控制改变单片机引脚的输出电平,所有对电平的控制都是通过这个程序进行,任何操作最终都将转换为“端口号+控制码”的形式进行相应的位运算并做出最终的电平控制操作。
(3)单总线通信设计。温湿度传感器、人体红外传感器均采用这种通信模式,分别使用一根数据线完成数据的交换和控制,通过系统时间轴有序触发单次数据读取操作。温湿度模块读取流程和超声波距离传感器测量距离流程分别如图4、图5所示。
图4 温湿度模块读取数据流程
图5 超声波距离传感器测量距离流程
(4)无线通信程序设计。在通信上采用“单片机指令分发器+单片机设备控制器”的架构,单片机指令分发器对控制指令进行中转,真正实现控制的是单片机设备控制器,而两个单片机之间则是采用NRF24L01无线模块进行数据传输。无线模块在收到数据后改变状态寄存器的电平,单片机通过轮询检测寄存器状态变化后调用无线通讯解析函数,对收到的消息进行格式化、解析和重新封装等处理。
(5)串口通信程序设计。单片机服务器与TCP 服务器通过串口通信方式进行数据传输,设置定时器1 产生19200 的波特率用于通信,后端服务将用户在云端的操作指令通过TCP 客户端发送给TCP 服务端,TCP 服务端以串口通信方式将指令传送给单片机服务器,进而转发给控制器实现控制。
1.3.2 云端系统设计
云端系统设计包括TCP 服务、JavaWeb 服务端程序以及数据库等设计。
(1)TCP 服务。采用Python 开发TCP 服务端,TCP 服务端以串口通信方式连接单片机服务器,并定时发送温湿度查询指令及传感器状态查询指令获取返回数据,数据经过处理后进行入库操作,用户对家居设备的控制也通过这程序进行转发。
(2)JavaWeb 服务。采用目前主流的Spring-Boot 框架[10]搭建交互式的用户访问平台,平台具有设备映射、设备控制、控制策略设置等功能,支持用户在平台上对端口进行绑定和控制,同时还可查看传感器相关的可视化数据。其中,设备控制的核心是在SpringBoot 中注入一个TCP客户端对象,用户的控制指令通过TCP 客户端发送给TCP服务端并进行后续的控制和反馈。
(3)数据库设计。数据库设计包括端口映射表、端口状态日志表、传感器采集日志表、温湿度采集日志表、自动控制策略智能硬件表和自动控制策略服务下发表的设计。其中,最为核心的是端口映射表,记录了设备与端口的绑定信息,也是远程控制的关键。传感器数据的更新是通过TCP 服务定时向控制器发出查询请求来获得数据并按照时间顺序入库,这些数据可用于前端展示,并且用户可根据这些数据对家居设备进行准确可靠的控制。
本文设计的智能家居解决方案可以提供6个控制端口给用户接入家居设备,为了验证方案的可行性,对智能房间进行模拟。
智能房间有卧室、阳台和卫生间。在房间内,配置4 个照明设备以及1 个加湿器和1 个换气装置。其中照明设备分别安装在卧室、卧室书柜、卫生间和阳台,加湿器安装在卧室,换气装置安装在卫生间,具体的家居设备布局如图6所示。
图6 家居设备布局图
智能房间安装了温湿度传感器、人体红外感应器、超声波距离传感器、可调光敏模块,分别安装在卧室、卧室衣柜、卫生间和阳台,传感器功能与布局如图7所示。
图7 房间传感器规划图
硬件规划完成后,需要在云端进行设备映射绑定,登录到系统后通过设备映射功能,录入对应的设备到系统中即可完成绑定,新增绑定设备如图8所示,所有家居设备绑定完成之后的设备列表如图9所示。
图8 新增绑定设备
图9 所有家居设备绑定后的设备列表
在“智能房间”场景中,人体红外感应模块用来控制卫生间的照明设备,当有人经过时,照明设备会自动打开。当一段时间没有感应到人经过时,照明设备会自动关闭,这些功能可在系统上进行设置。对于阳台的照明设备,则是利用可调光敏感应器控制,亮度低于一定值的时候会自动打开阳台照明设备。温湿度感应器则是用来收集房间的温湿度信息并在系统中展示,用户也可通过系统,利用温湿度传感器的数据来自动控制房间中的家居设备,例如控制加湿器、换气装置等。
家居设备接入系统需要通过继电器模块。下面是照明设备接入系统的过程:首先继电器模块电源接入+5V,接着将单片机控制信号线接入到继电器的信号接收端IN,同时在继电器上将跳线帽接入到低电平触发引脚,最后按照图10接线图将照明设备接入。
图10 继电器模块用电器接线图
系统测试包括硬件测试、软件测试和功能测试。
硬件测试包括单片机外围电路连接检查,单片机复位后控制端口输出电平以及温湿度传感器等模块的采集情况。复位后采集的温湿度可以正常显示在LCD 屏幕上,同时控制口输出电平为高电平,P1.2~P1.7 的板载LED 灯熄灭,测试结果如图11所示。
图11 单片机复位
软件测试包括单片机控制系统测试和云端系统测试。
单片机控制系统实现收集数据、接收指令、控制端口和控制反馈,因此最关键是查看串口反馈的数据是否符合预期。在单片机控制系统测试中,将程序写入单片机后,使用串口调试助手按照192000 的波特率连接单片机并发送相关指令,查看返回的数据,如果可以正常返回数据同时符合预期,则证明功能正常。在串口调试助手中向串口发送指令“{AD}”,对链路进行简单测试,测试结果如图12 所示,能正常接收到串口回传的温湿度数据,说明串口通信和单片机之间无线通信链路正常。
图12 串口通信及单片机之间无线通信链路测试
在云端系统测试中,首先测试TCP 服务是否可以正常连接和通信,在TCP 客户端测试程序中向TCP 服务端发送测试数据可以收到反馈,功能正常,测试结果如图13 所示。接着对用户交互界面进行功能测试,确保可以从数据库中正常获取到相应的数据,这里以首页为例,温湿度及传感器状态能正常获取并显示,测试结果如图14所示。
图13 TCP连接及通信
图14 首页温湿度及其他传感器状态
下面以照明灯控制为例对系统的硬件和软件进行整体测试。在照明灯关闭的状态下,点击开关,照明灯会被打开,同时云端页面会收到打开的反馈提示,如图15 和图16 所示。再次点击开关,照明灯会被关闭,同时页面会收到关闭的反馈提示,如图17和图18所示。
图15 打开照明灯实物图
图16 打开照明灯系统反馈
图17 关闭照明灯实物图
图18 关闭照明灯系统反馈
在自动控制策略测试中,以智能控制卫生间照明灯为例进行测试。首先将可调亮度模块绑定到卫生间照明灯上,同时设置临界控制及边缘值,具体配置如图19所示。
图19 智能亮度传感器配置
配置完成后,打开使能开关,对环境亮度进行调节,分别模拟白天和黑夜,测试效果如图20、图21所示。
图20 模拟白天(照明灯熄灭)
图21 模拟黑夜(照明灯自动点亮)
随着物联网技术的不断发展,智能家居技术给我们生活带来越来越多的便利。本文提出的智能家居方案通过将单片机与JavaWeb 云端进行有机结合,具有操作便捷、数据直观等特点,为用户提供了在线和离线两种控制方式,用户可通过云端系统自定义规则实现灵活的家居设备自动控制,大大提升了智能家居的使用体验。