肖晨陽
摘要:設(shè)計(jì)一種經(jīng)過簡單的硬件改造,通過樹莓派硬件遠(yuǎn)程控制多臺(tái)計(jì)算機(jī)的開關(guān)機(jī)的方案,從硬件設(shè)計(jì)、軟件服務(wù)端設(shè)計(jì)、云服務(wù)器中轉(zhuǎn)信息三個(gè)方面介紹了設(shè)計(jì)方案。方案實(shí)施表明,方案能夠完成設(shè)計(jì)目標(biāo)并具有很好的穩(wěn)定性。
關(guān)鍵詞:樹莓派;軟件服務(wù)端設(shè)計(jì)
中圖分類號:TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號:1009-3044(2020)29-0225-02
筆者在承擔(dān)病毒三維重構(gòu)的并行算法研究的過程,團(tuán)隊(duì)搭建了一個(gè)小型的計(jì)算機(jī)集群,通過計(jì)算機(jī)集群來進(jìn)行病毒三維重構(gòu)的運(yùn)算。在實(shí)踐過程中,遇到以下情況:有時(shí)候人員出差在外、外出會(huì)議、回家后,某臺(tái)計(jì)算機(jī)出現(xiàn)了故障;另外有時(shí)候會(huì)出現(xiàn)某臺(tái)計(jì)算機(jī)需要開機(jī)等情況,而人員恰恰不在實(shí)驗(yàn)室,導(dǎo)致程序運(yùn)行中斷,往往需要返回實(shí)驗(yàn)室,進(jìn)行開機(jī)或者關(guān)機(jī)等處理,費(fèi)時(shí)費(fèi)力,影響工作?;谶@種現(xiàn)狀,我們設(shè)計(jì)一種遠(yuǎn)程計(jì)算機(jī)開關(guān)機(jī)的方法來解決此問題。
1 硬件設(shè)計(jì)
購置ARM硬件樹莓派計(jì)算機(jī),通過和RJ45網(wǎng)線和計(jì)算機(jī)集群在同一局域網(wǎng),并使之保持互聯(lián)網(wǎng)連接。
樹莓派計(jì)算機(jī),是一種基于ARM的嵌入式硬件平臺(tái),體積小,只有一個(gè)通用的信用卡大小,有4G的存儲(chǔ)器,能夠安裝Linux操作系統(tǒng)。
樹莓派計(jì)算機(jī)除了有以太網(wǎng)口和常見的USB接口外,額外提供了一組40針的GPIO接口。我們利用GPIO口的輸出控制被控計(jì)算機(jī)的電源開關(guān)鍵。從而實(shí)現(xiàn)遠(yuǎn)程控制開關(guān)機(jī)的目的。
由于樹莓派提供了多個(gè)GPIO口,如圖1所示,我們可以用一臺(tái)樹莓派控制多臺(tái)計(jì)算機(jī)的開關(guān)鍵。
1.1 樹莓派GPIO介紹
在樹莓派3上GPIO接口由40針引腳組成,有些針腳有特殊的用途,如2、4引腳固定輸出5V電壓,1、17引腳輸出3.3V電壓,6、9、20、39等為地線。其他引腳大多數(shù)是可以編程的引腳,一般用GIPX的編號來表示。每個(gè)針腳用杜邦線(導(dǎo)線)和外部相連。
1.2 樹莓派的操作系統(tǒng)
樹莓派的操作系統(tǒng)采用經(jīng)過定制的Linux系統(tǒng),具有豐富的網(wǎng)絡(luò)功能,能夠運(yùn)行我們設(shè)計(jì)的遠(yuǎn)程控制軟件。
2 軟件設(shè)計(jì)
2.1 程序控制GPIO
樹莓派Linux已經(jīng)對GPIO進(jìn)行了驅(qū)動(dòng)級支持,并提供了應(yīng)用層接口命令GPIO。
用gpio readall獲取個(gè)GPIO接口的編號及其定義。
通過Linux內(nèi)置的wiringPi庫,可以用C語言編程控制GPIO接口。
使用wiringPi函數(shù)庫中的digitaIWrite函數(shù)對指定引腳輸出高電平或者電平,從而實(shí)現(xiàn)計(jì)算機(jī)開關(guān)鍵閉合和打開。
2.2 遠(yuǎn)程控制樹莓派。
由于被控計(jì)算機(jī)在內(nèi)網(wǎng),無法通過公網(wǎng)進(jìn)行直接訪問,因此我們購買了一個(gè)云服務(wù)器作為控制信息的中轉(zhuǎn),實(shí)現(xiàn)間接訪問。樹莓派計(jì)算機(jī)通過客戶端連接,并登記注冊到公網(wǎng)云服務(wù)器,保持網(wǎng)絡(luò)連接。
當(dāng)我們需要對內(nèi)網(wǎng)內(nèi)的計(jì)算機(jī)進(jìn)行關(guān)機(jī)或者開機(jī)時(shí),外網(wǎng)客戶端連接云服務(wù)器,向云服務(wù)器發(fā)送控制信息,服務(wù)器收到控制信息后,將控制信息轉(zhuǎn)發(fā)給樹莓派,樹莓派客戶端軟件根據(jù)控制信息通過GPIO口對被控計(jì)算機(jī)進(jìn)行開機(jī)或者關(guān)機(jī)操作。
2.3 軟件流程設(shè)計(jì)
1)內(nèi)網(wǎng)樹莓派啟動(dòng)后,Client0啟動(dòng)程序和Server建立TCP連接。端口為8018。Client0發(fā)送register請求到Server。
2)每隔5秒,發(fā)送一個(gè)心跳(hearbeat)信息,保證TCP連接不中斷。
3)當(dāng)需要控制被控機(jī)器時(shí),clientl啟動(dòng)程序和Server建立TCP連接。端口為8018,發(fā)送控制指令“boot XX”或者“shut-down XX”給Server。
4) Server收到信息后“boot XX”或者“shutdown XX”信息后將信息發(fā)送給client0。
5)Client0收到信息后,根據(jù)boot或者shutdown對應(yīng)的計(jì)算機(jī)啟動(dòng)或者關(guān)機(jī)。
根據(jù)上述流程,我們用C語言編寫了一個(gè)軟件服務(wù)端和兩個(gè)客戶端程序。
3 方案實(shí)施
本文設(shè)計(jì)的遠(yuǎn)程控制計(jì)算機(jī)方案,應(yīng)用于本實(shí)驗(yàn)室由8臺(tái)計(jì)算機(jī)組成的小型集群,經(jīng)過對計(jì)算機(jī)的簡單改裝,能夠成功實(shí)現(xiàn)遠(yuǎn)程對指定計(jì)算機(jī)進(jìn)行模擬計(jì)算機(jī)開關(guān)鍵進(jìn)行開機(jī)和關(guān)機(jī)。經(jīng)過近一年時(shí)間的運(yùn)行,運(yùn)行情況良好。
4 結(jié)論
本文采用廉價(jià)的樹莓派硬件,通過控制所帶的GPIO控制口,控制計(jì)算機(jī)的開關(guān)鍵,從而實(shí)現(xiàn)控制開機(jī)和關(guān)機(jī)功能,而遠(yuǎn)程控制的功能實(shí)現(xiàn),則通過一個(gè)公網(wǎng)云服務(wù)器,作為控制信息的中轉(zhuǎn),實(shí)現(xiàn)通過互聯(lián)網(wǎng)發(fā)送控制信息到樹莓派硬件,從而解決了異常情況下,需要對特定計(jì)算機(jī)進(jìn)行啟動(dòng)和關(guān)機(jī)的問題。在此基礎(chǔ)上,充分利用樹莓派提供的多個(gè)GPIO口,實(shí)現(xiàn)一臺(tái)樹莓派控制多臺(tái)計(jì)算機(jī)的開關(guān)機(jī)的操作。本方案結(jié)構(gòu)簡單,對計(jì)算機(jī)改動(dòng)極少,完全不影響原有功能,具有方便使用等特點(diǎn)。
參考文獻(xiàn):
[1]李文勝.基于樹莓派的嵌入式Linux開發(fā)教學(xué)探索[J].電子技術(shù)與軟件工程,2014(9):219-220.
[2]常英亮,基于嵌入式Linux的物聯(lián)網(wǎng)網(wǎng)關(guān)研究與實(shí)王見[D].北京:北京交通大學(xué),2014.
[3]程學(xué)斌,艾紅.基于嵌入式Linux的土壤溫濕度監(jiān)測系統(tǒng)的設(shè)計(jì)[J].北京信息科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2015,30(5):48-51.
[4]張彥春.面向通信行業(yè)的嵌入式軟件開發(fā)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].合肥:合肥工業(yè)大學(xué),2006.
【通聯(lián)編輯:唐一東】