黃 澈,張 萌,王 杰,徐 祥,周鹿揚
(安徽省農村綜合經濟信息中心,安徽 合肥 230001)
糧食生產與國計民生息息相關,在國民經濟和社會發展中占有極其重要的地位[1]。據統計,2021 年中國糧食總產量為68 285.1 萬噸,2015 年以來,連續七年保持在65 000 萬噸以上。與此同時,中國糧食存儲能力也逐步提升,2021 年全國標準糧食倉房容量達68 000 萬噸。目前,部分地區糧食儲存仍存在以下問題:
(1)技術手段落后,方法傳統,糧情控制不夠智能化[2];
(2)由于氣候因素的不確定性、多變性,和人為不可抗因素,使溫度、濕度、糧食含水量、氣體等要素在糧庫儲藏糧食過程中獲取不及時,造成糧食出現發熱、霉變、蟲害現象[3],甚至糧堆過熱導致火災等安全事故;
(3)在干旱、洪澇等特殊情況下,無法精準互聯互通儲糧信息[4];
(4)糧情可視化程度低,無法直觀觀察糧情[5]。
因此,需不斷加強糧庫安全存儲能力,尤其是糧食存儲信息化、智能化方面。
隨著傳感器和無線通信技術的快速發展,發達國家糧庫監控系統在不斷發展成熟。從早期以單片機和熱敏電阻為主的測溫系統,到現在以ARM 嵌入式處理器為核心,集合網絡通信、傳感器、圖像處理、大數據分析等技術,實現溫濕度檢測、糧情分析、通風控制、智能出入庫、自動報警、水分檢測、異常氣體檢測等功能,達到全面監控和應急處理突發災害的目的,使其保存在綠色健康的儲存環境中,保證了糧食品質,延長了儲存周期[6]。
目前,國內糧庫正在使用的糧情檢測方式有多種,常見以RS 485 有線網絡通信方式和RS 485 轉無線通信模塊為主[7],但上述方式都存在控制節點少、信號傳輸難、功能單一、設備落后、可擴展性差、人工成本高、無庫存管理功能、數據不準確、不能進行智能化控制等問題,缺少科學的綜合分析、信息化管理和智能化控制。
針對目前中國糧食存儲過程中出現的一系列問題,同時隨著3D 虛擬技術的發展,提出了一種基于Three.js 和物聯網技術的模擬糧庫實景3D 可視化智能檢測和控制系統。該系統具備如下功能:
(1)檢測糧倉內部相關要素;
(2)展示倉外天氣預報、倉內氣象要素以及糧情、庫存等;
(3)可智能控制糧庫降溫通風等設備。
該系統的建立,以期為糧食安全儲藏帶來幫助。
考慮到糧庫糧倉類型、占地空間、儲糧情況、地理位置、當地氣候等因素,設計了一套基于Three.js 和物聯網技術的糧庫3D 可視化智能系統,該系統分為物聯網智能檢測和控制子系統和3D 可視化平臺。物聯網智能檢測和控制子系統通過物聯網技術對研究要素進行檢測和采集,將要素數據上傳至服務器,同時對檢測的數據進行分析,根據閾值打開或關閉對應糧倉的通風、降溫或其他相關設備。根據環境因素,物聯網智能檢測和控制子系統及網關之間采用無線方式通信。3D 可視化平臺運用虛擬現實技術,在基于Three.js 等相關技術的基礎上,依據真實糧庫場景設計了一種具有三維效果的虛擬糧庫,將檢測的數據進行3D 可視化展示,解決糧食儲存問題。系統分層模型如圖1 所示。

圖1 系統分層模型
糧庫3D 可視化智能檢測控制系統技術架構包含基礎設施層、開發基礎層、數據支持層、技術支持層、應用服務層[8]。實現數據從采集、分析、傳輸、存儲入庫,到可視化展示全流程一體化。基礎設施層包含數據采集基礎設備、控制設備,通過物聯網技術獲取系統需求的要素數據。在本系統中,開發基礎層完成數據采集、數據傳輸、數據管理、數據請求、數據展示等操作。數據支撐層提供了糧庫儲糧數量和種類、實時天氣、報警數據、倉內氣象要素數據等數據庫。技術支持層為從數據采集到數據展示開發提供了技術保障。應用服務層是在完成前幾層的基礎上,為用戶提供系統的模塊化服務。系統架構如圖2 所示。

