聚豐項目 > 氣體流量在線監測系統
氣體流量在線監測系統基于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)下載