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