圖2 系統架構
物聯網智能檢測和控制子系統軟件程序使用Keil5 開發工具,軟件程序開發采用C 語言;硬件系統的電路原理圖通過Altium Designer 繪制;3D 可視化平臺后端通過搭建Java開發環境設計實現;頁面展示區采用Visual Studio Code 開發環境;數據庫采用MySQL 數據庫管理和操作數據;虛擬糧庫3D 模型采用3Dmax 軟件建模。
1.4.1 無線通信和網關技術
依據糧庫場地環境等現有實況,考慮到有線信號傳輸方式存在智能化程度不高、難以實現智能化管理等缺點,同時,相對于藍牙和ZigBee 等其他無線傳輸技術,LoRa 模塊具有傳輸距離長、傳輸數據量大、安全穩定性高等優點,且具有線性擴頻調制技術,因此其靈敏度比傳統FSK 調制方式高,能夠并行接收多個節點數據,增加了系統的容量,因此選擇LoRa 通信[9]。將無線傳輸模塊嵌入在傳感器采集模塊和網關模塊[10],實現數據無線傳輸。本系統采用包含SX1278 芯片的E32-433T30D 射頻模塊,由于數據傳輸頻次少,網關使用星型輪詢通信方式。根據TCP/IP 通信協議將采集的各項數據打包成待發的數據幀,再將數據幀維護成先進先出的隊列緩存,之后通過串口發送至無線傳輸模塊,最后將數據通過網關傳輸至服務器[11]。
1.4.2 Three.js 技術
考慮到平面化平臺的缺點,3D 糧庫可視化平臺以3D技術為主,平面技術為輔,實現虛擬可交互的3D 可視化糧庫。本系統引入了Three.js 引擎[12],該引擎可提供豐富的JavaScript API,構建高效率、輕量級、開源的WebGL 開發環境。該引擎開發過程為:創建三維場景,設置攝像機,設置光源,設置渲染,加載gltf 文件,設置模型的平移、旋轉、縮放等,將頁面渲染到canvas 畫布中[13],得到3D 視圖效果。本系統為了在可視化頁面中展示糧庫3D 模型對象,借助實際糧庫的園區大小、糧倉數量和相關設備,依據交互事件,通過3Dmax 軟件逐級繪制糧庫3D 模型,并引入項目。然后在基于Vue 框架中引入Three.js 引擎以及相關配置,運用該技術加載3Dmax 創建好的gltf 格式糧庫模型。最后發送請求給后臺服務器,獲取每個糧庫的數據,通過遞歸遍歷模型中的每一個對象,給每個對象添加事件,實現交互。3D 頁面整體采用模塊化開發模式。利用Three.js 引擎構造出糧庫糧情數字化、實時性、智能化、多元化、可交互的3D 可視化平臺。
1.4.3 Vue.js+SpringBoot 框架
3D 糧庫可視化平臺以B/S 為基礎,前端采用Vue.js 框架+Three.js 引擎+EChars 插件,通過Ajax 向服務器發送請求,獲取數據。后端采用SpringBoot 框架,通過Control 層實現與界面的交互和請求,Service 層進行業務邏輯處理,Dao 層對數據庫進行操作訪問。平臺采用Reads+MySQL 技術和小型輕量級數據庫對數據進行持久化處理和結構優化,提升程序運行和前后端數據交互的效率[14]。本系統使用Vue.js 和SpringBoot 框架,極大程度簡化了系統的開發和后期的維護。
物聯網智能檢測和控制子系統包含硬件電路和軟件設計兩部分,系統硬件部分包含STM32 及其最小系統模塊(電源電路、晶振電路、RC 復位電路、時鐘電路)、JTAG 接口模塊、數據采集模塊、設備控制模塊、數據傳輸模塊。系統硬件結構如圖3 所示。

圖3 系統硬件結構
2.1.1 糧庫數據采集
傳感器的布置根據國家糧情測控系統標準和糧倉設計規范要求,規定了傳感器安裝布置方法。倉內傳感器的布置為:水平方向距離不大于5 m,垂直方向距離小于等于3 m,距倉底以及倉壁的距離分別小于等于0.3 m、0.5 m。
STM32 是基于ARM Cortex-M3 內核的高度集成的微處理器,在本系統中,選用STM32F103VBT6 芯片作為控制MCU。采用AM2301 溫濕度檢測復合傳感器、MH-Z19B二氧化碳濃度檢測傳感器、MQ-2 煙霧火焰檢測傳感器、HSTL-102STR 水分測量傳感器,采集糧倉內的溫度、濕度、CO2、煙霧以及糧堆里的糧食含水量等數據。
AM2301 濕敏電容數字溫濕度傳感器是一款復合型多用傳感器,其內部包含了已校準數字信號輸出的溫度和濕度復合模塊。其電容式感濕元件和NTC 測溫元件分別連接到單片機。單片機接收40 bit 數據,包含16 bit 濕度數據、16 bit溫度數據以及8 bit 校驗和數據。當溫度為負值時,溫度高8 位數據的最高位為1。推導公式:
得到溫度T=-23.1 ℃。16位濕度數據(0000000110010110)B,得到公式:
得到的濕度值為40.6%RH。校驗和用于檢驗傳送溫濕度數據是否正確。
HSTL-102STR 水分測量傳感器與STM32 單片機通過RS 485連接,采用Modbus通信協議。兩極之間糧食水分不同,引起兩極之間介電常數產生變化,進而電容值改變。MHZ19B 紅外傳感器通過串口與單片機連接,采用非色散紅外原理檢測空氣中的CO2濃度。
當空氣中出現煙霧氣體時,MQ-2 煙霧傳感器的電導率隨空氣中的煙霧濃度改變,煙霧濃度的增加導致電導率增大。阻值R與煙霧氣體濃度C的關系式為:
式中:C越大,R越小,其特性類似可變電阻[15];常數n與氣體檢測靈敏度有關,常數m隨氣體濃度而變。
2.1.2 設備控制模塊
設備控制模塊用來調節倉內的氣象要素,使其處于適宜范圍。糧食在儲存過程中易受降水、濕度、高溫、寒潮等因素影響,通常會通過環流熏蒸、谷物冷卻、機械通風調節等操作,使倉內全年濕度保持在75%RH(平均)以內,年平均溫度保持在15 ~20 ℃,CO2濃度在20%左右。結合糧食儲存特性,要做到低溫儲糧,須在冬季抓住氣溫最低的季節,將平均糧溫降至5 ℃以下,為全年安全儲糧定下基調。春秋季節將糧溫控制在20 ℃以下,夏季溫度最高,要將糧食溫度控制在20 ~25 ℃。系統在不同的季節設置不同的閾值,根據季節將糧溫控制在安全溫度區間。控制模塊流程如圖4所示。

