溫 濤,范梅紅
(1.惠州市中心人民醫院,廣東 惠州 516000;2.惠州市第一人民醫院,廣東 惠州 516000)
基于Arduino和ZigBee的無線溫度監測系統
溫 濤1,范梅紅2
(1.惠州市中心人民醫院,廣東 惠州 516000;2.惠州市第一人民醫院,廣東 惠州 516000)
層流系統24 h不間斷工作,對冷卻水和熱水要求較高,利用Arduino的開放性和ZigBee的易組網性,快速搭建遠程無線監控層流系統水溫系統,可滿足實時監控要求。
Arduino;ZigBee;無線監控;層流
Arduino是一款包含硬件和軟件開源平臺,方便設計和制造用于電子設備和交互對象的微處理器套件。因為Arduino為開源平臺,硬件具有不同版本,大多數都具有不同數量的閃存,引腳和8位的微控制器。板上的單排或者雙排引腳便于連接進行編程并結合到其他電路中,也可以連接到其他附加模塊。Arduino的軟件開發可用Arduino IDE,可在Windows、MAC OS、Linux等主流操作系統運行。Arduino IDE對初學者極易掌握,還具有足夠的靈活性,它不需要太多的單片機基礎,熟悉C語言,簡單學習后就可在平臺上快速開發軟件。
ZigBee是基于IEEE802.15.4標準的低功耗局域網協議,是一種短距離、低功耗的無線通信技術。其特點是近距離、低復雜度、自組織、低功耗、低數據速率。簡而言之,ZigBee就是一種便宜、低功耗的近距離無線組網通訊技術。ZigBee網絡通常由3種節點構成:①Coordinator(協調器)。用來初始化1個ZigBee網絡,并為最初加入網絡的節點分配地址,每個網絡需要且只能夠有1個協調器。②Router(路由)。也稱為ZigBee的全功能節點,可以轉發數據,起到路由的作用,也可以收發數據,當成一個數據節點,還能保持網絡,為后加入的節點分配地址。③End Device(終端節點)。通常定義為電池供電的低功耗設備,通常只周期性發送數據,不接收數據。我院手術室為層流凈化手術室,層流凈化系統在調節溫度和濕度時需要穩定的冷熱水供應。由于我院層流凈化系統的冷熱水由后勤部門負責供應,后勤對冷熱水機房是定時巡查機制,每天只在固定時間檢查系統是否工作正常,但層流系統要求24 h冷熱水的正常供應,這種定時巡查機制無法滿足需要。特別在夏天時,通常會在巡查時間空檔發生設備故障使層流系統無法正常工作,導致手術室環境不適合開展手術。以往,總是在手術室發現溫濕度異常后,才通知維修。實際中,冷熱水異常到手術室環境異常會經過一定的時間,如果能在水溫一出現異常時就報警提醒維修,則能較早地解決故障。所以,需要實時監測水溫的裝置,在溫度異常時立即提醒工作人員進行維修。
本研究使用的裝置需要Arduino板、溫度探頭、ZigBee模塊、LCD屏幕、蜂鳴器和按鈕。因為層流機房距離值班室距離較遠,從下位機到上位機之前需要1個中繼路由(ZigBee模塊)連接,原理圖如圖1所示。

圖1 原理圖

圖2 下位機程序流程圖

圖3 線路圖

