搜索

[uCOS/RTOS] 【RTOS】RT-Thread创新大赛--气体流量在线监测系统

[复制链接]
1462|1
 楼主 | 2020-6-14 14:23 | 显示全部楼层 |阅读模式
本帖最后由 jiabao_1113 于 2020-6-17 21:47 编辑

概述
气体流量在线监测系统基于IDT气体流量传感器FS2012模块而设计。主控芯片采用高性能意法半导体公司Cortex-M4系列微控制器 STM32F429IGT6,并采用ESP32无线2.4GHz Wi-Fi模块实现系统与互联网的连接。
本方案专为改变家庭传统燃气计费抄表方式,采用物联网+云平台方式实现智能在线监测和在线计费等功能。 在断网断电等离线情况下可通过系统EEPROM 和 Nand Flash 存储流量总量,待恢复网络连接情况下可继续记录并实时监测。具有实用性、便捷性、安全性等优点。
本项目采用模块化方案设计,主要构成系统的模块有 STM32F429 核心板、底板和各模块等。便于扩展各类传感器模块,实现家庭燃气、水、温湿度、空气质量等的实时在线监测功能。软件采用开源嵌入式实时操作系统 RT-Thread,具有组件丰富、可靠性高等诸多优点。
RT-Thread使用情况概述
本系统使用RT-Thread系统,内核使用4.0.0版本。组件部分使用finsh组件、AT客户端、SAL组件、DFS组件和ymodem组件。软件包部分使用at_device软件包、onenet软件包、cjson软件包、mqtt软件包、webclient软件包、systemview软件包等。
硬件框架
本项目硬件主要有电源模块、 STM32 核心板(含 SDRAM、 EEPROM、 Nand Flash、 USB 通信等功能部分)、 ESP32 模块电路、和 FS2012 模块。各部分电路介绍如下。
电源模块
通过分析,此项目所需功耗约为 2W。 电源模块采用宽输入电压,低噪声500mA, 5V 固定输出的 LTC1763 芯片,再将 5V 电压使用 LM1117 低压差稳压器转换为 3.3V 电压给整个系统供电。电源电路原理图如图1所示。 245735ee5d4c53c6df.png
图 1 系统电源电路原理图
STM32F429 核心板
为满足系统高性能和适应嵌入式 RTOS 的需求和后续功能扩展,本项目采用STM32F429 高性能微控制器。并配有 SDRAM、 Nand Flash、 EEPROM 等芯片保证系统性能。 STM32F429 运行主频最高 180MHz,内部集成了多达 20 个通信模块,能支持 Compact Flash、 SRAM、 PSRAM、 NOR、 NAND 以及现在的 SDRAM存储器,内部定时器多达 17 个,完全满足本项目需求。核心板电路原理图如图2 所示。
206115ee5d4d8a38fb.png 173365ee5d4e1175e0.png
file:///C:/Users/JIABAO~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
file:///C:/Users/JIABAO~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
图2 STM32 核心板原理图
ESP32 模块
ESP32 是集成 2.4GHz Wi-Fi 和蓝牙双模的单芯片方案,采用台积电(TSMC)超低功耗的 40 纳米工艺,具有超高的射频性能、稳定性、通用性和可靠性,以及超低的功耗,满足不同的功耗需求,适用于各种应用场景。ESP32 专为移动设备、可穿戴电子产品和物联网(IoT)应用而设计。 本项目中使用 ESP32 模块连接系统与互联网,实现流量数据实时上传功能。ESP32 模块外围电路如图3所示。
486995ee5d4f260060.png
file:///C:/Users/JIABAO~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
图 3 ESP32 模块外围原理图
FS2012 模块
气体流量传感器模块采用 IDT 公司高性能 FS2012 模块,实现对气体流量的采样,工作电流仅为 30mA(5V 电压),其精度达到 2%,具有数字 I2C 接口和模拟输出接口,是实现气体流量检测的最佳选择。本项目采用排线外接 FS2012 模块,通信接口采用模拟输出接口方式与 STM32F429 连接。 由于 FS2012 输出电压 0~5V, STM32 内部 ADC 采样电压最大 3.6V,因此通过两个 1K 电阻分压后输入到 STM32 的 ADC 通道。
系统硬件 PCB 设计
系统硬件采用核心板+底板方案。核心板包含 STM32F429、 SDRAM、 Nand Flash、 EEPROM、调试接口、 USB 通信接口等。

