基于网络协议的无线远程数据传输系统设计
2020-08-03梁国壮安在秋田涵雷李睿
梁国壮 安在秋 田涵雷 李睿
摘 要: 目前多路数据无线传输技术,普遍受传输距离限制,无法实现稳定的远程通信;此外,需租用公网IP的远程传输,使得运行成本大大增加。基于此,设计一种以STM32嵌入式处理器为控制核心,将网络协议与无线模块ESP8266相结合的多路数据采集与远程无线传输系统。该系统采用Java进行基于TCP/IP的通信协議编程,来避免租用公网IP。另外,无线模块与上位机通过所编写的通信协议相连接,来实现数据的远程通信。最后,通过实际测试验证了所提系统设计的可行性。
关键词: 无线数据传输; 远程通信; 网络协议; 系统设计; 系统测试; 数据分析
中图分类号: TN919?34 文献标识码: A 文章编号: 1004?373X(2020)06?0023?04
Design of wireless remote data transmission system based on network protocol
LIANG Guozhuang, AN Zaiqiu, TIAN Hanlei, LI Rui
(School of Electrical Engineering, Hebei University of Science and Technology, Shijiazhuang 050018, China)
Abstract: At present, the multi?channel data wireless transmission technology cannot achieve stable long?distance communication because it is generally limited by the transmission distance. That′s why it needs to rent the remote transmission of public network IP, which greatly increases its operational costs. Based on this, a multi?channel data acquisition and remote wireless transmission system combining the network protocol with wireless module ESP8266 is designed, which takes STM32 embedded processor as its control core. In the proposed system, Java is used for the communication protocol programing based on TCP/IP, so as to avoid renting the public network IP. The wireless module is connected with the upper computer through the programmed communication protocol to realize the remote communication of data. The feasibility of the proposed system design is verified by means of the actual test.
Keywords: wireless data transmission; remote communication; network protocol; system design; system test; data analysis
0 引 言
目前,随着物联网、大数据等新兴技术的快速普及,WiFi覆盖面积越来越广,无线通信技术发展越来越快,监测系统也正趋向于对数据的无线传输[1]。室内环境数据对于建筑安全意义重大,如今对于大范围建筑室内数据的采集与传输,也越来越多地选择无线方式,但远程通信稳定性较差,且租用公网IP成本高。
大范围建筑的特点是各建筑之间距离较远,使得其室内环境数据的采集测试点较多,距离较远,若使用传统有线方式传输数据,则会大大增加成本。文献[2]提出利用ZigBee无线传感器网络进行环境数据采集与传输,该技术功耗低,应用广泛,但缺点是其构建的网络为封闭式网络,并不能与Internet直接集成,所以传输距离受到一定限制。而文献[3]提出通过无线模块nRF905以无线载波的形式,将采集到的数据传输给上位机,相较于文献[2],虽在传输距离上得到了优化,但系统开放性较大,容易受到干扰。另外,文献[4]提出GPRS无线传输方案,虽然传输距离较远,但目前该网络并没有固定IP进行数据传输,只能持续租用公网。
基于以上所述,本文设计一种基于网络协议+无线模块的多路数据采集与远程无线传输系统。本系统基于TCP/IP协议,采用Socket技术进行通信协议编程。上位机与已连接WiFi的无线模块,通过该通信协议的连接来实现数据的远程通信,解决了接收端和发送端IP地址不固定的问题。为保证系统不受干扰,提高其稳定性,每个测试点都有唯一的ID。
1 系统总体结构设计
基于网络协议+无线模块的多路温湿度数据远程传输系统总体结构如图1所示。
系统硬件架构主要由微处理器模块、数据采集模块、数据传输模块、显示模块、存储模块等组成。即以STM32嵌入式处理器为控制核心,负责对相应数据进行处理。WiFi模块作为无线通信单元,将采集到的数据发送至服务器端;温湿度传感器作为数据检测单元,采集室内环境的监測数据;TFTLCD显示屏显示数据信息。考虑软件时,系统基于TCP/IP协议,采用Java并利用Socket技术进行网络通信协议编程,实现上位机与通信模块的数据通信。多路测试节点将采集到的数据通过ARM经由WiFi模块发送到编写的网络服务器,远程接收端通过连接通信协议来实现对各个测试点数据的获取与发送。
2 系统硬件设计
2.1 微处理器选型
基于高性能、低功耗、成本低等因素考虑,本次设计选用了STM32F130ZET6芯片作为系统核心处理器。该芯片是STM32系列微处理器中的一款大容量芯片,主频可达72 MHz,内置64 KB的SRAM和512 KB的闪存,可工作在-40~85 ℃的温度范围。芯片内部集成了多个外围设备接口,包括RTC,I2C及SPI等。为保证系统的低功耗性,该处理器共有待机、睡眠和停机三种模式。
2.2 温湿度传感器的选型
系统采集多个室内温湿度数据实现无线远程数据传输。选择DHT11作为系统的温湿度传感器,该传感器内部包含有一个电阻式感湿元件和一个NTC测温元件。DHT11湿度测量范围为20%RH~90%RH,温度测量范围为0~50 ℃,分辨率为湿度1%RH,温度1 ℃,平均电流为0.5 mA,工作电压范围在3~5.5 V,功耗非常低。综上考虑,DHT11在功能、性能、低功耗等方面,都符合设计要求。
2.3 无线通信模块的选型
系统中WiFi通信功能由ESP8266模块实现。ESP8266是一个完整且自成体系的WiFi网络解决方案,只需通过SPI/SDIO接口就可以加入微处理器相关设计中,操作简单方便,并且可工作在-40~125 ℃的环境中,性价比较高。该模块支持AP模式、STA模式和AP+STA模式,可以灵活实现网络拓扑。
3 系统软件设计
3.1 应用程序设计
根据系统需求,首先应对硬件进行初始化,在硬件初始化完成之后,即可开始对各个模块功能进行设计。对于无线模块ESP8266,本次设计通过AT指令集配置模块的网络参数,并选用STA作为TCP客户端的模式。具体配置如下:
1) AT+CWMODE=1; //设置模块为STA模式
2) AT+RST; //重启生效
3) AT+CWJAP; //连接对象路由器的账号及密码
4) AT+CIPSTART;
//模块连接到网络调试助手的TCP Server模式
5) AT+CIPMODE=1; //开启透传模式
6) AT+CIPSEND; //开始透传
此时,监测到的温湿度数据就可以通过WiFi模块进行传输,发送结束标志“+++”来停止数据的传输。
3.2 网络协议概述
TCP/IP协议共分为Internet层、传输层以及应用层,分别对应IP协议、TCP/UDP传输协议和应用层协议。IP协议和TCP/UDP协议是基础,而应用层协议则基于前者并可针对不同项目进行定制。本文根据所设计的内容,采用异步通信的方法来定制应用层协议;同时由于测试点与上位机IP会发生变化,所以将两端都设置为TCP客户端。
3.3 应用层协议的工作流程
应用层协议的报文段主要由用户密码、同步和异步数据类型选择位、客户ID和数据内容4部分组成。该协议工作流程如图2所示,TCP客户端在接入后,开启线程并验证密码,若密码正确,则打开TCP连接。随后应用层协议会判断接收数据和发送数据,若为接收数据,协议会提取用户ID并判断同步还是异步数据。当为异步数据时,则会判断该数据是需要存储还是发送。当数据长度和设定的数据长度相同时,协议会将该数据存储在对应客户ID下并等待提取;当数据内容为空时,则会将存储的数据进行发送,最后关闭TCP连接。
3.4 基于Socket的Java编程
本文在Java中通过调用java.net包来进行网络编程。系统设计的通信协议主要应用的类为ServerSocket和Socket:在ServerSocket类中,构造方法为ServerSocket(int port);Socket类则主要用来发送和接收数据。此外,由于设定服务区端口为8086,所以创建端口的语句则为:ServerSocketssocket = new ServerSocket(8086)。
发送和接收数据主要用到Socket类中的getInputStream( )方法和getOutputStream( )方法。发送数据的语句为:
PrintStream printstream = new PrintStream(SOCKET.getOutputStream());
printstream.println(ARRAY_DATA);
//(ARRAY_DATA)为将要发送的数据
printstream.close(); //关闭TCP连接
接收数据时,程序语句为:
Socket input = SOCKET.getInputStream();
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(input)); //接收数据打包成流
String MESSAGE = bufferedreader.readline();
//将打包成流的数据存储
4 系统测试与数据分析
系统硬件与软件设计完成后,制作样机进行试验测试,验证系统的可行性与可靠性。
本文在石家庄地区进行实际应用测验,将监测终端分别分布在石家庄站、河北省博物馆以及石家庄市万达广场,三地相互距离为5 km以上。为监测终端系统上电后,选择无线模块为STA模式,通过无线网络接入Internet,选择工作模式为TCP客户端,输入编写的通信协议IP地址47.94.164.217,目标端口设置为8086。当显示连接成功后,测试端就可以在TFTLCD显示屏实时显示温湿度数据,并将其发送给网络服务器。其中,发送温湿度测量值实现算法如下:
T_H[0] = (temperature/10); //溫度
T_H[1] = temperature%10;
T_H[2] = (humidity/10); //湿度
T_H[3] = (humidity%10);
设置发送数据长度为37,发送数据的报文段格式为testAM000x。其中,test为设定密码,AM代表异步通信,000x为监测点ID(x=1,2,…),监测点编号按顺序依次为河北省图书馆、石家庄站以及石家庄市万达广场。图3为温湿度监测点1数据的显示。
监测端通过登录网络协议并打开网络调试助手,选择协议类型同样为TCP客户端,服务器IP地址为47.94.164.217,端口设置为8086。连接建立好后,ARM处理器会每隔5 s向服务器端发送数据,网络调试助手会接收到存储在服务器中的数据,接收数据的报文段格式为testAM000x+37位数据。监测点ARM处理器不断向服务器发送数据,若想调取监测点数据,则需发送测试点相应ID的报文段。图4为发送相应报文段后调取并接收到的3个测试点部分温湿度数据。其中,接收到的数据格式为测试点编号+日期+时间+温度+湿度。
以2019年3月12日为例,在10:00—18:00期间,每隔15 min采集各监测点温湿度数据一次,共33组,并将监测到的数据与温湿度实际标准值做对比,来验证系统监测的准确性。图5分别为监测点1,2,3监测数据与实际标准值的对比。其中,误差值已做出标记。
测试误差结果如表1所示。
从误差数据可以看出,本系统在实际测量中误差个数少,误差范围低,准确率高;在无线传输过程中运行稳定,没有丢失数据的情况,且不受传输距离的限制,能实时准确地监测多点温湿度。
5 结 论
本文设计一种基于网络协议+无线模块的多路温湿度数据采集与远程无线传输系统。通过运用Java进行网络通信协议编程,解决了目前远程无线数据传输的距离受限问题与租用公网的成本问题;监测终端组成简单,稳定性高,可扩展监测多种室内环境数据,且各模块成本低;可在三栋建筑内放置更多监测点以及更多建筑内放入监测终端。实验结果证明,本文系统具有性能稳定、传输距离远、准确度高、可扩展能力强和成本较低等特点,使得消防系统可准确掌握各建筑内各点环境数据,以及时响应现场联动控制,适用于楼宇消防环境监测,具有很好的应用价值。
参考文献
[1] KUO Y W, LI C L, JHANG J H, et al. Design of a wireless sensor network?based IoT platform for wide area and heterogeneous applications [J]. IEEE sensors journal, 2018, 18(12): 5187?5197.