基于嵌入式Web的遠(yuǎn)程可控電源插座
互聯(lián)網(wǎng)的迅速發(fā)展,實(shí)現(xiàn)了信息的高速傳輸和資源共享,極大地方便了人們的生活。嵌入式系統(tǒng)廣泛應(yīng)用于各種電器產(chǎn)品、智能儀表和控制設(shè)備中,它與互聯(lián)網(wǎng)的結(jié)合是一種必然的趨勢。
嵌入式系統(tǒng)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,為網(wǎng)絡(luò)遠(yuǎn)程控制的發(fā)展和完善提供了技術(shù)基礎(chǔ)。
筆者綜合運(yùn)用嵌入式系統(tǒng)和Web技術(shù),設(shè)計了一種可通過互聯(lián)網(wǎng)進(jìn)行遠(yuǎn)程控制的電源插座系統(tǒng),實(shí)現(xiàn)對家用或工業(yè)電器的遠(yuǎn)程實(shí)時控制。用戶通過網(wǎng)頁瀏覽器訪問該系統(tǒng),對各插座進(jìn)行打開或關(guān)閉的操作,實(shí)現(xiàn)對與其相連接的電器的遠(yuǎn)程控制。
1 嵌入式Web工作原理
嵌入式Web的體系結(jié)構(gòu)如圖1所示??蛻舳撕颓度胧较到y(tǒng)中Web服務(wù)器之間的通信協(xié)議采用HTTP(超文本傳輸協(xié)議)。嵌入式操作系統(tǒng)提供TCP/IP協(xié)議支持。嵌入式Web服務(wù)器提供靜態(tài)網(wǎng)頁,也可以通過CGI(Common GatewayInterface,公共網(wǎng)關(guān)接口)與后臺程序或嵌入式數(shù)據(jù)庫交互,進(jìn)行數(shù)據(jù)訪問或處理。
嵌入式Web的工作流程如圖2所示。嵌入式Web服務(wù)器的主要任務(wù)是接收客戶端請求、解析客戶端請求、響應(yīng)客戶端請求、向客戶端回送請求的結(jié)果??蛻舳伺cWeb服務(wù)器交換數(shù)據(jù)之前,首先用TCP/IP建立連接,服務(wù)器端程序建立TCP類型的Socket套接字;服務(wù)器在接收到用戶端的請求后,解析客戶請求的HTTP協(xié)議頭,分析客戶的請求,根據(jù)客戶的請求做相應(yīng)的處理并返回結(jié)果。
2 遠(yuǎn)程可控電源插座設(shè)計
文中設(shè)計采用ARM-Linux架構(gòu)。ARM處理器縣有小體積、低功耗、低成本、高性能等特點(diǎn)。嵌入式Linux操作系統(tǒng)內(nèi)核精悍,運(yùn)行所需資源少,十分適合嵌入式系統(tǒng)應(yīng)用。
2.1 系統(tǒng)硬件設(shè)計
遠(yuǎn)程可控電源插座系統(tǒng)硬件結(jié)構(gòu)如圖3所示。
嵌入式Web服務(wù)器實(shí)現(xiàn)對用戶的身份驗(yàn)證、頁面解析與交互,根據(jù)用戶請求產(chǎn)生對電源插座的控制信號。存儲器存放系統(tǒng)的程序和頁面文件。
以太網(wǎng)接口模塊可選用RTL8019AS等以太網(wǎng)接口芯片,實(shí)現(xiàn)網(wǎng)絡(luò)通信。
控制模塊實(shí)現(xiàn)對連接在市電AC220 V的插座各開關(guān)的“打開、關(guān)閉”操作,進(jìn)而控制相連接的電器的工作。由于嵌入式系統(tǒng)使用的DC3.3V電源,且電流較小,控制模塊須實(shí)現(xiàn)弱電對強(qiáng)電的控制??紤]到響應(yīng)速度、電路功耗、使用壽命等因素,控制模塊設(shè)計選用光電耦合器和可控硅??刂颇K可控制電源插座的4路開關(guān),其中一路的電路原理如圖4所示。
光電耦合器選用MOC3062,它集光電隔離、過零檢測和過零觸發(fā)為一體,可以自動檢測交流電壓的過零信息??煽毓柽x用Q4010NH5,是大功率開關(guān)型半導(dǎo)體器件,具有耐壓高、容量大、體積小、無噪音等優(yōu)點(diǎn)。
ARM處理器的GPIO端口輸出電平不足以使光耦元件U1(MOC3062)正常工作,需要信號放大。電阻R2和下拉電阻R3組成三極管保護(hù)電路。當(dāng)GPIO端口輸出為高電平時,三極管T1(9013)導(dǎo)通,使電阻R1和光耦U1形成通路,U1正常工作,GPIO輸入信號得到放大,雙向可控硅K1(Q401O NH5)的G控制端得到高電壓,K1導(dǎo)通,插座220 V供電打開;當(dāng)GPIO端口輸出為低電平時,三極管T1截止,使電阻R1和光耦U1形成斷路。此時U1不工作,K1斷路,插座供電被關(guān)閉。
2.2 控制模塊驅(qū)動設(shè)計
在嵌入式Linux操作系統(tǒng)下,設(shè)備驅(qū)動程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié)。在應(yīng)用程序看來,硬件設(shè)備只是一個設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對硬件設(shè)備進(jìn)行操作。
文中使用GPIO口作為控制端口,每一位信息控制一個電源插座開關(guān)。以連接1號插座開關(guān)的GP10為例,說明其驅(qū)動程序的編寫。
將GP10定義為輸出狀態(tài),并預(yù)設(shè)插座開關(guān)斷開時輸出0,此時GP10將輸出0,輸出低電平,并使圖4中的三極管T1截止,光耦U1不工作,K1不導(dǎo)通,220 V供電斷開;打開供電時,將GP10置1,即輸出高電平,T1導(dǎo)通,220 V供電打開。
驅(qū)動程序中ioctl函數(shù)代碼如下:
2.3 嵌入式Web服務(wù)器設(shè)計
遠(yuǎn)程可控電源插座系統(tǒng)采用B/S(Browser/Server)結(jié)構(gòu),系統(tǒng)內(nèi)嵌的嵌入式Web服務(wù)器可向合法用戶提供基于瀏覽器的操作界面,瀏覽器便成了與插座相連設(shè)備的遠(yuǎn)端控制板。
由于嵌入式系統(tǒng)擁有的資源有限,構(gòu)建嵌入式Web服務(wù)器須選擇一個合適的Web服務(wù)器,在不影響整體性能的前提下,既利用自身有限的資源,又必須滿足支持CGI的Web應(yīng)用需求。
文中采用Boa Server作為嵌入式Web服務(wù)器。Boa是一個非常小巧的Web服務(wù)器,可執(zhí)行代碼只有約60 kB。它是一個單任務(wù)Web服務(wù)器,只能依次完成用戶的請求,而不會創(chuàng)建出新的進(jìn)程來處理并發(fā)連接請求。但Boa支持CGI,能夠?yàn)镃GI程序創(chuàng)建進(jìn)程來執(zhí)行。
移植Boa的大致步驟如下:
1)從官方網(wǎng)站(http://www.boa.org)上下載Boa源代碼,解壓;
2)根據(jù)硬件對Boa進(jìn)行相應(yīng)的配置,并交叉編譯,編譯器選用arm-linux-gcc;
3)編譯生成可在ARM上運(yùn)行的Boa程序,將其和內(nèi)核一起下載到ARM平臺上運(yùn)行;
4)將系統(tǒng)所需靜態(tài)頁面文件和CGI程序拷貝至相應(yīng)的路徑下。
當(dāng)Web服務(wù)器程序收到用戶以HTTP協(xié)議的GET方式發(fā)來的遠(yuǎn)程控制指令后,調(diào)用CGI程序,在CGI程序中用open(“/dev/rcpo”,O_RDWR)語句打開設(shè)備文件,若成功,則將控制參數(shù)傳遞給ioctl函數(shù)的cmd.控制對應(yīng)的插座開關(guān)做相應(yīng)動作。
3 系統(tǒng)測試
文中在嵌入式系統(tǒng)開發(fā)平臺上實(shí)現(xiàn),并制作了控制模塊硬件,對電源插座進(jìn)行了內(nèi)部連線改裝,使之遠(yuǎn)程可控。搭建測試環(huán)境,對一臺220 V供電工作的普通電扇進(jìn)行遠(yuǎn)程控制,如圖5所示。
用戶用瀏覽器軟件訪問本系統(tǒng),經(jīng)登錄認(rèn)證后進(jìn)入控制頁面,如圖6所示。點(diǎn)擊“開啟”按鈕后,電扇轉(zhuǎn)動;點(diǎn)擊“關(guān)閉”按鈕后,電扇關(guān)閉。系統(tǒng)運(yùn)行正常,響應(yīng)及時。測試表明,本文設(shè)計是可行的、有效的。
4 結(jié)論
文中設(shè)計了一種遠(yuǎn)程可控電源插座,在ARM嵌入式系統(tǒng)上構(gòu)建嵌入式Web服務(wù)器,用戶通過網(wǎng)絡(luò)訪問Web服務(wù)器,實(shí)現(xiàn)對電源插座的操作,進(jìn)而遠(yuǎn)程控制與其相連的電器。本文設(shè)計采用模塊化設(shè)計,功能實(shí)用,操作簡便,易于擴(kuò)展,可廣泛應(yīng)用于家用或工業(yè)電器的遠(yuǎn)程控制。
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展以及與信息家電、工業(yè)控制技術(shù)的結(jié)合日益緊密,具備網(wǎng)絡(luò)功能的嵌入式系統(tǒng)應(yīng)用正在成為未來電器的發(fā)展趨勢。
評論