于 蒙,周 密,李文鋒,宋金龍
(武漢理工大學(xué) 物流工程學(xué)院,武漢430063)
食品保鮮作為食品安全中的一個重要組成部分,已經(jīng)受到各行業(yè)的高度關(guān)注,在這樣的情況下,冷鏈物流的監(jiān)控尤為重要,目前冷鏈監(jiān)控以視頻監(jiān)控和路徑導(dǎo)航居多[1-2],監(jiān)控系統(tǒng)的功能比較單一,不少冷鏈監(jiān)測系統(tǒng)主要是通過RFID 和WSN技術(shù)的結(jié)合設(shè)計出冷鏈監(jiān)測平臺,但這種監(jiān)測系統(tǒng)無法實時監(jiān)控物品信息[3-4]。 本設(shè)計融合了傳感器技術(shù)、無線通訊技術(shù)、GPS 定位技術(shù),結(jié)合安卓開發(fā)技術(shù)開發(fā)冷鏈物流監(jiān)控系統(tǒng), 對系統(tǒng)進行一系列的測試,驗證了系統(tǒng)可運行性,通過安卓手機作為定位、溫濕度查詢終端,實時靈活地監(jiān)測冷藏車的行駛路徑和溫濕度變化,從而有效提高產(chǎn)品質(zhì)量的安全。
冷鏈物流監(jiān)控系統(tǒng)需要進行相關(guān)環(huán)境參數(shù)的監(jiān)測,還需要對車輛的實時位置進行監(jiān)測,針對冷鏈車載運輸環(huán)節(jié)進行設(shè)計,系統(tǒng)框架如圖1 所示。
圖1 冷鏈運輸監(jiān)測環(huán)節(jié)架構(gòu)Fig.1 Cold chain transportation monitoring link structure
對冷鏈物流運輸環(huán)節(jié)的監(jiān)控分為車載終端和監(jiān)控中心兩個模塊。 車載終端模塊就是監(jiān)控系統(tǒng)的硬件模塊,溫度傳感器DS18B20、濕度傳感器DHT11、CO2傳 感 器MG811 和HM06 藍(lán) 牙 集 成 于ATMEGA328P 單片機上,組成環(huán)境參數(shù)監(jiān)測傳輸裝置,通過溫、濕度傳感器、CO2濃度傳感器定時采集(約10 s 一次)冷藏廂內(nèi)的環(huán)境參數(shù),主控芯片對傳感器采集的數(shù)據(jù)進行解析、打包并發(fā)送給藍(lán)牙完成數(shù)據(jù)處理。 監(jiān)控中心硬件僅為一部裝載有冷鏈物流監(jiān)控APP 的智能手機構(gòu)成,監(jiān)控中心模塊就是監(jiān)控系統(tǒng)的軟件模塊,硬件裝置與手機APP 通過藍(lán)牙通信完成數(shù)據(jù)傳輸, 蜂鳴器連接主控芯片的串口,當(dāng)手機接收到數(shù)據(jù)時會對數(shù)據(jù)綜合判斷,當(dāng)數(shù)據(jù)超過參數(shù)范圍時便會進行預(yù)警,同時將接收到的數(shù)據(jù)通過4G 網(wǎng)絡(luò)上傳云端服務(wù)器進行保存, 便于日后的管理。
環(huán)境信息監(jiān)測模塊的設(shè)計主要是對相關(guān)傳感器的電路進行設(shè)計,在硬件選型時選擇濕度傳感器型號為DHT11, 它具有極高的可靠性和長期穩(wěn)定性,DHT11 有4 個管腳,傳感器的Pin2 端口為數(shù)據(jù)發(fā)送串口, 傳感器的Pin1 接通5 V 電源,Pin4 端口連接GND,Pin3 端口懸浮放置, 電路中放置一個二極管用于指示傳感器是否正常通電工作。 選用溫度傳感器為DS18B20, 其測量范圍為-55 ℃~+125 ℃,能夠很好地滿足冷鏈車載監(jiān)控系統(tǒng)的監(jiān)控需求,同時可在1 s 內(nèi)就把溫度數(shù)據(jù)變換成數(shù)字信息, 能很好地滿足實時性及精度要求。 該傳感器有3 個引腳,引腳1 接電源,引腳2 為數(shù)據(jù)輸出接口,引腳3接GND。 選用MG811 型CO2傳感器, 其測量精度高、功耗小、體積小、測量范圍廣,對二氧化碳具有很高的檢測靈敏度。 電路設(shè)計時,其引腳1 接電源,引腳2 為GND 接地,3、4 引腳為傳感器的數(shù)據(jù)發(fā)送串口。
無線通信模塊主要負(fù)責(zé)將傳感器獲取的環(huán)境信息轉(zhuǎn)發(fā)到手機移動終端,作為對系統(tǒng)進行監(jiān)控的基礎(chǔ)數(shù)據(jù)。 本系統(tǒng)設(shè)計采用HM-06 藍(lán)牙模塊,它共有16 個引腳, 工作時有5 個引腳被接通,2、4 引腳分別為TX、RX 串口,與處理器進行通信,引腳9 連接穩(wěn)壓電路提供3.3 V 工作電壓, 引腳12 為GND接地,15 引腳接通LED 用于指示藍(lán)牙是否正常工作。 圖2 為HM-06 的電路圖。
圖2 HM-06 藍(lán)牙原理圖Fig.2 HM-06 bluetooth schematic
處理器是系統(tǒng)硬件電路的基礎(chǔ),直接影響系統(tǒng)精度和處理性能, 本文采用ATMEGA328 為主控芯片,該型單片機具備高速、節(jié)能等特點,同時滿足系統(tǒng)在功能、尺寸及成本方面的要求。 藍(lán)牙模塊通過ATMEGA328 單片機的輸入輸出口連接主控芯片,完成數(shù)據(jù)的傳輸,CO2傳感器和溫濕度傳感器通過RX、TX 串口與單片機之間進行串口數(shù)據(jù)通信,將監(jiān)測到的數(shù)據(jù)轉(zhuǎn)發(fā)給藍(lán)牙, 蜂鳴器接主控芯片的D5串口,當(dāng)環(huán)境數(shù)據(jù)超標(biāo)時,發(fā)出警報。 硬件模塊實物連接圖如圖3 所示。
圖3 硬件模塊實物連接圖Fig.3 Hardware physical connection diagram
系統(tǒng)啟動后,硬件設(shè)備開始監(jiān)測環(huán)境數(shù)據(jù),并通過藍(lán)牙串口發(fā)送給手機端,系統(tǒng)啟用AmarinoService藍(lán)牙監(jiān)聽服務(wù),開啟新線程,建立socket 連接,通過getInputStream()接收冷鏈環(huán)境數(shù)據(jù)輸入流。 調(diào)用forwardDataToOtherAPPs(String msg)函數(shù)將接收到的msg 環(huán)境信息以廣播的形式發(fā)布出去,數(shù)據(jù)接收Activity 根據(jù)注冊的廣播接收者ArduinoReceiver 對消息進行過濾,重寫接收者的onReceive 函數(shù),提取參數(shù)類型關(guān)鍵字,判斷接收的數(shù)據(jù)屬于溫濕度、CO2濃度中的哪一種。調(diào)用receive.substring(1,3)獲取數(shù)據(jù)類型關(guān)鍵字,調(diào)用receive.substring(12,17)獲取環(huán)境參數(shù)數(shù)值。 接收完數(shù)據(jù)之后對數(shù)據(jù)進行計算處理, 當(dāng)監(jiān)測的數(shù)據(jù)超過閾值時做出提醒和報警響應(yīng);分別計算出10 次環(huán)境參數(shù)的均值,最大值及實時值,并將所求結(jié)果利用textView.setText()直觀顯示在視圖區(qū)域,直觀了解相關(guān)參數(shù)值。 調(diào)用insert-Data()函數(shù)將數(shù)據(jù)保存入數(shù)據(jù)庫。調(diào)用addDataPoint()方法將實時獲取的數(shù)據(jù)在畫布上進行描點,調(diào)用drawLine 將所有點進行連線繪制數(shù)據(jù)變化趨勢圖,直觀看出變化趨勢,不斷調(diào)用invalidate 進行視圖更新,實現(xiàn)數(shù)據(jù)圖形的動態(tài)顯示,圖4 是系統(tǒng)數(shù)據(jù)監(jiān)控模塊的流程。
圖4 冷鏈數(shù)據(jù)監(jiān)控模塊的流程圖Fig.4 Flow chart of cold chain data monitoring
用戶進入系統(tǒng)后開啟新線程,根據(jù)isEnabled()判斷是否開啟藍(lán)牙服務(wù),若isEnabled()==false 則調(diào)用enable()打開藍(lán)牙設(shè)備。 若isEnabled()==true 則證明已開啟本地藍(lán)牙設(shè)備,單擊藍(lán)牙連接模塊添加設(shè)備按鈕進入AmarinoActivity 藍(lán)牙查詢搜索類,在該類中進行的操作有藍(lán)牙設(shè)備搜索、 設(shè)備名稱與MAC 地址的獲取與保存, 將搜索到的BTDevice 添加進設(shè)備DB, 查詢數(shù)據(jù)庫并將結(jié)果作為ListView適配器的數(shù)據(jù)源,單擊ListView 的item,將設(shè)備添加至藍(lán)牙Activity 的UI 界面中,選擇相應(yīng)藍(lán)牙設(shè)備完成連接。 開啟ReceiveThread 線程進行socket 通訊,調(diào)用socket 的getInputStream()函數(shù)獲取硬件設(shè)備傳輸?shù)沫h(huán)境參數(shù)數(shù)據(jù),每接收一個數(shù)據(jù)都通過send-Broadcast 廣播出去, 其他Activity 通過廣播接收者接收數(shù)據(jù)并進行相應(yīng)的響應(yīng)處理。 藍(lán)牙無線通訊模塊工作流程如圖5 所示。
圖5 藍(lán)牙無線通訊模塊工作流程Fig.5 Bluetooth wireless communication module work flow chart
車輛定位功能由手機應(yīng)用程序?qū)崿F(xiàn),調(diào)用手機自帶的GPS 功能,通過手機GPS 獲取運輸車輛的經(jīng)緯度信息,再調(diào)用高德地圖接口,在地圖上顯示車輛的實時位置。 當(dāng)運輸車輛位置發(fā)生改變,onLocationChanged 方法被觸發(fā),通過location.getLatitude()和location.getLongitude()方法可以獲取當(dāng)前所處位置的經(jīng)緯度數(shù)據(jù),調(diào)用APP.setmLatitude、APP.setm-Longitude 方法將經(jīng)緯度信息放入全局變量APP.mLatitude 和APP.mLongitude,上述獲取的是車輛的經(jīng)緯度信息, 通過調(diào)用locBundle.getString("desc")可以獲取車輛的具體地理位置,接著將位置信息存入數(shù)據(jù)庫。 車輛定位模塊運行效果如圖6 所示。
圖6 車輛定位模塊運行效果Fig.6 Vehicle positioning module operation effect
反饋報警模塊主要實現(xiàn)對環(huán)境數(shù)據(jù)的處理,打開APP 與硬件設(shè)備建立連接之后,即開始數(shù)據(jù)傳輸,藍(lán)牙數(shù)據(jù)接收過程在藍(lán)牙服務(wù)AmarinoService 類中進行,ReceiveThread 線程接收數(shù)據(jù)并對數(shù)據(jù)進行判斷,當(dāng)Integer.valueOf(msg).intValue()超過閾值時會觸發(fā)報警服務(wù)startService,開啟線程進行報警。
在完成系統(tǒng)的軟硬件模塊設(shè)計之后,還需要對硬件裝置測試和軟件APP 測試。硬件設(shè)備測試主要測試其數(shù)據(jù)采集與傳輸功能,APP 測試主要是測試其數(shù)據(jù)接收、顯示功能、及預(yù)警功能。
系統(tǒng)啟動后,環(huán)境感知裝置每隔一段時間會讀取一次溫度、濕度、CO2濃度數(shù)據(jù),傳感器只需單向通訊。 經(jīng)過A/D 轉(zhuǎn)換,將傳感器輸出的模擬值轉(zhuǎn)換為單片機可以識別處理的數(shù)字值。 單片機處理之后,定義數(shù)據(jù)傳輸格式,通過UART 異步通訊串口將數(shù)據(jù)轉(zhuǎn)發(fā)給藍(lán)牙模塊,接收數(shù)據(jù)后藍(lán)牙模塊通過藍(lán)牙通訊協(xié)議與冷鏈監(jiān)控系統(tǒng)APP 通訊,進行數(shù)據(jù)傳輸。 監(jiān)控過程如圖7 所示。
圖7 硬件數(shù)據(jù)采集流程Fig.7 Hardware data collection flow chart
系統(tǒng)數(shù)據(jù)接收與顯示功能是在系統(tǒng)手機軟件端實現(xiàn)的,打開手機APP 系統(tǒng)進行工作,首先進行藍(lán)牙搜索查詢,找出硬件藍(lán)牙設(shè)備進行配對,配對完成后,AmarinoService 藍(lán)牙服務(wù)即在后臺開啟服務(wù)接收數(shù)據(jù)并將數(shù)據(jù)以廣播形式發(fā)送出去,不同的activity 根據(jù)數(shù)據(jù)類型做出相應(yīng)的動作響應(yīng),完成數(shù)據(jù)的顯示,如圖8 所示。
圖8 數(shù)據(jù)圖形化顯示Fig.8 Graphical display of data
選取溫度、濕度、CO2濃度等環(huán)境參數(shù)作為預(yù)警模型判定指標(biāo),對系統(tǒng)參數(shù)進行監(jiān)控,當(dāng)超過預(yù)警值時,APP 發(fā)出報警。 每種環(huán)境參數(shù)超出范圍時都會觸發(fā)警報服務(wù), 具體預(yù)警值處理是AmarinoService 服務(wù)接收數(shù)據(jù)后在手機程序中進行。 為了方便試驗,我們先用傳感器測定實驗室環(huán)境參數(shù),選定的預(yù)警值接近真實環(huán)境,取值如表1 所示,同時表中列出了系統(tǒng)的預(yù)警結(jié)果。
表1 環(huán)境參數(shù)預(yù)警值Tab.1 Environmental parameter warning value
通過實驗室環(huán)境下的測試,系統(tǒng)報警服務(wù)能正常工作,判斷效果如圖9 所示。
本文將物聯(lián)網(wǎng)技術(shù)與主流的Android 系統(tǒng)相結(jié)合, 設(shè)計一種基于Android 平臺的冷鏈物流車載監(jiān)控系統(tǒng),完成了軟硬件模塊的設(shè)計,車載終端與監(jiān)控中心的結(jié)合, 最終實現(xiàn)了Android 手機端對冷鏈車輛環(huán)境信息的采集監(jiān)控,以及冷藏車輛運輸位置的實時跟蹤定位, 實時監(jiān)控冷鏈運輸過程中的環(huán)境,確保每時每刻冷鏈環(huán)境參數(shù)都在產(chǎn)品要求范圍內(nèi),當(dāng)參數(shù)超過閡值時,可發(fā)出警報,從而有效的對冷鏈環(huán)境加以調(diào)節(jié),保證產(chǎn)品的質(zhì)量。 基于安卓平臺的開發(fā)更具有移動性,監(jiān)督更方便。
圖9 系統(tǒng)報警功能Fig.9 System alarm function