基于以太網(wǎng)智能家居控制器的設計
3.2 嵌入式 Web服務器的實現(xiàn)
設計中采用的是 W78E58B型 8位單片機,由于單片機存儲空間有限、處理速度相對較慢,且在整個遠程控制中不需要實現(xiàn)完整的 TCP/IP協(xié)議。因此,可以在遠程控制的網(wǎng)絡連接和訪問技術中采用精簡 TCP/IP協(xié)議。要實現(xiàn)交互功能,就要在精簡 TCP/IP協(xié)議的基礎上實現(xiàn) HTTP協(xié)議,構建嵌入式 Web服務器。本設計中的精簡 TCP/IP協(xié)議具有同 TCP/IP協(xié)議一樣的四層結構,各層實現(xiàn)的功能如下:
?、冁溌穼?。設計中通過以太網(wǎng)接入到 Internet,因此物理層和數(shù)據(jù)鏈路層要符合以太網(wǎng)的 IEEE802.3標準。然而,以太網(wǎng)控制器 RTL8019AS的硬件組成部分已經(jīng)實現(xiàn)了 CSMA/CD控制機制,屏蔽了底層硬件處理的細節(jié),并向上層軟件提供與硬件無關的接口,最終完成了數(shù)據(jù)在以太網(wǎng)中的接收和發(fā)送。因此,設計中物理層與數(shù)據(jù)鏈路層的設計是通過 RTL8019AS硬件和驅(qū)動程序共同實現(xiàn)的。
?、诰W(wǎng)絡層實現(xiàn)了 ARP協(xié)議、ICMP協(xié)議和 IP協(xié)議。ARP是地址解析協(xié)議,具體處理過程是當接收到 ARP數(shù)據(jù)包,處理器就查看 IP地址是請求還是響應。如果是響應,則將響應中的網(wǎng)卡地址存到 ARP高速緩存表中;如果是請求,處理器將返回自己的網(wǎng)卡物理地址給對方。ICMP是調(diào)試響應 PING的請求,檢測網(wǎng)路是否通順。依照系統(tǒng)實際應用的要求, IP協(xié)議只需實現(xiàn)對數(shù)據(jù)報傳送和接收,無須實現(xiàn)路由選擇算法和差錯控制,同時也不需支持 IP數(shù)據(jù)報的分片和重組。
?、蹅鬏攲訉崿F(xiàn) TCP協(xié)議。 TCP協(xié)議是面向連接的、端對端的可靠通信協(xié)議。設計中采取了 TCP連接的建立與關閉機制、超時重傳機制、數(shù)據(jù)包確認機制、流量控制機制來保證它的可靠性。在超時重傳機制中,如果超時重傳定時器溢出后還沒有收到確認,則重傳該數(shù)據(jù)包,并復位重傳定時器。為簡單起見,程序里每次只發(fā)送一個 TCP數(shù)據(jù)包,然后等待它的確認,只有收到確認后才會繼續(xù)發(fā)送下面的 TCP數(shù)據(jù)包。在本設計,程序重傳的間隔時間是固定的,沒有采用 TCP協(xié)議中的標準算法,當達到一定的次數(shù)后,發(fā)送方還沒有收到確認,則會放棄該包的發(fā)送并關閉 TCP連接。TCP的流量控制是為了協(xié)調(diào)通信雙方的收發(fā)
速率不均衡而設計的。設計中考慮到系統(tǒng)在使用 TCP協(xié)議時,只設置了一個中等 IP包大小接收緩存,因此接收窗口恒定設為 1024。這樣遠端主機就會以較慢的傳輸速率與本端的 Web服務器進行通信,不會導致死機。
?、軕脤訉崿F(xiàn)了 HTTP協(xié)議。HTTP是在 Web服務器和瀏覽器之間通信的協(xié)議。為了
簡化,設計中采用固定的 HTTP報文頭封裝 HTTP應答數(shù)據(jù)報文。格式如下:
char code html_header[ ] //客戶端訪問主頁時候服務器的響應頭部
= {"HTTP/1.1 200 OKn" //響應行( Respond Line),狀態(tài)為 OK,表示文件可以讀取
"Cache-control: no-cachen" //沒有高速緩存控制
"Connection: Keep-Aliven" //HTTP/1.1的可持續(xù)鏈接
"Content-Length: TAG:LEN1n" //文件長度
"Content-Type: text/htmlrnrn" };//客戶端 GET請求的文件格式
在響應 HTTP請求時,由于以太網(wǎng)數(shù)據(jù)包的數(shù)據(jù)部分不能超過 1500字節(jié),因此當發(fā)送
數(shù)據(jù)超過 1500字節(jié),需要分組發(fā)送。
3.3 以太網(wǎng)智能家居控制器遠程控制運行結果
智能家居控制器接入以太網(wǎng)后,用戶只需在瀏覽器中輸入控制器的 IP地址,便可登錄遠程控制界面。當正確輸入用戶名和密碼后,便進入控制頁面,用戶可以訪問并控制各子系統(tǒng)。
圖 4為智能家電的控制頁面,系統(tǒng)使用 GIF格式圖片表示智能家電開關的狀態(tài)。當單擊控制頁面中相應的開關后,智能家居 Web服務器收到 HTTP請求,執(zhí)行 CGI程序,將相反狀態(tài)的圖片嵌入到網(wǎng)頁相應的位置中。與此同時,單片機會在相應家電的控制端口,輸出一個與之前狀態(tài)相反的電平,此時繼電器動作,家電運行狀態(tài)改變。最后智能家居 Web服務器將新的 HTML頁面回送給用戶端,瀏覽器更新頁面,并顯示改變后的家電狀態(tài)。
智能家居 Web服務器的軟件系統(tǒng)還啟用了定時機制,當用戶在規(guī)定的時間內(nèi)未執(zhí)行任何操作,系統(tǒng)將退出控制頁面,返回到登錄頁面。用戶必須重新輸入驗證信息,并登錄后才可再次進入控制頁面執(zhí)行操作,大大提高了整個智能家居控制系統(tǒng)的安全性。
參考文獻:
[1].W78E58Bdatasheethttp://www.dzsc.com/datasheet/W78E58B_705483.html.
[2].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[3].ATF16V8Bdatasheethttp://www.dzsc.com/datasheet/ATF16V8B_95069.html.
[4].DS18B20datasheethttp://www.dzsc.com/datasheet/DS18B20_819975.html.
[5].RTL8019ASdatasheethttp://www.dzsc.com/datasheet/RTL8019AS_173.html.
評論