基于嵌入式Web服務(wù)器的智能家居主控制系統(tǒng)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
隨著信息技術(shù)的發(fā)展,以PC為代表的計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)發(fā)展到一個(gè)更高階段,以嵌入式智能設(shè)備為核心的后PC時(shí)代已經(jīng)來(lái)臨。ARM處理器以其性能高、成本低和功耗低的特點(diǎn),廣泛應(yīng)用于嵌入式控制、消費(fèi),教育類多媒體、DSP和移動(dòng)式應(yīng)用等領(lǐng)域。隨著生活質(zhì)量的提高,人們對(duì)家庭智能化的需求越來(lái)越高。智能化正體現(xiàn)在人們生活的各個(gè)方面。其中家居的智能化正成為人們生活中追求的熱點(diǎn),而這里提出的基于嵌入式Web服務(wù)器的智能家居系統(tǒng)正好滿足這一需求。
2 硬件設(shè)計(jì)
智能家居系統(tǒng)設(shè)計(jì)需求是PC機(jī)遵循802.3和HPPTD等網(wǎng)絡(luò)協(xié)議,通過(guò)網(wǎng)絡(luò)訪問(wèn)主控制器的Web服務(wù)器,登錄主控制器,通過(guò)電力線構(gòu)成的家庭小型局域網(wǎng)絡(luò)或串口,發(fā)送指令給從控制器進(jìn)而控制家電,同時(shí)利用監(jiān)控家電的傳感器將家電狀態(tài)返回至PC,如圖1所示。該系統(tǒng)設(shè)計(jì)要求主控制器功耗低,占用空間小,可進(jìn)行可視化操作。
2.1 控制器選擇
DSP數(shù)學(xué)信號(hào)處理器具有強(qiáng)大數(shù)據(jù)處理能力和高運(yùn)行速度,但在音頻、USB、SD卡等接口功能擴(kuò)展較弱。而單片機(jī)系列的ARM920T具有5級(jí)指令流水線.處理速度為1.1 MHz,內(nèi)置MMU(Memory Management Unit)、獨(dú)立的16 KB數(shù)據(jù)Cache、16 KB指令Cache和高速AMBA(Advanced Microcon-troller Bus Architecture)總線接口等功能。DSP和一般8位單片機(jī)相比,它具有更全面的通用功能,具有60個(gè)中斷控制器,支持實(shí)時(shí)時(shí)鐘(RTC)、LCD控制器接口、串口接口、網(wǎng)卡接口等功能,還具有16/32位RISC體系結(jié)構(gòu)和ARM指令集。因此該系統(tǒng)采用ARM公司的ARM920T作為主控制器。
從控制器選用MSP430單片機(jī),與89S51單片機(jī)相比,它具有RISC(精簡(jiǎn)指令集),功耗低,支持16位內(nèi)部總線,引入Flash型存儲(chǔ)器和JTAG技術(shù),編程開發(fā)非常方便。這里主要講述主控制系統(tǒng)。
2.2 網(wǎng)卡接口設(shè)計(jì)
該系統(tǒng)需要通過(guò)互聯(lián)網(wǎng)或電力線進(jìn)行網(wǎng)絡(luò)通信,而Web服務(wù)器設(shè)計(jì)也必須通過(guò)網(wǎng)絡(luò)收發(fā)數(shù)據(jù),要求數(shù)據(jù)處理速度快。根據(jù)這些要求,該系統(tǒng)采用DAVICOM公司的DM9000AEP作為網(wǎng)卡的設(shè)計(jì)器件。該器件具有10 Mbit/s和100 Mbit/s的自動(dòng)切換功能,支持802.3x全雙工控制流標(biāo)準(zhǔn),具有16 K字節(jié)的雙字SRAM,可以減輕CPU的負(fù)擔(dān),因此使系統(tǒng)更穩(wěn)定,處理和傳輸數(shù)據(jù)速度更快。
RJ-45采用HanRun公司的可對(duì)信號(hào)濾波的HR911105A接口,這樣可節(jié)約印刷板,并有效地減小電磁干擾。ARM920T與網(wǎng)卡DM9000AEP接口設(shè)計(jì)如圖2所示。圖中16根數(shù)據(jù)線相連;命令選擇引腳CMD,為高電平時(shí),選擇數(shù)據(jù)端口,CMD為低電平時(shí),選擇地址通道;IOR#為讀信號(hào)引腳;IOW#為寫信號(hào)引腳;CS#片選信號(hào)與ARM920T的片選信號(hào)線nGCS3相連。
2.3 串口接口設(shè)計(jì)
智能家居系統(tǒng)需要串口控制家電信息,并進(jìn)行相應(yīng)通信,而且調(diào)試系統(tǒng)同樣需要串口。為滿足要求,該系統(tǒng)采用Sipex的窄體SP3232串行通信器件。該器件支持滿載120 Kb/s的最小傳輸速率,可在中斷或DMA兩種模式下工作,每個(gè)通道包含64 K字節(jié)的發(fā)送FIFO和接收FIFO。該器件最大特點(diǎn)就是采用電荷泵技術(shù):由4只外接電容組成,采用4相電壓轉(zhuǎn)換技術(shù),保持輸出對(duì)稱的5.5 V電壓。即使輸入電壓VCC在3.0~5.5 V范圍內(nèi),電荷泵仍可提供5.5 V穩(wěn)定電壓,這樣可以保證系統(tǒng)穩(wěn)定工作。有益于智能家居系統(tǒng)整體的良好運(yùn)行。串口接口設(shè)計(jì)如圖3所示。圖3中TXD表示接收數(shù)據(jù),RXD表示發(fā)送數(shù)據(jù),RTS表示請(qǐng)求發(fā)送,CTS表示清除發(fā)送。當(dāng)RTS請(qǐng)求發(fā)送數(shù)據(jù)時(shí),需經(jīng)CTS信號(hào)檢測(cè),只有CTS信號(hào)允許才能發(fā)送數(shù)據(jù)。
2.4 存儲(chǔ)器設(shè)計(jì)
完整操作系統(tǒng)的啟動(dòng)離不開引導(dǎo)程序。采用SAMSUNG公司64 MB的K9F1208作為NAND Flash,具有4 KB的內(nèi)部緩沖區(qū)可作為引導(dǎo)肩動(dòng),系統(tǒng)啟動(dòng)后NAND Flash仍可作為外部存儲(chǔ)器繼續(xù)使用。Windows CE5.O引導(dǎo)加載程序(BootLoader)由NANDFlash的地址0x00000000處開始執(zhí)行。完成硬件初始化,建立系統(tǒng)的內(nèi)存空間映射圖,最終BootLoader把操作系統(tǒng)內(nèi)核映像加載到RAM中;采用HY公司的兩片HY57V561620CTP作為SDRAM,通過(guò)nGCS6連接到ARM920T引腳,起始地址為0x30038000.同時(shí)SDRAM還支持自動(dòng)更新和掉電模式,保證系統(tǒng)穩(wěn)定工作。
2.5 智能家居系統(tǒng)結(jié)構(gòu)
主控制器還包括觸摸屏接口。觸摸屏采用帶有驅(qū)動(dòng)電路的日立7寸屏,用于用戶可視化操作。
傳感器信號(hào)線與ARM920T的中斷引腳EINT8相連。當(dāng)傳感器信號(hào)到來(lái)時(shí),通過(guò)中斷引腳向ARM920T申請(qǐng)中斷服務(wù)程序,并通過(guò)網(wǎng)絡(luò)向用戶報(bào)警。系統(tǒng)框圖如圖4所示。
3 軟件設(shè)計(jì)
3.1 內(nèi)核創(chuàng)建及裁剪
Windows CE是一個(gè)開放的、可裁減的、32位的實(shí)時(shí)嵌入式窗口操作系統(tǒng)。因此要實(shí)現(xiàn)Web Server功能必須對(duì)內(nèi)核裁剪。除了實(shí)現(xiàn)基本的WINCE 5.0功能外,還需要在定制內(nèi)核時(shí)在Platform內(nèi)添加DM9000網(wǎng)卡驅(qū)動(dòng),串口驅(qū)動(dòng),USB驅(qū)動(dòng),MFC,SDK(標(biāo)準(zhǔn)工具集)、HTFPD和SOAP協(xié)議等系統(tǒng)必備驅(qū)動(dòng)和協(xié)議。Windows CE上Web Server的通信協(xié)議是HTTP協(xié)議,HTTP的消息機(jī)制是基于請(qǐng)求一應(yīng)答模式。[!--empirenews.page--]
HTTP協(xié)議工作原理:數(shù)據(jù)包經(jīng)過(guò)網(wǎng)絡(luò)傳送到DM9000AEP的以太網(wǎng)控制器后,經(jīng)系統(tǒng)內(nèi)部控制器的TCP/IP堆棧對(duì)數(shù)據(jù)包進(jìn)行解析,然后對(duì)其打包或解包,但這些數(shù)據(jù)包還必須經(jīng)Web服務(wù)器處理。
3.2 Web服務(wù)器設(shè)計(jì)
HTTPD服務(wù)器的工作流程如圖5所示。系統(tǒng)采用HTTPD多線程并發(fā)服務(wù)器結(jié)構(gòu)的設(shè)計(jì)思想,其工作特點(diǎn)是為每個(gè)客戶機(jī)請(qǐng)求分配一個(gè)線程,即服務(wù)器在同時(shí)處理多人請(qǐng)求。由每個(gè)線程處理客戶機(jī)的請(qǐng)求。在請(qǐng)求處理完畢后,子線程退出。服務(wù)器接收子線程的退出信號(hào)為其他的客戶機(jī)請(qǐng)求分配資源。
圖5中,HTTPD服務(wù)器由main()函數(shù)開始,首先配置文件,設(shè)置用戶ID函數(shù)和組ID函數(shù),通過(guò)getopt(argc,argv,"s:f:p:u:g:")函數(shù)獲取配置選項(xiàng),讀取配置。其中:s為standalone服務(wù)器運(yùn)行方式;f為config_fie即配置文件;p為端口號(hào),HTTPD默認(rèn)端口號(hào)為80;u為用戶ID即uid;g為組ID,即gid。
然后判斷是否工作在standalone.服務(wù)器運(yùn)行方式上,如果是則運(yùn)行standalone_main()函數(shù),如果不是則訪問(wèn)process request()函數(shù)。
如果服務(wù)器工作在standalone模式中,依據(jù)圖5的工作流程,首先客戶端與服務(wù)器建立鏈接,建立socket套接字。監(jiān)聽鏈接,設(shè)置uid和gid,如果服務(wù)器沒(méi)接收到請(qǐng)求信息,繼續(xù)監(jiān)聽;如果接收到請(qǐng)求信息,則創(chuàng)建子線程。子線程調(diào)用process_request()處理客戶端請(qǐng)求,服務(wù)器繼續(xù)監(jiān)聽鏈接,如果客戶端請(qǐng)求信息,再創(chuàng)建子線程,調(diào)用process_request()處理客戶端請(qǐng)求,如此多線程并發(fā)處理客戶端請(qǐng)求。
在process_request()函數(shù)中,首先初始化當(dāng)前時(shí)間,然后讀取并處理HTTP請(qǐng)求消息的方法Method字段,讀取HTTP請(qǐng)求消息的URL字段。主要通過(guò)strcpy_nocrlf(),getparents(),translate_name()這3個(gè)函數(shù)對(duì)HTIP請(qǐng)求消息的URL字段進(jìn)行解析,依據(jù)宏LDGGING決定是否打開日志。最后調(diào)用send_note()發(fā)送請(qǐng)求的文件給客戶端。
3.3 Web服務(wù)器通信方案設(shè)計(jì)
在WINCE系統(tǒng)上開發(fā)Web服務(wù)器,并通過(guò)Web服務(wù)器與串口設(shè)備進(jìn)行通信的方案有ASP方案、CSP方案和Socket方案。綜合比較,通用WINCE5.0系統(tǒng)不支持ASP控件;Socket主要是C/S方式的,需要安裝客戶端;而CSP方案在不要求美觀的情況下,無(wú)需安裝客戶端就可訪問(wèn)系統(tǒng)。系統(tǒng)則采用該種方案。
CSP方案就是將C語(yǔ)言編寫的網(wǎng)絡(luò)和串口通信程序嵌入到HTML當(dāng)中,這也是嵌入式網(wǎng)絡(luò)開發(fā)常用的方案。具體流程如下:
(1)在定制內(nèi)核的過(guò)程中需要將HTTPD服務(wù)器添加到Platform builder中,遵守HTTP的請(qǐng)求-應(yīng)答規(guī)則。
(2)編寫CSP通信程序,通過(guò)PC機(jī)訪問(wèn)Windows CE的Web服務(wù)器,打開串口,執(zhí)行串口控制或網(wǎng)絡(luò)通信。直接將C語(yǔ)言嵌入到HTML/XML等模板文件中。CSP文件中HTML界面如實(shí)驗(yàn)結(jié)果所示。通信程序主要函數(shù)為建立鏈接函數(shù)SetupConnection()用于建立鏈接設(shè)置DCB初始參數(shù);打開串口函數(shù)open_serial()判斷是否打開設(shè)備串口、設(shè)置超時(shí)數(shù)值、緩沖區(qū)大小、創(chuàng)建監(jiān)視線程等;讀數(shù)據(jù)命令read_respond()用于異步讀取緩沖區(qū)數(shù)據(jù)并顯示;發(fā)送命令send command()用于給設(shè)備指令??刂浦噶頿owcontrol_command()用于控制電源開關(guān);微調(diào)函數(shù)adjcontrol_command()用于小幅調(diào)節(jié)設(shè)備功能,如光線明暗,溫度高低等;串口監(jiān)控API函數(shù)WINAPICommWatchProc()用于串口緩沖區(qū)監(jiān)控等。
(3)編寫好CSP通信文件后,用eyBuild開發(fā)包提供的CSP2BIN工具將CSP源文件生成C程序的源文件,再鏈接上eyBuild提供的CGI運(yùn)行庫(kù),在VC6.0中編譯就可生成在Windows CE平臺(tái)運(yùn)行的CGI程序。該系統(tǒng)生成的CGI為Intelligenthome.cgi。
(4)將在\website\cgi-bin生成的Intelligenthome.cgi文件拷貝到Windows CE系統(tǒng)的\windows\www\文件夾下面,連接PC機(jī)便可從PC機(jī)訪問(wèn)Windows CE系統(tǒng),進(jìn)而了解傳感器信號(hào),控制家電。
該系統(tǒng)使用的數(shù)據(jù)庫(kù)為SQLite。SQLite數(shù)據(jù)庫(kù)存放家電的基本信息、參數(shù)值、狀態(tài)信息以及傳感器當(dāng)前狀態(tài)等,這些信息不但反映各種參數(shù)的歷史狀態(tài),而且也是管理、決策的重要信息來(lái)源。
4 實(shí)驗(yàn)結(jié)果
經(jīng)過(guò)一段時(shí)間的開發(fā)與研究,該智能家居系統(tǒng)能夠完成簡(jiǎn)單的指令與數(shù)據(jù)通信,并可將可控家電的信息保存在SQLite數(shù)據(jù)庫(kù)中。
5 結(jié)束語(yǔ)
利用S3C2440定制Windows CE系統(tǒng)實(shí)現(xiàn)智能家居的簡(jiǎn)單控制,綜合運(yùn)用了電子電路,Windows CE嵌入式系統(tǒng),HTTP協(xié)議和CSP等技術(shù)。該系統(tǒng)可采用遵循802.11的遠(yuǎn)程無(wú)線來(lái)控制家電系統(tǒng)。