圖4 控制模塊流程
2.1.3 軟件程序結構
根據硬件電路設計,將軟件下載到單片機內部,程序包含主程序和執行程序。本系統主程序調用了4 個執行子程序,分別是傳感器檢測程序、設備執行程序、串行口通信程序和系統報警程序。
傳感器檢測程序:讀取各傳感器數據并處理,由于糧溫變化緩慢,系統設置每天對檢測要素檢測一次并上傳。
設備執行程序:單片機接收命令,設備打開或關閉。
串行口通信程序:與服務器進行遠程通信,完成與服務器之間的數據傳輸。
系統報警程序:對糧倉內的異常進行報警。
2.2.1 3D 可視化平臺結構
糧庫3D 可視化平臺主要包含3D 可視化模塊和平面模塊。3D 可視化模塊包含糧庫3D 虛擬糧庫模塊和煙霧報警模塊。平面模塊包含實時天氣子模塊、糧庫內氣候要素子模塊、糧庫儲糧數量子模塊、糧庫傳感器數據子模塊。
2.2.2 3D 可視化糧庫平臺功能
3D 可視化模塊以虛擬方式直觀顯示各糧倉(平房倉、淺圓倉、立筒倉)的數量,可交互顯示各糧倉的糧情,包含氣象要素、糧倉編號、糧倉儲糧數量、糧食品種以及糧倉自身面積、容積、寬高等重要信息,且具有增刪改查糧庫儲糧數量的功能。在出現煙霧或者發生火災時,3D 可視化模塊能模擬火災場景,且能定位發生火災的糧倉,以便管理人員實時救災。
實時天氣子模塊由七天預報和12 小時預報組成,展示了未來一周的天氣情況和未來12 小時實時預報,顯示糧倉外的各項氣候要素值,包含溫度、濕度、風速、壓強等,用戶可通過未來天氣狀況制定相關工作安排。數據來源于氣象部門提供的離糧庫最近站點的數據,參考性較大。
糧庫內氣候要素子模塊由各糧庫溫度、濕度、CO2濃度、糧食含水量曲線圖(包含最高值、最低值和均值)組成;用戶可通過曲線圖查看當前各糧庫的氣候要素極限情況。糧庫糧溫變化緩慢,數據每天更新一次。
糧庫儲糧數量子模塊由單個糧庫總體儲存數量柱狀圖、糧庫總體儲糧數量占比餅圖、單個糧庫儲糧種類及數量柱狀圖組成;糧食儲糧的數量以及種類是否清晰是實現糧庫信息化的基礎,糧庫儲量數量子模塊可有效解決糧食儲糧數量以及種類不清晰等問題。
糧庫傳感器數據子模塊將每個糧庫內的傳感器數值直觀展現出來,由于糧庫內不同層次的糧堆溫濕度不同,需要掌握糧堆的發熱點及潮濕點。本模塊根據溫度的高低,用不同的顏色和大小標記來區分,比如溫濕度越高,標點越大,顏色越深,通過輪播形式展示每一個糧庫以及每一層數據,用戶可直觀看到每個傳感器的溫度,快速找到發熱點。當有傳感器發生故障時,也能根據設計的坐標清晰排除傳感器的故障點。3D 可視化糧庫平臺界面如圖5、圖6、圖7 所示。

圖5 3D 可視化糧庫平臺(左)

圖6 3D 可視化糧庫平臺(中)

圖7 3D 可視化糧庫平臺(右)
本系統在解決糧庫儲存糧食的問題方面,具有以下優勢:
(1)無線傳輸數據方式解決了有線傳輸布線復雜的問題;
(2)氣象預報模塊可實時獲取氣象預報;
(3)傳感器數據直觀可視,可及時找到糧堆發熱點及傳感器故障坐標;
(4)通過3D 虛擬糧庫能夠直觀、便捷獲取每個糧庫的糧情信息;
(5)擴展性強,為后期開發預留了空間。
系統通過數據檢測、數據傳輸、數據共享、數據展示、用戶交互,形成了一體化閉環結構,加快了糧食儲藏向信息化、智能化方向邁進的步伐,具有較大推廣價值。
注:本文通訊作者為周鹿揚。