聚丰项目 > 气体流量在线监测系统
气体流量在线监测系统基于IDT气体流量传感器FS2012模块而设计。主控芯片采用高性能意法半导体公司Cortex-M4系列微控制器STM32F429IGT6,并采用ESP32无线2.4GHz Wi-Fi模块实现系统与互联网的连接。 本方案专为改变家庭传统燃气计费抄表方式,采用物联网+云平台方式实现智能在线监测和在线计费等功能。在断网断电等离线情况下可通过系统EEPROM和Nand Flash存储流量总量,待恢复网络连接情况下可继续记录并实时监测。具有实用性、便捷性、安全性等优点。 本项目采用模块化方案设计,主要构成系统的模块有STM32F429核心板、底板和各模块等。便于扩展各类传感器模块,实现家庭燃气、水、温湿度、空气质量等的实时在线监测功能。软件采用开源嵌入式实时操作系统RT-Thread,具有组件丰富、可靠性高等诸多优点。
h1654155744.0520
分享h1654155744.0520
团队成员
温家保 系统设计
本项目硬件主要有电源模块、STM32核心板(含SDRAM、EEPROM、Nand Flash、USB通信等功能部分)、ESP32模块电路、和FS2012模块。各部分电路介绍如下。
2.1 电源模块
通过分析,此项目所需功耗约为2W。电源模块采用宽输入电压,低噪声500mA,5V固定输出的LTC1763芯片,再将5V电压使用LM1117低压差稳压器转换为3.3V电压给整个系统供电。电源电路原理图如图4所示。
图4 系统电源电路原理图
2.2 STM32F429核心板
为满足系统高性能和适应嵌入式RTOS的需求和后续功能扩展,本项目采用STM32F429高性能微控制器。并配有SDRAM、Nand Flash、EEPROM等芯片保证系统性能。STM32F429运行主频最高180MHz,内部集成了多达20个通信模块,能支持Compact Flash、SRAM、PSRAM、NOR、NAND以及现在的SDRAM存储器,内部定时器多达17个,完全满足本项目需求。核心板电路原理图如图5所示。
图5 STM32核心板原理图
2.3 ESP32模块
ESP32是集成2.4GHz Wi-Fi和蓝牙双模的单芯片方案,采用台积电(TSMC)超低功耗的40纳米工艺,具有超高的射频性能、稳定性、通用性和可靠性,以及超低的功耗,满足不同的功耗需求,适用于各种应用场景。
ESP32专为移动设备、可穿戴电子产品和物联网(IoT)应用而设计。本项目中使用ESP32模块连接系统与互联网,实现流量数据实时上传功能。ESP32模块外围电路如图6所示。
图6 ESP32模块外围原理图
2.4 FS2012模块
气体流量传感器模块采用IDT公司高性能FS2012模块,实现对气体流量的采样,工作电流仅为30mA(5V电压),其精度达到2%,具有数字I2C接口和模拟输出接口,是实现气体流量检测的最佳选择。本项目采用排线外接FS2012模块,通信接口采用模拟输出接口方式与STM32F429连接。由于FS2012输出电压0~5V,STM32内部ADC采样电压最大3.6V,因此通过两个1K电阻分压后输入到STM32的ADC通道。
2.5 系统硬件PCB设计
系统硬件采用核心板+底板方案。核心板包含STM32F429、SDRAM、Nand Flash、EEPROM、调试接口、USB通信接口等。为实现存储芯片的可靠工作,本项目核心板PCB采用4层PCB设计,其层叠设计如图7所示。
图7 核心板PCB层叠设计
图8 核心板PCB设计图
底板包含核心板接口和各种模块接口。其PCB如图9所示。
图9 底板PCB设计图
经过焊接并调试各功能模块,最终制作出本项目硬件电路如图10所示。
本项目软件使用的功能模块较多,软件功能模块如表1所示。
表1 软件功能模块
序号 | 软件模块 | 功能 | 备注 |
1 | 系统初始化 | 实现系统和各模块驱动初始化 | |
2 | FS2012采集模块 | 实现对气体流量的AD采集 | |
3 | EEPROM存取模块 | 实现对流量数据的存储与读取 | |
4 | ESP32 AT指令模块 | 实现对ESP32的控制 | |
5 | MQTT通信模块 | 实现将气体流量数据上传至互联网云平台 |
若使用裸机程序编写,将花费大量时间安排各模块工作流程,以保证各模块之间无缝配合。因此本项目采用嵌入式RTOS进行程序设计,各个软件功能采用模块化、多任务设计。
本项目采用RT-Thread物联网操作系统。RT-Thread物联网操作系统是由上海睿赛德电子科技有限公司研发的稳定可靠、简单易用、高度可伸缩、组件丰富的嵌入式RTOS。RT-Thread提供了专为针对物联网开发的各种组件,其中AT组件、SAL组件、onenet软件包、MQTT软件包和各种设备驱动可用于本项目开发。并且具有简单易用的调试组件如finsh组件、ulog组件,大大提高了软件开发效率。
3.1 软件整体设计方案
软件设计采用开源嵌入式系统RT-Thread作为运行基本系统。在此基础上增加各模块使用的驱动和线程函数,系统每10ms进行一次进行线程调度,保证系统实时性。软件整体设计流程如图11所示。
图11 软件流程图
3.2 系统初始化
系统初始化包含系统时钟、IO、定时器、AD采样、串口、I2C、ESP32、onenet等初始化,不同的是,RT-Thread操作系统提供组件初始化功能,无需在主函数初始化时初始化系统外设,应用起来十分灵活。本项目各初始化函数如表2所示。
表2 组件初始化函数
序号 | 驱动模块 | 初始化函数 | 备注 |
1 | 板级初始化 | rt_hw_board_init(); | 系统初始化 |
2 | 串口初始化 | INIT_BOARD_EXPORT(stm32_hw_usart_init); | 组件初始化 |
3 | I2C初始化 | INIT_BOARD_EXPORT(hw_i2c1_init); | 组件初始化 |
4 | ESP32初始化 | INIT_APP_EXPORT(at_socket_device_init); | 组件初始化 |
5 | onenet_mqtt初始化 | INIT_APP_EXPORT(onenet_mqtt_init); | 组件初始化 |
3.3 FS2012采集模块
程序启动后即刻通过STM32内部12bit ADC采样FS2012输出的模拟信号,调用函数为fs2012_mess_get_adc(rt_int16_t *mess)实现气体流量的采集。采样后通过计算得出当前实时的气体流量值。为保证长时间采集的气体流量准确性,原则上采样周期越大,计算出的流量总和越准确。本项目采样周期1s,连续采样10次后计算一次当前流量平均值和总流量值。
为保证数据准确性,对10次数据进行排序,去除最小值和最大值后计算8次数据的平均值。计算完成后向EEPROM写入当前总流量的值。
3.4 EEPROM存取模块
为保证断电重启后前面的总流量数据准确,程序启动后读取一次EEPROM内存储的重启前的总流量值。
3.5 ESP32 AT指令模块
STM32通过串口AT指令对ESP32模块进行控制。其模块配置过程如下所示。
3.6 MQTT通信模块
配置完成ESP32模块后,ESP32作为TCP Client,通过MQTT协议与中国移动OneNET平台进行数据传输,主要将计算得到的气体流量当前流量速度与总流量上传至OneNET平台。
3.7 中国移动OneNET平台使用
OneNET云平台是由中国移动打造的PaaS物联网开放平台。能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。本项目使用MQTT协议接入OneNET平台,实现流量数据的在线监测。需要在OneNET平台上创建账号并创建产品,复制设备ID、鉴权信息、APIkey等信息,将其配置进onenet组件包对应的位置。
完成项目硬件设计和软件设计后,进行气体流量在线监测测试。由于目前未制作连接于燃气管道的结构工装,因此测试时使用软管对接流量传感器P1管道并进行吹风,获取2分钟测量数据。OneNET云平台显示总流量数据和当前流量速度如下所示。
使用手机客户端查看的数据如下所示。
由于视频文件较大,无法上传,因此视频放在优酷网,请自行观看。
优酷演示视频链接:https://v.youku.com/v_show/id_XMzk5OTY2MDgyNA==.html?spm=a2h3j.8428770.3416059.1
观看密码:messmonitor
(1.75 MB)下载