沈斌濤,周源源
(蘇州大學(xué) 應(yīng)用技術(shù)學(xué)院,江蘇 蘇州215325)
生活質(zhì)量的提高使人們對(duì)住宅環(huán)境的要求也越來越高,從而促成了智能家居技術(shù)的誕生與發(fā)展。智能家居本質(zhì)就是通過計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和現(xiàn)代控制技術(shù)建立一個(gè)家庭綜合服務(wù)與管理集成系統(tǒng),包含家庭安防系統(tǒng)、自動(dòng)化系統(tǒng)和家庭網(wǎng)絡(luò)系統(tǒng)。整個(gè)系統(tǒng)實(shí)現(xiàn)了對(duì)信息的采集、輸入、輸出以及集中控制,以實(shí)現(xiàn)家居智能化、便捷化、高效化、舒適化的目的。
這套智能家居控制系統(tǒng)主要基于51單片機(jī)平臺(tái),可以實(shí)現(xiàn)家中燈光、家電等設(shè)備的控制,并且支持無線及有線的接入。它完全開源,方便自行擴(kuò)展系統(tǒng)。系統(tǒng)由控制主機(jī)、燈光控制模塊、插座控制模塊、ID卡門禁模塊、環(huán)境信息感知模塊、藍(lán)牙通訊模塊、紅外發(fā)射模塊以及電源和集線器構(gòu)成。系統(tǒng)實(shí)物圖見圖1。
圖1 系統(tǒng)整體實(shí)物
綜合供電與通訊要求的考慮,主機(jī)通過收發(fā)令牌控制總線上各從機(jī)的數(shù)據(jù)收發(fā),從而避免總線數(shù)據(jù)的擁堵及干擾??偩€采用四線結(jié)構(gòu)連接各模塊設(shè)備,對(duì)于有線通訊的模塊實(shí)行總線供電。但是總線線材存在內(nèi)阻,模塊獲得的實(shí)際電壓會(huì)隨著用電器電流波動(dòng)而發(fā)生波動(dòng),從而引起單片機(jī)重啟或者發(fā)生程序跑飛等狀況。為了解決這一問題,使用了LM7805三端穩(wěn)壓管來實(shí)現(xiàn)對(duì)模塊核心電路的穩(wěn)壓(圖2)。同時(shí)將總線電壓提升到了12V,這樣理論上可以實(shí)現(xiàn)總線在200mA下正常供電。LM7805輸入輸出端也加入了濾波電容,從而獲得高質(zhì)量的直流電。
圖2 系統(tǒng)電源轉(zhuǎn)換順序示意
參照PROFIBUS總線的數(shù)據(jù)結(jié)構(gòu),考慮系統(tǒng)數(shù)據(jù)量較小的實(shí)際情況,設(shè)計(jì)了一套簡化的總線通訊結(jié)構(gòu),見圖3、圖4。
圖3 數(shù)據(jù)鏈路層數(shù)據(jù)幀結(jié)構(gòu)
圖4 數(shù)據(jù)包基礎(chǔ)構(gòu)成
其中,目標(biāo)地址用于記錄接收此數(shù)據(jù)的設(shè)備地址,數(shù)據(jù)長度用于記錄數(shù)據(jù)包的長度。數(shù)據(jù)包中記錄著相應(yīng)的數(shù)據(jù),操作碼用于標(biāo)記本數(shù)據(jù)包的用途,操作數(shù)則是用于具體的操作。不同的操作碼對(duì)應(yīng)者不同的操作,程序通過識(shí)別操作碼的值,判斷數(shù)據(jù)包的類型并執(zhí)行相應(yīng)的操作。
由于串口特殊的雙線全雙工收發(fā)模式,主機(jī)在同一時(shí)間只可以接收一個(gè)從機(jī)發(fā)出的數(shù)據(jù),為了避免總線的擁堵,保證同一時(shí)間只有一對(duì)設(shè)備進(jìn)行通訊,所以選用令牌對(duì)總線進(jìn)行控制。令牌由主機(jī)發(fā)出,只有接收到令牌的從機(jī)才可以向主機(jī)發(fā)送數(shù)據(jù)(圖5)。
圖5 令牌控制基本原理
主基本操作操作方法為:主機(jī)發(fā)出空令牌,從機(jī)接收到空令牌后如果有需要進(jìn)行數(shù)據(jù)發(fā)送,則直接發(fā)送數(shù)據(jù),發(fā)送完成就結(jié)束,無需回復(fù)令牌。如果無數(shù)據(jù)發(fā)送,則將空令牌第四字節(jié)改為本機(jī)地址后發(fā)出。主機(jī)在發(fā)出令牌后自動(dòng)對(duì)總線進(jìn)行監(jiān)聽,等待數(shù)據(jù)接收。當(dāng)接收到的數(shù)據(jù)幀不是令牌時(shí),根據(jù)操作碼的類型做出相應(yīng)動(dòng)作。如果接收到的依然是令牌,則知道該從機(jī)無數(shù)據(jù),主機(jī)會(huì)向下一個(gè)地址發(fā)送令牌,按照地址順序不斷循環(huán),從而實(shí)現(xiàn)對(duì)總線的控制。
在實(shí)際運(yùn)行中發(fā)現(xiàn),對(duì)很多簡單的指令如果都采用普通操作碼進(jìn)行操作會(huì)比較累贅。于是我們?cè)谄胀ú僮鞔a基礎(chǔ)上規(guī)定了新的快速操作碼。
燈光控制模塊用于實(shí)現(xiàn)對(duì)室內(nèi)燈光的本地開關(guān)及遠(yuǎn)程開關(guān)。面板由一個(gè)指示燈和一個(gè)薄膜按鍵組成。指示燈顯示當(dāng)前繼電器通斷狀態(tài),即燈光狀態(tài)。模塊開關(guān)用于實(shí)現(xiàn)燈光的本地控制(圖6)。
圖6 模塊內(nèi)部電氣連接關(guān)系
使用繼電器模塊可以完成低壓直流電路對(duì)高壓交流電路的開關(guān)控制,實(shí)現(xiàn)對(duì)家電的通斷電控制。繼電器模塊自帶反向保護(hù)等功能,簡化開發(fā)過程。模塊專業(yè)的PCB設(shè)計(jì)可以保證系統(tǒng)具有良好的可靠性和安全性。
插座控制模塊用于控制插在插座上用電器是否通電,從而實(shí)現(xiàn)遠(yuǎn)程對(duì)這些用電器的電源進(jìn)行控制。插座模塊控制的設(shè)備一般功率都比較大,安全期間所選用的繼電器模塊自帶光耦隔離,避免干擾。雙路繼電器模塊可以完成對(duì)兩個(gè)插座的控制,使得插座面板上的三孔和兩孔插座單獨(dú)進(jìn)行通斷操作。
模塊面板包含刷卡器、指示燈1、指示燈2。其中刷卡器內(nèi)嵌入有線圈,用于和ID卡進(jìn)行通訊。指示燈1顯示當(dāng)前狀態(tài)。紅色表示當(dāng)前門處于上鎖狀態(tài),反之為綠色。指示燈2表示當(dāng)前讀卡狀態(tài)。藍(lán)色表示等待讀卡。將ID卡靠近,如果ID有效,指示燈2顯示綠色,并伴隨一聲蜂鳴器長響。之后門鎖狀態(tài)取反,指示燈1顯示與刷卡前相反顏色。如果ID卡無效,指示燈2顯示紅色,并伴有兩聲短暫蜂鳴器響聲。門狀態(tài)不變,指示燈1顯示不變。當(dāng)模塊接收到遠(yuǎn)程鎖門指令后,蜂鳴器發(fā)出3聲短暫響聲,之后門鎖進(jìn)入鎖狀態(tài),指示燈1顯示紅色。
環(huán)境信息感知模塊可以實(shí)現(xiàn)對(duì)環(huán)境信息的感知。模塊中包含溫度傳感器、濕度傳感器以及氣壓傳感器??梢垣@得環(huán)境的溫度、濕度以及氣壓數(shù)據(jù)。為了實(shí)現(xiàn)精確的濕度、氣壓和溫度數(shù)據(jù),我們分別選用了GY-65氣壓模塊和DHT11濕度模塊。
該模塊用于實(shí)現(xiàn)手機(jī)對(duì)系統(tǒng)中各設(shè)備的無線控制。手機(jī)端安裝客戶端后,通過藍(lán)牙與該模塊配對(duì)。配對(duì)后通過客戶端軟件上的按鈕發(fā)送相關(guān)代碼,模塊進(jìn)行處理后變成模塊中通用的指令發(fā)送給主機(jī),并采取相應(yīng)動(dòng)作。軟件功能類似PC端超級(jí)終端或串口助手功能,我們使用了其中的按鍵 模式。該模式提供了9個(gè)可定義按鍵。按下相應(yīng)按鍵發(fā)送對(duì)應(yīng)字符串或者ASC碼,對(duì)按鍵進(jìn)行定義后可以實(shí)現(xiàn)對(duì)系統(tǒng)中其他模塊的控制。
紅外遙控模塊可以實(shí)現(xiàn)對(duì)家中紅外遙控設(shè)備的控制,拓展系統(tǒng)控制范圍。模塊主要功能是將主機(jī)發(fā)出的控制指令翻譯為家電對(duì)應(yīng)的紅外碼,并通過自帶的紅外發(fā)光二極管發(fā)送給家電。這里我們以運(yùn)用日本NEC的制式。當(dāng)發(fā)射器按鍵按下后,遙控器發(fā)出經(jīng)過調(diào)制的38kHz紅外方波,這些高低點(diǎn)評(píng)構(gòu)成紅外碼。
為了實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)的調(diào)度與控制,就需要一個(gè)控制主機(jī)用于對(duì)整個(gè)系統(tǒng)進(jìn)行控制,于是我們?cè)O(shè)計(jì)了這樣一個(gè)主機(jī)。主機(jī)自身帶有LCD顯示屏,可以顯示系統(tǒng)所有模塊的狀態(tài)信息。主機(jī)同時(shí)帶有USB接口,可以連接電腦并使用PC端控制軟件實(shí)現(xiàn)對(duì)系統(tǒng)的控制及監(jiān)視。主機(jī)程序流程圖如圖7。
串口總線雖然沒有CAN總線運(yùn)用廣泛,但對(duì)于單片機(jī)而言,依靠自帶串口功能很容易實(shí)現(xiàn)。工作方式2波特率固定,工作方式3波特率可調(diào)。所謂9位串口就是串口每次發(fā)送或者接收的數(shù)據(jù)都是9位。串口數(shù)據(jù)的前八位都通過寄存器SBUF進(jìn)行發(fā)送或接收。第9位數(shù)據(jù)則存放在SCON中的RB8位或TB8位。
圖7 主機(jī)程序流程
串口工作在方式3時(shí),單片機(jī)會(huì)自動(dòng)進(jìn)入多機(jī)通訊模式。發(fā)送的數(shù)據(jù)均為9位。最高位也就是第9位是數(shù)據(jù)和地址的標(biāo)志位。第9位為1時(shí),表示當(dāng)前發(fā)送的是地址,為0時(shí)表示當(dāng)前發(fā)送的是數(shù)據(jù)。所有單片機(jī)都會(huì)接收地址,并會(huì)和自身的地址進(jìn)行比較。如果比較結(jié)果一致,則將Sm2置0,等待接收數(shù)據(jù)。接收完成后Sm2置1,重新等待接收地址。如果比較結(jié)果不一致,則Sm2保持1不變。之后單片機(jī)會(huì)對(duì)第9位為0的所有數(shù)據(jù)自動(dòng)忽略。即使收到也不會(huì)產(chǎn)生接收中斷,從而實(shí)現(xiàn)多機(jī)通訊(圖8)。
圖8 數(shù)據(jù)發(fā)送、接收程序流程
發(fā)送函數(shù)用于將數(shù)據(jù)打包后發(fā)送出去。函數(shù)會(huì)自動(dòng)完成數(shù)據(jù)幀組裝;串口中斷處理函數(shù)用于在串口接收到數(shù)據(jù)產(chǎn)生中斷時(shí)做出相應(yīng)的響應(yīng),單片機(jī)在產(chǎn)生中斷后自動(dòng)跳轉(zhuǎn)到該函數(shù)中;牌分配及處理函數(shù)用于分配和處理令牌數(shù)據(jù)。主機(jī)在程序中會(huì)按照地址順序逐個(gè)發(fā)送令牌,從機(jī)接收的令牌后根據(jù)自己的需要發(fā)送相應(yīng)的令牌或者數(shù)據(jù)給主機(jī)。在該函數(shù)中主要完成對(duì)令牌的分配以及對(duì)從機(jī)回復(fù)的程序做出相應(yīng)處理。
函數(shù)中根據(jù)操作碼的不同調(diào)用相應(yīng)的函數(shù)實(shí)現(xiàn)快速操作。快速操作函數(shù)用于處理快速操作指令。狀態(tài)上報(bào)函數(shù)用于將本機(jī)的狀態(tài)字節(jié)打包成數(shù)據(jù)幀發(fā)送給主機(jī),實(shí)現(xiàn)主機(jī)對(duì)各從機(jī)的實(shí)時(shí)監(jiān)視。選用了PROTUES平臺(tái)進(jìn)行仿真,在元件庫中直接選擇AT89C51單片機(jī)連接后就可以實(shí)現(xiàn)仿真。使用軟件自帶的串口工具可以對(duì)串口進(jìn)行實(shí)時(shí)監(jiān)控。通過主機(jī)的令牌控制,成功避免了主從結(jié)構(gòu)信道擁堵的問題。
智能家居控制系統(tǒng)完成了計(jì)劃的所有功能,可以實(shí)現(xiàn)本地及遠(yuǎn)程的開關(guān)量控制和模擬量數(shù)據(jù)采集。在后期調(diào)試過程中發(fā)現(xiàn)一些設(shè)計(jì)缺陷,包括通訊口必須嚴(yán)格接線,若將電源線錯(cuò)誤接入通訊線會(huì)造成系統(tǒng)大規(guī)模損壞,未來需要重新設(shè)計(jì),將TTL電平轉(zhuǎn)換為其它高電壓電平后接入總線,以避免這一狀況。另外所有接入總線的設(shè)備都必須正常供電,若有設(shè)備被斷電,會(huì)造成總線被強(qiáng)制拉低,引起系統(tǒng)癱瘓,自檢程序也無法檢出錯(cuò)誤,需要人工檢查。這將會(huì)作為系統(tǒng)下一步改進(jìn)的目標(biāo)。
[1]成 諫.自己動(dòng)手打造智能宿舍[J].無線電,2013(4):12.
[2]徐 瑋.教你搭建自己的智能家居系統(tǒng)[M].北京:機(jī)械工業(yè)出版社,2013.
[3]劉修文.小丁學(xué)智能家居[M].北京:中國電力出版社,2012.
[4]周 洪.智能家居控制系統(tǒng)[M].北京:中國電力出版社,2006.
[5]王再英.智能建筑:樓宇自動(dòng)化系統(tǒng)原理與應(yīng)用[M].北京:電子工業(yè)出版社,2011.
[6]王用倫.智能樓宇技術(shù)[M].北京:人民郵電出版社,2010.
[7]王永華.現(xiàn)場總線技術(shù)及應(yīng)用教程[M].北京:機(jī)械工業(yè)出版社,2012.
[8]魏立峰.單片機(jī)原理與應(yīng)用技術(shù)[M].北京:北京大學(xué)出版社,2006.
[9]彭喜元.單片機(jī)原理及接口技術(shù)[M].北京:人民郵電出版社,2008.
[10]明日科技.C#從入門到精通[M].北京:清華大學(xué)出版社,2012.
[11]劉火良.STm32庫開發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.
[12]王宜懷.嵌入式技術(shù)基礎(chǔ)與實(shí)踐[M].北京:清華大學(xué)出版社,2011.