基于MQTT的低功耗IoT室内环控系统设计*
2022-10-08贾晓宝毕玉洁姚卫丰
贾晓宝,毕玉洁,姚卫丰
(深圳职业技术学院 机电工程学院,广东 深圳 518055)
工业、交通、建筑被认为是能源消费的三大领域,为在2030年之前实现碳达峰,2060年实现碳中和的这一目标,江亿院士团队“中国建筑部门如何实现碳中和路径”一文中指出,减少建筑运行过程中直接或间接碳排放、营造适宜的建筑室内环境起着关键性作用[1].室内环境的营造方式一般分为“全空间、全时间”模式与“部分时间、部分空间”模式,不同室内环境营造方式会导致能源消耗差异巨大.据统计,我国建筑运行的人均能耗目前仅为美国的1/5~1/4,其主要原因在于建筑的使用习惯采用“部分时间、部分空间”模式.空调、照明等电气设备是室内场合主要的耗能设备,为了提高人们的节能意识与家用电器使用习惯,James Fletcher等基于树莓派与Flyport Wi-Fi模组开发了一套基于个域网范畴的低成本家居能源监测记录系统[2].物联网的发展为空调设备的节能控制提供了可能.于丹等基于物联网对某酒店的分体空调通过控制压缩机运行时间、抑制过低空调设定温度实现了18.93%的节能率[3].徐振坤等依托空调物联网平台对长江流域住宅用空调器在制冷季与制热季进行了详尽的分析,并指出空调器的使用习惯对能耗影响巨大[4].基于上述研究成果,鉴于我国部分公共场合室内耗能设备管理松散,近乎于全时间、全空间运行这一现象,本文设计了一套低成本、低功耗的物联网室内环境监控系统,记录、存储与分析室内环境参数及设备耗能;用户也可通过系统网页或手机APP查询相关数据并远程开关电气设备.文章第一部分介绍了系统的工作原理、组成架构及电路设计;第二部分介绍了节点的软件工作流程、参数初始化与MQTT数据传输报文设计等;文章的最后部分介绍了系统的实际应用情况.
1 系统硬件设计
1.1 系统架构
对于物联网的体系架构,研究者们从不同角度提出了不同的分层体系思想.最基本的三层(感知层、网络层与应用层)结构之分;基于中间件思想的五层(物理层、骨干网络层、耦合层、中间件层与应用层)结构之分;基于面向服务体系结构的五层(设备层、设备抽象层、服务管理层、应用层与业务层)结构之分[5].由于本系统规模小、成本低、功能简单,系统按照三层结构思想设计,具体包括:物联网节点、网络接入及物联网应用平台.每个物联网节点主要由两部分构成,传感器(继电器)与Wi-Fi模组,传感器负责对室内环境、室内空间占用及设备运行电流的感知;Wi-Fi模组负责将传感器感知的数字量或模拟量信息接入网络.网路接入设备可以是小型的家居路由器或公共区域提供的网络热点设备,负责将节点传输的信息接入网络,节点设备最终经广域网接入物联网平台.物联网平台负责数据的存储、处理与展示;物联网平台也为web或移动端用户提供用户接口,接收用户指令,通过网络把指令下发给物联网节点实现电气设备的远程控制.系统设计原理图如图1所示.
图1 基于MQTT的低功耗IoT室内环控系统原理图
1.2 节点电路设计
无线微控制器模块是物联网节点最核心的部件.Akram Syed Ali等基于开源硬件平台Arduino设计开发低成本室内环境数据采集节点,数据存储在板载SD卡内[6].采用Arduino作为节点控制器还需要另外配置Wi-Fi模组才可接入网络,增加开发成本.郭荣佐等基于ZigBee技术实现了物联网感知钻井平台数据采集系统[7].由于建筑结构一般较复杂,ZigBee通信在室内数据传输容易不稳定.文章采用面向物联网应用的低成本、高性价比、高度集成的乐鑫科技 Wi-Fi MCU模块ESP8266.该模块支持 Wi-Fi功能,支持实时操作系统(RTOS),内置超低功耗 Tensilica L106 32位RISC处理器[8].ESP8266工作电压3.3VDC,所以每个物联网节点主要由三部分组成:3.3V电源供应器、Wi-Fi模组与传感器.所有节点电源均采用5~12VDC电池供电,经电压转换电路LD1117输出3.3V电压[9],设计100nf(104)电容和10uf电容用于吸收电源杂波提高电压质量.ESP8266模块提供通用输入输出接口16个,模拟输入接口1个.市场上的ESP8266模块有不同的包装形式,从ESP01、ESP07到ESP12等多种型号,其主要区别在于尺寸、I/O脚位数量及天线类型.温湿度节点传感器DHT22包含一个电容式感湿元件、一个高精度测温元件和一个高性能 8位单片机[10].温湿度传感器(SIG)与ESP01(GPIO2)通过标准的单总线协议数据传输,电路设计参见图2所示.室内空间占用节点传感器 HC-SR501采用德国原装进口 LHI778探头设计[11],根据人是否在其感应范围输出高低电平(高 3.3V/低 0V),无需电平转换可直接与ESP01通用输入输出(GPIO2)接口连接,电路设计参见图3所示.ESP8266通用输入输出接口最大输出电流12mA,通过直接控制外接继电器,间接控制外部电气设备,电路设计参见图4所示.与上述节点不同的是,电流检测节点传感器采用SCT-013-020(内置采样电阻),输出0~1VDC的模拟电压[12],故该节点模块采用ESP12微控制器,电流传感器接至ESP12的模拟端口ADC端,电路设计参见图5所示.
图2 温湿度IoT节点电路接线图
图3 人体感应传感器IoT节点电路接线图
图4 电气设备控制IoT节点电路接线图
图5 电流监测IoT节点电路接线图
2 节点软件设计
物联网应用层协议众多,广泛应用的协议有:基于 web传输的受限制应用协议(CoAP)、以XML为基础的可扩展消息与存在协议(XMPP)、面向消息中间件提供的高级消息队列协议(AMQP)、面向实时系统数据分发的数据分布协议(DDS)及国际标准化组织下的消息队列遥测传输协议(MQTT).其中,MQTT协议因其轻巧、开放和简单成为当今世界上最受欢迎的物联网协议.MQTT协议工作在TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,它已广泛应用于车联网、智能家居、即时聊天应用和工业互联网等领域[13].物联网节点通常体积微小,电源携带的能量十分有限,设置休眠模式可最大限度地降低节点能量消耗,提高网络生命周期[14].Olubiyi O.Akintade等基于有限状态机模型分析并验证了ESP8266在事件驱动与时间驱动模式下的不同耗能.ESP8266模块支持三种节能休眠模式:在深度睡眠状态下,Wi-Fi调制解调、系统时钟和CPU全部停止工作,仅实时时钟模块RTC运行用于定期唤醒,模块保持电流仅为 10μA;浅睡眠模式下,Wi-Fi调制解调、系统时钟停止工作,CPU挂起等待外部输入输出接口事件的唤醒,模块工作电流0.9mA;射频休眠模式下,仅Wi-Fi调制解调停止工作,模块工作电流为 15mA[15].根据室内环境变化的滞后性,温湿度节点与电流监测节点根据时间周期性地传输数据给云平台,故该节点在数据不传输时可以工作在深度睡眠模式,节点软件工作流程图参见图6所示.以温湿度IoT节点为例,其深度睡眠模式总功耗(MCU功耗+DHT22功耗)为0.383mw,以一节南孚6LR61规格为 9v 550mAh电池供电续航时间理论估算可达1.47年;人体感应节点和电气设备控制节点由于其状态触发的随机性,ESP8266须工作在浅睡眠模式下,随时监测端口数据状态变化,节点软件工作流程图参见图7所示,以同样的计算方法,电池理论续航供电时间可达70天.
图6 温湿度(电流)节点软件流程图
图7 PIR(继电器)节点软件流程图
初始化程序主要完成系统常量与变量的定义,库函数加载与端口的初始化定义等.网络连接通过ESP8266WiFi库实现,该库提供了模块以终端、热点或二者兼有的何种模式接入网络,配置网络的名称及密码,连接和断开网络的操作等功能[16].室内温湿度值实时采集通过DHT.h库函数实现[17].电流值的实时获取通过EmonLib.h库函数实现[18].节点与云服务器连接首先要向服务端发送 MQTT CONNECT报文,当服务端收到了客户端的连接请求后,会向客户端发送 returnCode(连接返回码),0表示连接成功.PubSubClient.h库提供了设置MQTT服务器与端口号、连接MQTT服务器等操作函数.ESP8266内置deepSleep()和lightsleep()函数让模块在深度睡眠或浅睡眠模式下运行.深度睡眠状态下,休眠时间结束,系统自动唤醒;浅睡眠状态下,当外部人体感应PIR传感器状态变化导致模块GPIO引脚电平变化,模块自动唤醒.节点向服务器端发布消息通过 PubSubClient.h库的publish()函数实现[19],该函数会向服务端发送PUBLISH报文,报文内容包括:主题名topic、服务质量等级Qos、标识符与有效载荷等信息,有效載荷是节点所要发送的实际内容,如温湿度、电流、人体感应传感器状态与继电器状态等.
3 应用案例
按照上述思想,以室内空间占用监测节点(图8)和温湿度监测节点(图9)为例,模块化物联网节点的原型板正面布置ESP01无线微控制器和传感器(人体感应传感器、温湿度传感器、继电器模块)等,原型板背面主要配置大容量电池及稳压电路作为节点电源.
图8 空间占用IoT节点正面
图9 温湿度IoT节点正面
为了测试节点的可靠性及采集参数的准确性,所有节点安放在深圳职业技术学院建筑智能化工程网络通信实训室.该实训室有照明回路三路,格力立式空调KFR-72LW三台,实训电脑四十台.节点实现室内人员状态、温湿度参数检测及其中一台立式空调回路的电流采集.节点通过室内提供的网络热点接入到外网的阿里云平台,通过阿里云物联网控制台三元组信息完成设备接入,应用阿里云 IoT Studio完成Web可视化开发、移动可视化开发与物联网数据分析[20].经近一个月的不间断测试,系统运行稳定可靠.由于实训室每周课程安排类似,选取有代表性的一周数据示例如图10所示.
图10 4月15日至4月21日一周数据趋势图
为了有效分析关键时段关键数据,图10只选择每天上午八点至下午六点时间段所采集的数据.图中四条趋势线分别代表室内温度、室外温度(来自中国天气网)、变频空调运行实时电流值及室内有无人状态.纵观一周数据样本,空调不能及时关闭造成能源浪费较为严重.以4月19日为例(图左二),上午8:30前空调开始高负荷工作;12:30分至13:30分期间教室无人,空调依然处于工作状态.类似情况发生在20日12:30分(图右二),21日12:35分与15:55分(图左三).从上图还可发现,当室外温度低于室内温度时,存在空调开启运行情况,此时开窗自然降温应是一个很好的节能途径.以4月15日为例(图左一),14点45分有人进入教室,此时室外温度低于25℃,完全可采取自然降温;而习惯性的打开空调,在离开房间时又未能及时关闭造成能源的不必要浪费.自然降温的控制措施同样适用于19日(图左二)的天气状况.
4 结 论
文章设计的基于MQTT协议的低功耗IoT节点经过实践检验,能够实时对室内环境温湿度、室内空间占用状态、设备耗电量的实时监测.通过IoT Studio的业务逻辑开发工具,室内空间占用状态节点与设备控制节点联动,当发现室内无人时,通过远程监控及时停止空调器的运行.以图10右二4月20日为例,空调器总体运行4.67h,无人空载运行0.75h,此期间空调电压电流保持恒定,使用该系统节能率(空调空载耗电量/当日累计总耗电量×100%)可达16%;根据空调器实际运行电流、运行时间及空载时间,同样的计算方法可得4月19日节能率为14.4%.需要说明的是节点设计为基础阶段,通过不同的休眠模式降低节点功耗,后期将搭建电路模型,通过数据实测验证和预测节点电源生命周期;利用云平台从室内空间人员活动行为识别、神经网络控制算法等方面提高系统的节能效果.