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