圖4 上位機流程圖
下位機的主要作用是測量水溫,并把數據發送到上位機。中繼路由把從下位機接收到的數據轉發到上位機。上位機接收數據并顯示處理,如果溫度超過預設值,則報警提醒。
下位機程序流程見圖2.下位機可獲取水溫,然后把數據發送出去。程序運行后首先會初始化,主要是串口波特率設置,傳感器管腳初始化和LCD屏幕管腳進行設定,程序運行后每秒對2個探頭獲取溫度值。為了讓獲得的溫度更加準確,一共獲取10次后再平均數據,然后通過ZigBee模塊傳輸出去。下位機的設計關鍵點和難點其一在于需要連接的管腳較多,需要合理安排各個模塊的管腳接口,以免管腳不夠。
管腳2~6用來連接溫度探頭一,管腳2和管腳3分別設置為高電平和低電平,可用來為溫度探頭供電,管腳4~6用來與溫度芯片通訊。管腳9~13用來連接溫度探頭二,管腳9和管腳10分別設置為高電平和低電平,用來為溫度探頭供電,管腳11~13用來和溫度芯片通訊。電源5 V和3.3 V分別為LCD屏幕和ZigBee模塊供電,管腳A4和管腳A5為LCD模塊通訊管腳。管腳TΧ1連接ZigBee模塊的RΧ管腳,用來發送數據。此外,要在單位時間內進行多次采集溫度數據,然后平均這些數據,從而消除一些干擾數據。線路圖如圖3所示,上位機流程圖如圖4所示。上位機也是Arduino平臺,接收從下位機傳來的數據,可實時查看水溫,當水溫異常時報警。程序運行后進行初始化,主要完成對串口設置、LCD屏幕初始化、按鈕中斷管腳初始化和初始化一些標識位,各項初始化完成后開始從下位機接收數據,接收完成后在LCD屏幕上顯示數值。如果溫度超過預設報警溫度,則讓蜂鳴器報警。管腳2和管腳3由于平臺規定只能用來設置成中斷,可使用5 V和10 K電阻連接做成中斷電路。管腳8用來設置蜂鳴器的開關,高電平報警,低電平不報警。管腳RΧ1連接ZigBee模塊的管腳TΧ。電源Vin和3.3 V用來給LCD屏幕和ZigBee模塊供電,管腳A4和管腳A5為LCD模塊通訊管腳。上位機的關鍵點和難點在于當檢測到溫度異常時的報警,如果每次接收到的水溫檢測到異常時都置管腳8為高電平報警,則實際使用中每隔10 s就會激活報警。這個平臺主要作用是提醒值班人員溫度有異常需要去處理,水溫從異常到正常是需要一段時間的,只需要在正常溫度發生異常的時候提醒值班人員,在值班人員確認后(按下消音按鈕),即使溫度異常也無需報警。只有在溫度恢復正常后,再次發生異常時才報警,所以,在程序編寫時對當時報警狀態邏輯的判斷中,如果靜音標識位被設定,則系統將不報警,以免造成過多的報警,影響正常使用。在溫度報警上限的設置中,因為下位機的溫度探頭不是直接接觸水的,而是附著在輸送管壁上的,與實際溫度有偏差,水溫會在一個溫度區間中波動,所以,這個值需要實際使用一段時間后再確定在一個比較合理的數值,過于接近臨界值易誤報,離臨界值太遠則容易錯過最佳報警時間。中斷代碼的編寫中,其中一個按鈕是控制LCD背光的,Arduino系統要求,一旦進入中斷程序,就會自動禁止中斷,但在這個程序中,觸發其中一個按鈕是中斷,向LCD屏幕發數據時也需要中斷,向LCD屏幕發送數據發生在按鈕中斷過程中,所以,正常情況下是不允許的,會造成系統死機。因此,在按鈕被按下執行中斷函數時,需要在函數里面置位中斷允許“sei();”,然后再執行其他語句。
整個系統啟動時,要先啟動上位機,即ZigBee模塊協調器,然后啟動中間的路由模塊,最后啟動下位機。系統在運行期間多次、及時、準確監測到冷水溫度異常,為搶修冷水機組或者切換應急供水提供了寶貴時間。利用Arduino的模塊化和代碼易編寫性及ZigBee的無線傳輸,可以快速搭建簡單的監測平臺,實現多點參數監控。如果在不同設備上多搭建幾個平臺,可以把這些不同設備的參數匯集一起,則可實現自己醫院設備的物聯網平臺,實時監測各設備參數,從而對設備故障進行預判和為維修提供歷史記錄。
TP273.5
A
10.15913/j.cnki.kjycx.2017.21.057
2095-6835(2017)21-0057-03
〔編輯:張思楠〕