严清虎,龚家元,2,汪雪涛
(1.湖北汽车工业学院 汽车工程师学院,湖北 十堰 442002;2.哈尔滨工程大学 水声工程学院,黑龙江 哈尔滨 150050)
随着传感器和微处理器技术不断发展,自动气象站逐渐取代了人工观测方式,测量精度和工作效率都大幅提高,但在一些环境恶劣的地区,依靠有线传输的检测方式难以实现[1]。传统风速测量系统的无线通信采用国外VHF通信机,设备成本高,数据传输灵活性差,无线设备体积较大,可扩展性也受到限制[2]。针对风速测试方案,邵玫提出了基于单片机的风速检测系统[3],李安迎等人提出基于三杯式风速传感器的风速监测站设计[4],马国强等人设计了小型多功能气象监测系统[5]。上述系统测试方案由于受到MCU 控制芯片功能的限制,需要通过有线方式与上位机建立通信,在PC 端实现数据记录、保存、显示、分析等功能。STM32因其在功耗、可靠性、实时性以及运行速度等方面有明显的优势,在风速测试系统被广泛研究。吕敏提出了基于STM32的风速风向测试系统设计[6],李长才等人提出了基于STM32的风速监测系统设计[7];陈凯奇等人提出了无线风速监测系统设计[8],王立亮等人提出了基于LoRa无线通信协议的物联网风速风向监测系统设计[9]。这类设计方案具有独立于上位机的采集分析系统,并具有强大的处理和控制功能,满足功能测试要求,但需要铺设线路进行数据传输,仅适用于短距离范围。文中采用MQTT[10]-[11]技术搭载无线风速监测系统,以STM32 作为风速测试系统的控制核心,实现了物联网传感器设备、微信小程序客户端和云服务器端之间的双向通信,可实时、准确地将数据远程传输到云端服务器中,同时下发至用户端监测。
选用VMS-3000-FSJT 型NPN 脉冲型风速仪,风速仪的3个风杯安装在1个可自由旋转的轴上,轴上装有磁棒盘,风杯组在风的驱动下旋转,产生若干旋转磁场,磁场通过霍尔传感器输出脉冲信号。由于风速仪输出为高频率的脉冲,文中采用脉冲计数法,即单位时间内统计脉冲信号个数,根据风速仪的分辨率结合脉冲数得出风速仪的风速值。风速仪的测量脉冲信号时序见图1。当风速仪转动时输出脉冲信号,捕获脉冲信号的上升沿并计数,根据单位时间内的脉冲信号总数得到风速值:
图1 脉冲信号时序图
式中:V为风速值;N为单位时间内脉冲信号总数;P为风速仪的分辨率,取为0.0875。
系统总体架构见图2。风速环境监测系统由数据采集端、服务器端和客户端构成。数据采集端使用风速传感器完成现场信息采集,STM32单片机最小系统负责处理监测点风速数据,并显示在显示模块中,当风速值超过阈值时,蜂鸣器报警,LED指示灯被点亮。服务器端使用ESP8266 模块连接到WiFi 路由器上进行局域网或互联网通信,采用MQTT 协议将下位机采集的数据上传至阿里云物联网平台进行数据交互,下位机与服务器端实现双向通信。客户端采用微信小程序作为主要的人机交互界面,也可以通过阿里云IoT Studio 云平台搭建的Web界面显示。从阿里云服务器上获取数据并显示在微信小程序的窗口中,进行远程无线监测。
图2 系统架构设计框图
硬件架构设计如图3 所示。系统硬件方案由STM32 单片机最小系统板模块、ESP8266 模块、路由器模块、风速传感器模块、电源供电模块、TFT显示屏模块、USB转TTL串口通信模块、PC机、手机、云服务器模块和硬件电路组成。
图3 硬件架构设计
1)控制器 系统的主控制器采用基于ARM Cortex-M3核心的32位微控制器,选用STM32F103 C8T6芯片,它支持各种外设接入,集成丰富的内核和外设资源,具有较强的可扩展性。
2)无线通信模块 采用ESP8266 芯片作为无线通信模块,此模块具有超低功耗的串口透传功能,其内置了TCP/IP协议栈,支持互联网或者局域网的通信。
3)风速传感器模块 选用VMS-3000-FSJT型号的NPN脉冲型风速仪,风速仪可以输出0~5 V高低交替电平方波信号,最大灌电流为100 mA。因为进行单线数据通信,在一定程度上提高了测量风速的抗干扰能力,当使用电压信号时,需要在电源端和输出信号之间接入5.1 kΩ上拉电阻。
4)电源管理模块 采用LM2596 和AMS1117进行组合设计确保系统稳定工作,2种芯片都具有低成本、高线性度,输出稳定等特点。直流稳压电源如图4所示。
图4 直流稳压电源电路图
5)TFT 显示屏模块 选用内嵌ST7735S 驱动芯片的1.44 寸TFT 液晶显示器,使用SPI 总线接口方式与最小系统板STM32 进行数据传输,方便用户近距离查看风速状况信息。
6)通信模块 采用USB 转TTL 串口来实现STM32 与PC 机进行双向全双工异步通信,能够下载HEX文件程序以及方便程序代码的调试。
7)检测模块 手机端加载微信小程序APP 查看风速数据并实时监测,云服务器实现数据的存储、处理以及转发的功能,保证设备之间数据的同步更新,完成数据双向实时传输。
采用模块化思想设计系统软件。下位机软件由系统初始化程序、定时器外部中断输入捕获子程序、TFT 显示子程序、USART 串口通信子程序、ESP8266-WiFi 模块无线通信子程序等组成,完成数据采集。上位机软件包括服务器端的阿里云的物联网云平台Web界面设计和客户端的微信小程序设计。数据采集端通过ESP8266 程序模块连接到阿里云MQTT云服务器,实现数据双向通信。服务器端通过阿里云IoT Studio应用开发搭建Web界面,实现数据存储转发以及可视化。客户端通过阿里云MQTT 云服务器接入API连接到微信小程序。系统下位机软件流程如图5所示。
图5 下位机软件流程图
MQTT消息传输方式如图6所示。在消息传输过程中,涉及发布者、代理(服务器)和订阅者[12-13]。消息的发布者在系统中充当物联网监测节点,微信小程序作为消息的订阅者,阿里云云端服务器作为消息代理者。
图6 MQTT消息传输框图
依托阿里云IoT Studio物联网应用开发平台完成可视化Web 搭建,从物联网平台接入设备和设备管理模块中获取数据。可视化Web界面可以在阿里云云端上访问,也可以直接绑定到指定域名上访问。阿里云平台接入步骤如图7所示。
图7 阿里云平台
微信小程序界面设计主要包含登录界面、环境监测界面和登录日志界面。登录界面调用本地数据存储API接口[14]来保存用户名和密码,初次使用需要注册新用户。环境监测界面需获取用户位置权限才能显示当前天气预报信息,同时可以查看实时环境监测信息。登录日志界面通过调用同步读取本地数据API接口,显示用户登录次数和登录时间。微信小程序设计流程如图8所示。
图8 微信小程序设计流程图
1)功能测试 按照设计方案,将各模块与STM32主控制器搭建起来,系统物联网监测节点如图9 所示。把编写的下位机程序写入STM32 模块中,进行编译运行,实现数据现场采集。ESP8266无线模块连接路由器,当数据开始正常发送时,登录阿里云IoT Studio 应用平台,打开Web 可视化界面,同时在微信小程序手机模拟器端实时查看对应数据点信息,确认数据是否同步。Web可视化界面如图10 所示,小程序手机端的界面如图11 所示。系统测试成功后,将下位机编写程序生成的Hex文件下载到核心板的Flash 中,通过5 V 转12 V 的USB线缆连接独立电源给系统供电,使系统电路正常工作。发布Web 可视化界面并绑定指定域名,上传小程序代码到微信平台审核,并在线上发布。
图9 物联网监测节点
图10 Web可视化界面
图11 微信小程序界面
2)稳定性测试 系统基于MQTT 消息传输协议进行数据传输,MQTT 消息分为3 个QoS,当QoS为1时,保证消息至少送达1次。测试结果表明,吐量的性能效率提高了29%左右,流入消息136 条,平均速率为0.2 条/秒,流出消息97 条,平均速率为0.2 条/秒,消息丢弃39 条,平均速率为0 条/秒。满足设备端与阿里云平台间数据传输需求。
3)精度测试 将风速仪放在10 m左右高空的室外自然风环境中测试10次,测量误差分析如表1所示。从测试结果中看出,风速在0~3 m·s-¹时,测试误差较大,其原因可能是风速仪的风杯自身重量较大,当风速较小时,转动阻力限制风杯启动,导致测量的风速值误差较大,但对于要求误差精度不高的普通应用环境如农业种植,室外建筑等场景比较适用。在无线通信数据传输方面,下位机上传数据至阿里云云平台,云平台将数据发送到微信小程序端显示数据,在双向数据实时传输的过程中存在一定的延迟性,经过系统实验测试同步更新设备与云平台之间的数据最短时间为3 s,平均数据更新时间约为4 s,虽然环境参数更新变化有延迟,但是不影响检测的效果且符合设计要求。
表1 室外环境测试风速值
基于阿里云的无线风速环境监测系统,融合了嵌入式技术、物联网技术以及无线通信技术,搭建了阿里云物联网整套系统架构,实现了无线风速环境远程实时监测,在较大程度上提高了风速环境检测的效率,降低了管理时间的投入。结合MQTT物联网传输协议,使得无线风速检测系统数据传输稳定、实时性高。经过试验测试及结果分析,整套无线风速系统能够实现远程实时性监测,达到了设计预期的功能。