詹志芳
(福建省湄洲灣職業(yè)技術(shù)學(xué)校,福建 莆田 351100)
為更好落實(shí)《關(guān)于在院校實(shí)施“學(xué)歷證書+若干職業(yè)技能等級(jí)證書”制度試點(diǎn)方案》[1],促進(jìn)證書試點(diǎn)與專業(yè)建設(shè)、證書試點(diǎn)與課程建設(shè)、證書試點(diǎn)與教師團(tuán)隊(duì)建設(shè)結(jié)合,將“1”和“X”相融合,提升職業(yè)教育的教學(xué)質(zhì)量與就業(yè)水平,計(jì)算機(jī)機(jī)房建設(shè)成為“1+X”試點(diǎn)建設(shè)中必不可少的一個(gè)環(huán)節(jié)。大部分學(xué)校都意識(shí)到機(jī)房建設(shè)的重要性,紛紛建設(shè)了獨(dú)立的計(jì)算機(jī)機(jī)房。
目前,計(jì)算機(jī)課程是大部分專業(yè)的必修基礎(chǔ)課程。計(jì)算機(jī)作為較為普及的電器產(chǎn)品,對(duì)于運(yùn)行環(huán)境的要求相對(duì)較為寬松。然而集中機(jī)房則不同,數(shù)十臺(tái)甚至上百臺(tái)計(jì)算機(jī)位于同一個(gè)房間內(nèi),所產(chǎn)生的熱量是驚人的。這種場(chǎng)景下,需要對(duì)機(jī)房?jī)?nèi)的環(huán)境進(jìn)行監(jiān)控和記錄,從而確保機(jī)房?jī)?nèi)溫度保持在合理范圍。
市面上對(duì)環(huán)境進(jìn)行監(jiān)控的系統(tǒng)有很多,但是大部分價(jià)格較高,并且作為成品系統(tǒng),擴(kuò)展性受到一定限制,也很難和其他系統(tǒng),如供電監(jiān)測(cè)、防盜監(jiān)控等進(jìn)行整合。
樹莓派(Raspberry-pi)幾乎是目前世界上體積最小的完備計(jì)算機(jī)系統(tǒng),由英國(guó)慈善組織樹莓派基金研發(fā),并且向全世界推廣,2012年首次問(wèn)世之后,樹莓派得到了瘋狂追捧。樹莓派價(jià)格便宜,僅有銀行卡大,同時(shí)具備功能充足的自定義信號(hào)輸入端口。在樹莓派上可以運(yùn)行Linux甚至Windows操作系統(tǒng),基于樹莓派的應(yīng)用層出不窮,樹莓派獨(dú)立運(yùn)行時(shí)可以完成一臺(tái)普通計(jì)算機(jī)的大部分功能,但是其最大優(yōu)勢(shì)在于可以外接各種設(shè)備[2-3]。
溫度監(jiān)控對(duì)于計(jì)算機(jī)機(jī)房的建設(shè)和管理非常重要,但是配置專用的溫控設(shè)施成本較高。對(duì)此,在樹莓派基礎(chǔ)上研發(fā)了溫度監(jiān)控系統(tǒng),可以實(shí)現(xiàn)廉價(jià)且穩(wěn)健的監(jiān)控。本文從架構(gòu)和實(shí)現(xiàn)兩方面對(duì)該系統(tǒng)進(jìn)行介紹,并且展示了實(shí)際測(cè)試應(yīng)用的場(chǎng)景。
本文研發(fā)的系統(tǒng)采用最新發(fā)布的樹莓派4B作為開發(fā)平臺(tái),基于Linux系統(tǒng)。溫度傳感器選用DS18B20數(shù)字溫度傳感器[4],通過(guò)樹莓派的GPIO接口連接,使用Python 3語(yǔ)言開發(fā)服務(wù)程序,基于Flask架構(gòu)提供Web服務(wù)。
樹莓派4B(Raspberry Pi 4B)是2019年發(fā)布的樹莓派版本,該版本的性能與樹莓派 3B+版本相比,在處理器速度、多媒體、內(nèi)存等方面都有顯著提升。樹莓派4B擁有與入門級(jí) x86 PC 系統(tǒng)相媲美的桌面性能,該版本配置有ARM Cortex-A72 1.5GHz(四核)CPU,內(nèi)存可選1/2/4GB,USB2.0和3.0端口各2個(gè),micro HDMI接口2個(gè),網(wǎng)絡(luò)支持方面同時(shí)具備802.11 b/g/n無(wú)線網(wǎng)卡和全吞吐量千兆以太網(wǎng)卡。最關(guān)鍵的是延續(xù)了傳統(tǒng)的GPIO引腳,這是樹莓派支持多種擴(kuò)展設(shè)備的基礎(chǔ),也是樹莓派成為大量嵌入式應(yīng)用開發(fā)平臺(tái)的一個(gè)重要原因[2-3]。
圖1 樹莓派4B板載
圖2 樹莓派4B的GPIO引腳說(shuō)明
樹莓派4B支持多種操作系統(tǒng),本系統(tǒng)研發(fā)選用Linux操作系統(tǒng),因?yàn)長(zhǎng)inux系統(tǒng)是開源系統(tǒng),并且穩(wěn)定性好、運(yùn)行時(shí)損耗小,各類設(shè)備驅(qū)動(dòng)也較為全面。
Python語(yǔ)言誕生于1989年,在編程語(yǔ)言中屬于新生代語(yǔ)言,目前Python語(yǔ)言位于編程語(yǔ)言排行榜前五。Python語(yǔ)言具有語(yǔ)法簡(jiǎn)單、易學(xué)易用的特點(diǎn),并且作為膠水語(yǔ)言,能夠很好地和其他語(yǔ)言進(jìn)行交叉編程。此外,Python語(yǔ)言擴(kuò)充性好,具有多種擴(kuò)展庫(kù),這使得它在各種領(lǐng)域都得到了廣泛應(yīng)用。
Flask是一個(gè)Python開發(fā)的輕量級(jí)Web應(yīng)用框架,耗能小、結(jié)構(gòu)簡(jiǎn)單,便于進(jìn)行各種基于Python的網(wǎng)站開發(fā)。其WSGI工具箱采用Werkzeug,模板引擎則使用 Jinja2 。Flask被稱為核心框架,因?yàn)樗⑽词褂酶黝惛郊硬寮矝](méi)有指定數(shù)據(jù)庫(kù)、窗體驗(yàn)證等插件,全部需要應(yīng)用人員自行開發(fā),十分靈活[5]。
DS18B20數(shù)字溫度傳感器具有體積小、抗干擾能力強(qiáng)、精度高、耗能低等特點(diǎn),提供9~12-Bit攝氏溫度測(cè)量精度和一個(gè)用戶可編程的非易失性且具有過(guò)溫和低溫觸發(fā)報(bào)警的報(bào)警功能,測(cè)溫范圍廣,能完成-55℃~125℃,誤差約1℃,并且在溫度傳感器-10℃~85℃之外時(shí),還具有±0.5℃的精度。DS18B20采用一線通信接口,即通過(guò)一條線路即可實(shí)現(xiàn)控制機(jī)和其之間的通信,直接由數(shù)據(jù)線供電而不需要外部電源供電,很靈活。目前普遍應(yīng)用于工業(yè)、民用多種場(chǎng)合[4]。
圖3 DS18B20數(shù)字溫度傳感器
由于DS18B20是單線通信,因此本系統(tǒng)將其vcc、gnd分別連接到樹莓派的vcc和gnd,而DS連接到GPIO 4端口即可。
連接好硬件設(shè)施后,通過(guò)ssh連接上樹莓派,在終端中通過(guò)以下命令進(jìn)行配置:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
此時(shí)應(yīng)能夠看到對(duì)應(yīng)設(shè)備。如果ls看不到顯示,通過(guò)以下命令進(jìn)行配置:打開/boot/config.txt,并在該文檔的最后一行手動(dòng)添加:dtoverlay=w1-gpio-pullup,gpiopin=4,然后執(zhí)行sudo reboot即可。
由于Python語(yǔ)言是模塊化語(yǔ)言,為了能夠讓不同程序都能讀取DS18B20的測(cè)溫?cái)?shù)據(jù),本系統(tǒng)單獨(dú)為其開發(fā)了讀取模塊,文件命名為ds18b20.py。該模塊主要工作原理為讀取設(shè)備路徑中生成的數(shù)據(jù)文件,判定文件格式是否正確,即傳感器是否正常工作。并從中分離出代表溫度的字符串,轉(zhuǎn)換成浮點(diǎn)數(shù)返回。如果未能正確讀取,則返回None。
圖4 ds18b20.py文件代碼
通過(guò)調(diào)用read_temp函數(shù),即可獲取溫度數(shù)據(jù)。
考慮到前端可以是不同類型的應(yīng)用,例如專門的監(jiān)控程序,或者是實(shí)時(shí)刷新的監(jiān)控網(wǎng)頁(yè)等,我們采用Web-Service方式提供數(shù)據(jù)。在Flask框架內(nèi),只需要編寫簡(jiǎn)單的程序就可以將采集到的溫度數(shù)據(jù)作為json返回給調(diào)用者。
圖5 溫度數(shù)據(jù)返回代碼
運(yùn)行該程序后,通過(guò)樹莓派對(duì)應(yīng)ip的8080端口即可獲取表示溫度的json字符串。
圖6 通過(guò)瀏覽器直接訪問(wèn)本服務(wù),得到的運(yùn)行結(jié)果
除了采用瀏覽器直接訪問(wèn)Web-Service服務(wù),我們也編制了簡(jiǎn)單的網(wǎng)頁(yè)進(jìn)行調(diào)用測(cè)試,實(shí)時(shí)顯示溫度。當(dāng)溫度超出安全范圍時(shí)(暫定為-10℃~40℃),將給出警告。代碼詳見圖7。
圖7 溫度顯示網(wǎng)頁(yè)代碼
點(diǎn)擊網(wǎng)頁(yè)上的“讀取”按鈕,將調(diào)用后端服務(wù),讀取json格式的溫度信息,顯示在網(wǎng)頁(yè)上。網(wǎng)頁(yè)的顯示界面如圖8所示,其中上中下三圖分別展示了正常溫度、高溫警告、低溫警告的場(chǎng)景。
圖8 溫度顯示網(wǎng)頁(yè)
為了提升監(jiān)控效率,本系統(tǒng)設(shè)計(jì)了不同機(jī)房的專用頁(yè)面,顯示了機(jī)房中的布局以及各溫控點(diǎn)的位置示意(見圖9)。通過(guò)各機(jī)房的溫控頁(yè)面隨時(shí)查看實(shí)時(shí)溫度情況,頁(yè)面會(huì)定時(shí)刷新,保持最新的溫度顯示。
圖9 機(jī)房溫度監(jiān)控實(shí)際頁(yè)面
計(jì)算機(jī)機(jī)房作為教學(xué)設(shè)施,其環(huán)境控制對(duì)設(shè)備安全、數(shù)據(jù)安全等至關(guān)重要,直接關(guān)系到學(xué)?!?+X”職業(yè)技能等級(jí)證書考試能否順利進(jìn)行。本文結(jié)合工作實(shí)際基于樹莓派和Flask技術(shù),從系統(tǒng)功能設(shè)計(jì)、硬件設(shè)計(jì)、軟件設(shè)計(jì)等方面詳細(xì)介紹了一個(gè)實(shí)時(shí)溫度采集系統(tǒng)的設(shè)計(jì)過(guò)程,設(shè)計(jì)了基礎(chǔ)功能,提供了一種價(jià)廉物美的實(shí)現(xiàn)方案,機(jī)房溫度監(jiān)控系統(tǒng)部署實(shí)施后,可以保證機(jī)房的穩(wěn)定運(yùn)行。該系統(tǒng)具備可擴(kuò)展性,未來(lái)可以接入更多溫控節(jié)點(diǎn),并且可以和其它環(huán)境檢測(cè)模塊組合,實(shí)現(xiàn)全方位的保障。