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