霍 英,梁文樺,丘志敏
(1.韶關學院 信息工程學院;2.韶關學院 智能工程學院,廣東 韶關 512005)
隨著國民經(jīng)濟的持續(xù)快速發(fā)展,人們消費習慣的改變,加快了物流業(yè)發(fā)展的步伐,物流產(chǎn)業(yè)已成為經(jīng)濟運行不可或缺的一部分.而倉儲作為物流產(chǎn)業(yè)和供應鏈系統(tǒng)的重要工作流程之一,逐漸地呈現(xiàn)出專業(yè)化的發(fā)展趨勢,對倉儲系統(tǒng)的要求也日益嚴格.倉儲溫濕度及其他環(huán)境因素的變化會對貨物的存儲造成極大影響.如不適宜的溫濕度環(huán)境會造成化學品、果蔬和糧食的大面積霉爛;紫外線直射會造成某些化學品和紡織品變質(zhì);倉儲中氧氣的濃度過高會造成谷物呼吸作用損耗能量,而氧氣濃度過低又會造成谷物的發(fā)霉變質(zhì)[1-2].天津港“8·12”瑞海公司危險品倉庫特別重大火災爆炸事故,就是因為沒有對倉儲環(huán)境進行實時監(jiān)測致使集裝箱內(nèi)的硝化棉在高溫作用下分解放熱,積熱自燃,引起周圍易燃易爆物品一起爆炸燃燒[3].
針對這些問題,利用先進的物聯(lián)網(wǎng)技術、傳感器技術、移動通信網(wǎng)絡和基于Android平臺的移動終端,將采集的環(huán)境數(shù)據(jù)上傳到云服務器上,可以實現(xiàn)對倉儲環(huán)節(jié)的實時遠程監(jiān)測,動態(tài)地掌握倉儲環(huán)境的參數(shù)變化及設置事故預警.該系統(tǒng)不僅降低了設備的成本,還具有可靠性強、超遠程檢測的優(yōu)點,使倉儲貨物的質(zhì)量和安全得到保障,減少了因倉儲環(huán)境因素變化造成危險帶來的經(jīng)濟損失和環(huán)境污染.
系統(tǒng)由主控制器、溫濕度檢測模塊、空氣質(zhì)量檢測模塊、光照強度檢測模塊、火焰檢測模塊、WIFI模塊、云平臺、手機APP組成.系統(tǒng)主要具有幾個功能:(1)在倉儲中進行溫濕度、光照強度、空氣質(zhì)量和火焰等指標監(jiān)測.(2)主控中心將采集到的各種環(huán)境數(shù)據(jù)打包完用串口傳輸?shù)絎IFI模塊,由WIFI模塊將環(huán)境數(shù)據(jù)根據(jù)EDP協(xié)議轉成JSON格式發(fā)送到云平臺.(3)云服務器.系統(tǒng)采用的是OneNET中移物聯(lián)網(wǎng)開放平臺,能夠接收顯示當前上傳的傳感器檢測數(shù)據(jù),對數(shù)據(jù)進行存儲管理,方便終端設備接入查看.(4)移動終端監(jiān)測設備.一部能上網(wǎng)的智能手機或者平板電腦都可作為移動終端監(jiān)測設備,用于查詢倉儲環(huán)境數(shù)據(jù),設定環(huán)境參數(shù)的預報警閾值.
系統(tǒng)的主控制器是STM32F103VET6,溫濕度檢測模塊采用DHT11溫濕度傳感器,空氣質(zhì)量檢測模塊采用MQ-135氣體傳感器,光照強度模塊采用光敏電阻,火焰檢測模塊采用火焰(紅外接收)傳感器,WIFI模塊芯片采用ESP8266,云服務器采用中國移動OneNet云平臺(見圖1).
圖1 系統(tǒng)總體框圖
硬件設計主要包括:數(shù)據(jù)采集、主控中心、數(shù)據(jù)傳輸和報警等4大模塊,圖2為硬件系統(tǒng)框圖,其中各個模塊功能為:(1)數(shù)據(jù)采集模塊:主要用于檢測和收集測量范圍內(nèi)的倉儲環(huán)境數(shù)據(jù);(2)主控中心:對其他硬件設備起控制作用,可以存儲和分析傳感器檢測到的數(shù)據(jù)和串口接收到的數(shù)據(jù);(3)數(shù)據(jù)傳輸模塊:主要負責WIFI芯片和主控中心之間通過串口實現(xiàn)的數(shù)據(jù)互傳,再通過連接路由器把數(shù)據(jù)發(fā)送到云服務器;(4)報警模塊:當各個環(huán)境監(jiān)測數(shù)據(jù)超過其設定的范圍時,做出相應的聲光警告反應.
圖2 硬件系統(tǒng)框圖
主控中心的主控制芯片是系統(tǒng)的核心部分,它像發(fā)動機引擎一樣給予其他部分源源不斷的推動力.目前的項目開發(fā)中,使用較多的是STM32F系列的微控制器,從內(nèi)核上分有Cortex-M0、M3、M4和M7這幾種.在幾款芯片的特性和價格比較中發(fā)現(xiàn)F1比F2和F4價格上面更加經(jīng)濟實惠,而其特性滿足本系統(tǒng)的基本要求,因為不需要連接LCD屏幕,所以選擇F1系列性價比更高,于是采用STM32F103VET6芯片[4-5].
系統(tǒng)采用DHT11溫濕度傳感器,可以實現(xiàn)0~50 ℃的溫度測量,20%~90%RH的濕度測量,具有體積小、成本低、耗能少、長期穩(wěn)定的優(yōu)點,符合一般倉儲環(huán)境的要求.供電電壓在3.3~5.5 V之間,單總線串行接口.
使用光敏電阻傳感器來監(jiān)測倉儲環(huán)境中的光照強度變化.因為光敏電阻模塊對環(huán)境光線最敏感,是一種利用光電導效應制成的元件,在沒有光的時候,它的電流會很小,電阻很大;在有光的情況下,它的阻值隨光照增強而減小,電流隨光照增強而增大.所以根據(jù)電阻值的不同轉化為不同的電壓值得到采集的光照強度大小.
系統(tǒng)采用MQ-135氣體傳感器,對氨氣、煙霧和其他有害其他的靈敏度高,可監(jiān)測倉儲環(huán)境的空氣質(zhì)量.該傳感器利用二氧化錫的電導率去測量污染氣體濃度大小,它們之間成正比關系,然后將電導率的變化轉換為與該氣體濃度相對應的輸出信號.
無線WIFI傳輸模塊采用超低功耗的ESP8266芯片作為傳輸芯片.該芯片主要應用于家庭智能化、工業(yè)無線控制、可穿戴電子產(chǎn)品等領域.芯片內(nèi)部集成低功率32位CPU作為WIFI協(xié)議處理器,支持802.11 b/g/n;內(nèi)置TCP/IP協(xié)議棧;頻率范圍:2.4~2.5 G,支持WPA/WPA2安全模式.開發(fā)者可以采用官方提供的SDK開發(fā)或者使用相應固件,通過其他處理器對其進行控制,硬件設備通過連接到路由器發(fā)出的WIFI無線網(wǎng)絡中,實現(xiàn)與互聯(lián)網(wǎng)或局域網(wǎng)之間的數(shù)據(jù)交換.
系統(tǒng)采用火焰(紅外接收)傳感器來監(jiān)測倉儲環(huán)境中是否有火災.基于紅外線對火焰敏感的特性,高低電平信號的變化通過特別定制的紅外線接收管檢測火焰的亮度變化來獲取.傳感器檢測到有火焰的時候,其信號指示燈點亮.反之,模塊上的信號指示燈熄滅.該傳感器可用于探測火焰或760~1 100 nm波長的光源,可探測角度為0~60°,可接3.3~5 V的電源,使用寬電壓LM393比較器.在探測過程中應避免探頭離火焰過近,且靠近時溫度不能超過85 ℃.
報警模塊主要由全彩LED燈和蜂鳴器組成,當環(huán)境數(shù)據(jù)超過閾值時,蜂鳴器報警,LED點亮相應顏色.本系統(tǒng)實現(xiàn)中,紅燈連接PB.5引腳,綠燈連接PB.0引腳,藍燈連接PB.1引腳,低電平點亮LED燈.通過控制3種顏色的燈管輸出不同的光照強度得到多種顏色.蜂鳴器連接PA.8引腳,高電平時,蜂鳴器響.
軟件設計主要完成任務有:STM32處理器通過DMA采集雙ADC接口來連接光照強度模塊、空氣質(zhì)量模塊,采集到傳感器的模擬量后,通過算法得到光照度和空氣質(zhì)量的值,然后對獲取的值進行等級劃分.使用單總線獲取DHT11模塊采集到的溫濕度大小.通過GPIO獲取火焰?zhèn)鞲衅髂K的電平信號量,報警模塊根據(jù)電平信號量,如果是低電平,則蜂鳴器發(fā)聲,LED燈亮紅燈;如果是高電平,則蜂鳴器不發(fā)聲,LED燈熄滅.使用USART3將采集到的環(huán)境數(shù)據(jù)經(jīng)過WIFI模塊發(fā)送到OneNet物聯(lián)網(wǎng)云平臺上.APP接入云平臺獲取采集的環(huán)境數(shù)據(jù).最后,用戶可以通過手機APP對溫濕度的閾值做出調(diào)整,如果溫濕度大小超出這個界限的時候,APP會廣播一條消息來警告此時的數(shù)值已經(jīng)超過了所設定的界限.
軟件部分總體工作流程為:(1)系統(tǒng)及各個模塊初始化設置:包括系統(tǒng)時鐘初始化,USART1和USART3初始化(設置通信的波特率為115 200),LED和蜂鳴器初始化,各傳感器模塊初始化;(2)WIFI模塊初始化:STM32發(fā)送相關的AT指令,控制WIFI模塊連上路由器;(3)接入云平臺:如果連接成功,就將STM32平臺采集到的環(huán)境數(shù)據(jù)每2~3 s通過WIFI模塊發(fā)送到OneNet云服務器;(4)手機端APP根據(jù)不同倉儲環(huán)境的需求設置溫濕度報警的范圍,如果環(huán)境數(shù)值超過這個閾值時,主控中心就會使聲光報警模塊做出相應的警告動作.
系統(tǒng)的設計程序是基于C語言開發(fā)的,在集成了仿真調(diào)試器、庫管理、宏匯編、編譯器以及連接器的綜合開發(fā)工具Keil5編程.采用ST公司的固件庫函數(shù)開發(fā),將所有的外設固件庫統(tǒng)一放在FWLIB文件中,建立Core文件夾存放一些內(nèi)核文件和系統(tǒng)文件.
系統(tǒng)從上而下劃分了多個模塊進行設計編程,所有硬件模塊都進行了函數(shù)封裝,封裝成 .h接口文件提供給main.c進行使用.主程序調(diào)用10個子程序,分別是“usart.c”“onenet.c”“l(fā)ed.c”“beep.c”“adc.c”“esp8266.c”“flame.c”“dht11.c”“warning.c”“delay.c”.每一個.h文件是提供給其它的接口和它對應的. c文件來實現(xiàn)它模塊的功能.這樣每個模塊的關聯(lián)和耦合度會降到最低,便于程序的移植和修改(見圖3).其中:(1)usart.c是實現(xiàn)串口通信,使用Usart1發(fā)送數(shù)據(jù)到WIFI模塊,使用Usart3發(fā)送數(shù)據(jù)到PC端;(2)onenet.c是實現(xiàn)與OneNet平臺建立連接,可以上傳數(shù)據(jù)流到平臺和接收平臺返回的數(shù)據(jù);(3)led.c是控制全彩RGB燈,控制LED燈的開啟和關閉;(4)beep.c是控制發(fā)聲器件產(chǎn)生和弦音的聲響;(5)adc.c是配置MQ-135氣體傳感器和光敏電阻用到的I/O口,配置ADC工作模式、DMA工作模式;(6)esp8266.c是實現(xiàn)WIFI模塊初始化和用STA模式與路由器連接,達到聯(lián)網(wǎng)功能;(7)flame.c是對火焰?zhèn)鞲衅鞯腉PIO初始化;(8)dht11.c是實現(xiàn)溫濕度測量,同時將溫濕度數(shù)據(jù)進行自我校準;(9)warning.c是對采集的環(huán)境數(shù)據(jù)進行處理,判斷是否超過閾值,做出對應報警動作;(10)delay.c是把延時函數(shù)聚合在一起,易管理,可在其它c文件里調(diào)用.
圖3 系統(tǒng)函數(shù)功能及調(diào)用關系圖
系統(tǒng)采用雙重ADC模式,具有較快的采樣速度.使用雙重ADC同步規(guī)則模式時,ADC1和ADC2同時轉換一個規(guī)則通道組,兩個ADC的轉換結果都放在ADC1的DR寄存器,低16位是ADC1的結果,高16位是ADC2的結果,且必須開啟DMA功能. ADC1和ADC2各采集一個通道. MQ-135氣體傳感器的AOUT端與STM32 F103VET6芯片的引腳GPIOC.1連接,光敏電阻傳感器的AOUT端與芯片的引腳 GPIOC.0連接. PC.1對應ADC1的通道11,PC.0對應ADC2的通道10.
DATA引腳使用單總線通信模式,每次通信時間最大3 ms,連續(xù)采樣間隔不小于100 ms,DHT11單總線的數(shù)據(jù)格式為:每次傳輸?shù)臄?shù)據(jù)包由5 byte(40 bit)組成,MSB先行,依次讀出濕度整數(shù)、濕度小數(shù)、溫度整數(shù)、溫度小數(shù)、校驗和[6].剛開始總線空閑時呈高電平,然后主機把總線拉低至少18 ms,發(fā)送開始信號,等待DHT11響應后,再把總線拉高延時20~40 us.主機設為上拉輸入模式,檢測從機是否有低電平響應信號,隨后再輪詢直到從機發(fā)出40~50 us的高電平,通知主機準備接收數(shù)據(jù).每一個bit數(shù)據(jù)以12~14 us的低電平開始,接著26~28us的高電平表示數(shù)字‘0’,116~118 us的高電平表示數(shù)字‘1’.數(shù)據(jù)傳送結束后,從機拉低,隨后主機設為輸出模式,拉高總線,等待下一次傳送數(shù)據(jù).
(1)火焰檢測函數(shù)Fire_Check().當輸入信號為0時,串口打印“火焰警報”,將數(shù)據(jù)流fire的值設為0,將flag置1傳給WARNING()函數(shù),進入火警模式,使紅燈亮起,蜂鳴器鳴叫.如果輸入信號為1時,將數(shù)據(jù)流fire的值設為1,將flag置0傳給WARNING()函數(shù),進入安全模式,使關閉所有燈,蜂鳴器停止鳴叫.
(2)光照強度檢測函數(shù)Light_Check().當輸入信號為0時,串口打印“明亮”,將flag置0傳給WARNING()函數(shù),進入安全模式,使關閉所有燈,蜂鳴器停止鳴叫.如果輸入信號為1時,串口打印“昏暗”,將flag置2傳給WARNING()函數(shù),進入昏暗模式,使綠燈和藍燈亮起,全彩LED燈顯示燈光顏色為青色.由于ADC模塊使用的是雙重ADC模式,光敏電阻傳感器使用ADC2,采集到AD后將采集的數(shù)據(jù)存放到數(shù)組ADC_ConvertedValue[0]的高16位中,然后經(jīng)過算術運算得到轉化后的光照強度數(shù)值.
(3)空氣質(zhì)量檢測函數(shù)MQ135_Check().由于ADC模塊使用的是雙重ADC模式,MQ-135氣體傳感器使用ADC1,采集到AD后將采集的數(shù)據(jù)存放到數(shù)組ADC_ConvertedValue[0]的低16位中,然后經(jīng)過算術運算得到轉化后的空氣質(zhì)量數(shù)值ADC1_Value.根據(jù)不同的空氣質(zhì)量數(shù)值范圍劃分不同的空氣污染程度.當判斷空氣質(zhì)量等級為優(yōu)或良時,將flag置0傳給WARNING()函數(shù),進入安全模式,使關閉所有燈,蜂鳴器停止鳴叫.如果判斷空氣質(zhì)量等級是輕度、中度、重度、嚴重污染的情況,將flag置3傳給WARNING()函數(shù),進入污染模式,使紅燈和藍燈亮起,全彩LED燈顯示燈光顏色為紫色.
ESP8266模塊支持AP模式,STA模式和STA+AP共享模式3種,系統(tǒng)使用的是STA模式. STM32芯片通過USART3串口發(fā)送一系列初始化配置WIFI連接的AT指令,將ESP8266作為終端設備連接上路由器WIFI,實現(xiàn)聯(lián)網(wǎng)功能.倉儲環(huán)境數(shù)據(jù)的上傳和云服務器命令的下達都通過ESP8266的接收和發(fā)送來完成.
設備端利用平臺提供的EDPSDK,實現(xiàn)EDP協(xié)議,傳輸數(shù)據(jù)包到OneNET平臺,但不保證報文傳輸?shù)捻樞蚺c到達時順序相同.移動終端通過HTTP協(xié)議的RESTful API操作訪問OneNET提供的數(shù)據(jù)點.
ESP8266 與平臺建立連接流程為:(1)CIPSEND:AT+CIPSEND=<length>,接到此命令先返回“>”,然后開始接收串口數(shù)據(jù),當數(shù)據(jù)長度滿length時發(fā)送數(shù)據(jù).(2)根據(jù)EDP協(xié)議,通過DEVID、APILEY向平臺發(fā)送連接請求數(shù)據(jù).(3)ESP8266_GetIPD()函數(shù)等待平臺響應,如果收到平臺返回數(shù)據(jù)包如:“+IPD,數(shù)據(jù)長度:數(shù)據(jù)內(nèi)容”,找到“:”后表示連接成功.
ESP8266與平臺進行數(shù)據(jù)交互流程為:(1)OneNet_FillBuf()函數(shù)把要發(fā)送到平臺的數(shù)據(jù)流進行寫入字符串中.(2)ESP8266_SendData()函數(shù)把設備ID、數(shù)據(jù)流的字符串按EDP協(xié)議進行JSON格式封包,向平臺發(fā)送數(shù)據(jù)包,由平臺進行解析,然后刪包.
云服務器顯示環(huán)境參數(shù)檢測結果,既可查看最新數(shù)據(jù),也可查詢歷史數(shù)據(jù).
系統(tǒng)實現(xiàn)了一個基于移動終端的倉儲環(huán)境監(jiān)測系統(tǒng),整個系統(tǒng)工作穩(wěn)定、準確.本系統(tǒng)主要具有以下優(yōu)勢:與傳統(tǒng)的布線式倉儲環(huán)境監(jiān)測系統(tǒng)相比,本系統(tǒng)成本低廉,操作方便,只要使用聯(lián)網(wǎng)的移動終端設備就能查看數(shù)據(jù),確保了倉儲的安全;采用Android操作系統(tǒng),相比于其他熱門的移動終端操作系統(tǒng),Android系統(tǒng)的開放性比較好;采用OneNet物聯(lián)網(wǎng)云平臺作為系統(tǒng)的服務器,使得終端設備接入更加方便.
在后續(xù)工作中,采集環(huán)境的參數(shù)可根據(jù)不同倉儲的要求進行增刪,如添加PM2.5、紫外線的檢測等.未來考慮在本系統(tǒng)基礎上,增加對于環(huán)境參數(shù)的調(diào)節(jié)控制功能,以進一步增加系統(tǒng)的便利性及實用性.