劉念杰,秦會(huì)斌
(杭州電子科技大學(xué)電子信息學(xué)院,浙江杭州310018)
隨著科技的飛速發(fā)展,人們對(duì)智能家居中照明的高效控制和照明效果多樣化的要求不斷提高,同時(shí)對(duì)網(wǎng)絡(luò)的依賴也越來越大,智能照明系統(tǒng)應(yīng)運(yùn)而生。智能照明系統(tǒng)充分利用電子技術(shù)、通信技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),運(yùn)用有效的管理和控制策略,實(shí)現(xiàn)高效、環(huán)保、節(jié)能、舒適的照明效果。
基于電力線載波技術(shù)的智能調(diào)光控制系統(tǒng)可以充分利用現(xiàn)有的電力線網(wǎng)絡(luò)傳送數(shù)據(jù)[1],不僅無需重新鋪設(shè)專用的線纜,也不占用無線通信寶貴的頻道資源,符合家庭網(wǎng)絡(luò)通信的特點(diǎn),同時(shí)電力線調(diào)制解調(diào)模塊的成本也遠(yuǎn)低于各種無線模塊(如Zigbee、Wi-Fi、2.4G等),這無疑成為了解決智能家居系統(tǒng)中數(shù)據(jù)傳輸介質(zhì)的最佳方案之一。但同時(shí)低壓電力線通常具有強(qiáng)干擾性、負(fù)載變化頻繁、建立通道難的問題,因此系統(tǒng)充分考慮了這些不利因素,采用QPSK調(diào)制的RISE3403為調(diào)制解調(diào)器,通過S3C6410+Android2.3搭建整個(gè)調(diào)光系統(tǒng)的智能網(wǎng)關(guān),來實(shí)現(xiàn)對(duì)燈具的控制。
整個(gè)系統(tǒng)的設(shè)計(jì)包括S3C6410智能網(wǎng)關(guān)服務(wù)器設(shè)計(jì)[2]、電力線載波燈控節(jié)點(diǎn)設(shè)計(jì)、Web客戶端的設(shè)計(jì)、Android觸摸屏界面設(shè)計(jì)。系統(tǒng)采用簡(jiǎn)單的星狀拓?fù)浣Y(jié)構(gòu)在家庭內(nèi)部組建獨(dú)立的電力線網(wǎng)絡(luò),各燈控節(jié)點(diǎn)與網(wǎng)關(guān)之間通過電力線通信,網(wǎng)關(guān)通過GPRS、WIFI或Internet等方式對(duì)用戶提供訪問服務(wù),系統(tǒng)的總體構(gòu)架如圖1所示??紤]到與其他通信模塊的可兼容性,電力線載波通信模塊與智能網(wǎng)關(guān)和燈控節(jié)點(diǎn)之間均通過串口連接,只要遵循網(wǎng)關(guān)與節(jié)點(diǎn)之間規(guī)定的通信協(xié)議格式,就可以在不改變整個(gè)系統(tǒng)結(jié)構(gòu)的前提下加入其他非電力線載波的通信模塊,擴(kuò)展出更為復(fù)雜的拓?fù)浣Y(jié)構(gòu),組網(wǎng)方式變的相對(duì)更靈活。
圖1 系統(tǒng)的總體構(gòu)架圖Fig.1 Structure diagram of the smart dimming system
智能網(wǎng)關(guān)主控服務(wù)器采用Samsung S3C6410處理器,采用外接DM9000以太網(wǎng)卡與USB WIFI模塊來接入以太網(wǎng)與WIFI網(wǎng)絡(luò),通過串口控制電力線載波模塊,同時(shí)配置了觸摸屏支持本地觸摸界面操作,其硬件框圖如圖2所示。電力線載波燈控節(jié)點(diǎn)主要由電力線載波模塊、MCU控制單元與LED調(diào)光模塊3部分構(gòu)成。Atmega16單片機(jī)作為控制單元,主要負(fù)責(zé)通過串口控制電力線載波調(diào)制解調(diào)芯片載波信號(hào)的發(fā)送與接收,以及產(chǎn)生PWM波來驅(qū)動(dòng)調(diào)光芯片實(shí)現(xiàn)LED的精確調(diào)光。電力線載波調(diào)制解調(diào)芯片采用的是瑞斯康的最新產(chǎn)品RISE3403,調(diào)制方式為BPSK或QPSK,并且支持CSMA/CD機(jī)制,此芯片可工作于獨(dú)立式(SPI同步控制)或嵌入式(串口透?jìng)鳎﹥煞N模式,系統(tǒng)采用的是其串口透?jìng)髂J?,操作起來更為方便。LED調(diào)光驅(qū)動(dòng)芯片采用的是PT4115,它是一款連續(xù)電感電流導(dǎo)通模式的降壓恒流源,通過DIM引腳輸入占空比可調(diào)的PWM,便能輸出大小可調(diào)的橫流LED驅(qū)動(dòng)電流,最大輸出電流可達(dá)1A,最大能夠驅(qū)動(dòng)25-30W的LED。載波燈控節(jié)點(diǎn)硬件框圖如圖3所示[3-4]。
圖2 網(wǎng)關(guān)服務(wù)器硬件框圖Fig.2 Structure diagram of the server hardware
圖3 電力線載波燈控節(jié)點(diǎn)硬件框圖Fig.3 Structure diagram of the led-control node hardware
網(wǎng)關(guān)服務(wù)器端軟件部分主要由Boa Web服務(wù)器、登陸驗(yàn)證CGI程序、調(diào)光CGI程序、情景設(shè)置CGI程序、定時(shí)開關(guān)CGI程序、定時(shí)開關(guān)守護(hù)程序以及本地Android界面應(yīng)用程序和Sqlite數(shù)據(jù)庫等部分構(gòu)成。由于軟件平臺(tái)是基于ARMAndroid2.3,已移植到S3C6410平臺(tái),因此CGI程序不能采用傳統(tǒng)的ARM-Linux交叉編譯,需從Android NDK開發(fā)包抽取出Android交叉編譯工具鏈arm-linux-androideabi,這樣編譯出來的CGI程序才能在Android平臺(tái)運(yùn)行。本地控制界面基于Android SDK開發(fā),開發(fā)環(huán)境是Eclipse,通過Java JNI技術(shù)來實(shí)現(xiàn)對(duì)底層串口驅(qū)動(dòng)的調(diào)用[5]。
Boa服務(wù)器是一個(gè)小巧高效的Web服務(wù)器,源代碼開放、性能高,并且支持CGI,適合用來充當(dāng)輕量級(jí)的嵌入式web服務(wù)器。從www.boa.org下載Boa源碼,當(dāng)前最新版本為0.94.13,將其解壓并進(jìn)入源碼目錄的src子目錄,利用從Android NDK開發(fā)包里面抽取出來的Android交叉編譯工具進(jìn)行編譯。首先解壓出源碼:tar xzvf boa-0.94.13.tar.gz,cd boa-0.94.13/src,然后生成Makefile文件:./configure,修改Makefile文件:找到CC=gcc,將其改成CC=arm-linuxandroideabi-gcc,再找到CPP=gcc-E,將其改成CPP=armlinux-androideabi-gcc-E,并保存退出。最后運(yùn)行make進(jìn)行編譯,即得到可執(zhí)行程序?yàn)閎oa,將調(diào)試信息剝?nèi)ィ篴rm-linuxandroideabi-strip boa,得到的最后程序只有約60KB大小。接下來需要完成Boa的配置,使其能夠支持CGI程序的執(zhí)行。Boa需要在/etc目錄下建立一個(gè)boa目錄,里面放入Boa的主要配置文件boa.conf。ScriptAlias變量指明了CGI腳本的虛擬路徑對(duì)應(yīng)的實(shí)際路徑,一般所有的CGI腳本都要放在實(shí)際路徑里,用戶訪問執(zhí)行時(shí)輸入站點(diǎn)+虛擬路徑+CGI腳本名,可設(shè)置為/www/cgi-bin/。
CGI程序主要用來溝通客戶端網(wǎng)頁與Web服務(wù)器之間的數(shù)據(jù)交互。瀏覽器通過Web表單請(qǐng)求CGI程序,服務(wù)器收到請(qǐng)求后調(diào)用指定的CGI程序進(jìn)行處理,同時(shí)也能夠返回?cái)?shù)據(jù)給網(wǎng)頁[6]。CGI可以用任何一種語言編寫,只要這種語言具有標(biāo)準(zhǔn)輸入、輸出和環(huán)境變量。由于需要操作S3C6410的硬件即串口,寫串口的同時(shí)可能需要延時(shí)等待數(shù)據(jù)到達(dá)之后再讀,因此采用C語言來編寫,這樣能夠方便調(diào)用到Linux底層的串口驅(qū)動(dòng)程序,而這是PHP、Python等這些其他腳本語言無法做到的。
網(wǎng)頁端所有的CGI請(qǐng)求都是通過XMLHttpRequest這個(gè)JavaScript對(duì)象完成[7],在調(diào)用XMLHttpRequest的open方法發(fā)出GET請(qǐng)求之后,它可以同步或異步返回Web服務(wù)器的響應(yīng),并且能在不刷新整個(gè)網(wǎng)頁的情況下更新部分控件的數(shù)據(jù)。調(diào)光CGI程序的GET請(qǐng)求參數(shù)格式仿照Dali協(xié)議進(jìn)行設(shè)計(jì),如需要查詢1號(hào)燈的亮度等級(jí),則相應(yīng)的請(qǐng)求形式為/led.cgi?addr=1&cmd=160。定時(shí)開關(guān)燈守護(hù)程序通過有名管道與定時(shí)開關(guān)燈CGI程序通信,實(shí)時(shí)監(jiān)控CGI寫入的管道數(shù)據(jù),并維護(hù)了多個(gè)Linux定時(shí)器(每個(gè)房間對(duì)應(yīng)一個(gè)定時(shí)器)來真正完成發(fā)送開關(guān)燈指令的任務(wù)。通過嵌入式輕量級(jí)數(shù)據(jù)庫Sqlite3來存儲(chǔ)各個(gè)燈節(jié)點(diǎn)的定時(shí)開關(guān)與亮度等級(jí)信息,方便上層進(jìn)行設(shè)置與查詢。網(wǎng)關(guān)服務(wù)器軟件流程圖如圖4所示。
圖4 網(wǎng)關(guān)服務(wù)器軟件流程圖Fig.4 Flow chart of the server software
當(dāng)電力線載波模塊接收到網(wǎng)關(guān)服務(wù)器經(jīng)電力線傳輸過來的Dali控制命令時(shí),觸發(fā)Atmega16進(jìn)入串口接收中斷模式,Atmaga16對(duì)接收數(shù)據(jù)進(jìn)行校驗(yàn)與解析,判斷該幀中目的ID字段是否與本節(jié)點(diǎn)相符(節(jié)點(diǎn)ID由Atmega16外接撥碼開關(guān)設(shè)置),若相符則進(jìn)行進(jìn)一步判斷并執(zhí)行相應(yīng)動(dòng)作:若為燈控制命令,則通過定時(shí)器產(chǎn)生相應(yīng)占空比的PWM輸出,若為查詢命令,則通過串口返回?cái)?shù)據(jù)給電力線載波模塊進(jìn)行轉(zhuǎn)發(fā)。當(dāng)電力線上無任何數(shù)據(jù)到達(dá)時(shí),Atmega16設(shè)置載波芯片處于低功耗模式,以等待下次被喚醒。載波燈控節(jié)點(diǎn)軟件流程圖如圖5所示。
圖5 載波燈控節(jié)點(diǎn)軟件流程圖Fig.5 Flow chart of the led-control node software
啟動(dòng)系統(tǒng)后,通過任一遠(yuǎn)程電腦的瀏覽器登陸測(cè)試,所見控制界面如圖6(a)、6(b)、6(c)和6(d)所示,包括:1)調(diào)光界面,功能包括單燈或組燈直接亮度調(diào)光(通過滑動(dòng)塊調(diào)節(jié))、UP與DOWN按鈕逐級(jí)調(diào)光、刷新按鈕可實(shí)時(shí)更新燈的狀態(tài);2)情景模式設(shè)置界面,功能包括閃爍與漸變兩種效果的啟用、關(guān)閉和設(shè)置;3)定時(shí)開關(guān)燈界面和修改密碼界面,功能包括定時(shí)開關(guān)燈的配置和登陸密碼的修改。圖7為網(wǎng)關(guān)服務(wù)器實(shí)測(cè)圖,Android觸摸屏控制界面提供了調(diào)光與定時(shí)開關(guān)的功能。圖8為載波燈控節(jié)點(diǎn)實(shí)測(cè)圖。系統(tǒng)的實(shí)際測(cè)試環(huán)境為120 m2、3室2廳的家庭住戶,空調(diào)、熱水器等大功率電器正常開啟,節(jié)點(diǎn)放置于離網(wǎng)關(guān)最遠(yuǎn)的兩個(gè)房間,總測(cè)試次數(shù)500次,電力線上丟包僅10次、數(shù)據(jù)差錯(cuò)次數(shù)2次,結(jié)果表明,QPSK這種載波通信方式的穩(wěn)定性比較好,基本能夠滿足系統(tǒng)的設(shè)計(jì)要求。目前正在對(duì)其中出現(xiàn)的一些問題進(jìn)行改進(jìn)。
圖6 界面Fig.6 Interface
文中設(shè)計(jì)的基于電力線載波技術(shù)的調(diào)光系統(tǒng),充分利用了現(xiàn)有的電力線網(wǎng)絡(luò),通過結(jié)合成熟的互聯(lián)網(wǎng)通信手段,使得家居設(shè)備的物聯(lián)網(wǎng)化與遠(yuǎn)程控制成為可能。系統(tǒng)實(shí)現(xiàn)了本地與遠(yuǎn)程Web兩種操作界面,通用性較強(qiáng),非常適用于家庭或者小型辦公室等這些場(chǎng)合。伴隨著物聯(lián)網(wǎng)與智能家居理念的逐漸深入人心,基于電力線通信技術(shù)的控制系統(tǒng)將會(huì)越來越體現(xiàn)其本身的優(yōu)越性,有著廣闊的應(yīng)用前景。
圖7 網(wǎng)關(guān)服務(wù)器與觸摸屏控制界面實(shí)測(cè)圖Fig.7 Photo of the server and touch screen control
圖8 載波燈節(jié)點(diǎn)實(shí)測(cè)圖Fig.8 Photo of the led-control node
[1] 楊順.基于電力線通信技術(shù)的新型照明控制系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2009,18(11):84-86.YANG Shun.The new lighting control system based on powerlinecommunication[J].ComputerSystems&Applications,2009,18(11):84-86.
[2] 姜天昌,白長(zhǎng)清.基于電力線的家庭智能網(wǎng)關(guān)[J].電子設(shè)計(jì)工程,2010,18(3):107-109.JIANG Tian-chang,BAI Chang-qing.Smart home gateway based on PLC[J].Electronic Design Engineering,2010,18(3):107-109.
[3] 林佳森,李智.基于低壓電力線的高速載波模塊設(shè)計(jì)[J].信息與電子工程,2012,19(1):43-45.LIN Jia-sen,LI Zhi.Design of smart carrier module based on Low-Voltage power line[J].Information and Electronic Engineering,2012,19(1):43-45.
[4] 王颋,吳兆云.基于電力線載波的智能家居控制系統(tǒng)研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013,13(2):109-111.WANG Ting,WU Zhao-yun.Research of smart home control system based on power line carrier[J].Microcontrollers&Embedded Systems,2013,13(2):109-111.
[5] 王朝華,陳德艷.基于Android的智能家居系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(6):142-144.WANG Chao-hua,CHEN De-yan.Research and implementation of smart home based on android platform[J].Computer Technology and Development,2012,22(6):142-144.
[6] 潘琢金,王秋實(shí).基于AJAX與CGI的嵌入式瘦Web服務(wù)器研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2010,31(20):91-93.PAN Zhuo-jin,WANG Qiu-shi.Study of thin embedded web server based on AJAX and CGI[J].Computer Engineering and Design,2010,31(20):91-93.
[7] 繆靜芳,姜平.基于Ajax技術(shù)的遠(yuǎn)程監(jiān)控動(dòng)態(tài)網(wǎng)頁設(shè)計(jì)[J].南通大學(xué)學(xué)報(bào):自然科學(xué)版,2009,8(3):57-59.MIAO Jing-fang,JIANG Ping.Ajax-based dynamic web design for remote monitoring[J].Journal of nantong university:Natural Science,2009,8(3):57-59.