基于EDP协议的温湿度在线检测系统
2020-08-19李白华
李白华,孙 涛
(安徽农业大学 经济技术学院 信息与计算机系,安徽 合肥 230011)
0 引 言
随着物联网技术的发展,温湿度监测成为智能家居系统构建的基础需求。传统的智能家居应用系统以网关为中心,增加了系统设计的复杂性,也增加了网络管理的成本。在云技术大量应用前,温湿度的测量数据是在Zigbee网络中传输。一种是通过串口送往PC机端的应用界面,另一种是透过网关的网络协议分析功能打包数据,使数据可以在其他网络环境中传输。Zigbee网络的优点是功耗低,但传输速率慢,海量数据在线传输处理会有系统容量问题,实现设备管理也有一定的难度。网关带来的问题是设备费用的增加。本文中WiFi模块采用STM32处理器和WiFi模组串口通信形式,STM32和OneNET平台之间的通信以WiFi模组作为介质,通过无线网络配置WiFi模组,以EDP协议连接ONENET云平台,并将传感器数据实时发送到云平台,实现对数据的存储和管理。本文设计的系统需要用户在移动云平台上注册,获得平台分发的设备序列号,以使用序列号获取平台接收的温湿度数据,并访问以时间为标注的历史数据。云服务器的引入解决了网关系统设计的复杂度,降低了成本。此外,云服务器对大量数据进行储存统筹,有利于发现物联网应用中的新需求,带来新的技术热点。
1 硬件设计
本控制设备分为传感器模块、微处理器系统、WiFi无线网络设备和云平台[1],如图1所示。
图1 系统硬件架构图
1.1 主控制器模块
本文中设计系统的关键部分是选用一块合适的处理器。STM32F103(以下简称STM32)是32位嵌入式处理器,采用ARM Cortex-M3作为内核[2],存储空间为48 kB的动态存储、256 kB的闪存空间,能够为系统运行提供足够的数据存储空间。处理器的主频频率也能提供优良的运算速度。
1.2 WiFi通信模块
路由器作为系统网络环境的构建者,ESP8266连上这个网络发送数据包。它作为微处理器与网络之间的中介,可以自己作为一个主控制器工作,也可以作为从设备被其他控制器控制工作。ESP8266性能稳定、体积小,可以运行AT指令。本文中此模块的初始化通过在线进行。串口通信方式是WiFi模块自带,和微处理器之间的数据传递也是通过这个模式完成。
1.3 温湿度采集模块
DHT22是一款集成传感器,输出信号类型是数字型。信号在芯片内部已经经过电路校准,所以输出信号精度较高。输出温湿度信号送往高性能嵌入式处理器,在STM32上运行温湿度采集信号算法,可以构建一个稳定的控制系统,长期监控温湿度数据,并且得到的结果精度高。
2 系统软件设计
本系统的软件设计主要在Keil软件开发环境中完成。程序主要包括处理器采集传感器数据程序、网页设置WiFi模块、WiFi与云平台数据透传程序。主流程如图2所示。
图2 系统主程序流程图
2.1 初始化
系统启动后开始进行一些初始化工作,如初始化定时器、I/O口等。
2.2 网页配置WiFi模块
WiFi模块的出厂地址预先输入在浏览器,以网页的方式完成常见的初始化工作。在提示框里输入用户名和密码,进入WiFi模块的设置页面,配置ESP8266的工作模式和参数,使其可以接入无线网络,传递测控设备测到的数据。
(1)station模式为组件的工作模式。
(2)点击“无线终端设置”功能,在“要接入的无线网络名称(SSID1)”的右侧点击搜索功能,搜索无线局域网环境,接入无线网络。
(3)确保波特率为115200,把串口自动成帧和注册包类型均关闭,完成WiFi模块通信中需要的串口配置要求。
2.3 系统接入云平台
STM32微控制器通过UART口与ESP8266进行数据传输,数据被ESP8266传载到云平台。设备与云平台连接并传递数据的方式主要有两种。一种是基于HTTP协议的传递方式,数据的类型为JASON格式,方便平台进行资源管理,并在与其他平台发生数据传递时具备一定的优势。但是,这种连接是一个短连接,连接的方式限制数据的存储方式。另一种是基于EDP协议的连接。这种方式的优点是长连接,方便底端设备上报数据。设备之间进行透传时方便快捷,使用平台提供的数据存储功能。用户需要查询历史数据时只需登录平台就可以获得,对设备型号没有限制。本文设计的系统需要传感器数据在云平台进行存储并实时管理,软件中需要实现的连接是EDP长连接。在此基础上如果用户需要增加新的业务平台,可以利用HTTP协议提供的API对OneNET提供的资源进行管理(如增删查改设备、数据点等)。
程序开发中用到了云服务器的EDPSDK,EDP协议由此实现,并由此上报底端设备传递的数据到OneNET,进行数据的存储管理。
用户设备接入云平台时,需要按照云平台的要求经过以下流程:
(1)新建产品,并将产品接入协议设置为EDP;
(2)新建设备,把系统随机生成的设备ID和APIkey等信息记录下来;
(3)连接设备与云平台;
(4)创建数据流,实现数据传递到云平台。
3 云平台数据采集
OneNET可以实现多种协议设备接入,如MQTT、Modbus、HTTP、EDP、TCP等协议[3],在实际应用时可以实现多种应用场景。
本文软件系统设计中采用EDP协议打包封装数据,建立与云平台之间的连接。实现系统接入的EDP协议是在TCP基础发展起来的,在上层实现EDP的事务。
用户在云平台注册,通过在云平台创建的设备id和APIkey进行EDP协议封包,发送连接申请信息到云平台。
连接云平台时设置延时函数延时500 ms,延迟等待时间大于300 ms,否则设备连不上云平台,且短时间频繁操作平台发送连接请求对系统的功耗影响大,不利于系统低功耗的设计。
打包数据点,将数据点名称和值封装成EDP协议规定格式,利用ESP8266设备并使用发送数据包函数发送数据包到云平台。
系统的主要代码分析如下:
连接至ONENET云平台后,点击进入事先创建的设备,点击接收数据,传感器的测量数据就能够按照一定的格式显示在云平上。在中国移动云服务器上数据显示界面可以自定义设置成圆盘或者柱状形状显示,也可以利用API程序按照用户的需求设置。同时,平台提供数据存储接口,保存的历史温湿度数据可以供用户查询并对数据进行统筹分析,如图3所示。
图3 云平台实时数据图
4 结 论
由测试结果可知,基于STM32和ESP8266的测控系统能完成将温湿度传感器采集数据实时上传到云服务器平台的任务,同时可以存储和管理数据。整个系统功耗低,数据结果准确,WiFi网络的容量方便扩展功能实现多传感器监控测量,可以应用于智能测控场景。