管進(jìn)兵,陳 燈
(武漢工程科技學(xué)院 湖北 武漢 430200)
隨著物聯(lián)網(wǎng)技術(shù)在各行業(yè)的快速推廣和普及,當(dāng)前各工科類高校普遍開設(shè)了物聯(lián)網(wǎng)及相關(guān)專業(yè),為我國(guó)物聯(lián)網(wǎng)行業(yè)培養(yǎng)高素質(zhì)的技術(shù)研發(fā)人員。但物聯(lián)網(wǎng)作為實(shí)踐性極強(qiáng)的綜合型技術(shù)領(lǐng)域,需要在教學(xué)過(guò)程中融入大量的實(shí)訓(xùn)實(shí)驗(yàn)課程來(lái)強(qiáng)化學(xué)生的知識(shí)水平與技術(shù)積累,以提高學(xué)生對(duì)物聯(lián)網(wǎng)技術(shù)體系的充分理解與掌握。而當(dāng)前在物聯(lián)網(wǎng)實(shí)訓(xùn)課程建設(shè)工作中,各高校普遍采用第三方企業(yè)的課程實(shí)訓(xùn)沙盤平臺(tái)來(lái)完成學(xué)生實(shí)訓(xùn)實(shí)驗(yàn)教學(xué)任務(wù),取得了良好的教學(xué)效果,但第三方平臺(tái)在采購(gòu)與使用過(guò)程中,同時(shí)也普遍存在著采購(gòu)成本高、設(shè)備兼容性差、運(yùn)行維護(hù)成本高且缺乏擴(kuò)展性的問(wèn)題[1-2]。
當(dāng)前,以Raspberry Pi為代表的微型終端機(jī)配合Python編程技術(shù)在物聯(lián)網(wǎng)領(lǐng)域中被廣泛應(yīng)用,其簡(jiǎn)單的架構(gòu)、低廉的價(jià)格、高兼容性與可靠的性能在小規(guī)模物聯(lián)網(wǎng)系統(tǒng)的開發(fā)與運(yùn)行方面有著優(yōu)異的表現(xiàn)。本文針對(duì)當(dāng)前物聯(lián)網(wǎng)專業(yè)實(shí)訓(xùn)教學(xué)系統(tǒng)建設(shè)中存在的問(wèn)題,以微型終端機(jī)技術(shù)為核心配合網(wǎng)絡(luò)服務(wù)器與網(wǎng)絡(luò)繼電器等多項(xiàng)技術(shù),提出了一套低成本、高兼容性且架構(gòu)簡(jiǎn)單易于擴(kuò)展的物聯(lián)網(wǎng)實(shí)訓(xùn)沙盤系統(tǒng)原型方案。系統(tǒng)設(shè)計(jì)以提供高擴(kuò)展性為核心展開,在不改變?cè)泻诵脑O(shè)備與軟件框架的基礎(chǔ)上,僅通過(guò)部分調(diào)整配置即可靈活擴(kuò)展功能、模擬新的物聯(lián)網(wǎng)應(yīng)用場(chǎng)景,大幅降低物聯(lián)網(wǎng)實(shí)訓(xùn)課程的建設(shè)與運(yùn)行成本,使物聯(lián)網(wǎng)專業(yè)課程內(nèi)容能夠貼近行業(yè)發(fā)展的最新成果,進(jìn)而有效提升教學(xué)質(zhì)量和效率。
本文所提出的物聯(lián)網(wǎng)實(shí)訓(xùn)沙盤系統(tǒng)方案中整合了Raspberry Pi微型終端機(jī)技術(shù)、Python程序開發(fā)技術(shù)、網(wǎng)絡(luò)服務(wù)器技術(shù)、微型傳感器技術(shù)和網(wǎng)絡(luò)繼電器技術(shù)。
微型終端機(jī)技術(shù)經(jīng)過(guò)了長(zhǎng)期發(fā)展已經(jīng)趨于成熟和完善,當(dāng)前綜合性能與性價(jià)比最高的產(chǎn)品是Raspberry Pi。慈善基金會(huì)于2020年發(fā)布了Raspberry Pi 4BRev1.2版終端機(jī)[3],該設(shè)備體積為8.5 cm×5.6 cm×2.1 cm重量?jī)H45 g。在硬件方面Raspberry Pi提供了通用型輸入輸出(General-purpose input/output,GPIO)接口與千兆以太網(wǎng)接口能夠連接各類傳感器并接入局域網(wǎng)絡(luò),在軟件方面內(nèi)置Linux操作系統(tǒng)且支持Python編程。在教學(xué)用物聯(lián)網(wǎng)沙盤系統(tǒng)中使用Raspberry Pi終端機(jī)作為指令分發(fā)與數(shù)據(jù)采集的控制核心,能夠充分發(fā)揮其高擴(kuò)展性、低能耗、低故障率與低成本的優(yōu)勢(shì),為長(zhǎng)期可靠運(yùn)行以及根據(jù)教學(xué)需要靈活調(diào)整、重構(gòu)沙盤的模擬應(yīng)用場(chǎng)景提供有效的技術(shù)支撐[4]。
Python作為開源的跨平臺(tái)編程技術(shù),其開發(fā)的軟件程序能夠在Raspberry Pi終端機(jī)中內(nèi)置的Linux系統(tǒng)中流暢穩(wěn)定運(yùn)行[5]。通過(guò)Python強(qiáng)大的網(wǎng)絡(luò)編程功能與多種開源插件庫(kù),可以簡(jiǎn)潔高效地完成從物聯(lián)網(wǎng)沙盤系統(tǒng)的中心服務(wù)器下載數(shù)據(jù)、各類硬件控制指令的分發(fā)以及多種傳感器數(shù)據(jù)的采集與上傳功能的實(shí)現(xiàn)。
物聯(lián)網(wǎng)沙盤的運(yùn)行與管理以中心化的模式展開,網(wǎng)絡(luò)服務(wù)器作為整個(gè)系統(tǒng)的管理中心負(fù)責(zé)解析、存儲(chǔ)、下發(fā)數(shù)據(jù)并接收與定向下發(fā)控制指令,網(wǎng)絡(luò)服務(wù)器以提供Web Service接口的方式可以有效地屏蔽硬件接口差異,接入局域網(wǎng)絡(luò)中的微型終端機(jī)設(shè)備只需要通過(guò)規(guī)范的數(shù)據(jù)訪問(wèn)接口即可完成數(shù)據(jù)、指令的獲取及上傳操作。選用Web Service接口進(jìn)行數(shù)據(jù)通信的方式,在降低對(duì)服務(wù)器硬件配置要求的同時(shí),還增強(qiáng)了沙盤系統(tǒng)的硬件兼容性,為后續(xù)的系統(tǒng)調(diào)整與功能擴(kuò)展提供了良好的基礎(chǔ)環(huán)境。
實(shí)訓(xùn)教學(xué)用途的物聯(lián)網(wǎng)沙盤,需要面向?qū)W生直觀地展示數(shù)據(jù)的采集與設(shè)備控制過(guò)程,以加深學(xué)生對(duì)物聯(lián)網(wǎng)技術(shù)的理解與系統(tǒng)整個(gè)開發(fā)與運(yùn)行流程的掌握。其中,數(shù)據(jù)采集過(guò)程基于微型傳感器技術(shù)實(shí)現(xiàn),Raspberry Pi終端機(jī)所集成的GPIO接口能夠連接多種類型的微型傳感器設(shè)備,完成對(duì)氣體、光照、紅外線、溫濕度等多種環(huán)境數(shù)據(jù)的實(shí)時(shí)采集功能。沙盤中的各種模擬設(shè)備(例如光照、通風(fēng)、軌道及門窗等)的啟停控制,由網(wǎng)絡(luò)繼電器中的各個(gè)電路端口負(fù)責(zé)實(shí)現(xiàn)。網(wǎng)絡(luò)繼電器基于傳輸控制協(xié)議(Transmission Control Protocol,TCP)數(shù)據(jù)包的操作指令集,為Raspberry Pi終端機(jī)提供了簡(jiǎn)潔化的電路狀態(tài)控制模式,同時(shí)完全屏蔽了硬件與軟件的版本及工作原理差異,為系統(tǒng)架構(gòu)的靈活性和強(qiáng)大的可擴(kuò)展性提供了堅(jiān)實(shí)基礎(chǔ)[6]。
本文所提出的物聯(lián)網(wǎng)沙盤系統(tǒng)原型見圖1,共由4個(gè)模塊構(gòu)成,分別是中心服務(wù)器、沙盤控制模塊、數(shù)據(jù)采集模塊、設(shè)備控制模塊,由中心服務(wù)器通過(guò)千兆局域網(wǎng)向其他3個(gè)模塊提供相應(yīng)的訪問(wèn)與控制接口,完成沙盤系統(tǒng)運(yùn)行管理、傳感器數(shù)據(jù)的采集與處理以及模擬設(shè)備的遠(yuǎn)程控制指令發(fā)送功能。
中心服務(wù)器作為整個(gè)物聯(lián)網(wǎng)沙盤系統(tǒng)的控制中樞,由Web Service接口和系統(tǒng)數(shù)據(jù)庫(kù)兩部分構(gòu)成。Web Service接口面向沙盤控制模塊提供各類管理參數(shù)的上傳、傳感器數(shù)據(jù)的匯總顯示以及沙盤中各類模擬設(shè)備控制指令的提交服務(wù),面向數(shù)據(jù)采集終端提供系統(tǒng)配置參數(shù)的下載與傳感器數(shù)據(jù)的實(shí)時(shí)上傳與處理服務(wù),面向設(shè)備控制模塊提供控制指令的獲取服務(wù)。而系統(tǒng)數(shù)據(jù)庫(kù)則負(fù)責(zé)存儲(chǔ)所有的管理參數(shù)、操作指令以及傳感器的數(shù)據(jù)等信息。各模塊所提交的所有信息需要先保存至數(shù)據(jù)庫(kù)中后,再根據(jù)需要轉(zhuǎn)發(fā)至其他模塊做進(jìn)一步處理。同時(shí),為使系統(tǒng)的控制邏輯更清晰,將Web Service接口劃分為相互隔離的兩個(gè)子模塊,分別面向沙盤控制模塊的管理業(yè)接口和面向數(shù)據(jù)采集與設(shè)備控制模塊的信息處理業(yè)務(wù)接口。
沙盤控制模塊主要面向參與實(shí)訓(xùn)的學(xué)生提供控制整個(gè)沙盤系統(tǒng)運(yùn)行的管理接口,除包含基本的控制演示程序外,還設(shè)計(jì)了面向不同開發(fā)語(yǔ)言的編程接口規(guī)范說(shuō)明,方便在教師與學(xué)生物聯(lián)網(wǎng)實(shí)訓(xùn)教學(xué)過(guò)程中,根據(jù)不同應(yīng)用場(chǎng)景有針對(duì)性地選用不同的編程語(yǔ)言和軟件開發(fā)框架設(shè)計(jì)控制端程序,并可靠地完成對(duì)整個(gè)沙盤系統(tǒng)的控制,在編程實(shí)訓(xùn)方面保證系統(tǒng)擁有足夠的靈活性與可擴(kuò)展性。
數(shù)據(jù)采集模塊主要負(fù)責(zé)根據(jù)中心服務(wù)器下發(fā)的工作參數(shù)并將傳感器獲取到的各類環(huán)境數(shù)據(jù)上傳至中心服務(wù)器中存儲(chǔ)并等待進(jìn)一步處理。首先由Raspberry Pi微型終端機(jī)從服務(wù)器端獲取控制參數(shù)后,按照既定的方案從連接在GPIO接口上的各個(gè)微型傳感器獲取相應(yīng)的電子信號(hào),在本地將信號(hào)轉(zhuǎn)換為可讀取的數(shù)據(jù)格式后向服務(wù)器發(fā)送數(shù)據(jù)[7]。
設(shè)備控制模塊負(fù)責(zé)根據(jù)中心服務(wù)器下方的操作指令控制沙盤系統(tǒng)中的各個(gè)模擬設(shè)備的啟停,首先由Raspberry Pi微型終端機(jī)從服務(wù)器端獲取設(shè)備操作指令后,通過(guò)局域網(wǎng)絡(luò)向網(wǎng)絡(luò)繼電器設(shè)備發(fā)送控制指令,控制相應(yīng)的模擬設(shè)備啟動(dòng)電路的通路,從而間接控制模擬設(shè)備的啟動(dòng)與停止。
本文所設(shè)計(jì)的物聯(lián)網(wǎng)實(shí)訓(xùn)沙盤系統(tǒng)的中心服務(wù)器上的Web Service接口使用Java服務(wù)頁(yè)面(JavaServer Pages,JSP)編程實(shí)現(xiàn),數(shù)據(jù)采集模塊和設(shè)備控制模塊以Raspberry Pi微型終端機(jī)為平臺(tái)各項(xiàng)功能使用Python編程實(shí)現(xiàn),沙盤控制模塊的示例程序使用Android-Java編程實(shí)現(xiàn),系統(tǒng)數(shù)據(jù)庫(kù)采用My SQL 以提供低成本與穩(wěn)定可靠的數(shù)據(jù)支持。
Web Service作為一種特殊的JSP頁(yè)面,頁(yè)面本身不提供任何可視化的內(nèi)容,且與終端所采用的編輯語(yǔ)言、運(yùn)行機(jī)制無(wú)關(guān),僅面向各終端提供固定格式的數(shù)據(jù)交互接口,在接收到端終端提交的請(qǐng)求數(shù)據(jù)后,首先對(duì)內(nèi)容進(jìn)行解析,然后構(gòu)建結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language,SQL)指令語(yǔ)句,并提交至MySQL數(shù)據(jù)庫(kù)執(zhí)行并返回相關(guān)結(jié)果。關(guān)鍵代碼如下所示:
數(shù)據(jù)采集模塊的實(shí)現(xiàn)主要涉及從Raspberry Pi的GPIO接口中獲取各微型傳感器所傳回的電平信號(hào)和對(duì)信號(hào)進(jìn)行編碼與轉(zhuǎn)換功能,同時(shí)還需要完成數(shù)據(jù)上傳的功能,在實(shí)現(xiàn)過(guò)程中需要使用Python編程來(lái)完成。關(guān)鍵代碼如下所示:
設(shè)備控制模塊的實(shí)現(xiàn)則通過(guò)Python編程向指定的網(wǎng)絡(luò)繼電器設(shè)備的網(wǎng)際互連協(xié)議(Internet Protocol,IP)地址發(fā)送電路端口通斷控制指令集來(lái)完成,原理見圖2。網(wǎng)絡(luò)繼電器的每個(gè)電路接口中包含兩條電線接線器,沙盤中各模擬設(shè)備的啟動(dòng)電路被拆開后接入到電路接口中等待接通[8]。網(wǎng)絡(luò)繼電器在收到接通控制指令后,解析指令中的電路接口后并自動(dòng)連接該接口中的啟動(dòng)電路使設(shè)備立即開始運(yùn)轉(zhuǎn)。當(dāng)需要停止設(shè)備運(yùn)轉(zhuǎn)時(shí),設(shè)備控制模塊向繼電器發(fā)送終端控制指令,斷開該電路接口使設(shè)備斷電停運(yùn)。
系統(tǒng)選用的網(wǎng)絡(luò)繼電器型號(hào)為科信RS485型16路網(wǎng)絡(luò)繼電器,每臺(tái)網(wǎng)絡(luò)繼電器可同時(shí)控制16個(gè)電路為單項(xiàng)通路的模擬設(shè)備(如通風(fēng)、加熱、供水設(shè)備)或控制8個(gè)需要雙向控制通路的模擬設(shè)備(如升降機(jī)、滑動(dòng)門窗設(shè)備)。關(guān)鍵代碼如下所示:
沙盤控制模塊的各項(xiàng)功能的實(shí)現(xiàn)基礎(chǔ)是訪問(wèn)中心服務(wù)器上的Web Service接口并獲取,其核心是使用Android-Java框架中的HttpTransportSE對(duì)象向中心服務(wù)器上Web Service接口的統(tǒng)一資源定位器(Uniform Resource Locator, URL)地址發(fā)送數(shù)據(jù)并接收返回的結(jié)果數(shù)據(jù)集。
本文針對(duì)物聯(lián)實(shí)訓(xùn)課程建設(shè)中存在的問(wèn)題,以微型終端機(jī)與網(wǎng)絡(luò)繼電器為基礎(chǔ),提出了一種低成本、高擴(kuò)展性物聯(lián)網(wǎng)實(shí)訓(xùn)沙盤系統(tǒng)原型設(shè)計(jì)方案,在實(shí)現(xiàn)了對(duì)沙盤系統(tǒng)中微型傳感器的數(shù)據(jù)采集以及對(duì)模擬設(shè)備的遠(yuǎn)程控制的同時(shí),為調(diào)整沙盤系統(tǒng)結(jié)構(gòu)、搭建不同類型的模擬場(chǎng)景提供了通用數(shù)據(jù)接口與控制管理機(jī)制,降低了物聯(lián)網(wǎng)實(shí)訓(xùn)課程的建設(shè)與運(yùn)行成本。