file:///C:/Users/JIABAO~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
file:///C:/Users/JIABAO~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
图4 PCB设计文件
324795ee5d5174c4d6.png
file:///C:/Users/JIABAO~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
图5 系统硬件电路
软件框架说明
本项目采用 RT-Thread 物联网操作系统。 RT-Thread 物联网操作系统是由上海睿赛德电子科技有限公司研发的稳定可靠、简单易用、高度可伸缩、组件丰富的嵌入式 RTOS。 RT-Thread 提供了专为针对物联网开发的各种组件,其中 AT 组件、 SAL 组件、 onenet 软件包、 MQTT 软件包和各种设备驱动可用于本项目开发。并且具有简单易用的调试组件如 finsh 组件、 ulog 组件,大大提高了软件开发效率。
软件模块说明
本项目软件使用的功能模块较多,软件功能模块如表 1 所示。
表 1 软件功能模块
序号         软件模块         功能         备注
1         系统初始化         实现系统和各模块驱动初始化        
2         FS2012 采集模块         实现对气体流量的 AD 采集        
3         EEPROM 存取模块         实现对流量数据的存储与读取        
4         ESP32 AT 指令模块         实现对 ESP32 的控制        
5         MQTT 通信模块         实现将气体流量数据上传至互联网云平台        
若使用裸机程序编写,将花费大量时间安排各模块工作流程,以保证各模块之间无缝配合。因此本项目采用嵌入式 RTOS 进行程序设计,各个软件功能采用模块化、多任务设计。
软件设计采用开源嵌入式系统 RT-Thread 作为运行基本系统。在此基础上增加各模块使用的驱动和线程函数,系统每 10ms 进行一次进行线程调度,保证系统实时性。软件整体设计流程如图6所示。
409205ee5d56ab1785.png
file:///C:/Users/JIABAO~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.png
图6 软件流程图
系统初始化
系统初始化包含系统时钟、 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);         组件初始化

FS2012 采集模块
程序启动后即刻通过 STM32 内部 12bit ADC 采样 FS2012 输出的模拟信号,调用函数为 fs2012_mess_get_adc(rt_int16_t *mess)实现气体流量的采集。采样后通过计算得出当前实时的气体流量值。为保证长时间采集的气体流量准确性,原则上采样周期越大,计算出的流量总和越准确。本项目采样周期 1s, 连续采样 10次后计算一次当前流量平均值和总流量值。
325965ee5d57b3edef.png
为保证数据准确性,对 10 次数据进行排序,去除最小值和最大值后计算 8次数据的平均值。 计算完成后向 EEPROM 写入当前总流量的值。

EEPROM 存取模块
为保证断电重启后前面的总流量数据准确,程序启动后读取一次 EEPROM内存储的重启前的总流量值。
439835ee5d58b055ca.png
ESP32 AT 指令模块
STM32 通过串口 AT 指令对 ESP32 模块进行控制。 其模块配置过程如下所示。
695675ee5d5a154c6c.png
MQTT 通信模块
配置完成 ESP32 模块后, ESP32 作为 TCP Client,通过 MQTT 协议与中国移动 OneNET 平台进行数据传输,主要将计算得到的气体流量当前流量速度与总流量上传至 OneNET 平台。
332995ee5d5ae8bb9b.png 107825ee5d5b534361.png

中国移动 OneNET 平台使用
OneNET 云平台是由中国移动打造的 PaaS 物联网开放平台。 能够帮助开发者轻松实现设备接入与设备连接,快速完成产品开发部署,为智能硬件、智能家居产品提供完善的物联网解决方案。本项目使用 MQTT 协议接入 OneNET 平台,实现流量数据的在线监测。 需要在 OneNET 平台上创建账号并创建产品, 复制设备 ID、 鉴权信息、 APIkey 等信息,将其配置进 onenet 组件包对应的位置。
574945ee5d5c6f2541.png
演示效果
完成项目硬件设计和软件设计后,进行气体流量在线监测测试。由于目前未制作连接于燃气管道的结构工装,因此测试时使用软管对接流量传感器 P1 管道并进行吹风,获取 2 分钟测量数据。 OneNET 云平台显示总流量数据和当前流量速度如下所示。
604635ee5d5cf5a647.png 313485ee5d5d62d8b6.png

视频链接地址:https://www.bilibili.com/video/BV1YZ4y1H7RA/
代码地址
码云代码地址:https://gitee.com/jiabao-git/STM32F429-IOT.git

810445ee5d5008f48d.png
965675ee5d50cde9ce.png

气体流量在线监测系统.pdf

1.19 MB, 下载次数: 11

使用特权

评论回复

相关帖子

| 2020-6-23 16:27 | 显示全部楼层
代码没有公开吗?私库

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表