詹志芳
(福建省湄洲灣職業技術學校,福建 莆田 351100)
為更好落實《關于在院校實施“學歷證書+若干職業技能等級證書”制度試點方案》[1],促進證書試點與專業建設、證書試點與課程建設、證書試點與教師團隊建設結合,將“1”和“X”相融合,提升職業教育的教學質量與就業水平,計算機機房建設成為“1+X”試點建設中必不可少的一個環節。大部分學校都意識到機房建設的重要性,紛紛建設了獨立的計算機機房。
目前,計算機課程是大部分專業的必修基礎課程。計算機作為較為普及的電器產品,對于運行環境的要求相對較為寬松。然而集中機房則不同,數十臺甚至上百臺計算機位于同一個房間內,所產生的熱量是驚人的。這種場景下,需要對機房內的環境進行監控和記錄,從而確保機房內溫度保持在合理范圍。
市面上對環境進行監控的系統有很多,但是大部分價格較高,并且作為成品系統,擴展性受到一定限制,也很難和其他系統,如供電監測、防盜監控等進行整合。
樹莓派(Raspberry-pi)幾乎是目前世界上體積最小的完備計算機系統,由英國慈善組織樹莓派基金研發,并且向全世界推廣,2012年首次問世之后,樹莓派得到了瘋狂追捧。樹莓派價格便宜,僅有銀行卡大,同時具備功能充足的自定義信號輸入端口。在樹莓派上可以運行Linux甚至Windows操作系統,基于樹莓派的應用層出不窮,樹莓派獨立運行時可以完成一臺普通計算機的大部分功能,但是其最大優勢在于可以外接各種設備[2-3]。
溫度監控對于計算機機房的建設和管理非常重要,但是配置專用的溫控設施成本較高。對此,在樹莓派基礎上研發了溫度監控系統,可以實現廉價且穩健的監控。本文從架構和實現兩方面對該系統進行介紹,并且展示了實際測試應用的場景。
本文研發的系統采用最新發布的樹莓派4B作為開發平臺,基于Linux系統。溫度傳感器選用DS18B20數字溫度傳感器[4],通過樹莓派的GPIO接口連接,使用Python 3語言開發服務程序,基于Flask架構提供Web服務。
樹莓派4B(Raspberry Pi 4B)是2019年發布的樹莓派版本,該版本的性能與樹莓派 3B+版本相比,在處理器速度、多媒體、內存等方面都有顯著提升。樹莓派4B擁有與入門級 x86 PC 系統相媲美的桌面性能,該版本配置有ARM Cortex-A72 1.5GHz(四核)CPU,內存可選1/2/4GB,USB2.0和3.0端口各2個,micro HDMI接口2個,網絡支持方面同時具備802.11 b/g/n無線網卡和全吞吐量千兆以太網卡。最關鍵的是延續了傳統的GPIO引腳,這是樹莓派支持多種擴展設備的基礎,也是樹莓派成為大量嵌入式應用開發平臺的一個重要原因[2-3]。

圖1 樹莓派4B板載

圖2 樹莓派4B的GPIO引腳說明
樹莓派4B支持多種操作系統,本系統研發選用Linux操作系統,因為Linux系統是開源系統,并且穩定性好、運行時損耗小,各類設備驅動也較為全面。
Python語言誕生于1989年,在編程語言中屬于新生代語言,目前Python語言位于編程語言排行榜前五。Python語言具有語法簡單、易學易用的特點,并且作為膠水語言,能夠很好地和其他語言進行交叉編程。此外,Python語言擴充性好,具有多種擴展庫,這使得它在各種領域都得到了廣泛應用。
Flask是一個Python開發的輕量級Web應用框架,耗能小、結構簡單,便于進行各種基于Python的網站開發。其WSGI工具箱采用Werkzeug,模板引擎則使用 Jinja2 。Flask被稱為核心框架,因為它并未使用各類附加插件,也沒有指定數據庫、窗體驗證等插件,全部需要應用人員自行開發,十分靈活[5]。
DS18B20數字溫度傳感器具有體積小、抗干擾能力強、精度高、耗能低等特點,提供9~12-Bit攝氏溫度測量精度和一個用戶可編程的非易失性且具有過溫和低溫觸發報警的報警功能,測溫范圍廣,能完成-55℃~125℃,誤差約1℃,并且在溫度傳感器-10℃~85℃之外時,還具有±0.5℃的精度。DS18B20采用一線通信接口,即通過一條線路即可實現控制機和其之間的通信,直接由數據線供電而不需要外部電源供電,很靈活。目前普遍應用于工業、民用多種場合[4]。

圖3 DS18B20數字溫度傳感器
由于DS18B20是單線通信,因此本系統將其vcc、gnd分別連接到樹莓派的vcc和gnd,而DS連接到GPIO 4端口即可。
連接好硬件設施后,通過ssh連接上樹莓派,在終端中通過以下命令進行配置:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
此時應能夠看到對應設備。如果ls看不到顯示,通過以下命令進行配置:打開/boot/config.txt,并在該文檔的最后一行手動添加:dtoverlay=w1-gpio-pullup,gpiopin=4,然后執行sudo reboot即可。
由于Python語言是模塊化語言,為了能夠讓不同程序都能讀取DS18B20的測溫數據,本系統單獨為其開發了讀取模塊,文件命名為ds18b20.py。該模塊主要工作原理為讀取設備路徑中生成的數據文件,判定文件格式是否正確,即傳感器是否正常工作。并從中分離出代表溫度的字符串,轉換成浮點數返回。如果未能正確讀取,則返回None。

圖4 ds18b20.py文件代碼
通過調用read_temp函數,即可獲取溫度數據。
考慮到前端可以是不同類型的應用,例如專門的監控程序,或者是實時刷新的監控網頁等,我們采用Web-Service方式提供數據。在Flask框架內,只需要編寫簡單的程序就可以將采集到的溫度數據作為json返回給調用者。

圖5 溫度數據返回代碼
運行該程序后,通過樹莓派對應ip的8080端口即可獲取表示溫度的json字符串。

圖6 通過瀏覽器直接訪問本服務,得到的運行結果
除了采用瀏覽器直接訪問Web-Service服務,我們也編制了簡單的網頁進行調用測試,實時顯示溫度。當溫度超出安全范圍時(暫定為-10℃~40℃),將給出警告。代碼詳見圖7。

圖7 溫度顯示網頁代碼
點擊網頁上的“讀取”按鈕,將調用后端服務,讀取json格式的溫度信息,顯示在網頁上。網頁的顯示界面如圖8所示,其中上中下三圖分別展示了正常溫度、高溫警告、低溫警告的場景。

圖8 溫度顯示網頁
為了提升監控效率,本系統設計了不同機房的專用頁面,顯示了機房中的布局以及各溫控點的位置示意(見圖9)。通過各機房的溫控頁面隨時查看實時溫度情況,頁面會定時刷新,保持最新的溫度顯示。

圖9 機房溫度監控實際頁面
計算機機房作為教學設施,其環境控制對設備安全、數據安全等至關重要,直接關系到學?!?+X”職業技能等級證書考試能否順利進行。本文結合工作實際基于樹莓派和Flask技術,從系統功能設計、硬件設計、軟件設計等方面詳細介紹了一個實時溫度采集系統的設計過程,設計了基礎功能,提供了一種價廉物美的實現方案,機房溫度監控系統部署實施后,可以保證機房的穩定運行。該系統具備可擴展性,未來可以接入更多溫控節點,并且可以和其它環境檢測模塊組合,實現全方位的保障。