基于MQTT的用电设备能耗检测系统设计
2022-11-24王鹏池建钢叶金霖邱美艳
王鹏,池建钢,叶金霖,邱美艳
(天津中德应用技术大学,天津,300350)
0 引言
能源问题是关系着国家经济稳定增长、社会可持续发展[1],对于国民,我们应该知道家用电器的功率以便节约用电[2],为此将真实的能耗情况显示出来,可为用户发现更多的节能机会和更优化的能源供应和管理方案[3]。基于此,用电设备的电量检测及控制装置得到了快速发展[4]。本文基于物联网技术设计的用电设备能耗检测系统,可实现对直流用电设备的电流、电压和功率的实时检测,并将能耗信息上传到物联网平台,用户可在后台打印能耗信息。
1 方案设计
能耗监测系统由能耗检测系统和数据打印系统两部分组成。其中,能耗检测系统是以掌控板为主控制器进行开发设计,采用高精度电压电流功率测量模块进行能耗检测,采用Easy IoT作为物联网平台,采用MQTT协议进行数据上传;数据打印系统是以Micro:bit为主控制器进行开发设计,采用OLED显示屏进行能耗的显示,采用OBLOQ物联网模块进行通信,采用嵌入式热敏打印机进行数据打印,最终实现用电设备能耗检测及打印的效果。系统设计方案如图1所示。
图 1 系统设计方案
2 硬件电路设计
本系统的硬件电路设计主要包括能耗检测系统电路设计和数据打印电路设计。采用双控制器便于对整个系统进行分块管理,在数据打印系统功能故障的时候,仍然可以通过登录物联网平台进行实时数据的检测。能耗检测系统电路主要通过能耗监测模块进行相关工作,首先通过能耗检测模块对测试环境的能耗进行检测,将检测到的数据保存在控制器的存储模块内,再将检测到的数据上传到Easy IoT物联网平台以便于与进行数据打印。数据打印系统电路主要功能部分主要通过物联网模块将检测到的能耗信息从Easy IoT物联网平台读取下来,在显示屏上进行相关数据的显示,并且通过热敏打印机进行相关信息的打印。
■2.1 能耗检测系统电路设计
(1)主控制电路
能耗检测系统采用掌控版及其IO扩展板作为主控制器进行开发设计。掌控板采用ESP32作为主控芯片,将类型各异的传感器和执行器集成在48mm×52mm的底板上,同时所有的输入与输出端口使用金手指的方式向外延伸,工作状态稳定、外接设备时性能可靠。可以采用图形编程和Python编程两种编程方式。掌控板IO扩展板功能强大,可以供Micro:bit和掌控板两种主板使用。可以外接数字或模拟插针口,I2C口和UART口,主控制器主要用于采集高精度电压电流功率测量模块的信息,并通过MQTT协议发送到Easy IoT物联网平台。
(2)能耗检测电路
能耗检测电路采用高精度电压电流功率测量模块进行能耗数据的采集,通过串口和主控制器进行通信,该模块可采集当前的电流电压及功率值。
INA226自动测量电流或功率。测量施加在IN+和IN-引脚之间的电压和VBUS引脚上的电压。在测量电流和功率值,必须通过配置校准寄存器(05h)对电流寄存器的分辨率和应用程序中并联电阻的值进行配置,Current_LSB和分流电阻的值都用于计算校准寄存器的值,设备使用该值来计算基于测量的分流和总线电压的相应的电流和功率值。能耗检测模块如图2所示。
(3)显示电路
显示电路采用Gravity OLED-12864显示器进行数据显示,该显示器是一种无背景光源的自发光显示模块,采用OLED专用驱动芯片SSD1306进行控制。该显示器与控制器进行信息的传递时是通过I2C接口,且传输速率非常高,刷新率可达60赫兹,主要用于温度和能耗数据的显示。OLED-12864如图3所示。
图 2 能耗检测模块
图 3 OLED-12864
(4)物联网电路
物联网电路采用OBLOQ物联网模块,该模块可配合DFRobot公司自己开发的物联网平台(Easy IoT)一起使用,OBLOQ物联网模块是基于ESP8266所设计的,采用WiFi进行数据的收发。
图4是能耗检测系统设计电路的主体部分。OLED1通过I2C与控制器相连接,使用硬件I2C进行通信。能耗模块通过串口进行数据收发。在能耗检测系统硬件设计中由于引脚不便于接线,需要增加一个扩展版以便于各个模块与控制器相连接。引用扩展板功能仅限于便于模块与控制器相连接。
■2.2 数据打印系统电路设计
(1)主控制电路
数据打印系统采用Micro:bit及其扩展板作为主控制器进行开发设计,用于读取物联网服务器中能耗信息,并驱动热敏打印机进行数据打印。
(2)数据打印电路
本系统使用EM5820热敏打印机进行能耗数据的打印,EM5820通过USB/TTL/RS232接口连接设备。本系统中EM5820采用TTL接口与Micro:bit扩展板相连,接受串口发送的打印信息。热敏打印机接口示意图如图5所示。
图 4 能耗检测系统电路设计接口图
图 5 热敏打印机接口示意图
(3)显示电路
OLED-12864显示屏与Micro:bit电机驱动扩展板的I2C端口相连接,嵌入式热敏打印机的TX、RX分别与Micro:bit电机驱动扩展板的P15、P16端口相连接,物联网模块的TX、RX连接到Micro:bit电机驱动扩展板的P0、P1端口上。
数据打印端的硬件连接图如图6所示。
图 6 数据打印端硬件连接图
图7是数据打印系统电路设计接口示意图。OLED2与控制器的I2C相连,热敏打印机通过软件部分定义的软串口与控制器相连接,物联网模块通过串口与控制器相连接。
3 软件程序设计
本系统采用Mind+作为IDE,其包含了各种主流主控板及数百种的开源硬件,可以进行人工智能(AI)与物联网(IoT)的开发工作,可以拖动图形化积木编程,也可以使用Python/C/C++等高级编程语言。采用Easy IoT作为物联网服务器,软件设计主要分为能耗监测程序设计、数据打印程序设计。
■3.1 能耗监测程序设计
能耗检测部分的主控制器是掌控板,传感器选择能耗模块,在显示模块里选择OLED-12864显示屏,存储模块使用的是EEPROM,在网络服务中选择MQTT、Wi-Fi。添加以上扩展指令模块是编程之前一项不可少的工作。能耗检测部分控件添加流程图如图8所示。
图 7 数据打印系统电路设计接口图
图 8 能耗监测部分控件添加流程图
(1)用鼠标单击扩展按钮,切换到“主控板”,添加掌控板;
(2)用鼠标单击扩展按钮,切换到“传感器”,添加能耗模块;
(3)用鼠标单击扩展按钮,切换到“功能模块”,添加EEPROM模块;
(4)用鼠标单击扩展按钮,切换到“网络服务”,添加MQTT和WiFi模。
能耗监测部分程序设计思路:
首先定义掌控板主程序,设置WiFi连接设备的账号与密码便于能耗监测设备开机后自动连接到WiFi设备,在WiFi连接过程中屏幕显示“正在连接WiFi…”的字样,以此判断是否WiFi连接成功,当网络连接成功后,掌控板显示“WiFi连接成功”,随后MQTT进行初始化参数,MQTT发 起 连 接,EEPROM清 除 数 据,屏幕进行清屏处理。初始化部分全部完成后,开始循环执行程序主体部分,进行能耗数据检测,将检测到的能耗数据存入EEPROM。通过MQTT协议将检测到的数据发送到设置好的物联网平台Easy IoT的Topic上。在设置各个数据范围内,屏幕会显示相应的能耗数值,并且能耗检测值超过设定阈值后会进行一个物理报警。能耗监测部分执行流程图如图9所示。
图 9 能耗监测部分执行流程图
■3.2 数据打印程序设计
数据打印端的主控制器是Micro:bit,在显示模块里依旧选择OLED-12864显示屏,通信模块使用的是OBLOQ物联网模块,功能模块里选择软串口。数据打印部分控件添加流程图如图10所示。
图 10 数据打印部分控件添加流程图
(1)用鼠标单击扩展按钮,切换到“主控板”,添加Micro:bit;
(2)用鼠标单击扩展按钮,切换到“显示器”页面,添加OLED-12864显示屏;
(3)用鼠标单击扩展按钮,切换到“通信模块”,添加OBLOQ物联网模块;
(4)用鼠标单击扩展按钮,切换到“功能模块”页面,添加软串口模块。
数据打印部分程序设计思路:
定义Micro:bit主程序,OLED-12864显示屏初始化IIC地址,OBLOQ与MQTT也进行初始化,OBLOQ与MQTT的串口设置为硬串口,与热敏打印机进行数据传输的串口设置为软串口,并进行软串口的初始化。
当物联网平台能耗监测Topic接收到上传的能耗检测数据后,数据打印部分会通过OBLOQ读取到上传的数据在OLED-12864显示出相关的能耗信息,通过按键选择是否打印当前传输过来的能耗检测数据,如果打印当前测试道德数据,则通过设置好的软串口与热敏打印机进行数据传输,将当前的能耗信息通过热敏打印机打印出来。
4 总结
(1)深入研究了关于能耗检测系统的发展情况,在此基础上设计了基于MQTT的用电设备能耗检测系统,搭建出了整个系统的框架。
(2)建立了Easy Iot物联网平台,实现了能耗监测部分和数据打印部分的信息传递。同时也可以将测得的能耗数据进行记录和上传。
(3)设计并实现了基于MQTT的用电设备能耗检测系统,该系统实现了能耗检测、打印、数据上传、显示等功能。各个模块相互工作,不会相互影响,当各部分需要配合的时候也可以做到预期的数据交互。经过测试,每个模块都能正常运行。
该系统许多方面都达到了预期的工作效果,但是还存在着一些不足之处,比如系统的传感器精度不高,有时也会出现能耗监测不准的情况;物联网的连接可能有时会迟钝,记录数据不及时;系统的内部布线过于杂乱,出现问题时不易检修。