實驗室監(jiān)測領域長期存在著耗費人力、環(huán)境數(shù)據(jù)監(jiān)測查看不便及相關(guān)檢測設備不易維護等問題,針對這些問題提出一種基于物聯(lián)網(wǎng)云平臺的解決方法。使用Arduino板和多種傳感器對實驗室進行數(shù)據(jù)采集,通過WiFi無線網(wǎng)絡上傳到機智云云服務平臺,進一步發(fā)送到本地Python服務器的MySQL數(shù)據(jù)庫,并在手機安卓應用端顯示。實驗結(jié)果表明管理員和檢查員可對實驗室隨時隨地接收異常信息提醒,查看實驗室每日及每周歷史數(shù)據(jù)。該實驗室監(jiān)測系統(tǒng)可以減少實驗室人力、遠程管理、方便維護。
引言
許多高校實驗室安裝了火警系統(tǒng)、溫濕度監(jiān)測系統(tǒng)等,這些系統(tǒng)大多安裝后無法及時查看是否已損壞,在發(fā)生事故時系統(tǒng)的預警、處理等不如預期,且系統(tǒng)安裝成本高昂,布線復雜。大多環(huán)境監(jiān)測報警系統(tǒng)采用PC端接收查看服務器端傳來的數(shù)據(jù),當管理員外出或者不在電腦前時,便無法實時查看相關(guān)數(shù)據(jù),對實驗室的管理帶來一定不便。
當前各國高度重視物聯(lián)網(wǎng)發(fā)展帶來的產(chǎn)業(yè)機遇,大力推進構(gòu)建物聯(lián)網(wǎng)生態(tài)。國內(nèi)外利用物聯(lián)網(wǎng)對實驗室監(jiān)測的有關(guān)文獻不多,且沒有給出詳細的實施方案。文獻[1]提出利用Onenet平臺管理實驗室教學和預約,實驗資源利用率明顯提高,不足在于該平臺與登錄網(wǎng)站的連接開發(fā)難度大,系統(tǒng)操作步驟無圖展示。
文獻[2]介紹了實驗室化學品管理現(xiàn)狀,采用人臉識別和語音交互技術(shù)實現(xiàn)微信智能客服,但是沒有進一步具體方案說明。文獻[3]利用Arduino和傳感器設計了實驗臺和管理員端,可以完成簽到、監(jiān)控,無遠程管理功能。文獻[4]將實驗室環(huán)境監(jiān)測、設備管理、實驗教學結(jié)合,提出相關(guān)設計思路,但沒有系統(tǒng)手機端和PC端應用展示。
本文在上述研究的基礎上,將傳感器技術(shù)、無線通信、云平臺、數(shù)據(jù)庫、移動應用技術(shù)相結(jié)合,設計了一套實驗室監(jiān)測系統(tǒng),利用Arduino上多路外設傳感器模塊,如實驗室的溫濕度、門的開合、空氣質(zhì)量等進行監(jiān)測并采集相關(guān)數(shù)據(jù),成本較低。通過WiFi無線通信技術(shù)將數(shù)據(jù)上傳到機智云云服務平臺,無需網(wǎng)絡布線。進一步傳輸?shù)奖镜豍ython服務器的MySQL數(shù)據(jù)庫,輕量化,方便開發(fā)。管理員安卓手機應用連接到數(shù)據(jù)庫,可隨時查看動態(tài)、歷史數(shù)據(jù)、報警,實現(xiàn)遠程管理、及時處理。
1 實驗室檢測系統(tǒng)的設計
1.1云服務平臺的選擇
微軟、IBM、亞馬遜、百度、阿里、華為等產(chǎn)業(yè)巨頭先后推出物聯(lián)網(wǎng)操作系統(tǒng)、云平臺和大數(shù)據(jù)分析服務,例如谷歌發(fā)布Android Things,亞馬遜推出Amazon AWS IOT,中國移動自主開發(fā)Onenet開放平臺,京東、360等企業(yè)也在積極開展物聯(lián)網(wǎng)平臺建設[5-6],其中機智云物聯(lián)網(wǎng)平臺有著獨到優(yōu)勢,提供了從定義產(chǎn)品、設備端開發(fā)調(diào)試、應用開發(fā)、產(chǎn)測、云端開發(fā)、運營管理、數(shù)據(jù)服務等覆蓋智能硬件接入到運營管理全生命周期服務的能力。
對于各類無線通信芯片均有良好的兼容性,且在機智云淘寶店的WiFi模組中已經(jīng)移植好了底層程序GAgent,可以直接使用機智云官方應用配置連接并傳輸數(shù)據(jù)。機智云云服務平臺提供了許多方便開發(fā)的服務功能,例如可以在網(wǎng)頁上遠程監(jiān)控調(diào)試設備,對于開發(fā)者來說十分便利,因此選擇機智云作為云服務平臺。
1.2硬件功能及設計
在硬件上由于每個實驗室至少布置一個節(jié)點,高校實驗室數(shù)量較多,因此需要考慮成本。節(jié)點采用Arduino Atmega328p主芯片,擁有模擬輸入通道6路,數(shù)字I/O通道14路,易擴展,可以驅(qū)動多路外設傳感器,來對實驗室的各類環(huán)境參數(shù)進行采集。
監(jiān)測溫濕度的傳感器選擇DHT11,能夠同時監(jiān)測溫度和濕度這兩項參數(shù)。監(jiān)測門開合狀態(tài)選擇一款可調(diào)有效距離的紅外傳感器,通過在一定距離下監(jiān)測是否有遮擋物就可判斷門的開合狀態(tài),若有遮擋物則表示門在打開,反之若沒有則表示門已關(guān)閉。監(jiān)測空氣質(zhì)量的傳感器選擇MQ135,在實際中廣泛使用,對煙霧、硫化物、氨氣、苯等有害氣體較為靈敏。水位傳感器、實驗臺電壓傳感器等不再贅述[7-8]。設置好對應I/O口驅(qū)動,采集數(shù)據(jù)的頻率,然后將采集來的數(shù)據(jù)進行矯正、封裝處理。
傳感器數(shù)據(jù)通過無線通信模塊傳輸?shù)紸iot開發(fā)平臺,機智云物聯(lián)網(wǎng)平臺支持WiFi、4G、Wi-Fi +藍牙模組,WiFi+NFC模組通信方式,例如樂鑫esp8266、中移,移遠等。考慮到通信數(shù)據(jù)量和后續(xù)功能擴展,選擇ESP8266 WiFi模塊實現(xiàn)數(shù)據(jù)轉(zhuǎn)發(fā)[9-10]。
機智云平臺接收到數(shù)據(jù)后,傳輸?shù)焦芾韱T手機應用端,進一步保存到本地服務器,因此使用固定IP地址以便手機應用端訪問,數(shù)據(jù)保存在本地數(shù)據(jù)庫。本地服務器對檢查員發(fā)送的查詢請求進行回應,并從數(shù)據(jù)庫中查詢相關(guān)信息返回給檢查員。
1.3軟件功能及設計
Python語言相較于其他編程語言,具有開發(fā)速度快、代碼量少、使用方便及內(nèi)部類型使用成本低等顯著優(yōu)勢。MySQL數(shù)據(jù)庫管理系統(tǒng)應用廣泛,兼容性優(yōu)良,使得搭建本地數(shù)據(jù)庫并進行關(guān)聯(lián)更為簡便、快速[11-12]。因此采用Python語言來實現(xiàn)本地服務器的行為邏輯,數(shù)據(jù)庫采用MySQL。本地服務器主要功能:1)配置管理員和檢查員賬號密碼,分配不同檢查員到不同實驗室;2)接收管理員應用發(fā)來的數(shù)據(jù),并將數(shù)據(jù)保存到本地數(shù)據(jù)庫;3)接收檢查員應用查詢數(shù)據(jù)請求,從本地數(shù)據(jù)庫中查詢相關(guān)數(shù)據(jù)并返回。
安卓手機應用有兩種身份權(quán)限:管理員和檢查員,通過登陸賬號進行區(qū)分[13-15]。系統(tǒng)框架如圖1所示。
管理員主要負責管理整個實驗室監(jiān)測系統(tǒng)硬件,功能主要為:1)與機智云平臺連接,接收每一個實驗室的Arduino傳感器所采集到的數(shù)據(jù);2)分辨數(shù)據(jù)來自于哪一個實驗室,進行封裝處理,將這些處理好的數(shù)據(jù)發(fā)送給本地服務器;3)讀取本地服務器的相關(guān)數(shù)據(jù),對這些數(shù)據(jù)進行處理并利用。
檢查員主要負責查看自己所負責實驗室的情況,若實驗室有異常情況及時處理,功能主要為:1)訪問服務器讀取賬號密碼相關(guān)信息,成功登錄后將根據(jù)賬號來判斷管理區(qū)域;2)查詢并接收管理員傳送到服務器的實驗室數(shù)據(jù),將數(shù)據(jù)進行處理,分辨屬于哪一個實驗室并動態(tài)顯示出來;3)若數(shù)據(jù)異常,則發(fā)送報警消息提醒檢查員;4)最后根據(jù)相關(guān)信息生成歷史數(shù)據(jù)曲線,從而對整體情況有更好的把握。
圖1 系統(tǒng)框架
2 實驗室監(jiān)測系統(tǒng)軟件實現(xiàn)
2.1手機應用軟件
登錄功能是在點擊登錄按鈕的時候,先將填寫的賬號信息發(fā)送給本地服務器進行驗證,之后將接收到的服務器信息作為message消息發(fā)送到handler中進行處理。賬號信息錯誤則進行提示,若賬號正確則在handler中再次向服務器發(fā)送密碼信息。如此反復驗證,直至賬號密碼皆正確則可進入下一頁面,系統(tǒng)登錄界面如圖2所示。
圖2 登錄頁面
在登錄成功后,根據(jù)賬號判斷屬于管理員還是檢查員。以檢查員為例,進入指定的實驗室監(jiān)測區(qū)域列表頁面,在此頁面中不斷向服務器查詢本人所負責的實驗室信息,并將信息保存到手機,然后判斷這些信息是否正常,若有異常則采用頂欄消息通知的方式對檢查員進行提醒。圖3所示為某檢查員負責實驗室選擇頁面,檢查員賬號不同,這里的選擇頁面也不同。
動態(tài)顯示數(shù)據(jù)功能,是在進入實驗室數(shù)據(jù)查看頁面后,開一個新線程讀取本地服務器數(shù)據(jù)庫中的相關(guān)數(shù)據(jù),將數(shù)據(jù)以message的形式發(fā)送給handler,handler接收到數(shù)據(jù)后進行處理并動態(tài)更新,在發(fā)現(xiàn)異常數(shù)據(jù)時,會把該數(shù)據(jù)字體變紅以提醒檢查員。
歷史數(shù)據(jù)曲線功能是在點擊實驗室數(shù)據(jù)查看頁面的歷史數(shù)據(jù)按鈕后,將進入歷史數(shù)據(jù)曲線頁面,然后在繪制曲線圖的同時開兩個線程,分別去訪問服務器讀取相關(guān)數(shù)據(jù),將服務器發(fā)回的數(shù)據(jù)以message的形式保存,并在handler中進行處理,handler內(nèi)主要將數(shù)據(jù)保存下來,并賦值給圖表進行更新繪制,圖表的繪制采用MPAndroidChart庫。MPAndroidChart為目前安卓圖表庫中最成熟、功能最全的庫之一,對于新手開發(fā)圖表十分簡單,缺點是引入后項目文件會變得較大。
圖3 實驗室選擇頁面
2.2本地服務器軟件
本地服務器,讀取本機IP地址作為服務器IP地址,然后設置端口進行通信。完成對數(shù)據(jù)庫的連接及服務器設定的初始化操作后,采用循環(huán)的方式進行監(jiān)聽手機應用端的請求通信,根據(jù)傳送過來的數(shù)據(jù)開頭標識位來進行判斷該請求為何種請求,并進行下一步的處理。在響應完一次請求后將斷開連接,并繼續(xù)監(jiān)聽下一次的請求。
3 實驗結(jié)果分析
3.1本地服務器接收數(shù)據(jù)并保存到數(shù)據(jù)庫
首先測試的是本地服務器能否正常接收管理員應用數(shù)據(jù)并保存到本地數(shù)據(jù)庫,通過對比數(shù)據(jù)庫數(shù)據(jù)變化及服務器狀態(tài)進行判斷。
圖4所示為數(shù)據(jù)庫更新前的數(shù)據(jù)庫,最后一條數(shù)據(jù)id為3 060,時間為:2020-03-28 05:59:28。
圖4 本地服務器更新前的數(shù)據(jù)庫
圖5所示為服務器cmd運行圖,服務器發(fā)送了3次“success”,代表已成功接收3條數(shù)據(jù)并存入數(shù)據(jù)庫。
圖6所示為數(shù)據(jù)庫更新3條數(shù)據(jù)后的數(shù)據(jù)庫,最后一條數(shù)據(jù)id為3 063,且時間也已更新為:2020-03-28 14:47:03。
以上實驗表明服務器已能正常接收數(shù)據(jù)并保存到本地數(shù)據(jù)庫中。
3.2 數(shù)據(jù)監(jiān)測和顯示
圖7所示為實驗室動態(tài)數(shù)據(jù)顯示頁面。這里需對數(shù)據(jù)進行解析,即對接收到的數(shù)據(jù)進行截取并對截取的部分進行檢測,由于在源數(shù)據(jù)中,一些數(shù)據(jù)的有效數(shù)字前會含有“0”,例如:“023”,所以DataJX()函數(shù)還對截取的數(shù)據(jù)進行去0工作,若截取的數(shù)據(jù)的有效數(shù)字前含有“0”,則將“0”去除,若沒有則直接進行輸出顯示。setTextColor函數(shù)修改字體顏色,異常數(shù)據(jù)字體顏色需改變,而當異常數(shù)據(jù)恢復正常時,字體則要變回原本的顏色。
圖5 本地服務器成功接受數(shù)據(jù)
圖6 本地服務器更新后的數(shù)據(jù)庫
圖7實驗室動態(tài)數(shù)據(jù)查看
圖8所示為應用提示異常數(shù)據(jù)消息,這里取系統(tǒng)時間來生成id,頂欄消息的發(fā)送依賴通道進行,而只有擁有不同的通道id,才能發(fā)送多條不同的頂欄消息。當有多實驗室同時出現(xiàn)異常時,頂欄消息可以發(fā)送多條消息進行提醒。mVibrator.vibrate(1000)函數(shù)在發(fā)送消息的同時使手機震動,震動時間為1s。
圖8異常報警提醒
使用Arduino主芯片發(fā)送模擬錯誤數(shù)據(jù),溫度50 ℃,圖7已顯示有異常數(shù)據(jù),并顏色改變?yōu)榧t色,圖8顯示已收到異常報警信息,以上實驗表明數(shù)據(jù)監(jiān)測功能正常。
圖9所示為歷史數(shù)據(jù)圖表頁面,分為每日數(shù)據(jù)和每周數(shù)據(jù)兩個圖表。繪制每周數(shù)據(jù)圖表的函數(shù)chart(),參數(shù)包括3位數(shù)據(jù),0位數(shù)據(jù)為y軸最小值,1位數(shù)據(jù)為y軸最大值,2位數(shù)據(jù)為y軸數(shù)據(jù)最小間隔。向數(shù)據(jù)圖表添加新的數(shù)據(jù)并更新繪制的函數(shù)entry_add_wc(),其第1個參數(shù)為x軸的坐標,第2個參數(shù)為y軸坐標,MPAndroidChart添加數(shù)據(jù)采用的是Entry類型數(shù)據(jù),將x軸與y軸坐標合在一起進行傳入,傳入后進行更新繪制。歷史數(shù)據(jù)顯示完整,功能正常。
圖9 歷史數(shù)據(jù)曲線顯示
4結(jié)論
本文系統(tǒng)將傳感器、無線通信、云平臺、數(shù)據(jù)庫、移動應用技術(shù)相結(jié)合,由性價比高的Arduino板連接多傳感器,降低了現(xiàn)有實驗室監(jiān)測系統(tǒng)的成本,采用WiFi模塊和機智云平臺收集并發(fā)送數(shù)據(jù)到本地數(shù)據(jù)庫,安裝方便,使實驗室管理員能隨時隨地利用手機端應用,進行查看動態(tài)數(shù)據(jù)、歷史數(shù)據(jù)、接收報警信息,節(jié)省了實驗室管理的時間、人力成本,更好的保護實驗室人員和設備。下一步,系統(tǒng)將攝像頭接入系統(tǒng),通過定時拍照、人臉識別技術(shù)判斷實驗室有無異常;將現(xiàn)有空氣凈化設備接入,實現(xiàn)新風滅菌除臭;采用數(shù)據(jù)可視化技術(shù),使系統(tǒng)用戶更直觀了解實驗室狀態(tài)。
-
Arduino
+關(guān)注
關(guān)注
187文章
6464瀏覽量
186669
發(fā)布評論請先 登錄
相關(guān)推薦
評論