沈斌濤,周源源
(蘇州大學 應用技術學院,江蘇 蘇州215325)
生活質量的提高使人們對住宅環境的要求也越來越高,從而促成了智能家居技術的誕生與發展。智能家居本質就是通過計算機網絡技術和現代控制技術建立一個家庭綜合服務與管理集成系統,包含家庭安防系統、自動化系統和家庭網絡系統。整個系統實現了對信息的采集、輸入、輸出以及集中控制,以實現家居智能化、便捷化、高效化、舒適化的目的。
這套智能家居控制系統主要基于51單片機平臺,可以實現家中燈光、家電等設備的控制,并且支持無線及有線的接入。它完全開源,方便自行擴展系統。系統由控制主機、燈光控制模塊、插座控制模塊、ID卡門禁模塊、環境信息感知模塊、藍牙通訊模塊、紅外發射模塊以及電源和集線器構成。系統實物圖見圖1。

圖1 系統整體實物
綜合供電與通訊要求的考慮,主機通過收發令牌控制總線上各從機的數據收發,從而避免總線數據的擁堵及干擾??偩€采用四線結構連接各模塊設備,對于有線通訊的模塊實行總線供電。但是總線線材存在內阻,模塊獲得的實際電壓會隨著用電器電流波動而發生波動,從而引起單片機重啟或者發生程序跑飛等狀況。為了解決這一問題,使用了LM7805三端穩壓管來實現對模塊核心電路的穩壓(圖2)。同時將總線電壓提升到了12V,這樣理論上可以實現總線在200mA下正常供電。LM7805輸入輸出端也加入了濾波電容,從而獲得高質量的直流電。

圖2 系統電源轉換順序示意
參照PROFIBUS總線的數據結構,考慮系統數據量較小的實際情況,設計了一套簡化的總線通訊結構,見圖3、圖4。

圖3 數據鏈路層數據幀結構

圖4 數據包基礎構成
其中,目標地址用于記錄接收此數據的設備地址,數據長度用于記錄數據包的長度。數據包中記錄著相應的數據,操作碼用于標記本數據包的用途,操作數則是用于具體的操作。不同的操作碼對應者不同的操作,程序通過識別操作碼的值,判斷數據包的類型并執行相應的操作。
由于串口特殊的雙線全雙工收發模式,主機在同一時間只可以接收一個從機發出的數據,為了避免總線的擁堵,保證同一時間只有一對設備進行通訊,所以選用令牌對總線進行控制。令牌由主機發出,只有接收到令牌的從機才可以向主機發送數據(圖5)。

圖5 令牌控制基本原理
主基本操作操作方法為:主機發出空令牌,從機接收到空令牌后如果有需要進行數據發送,則直接發送數據,發送完成就結束,無需回復令牌。如果無數據發送,則將空令牌第四字節改為本機地址后發出。主機在發出令牌后自動對總線進行監聽,等待數據接收。當接收到的數據幀不是令牌時,根據操作碼的類型做出相應動作。如果接收到的依然是令牌,則知道該從機無數據,主機會向下一個地址發送令牌,按照地址順序不斷循環,從而實現對總線的控制。
在實際運行中發現,對很多簡單的指令如果都采用普通操作碼進行操作會比較累贅。于是我們在普通操作碼基礎上規定了新的快速操作碼。
燈光控制模塊用于實現對室內燈光的本地開關及遠程開關。面板由一個指示燈和一個薄膜按鍵組成。指示燈顯示當前繼電器通斷狀態,即燈光狀態。模塊開關用于實現燈光的本地控制(圖6)。

圖6 模塊內部電氣連接關系
使用繼電器模塊可以完成低壓直流電路對高壓交流電路的開關控制,實現對家電的通斷電控制。繼電器模塊自帶反向保護等功能,簡化開發過程。模塊專業的PCB設計可以保證系統具有良好的可靠性和安全性。
插座控制模塊用于控制插在插座上用電器是否通電,從而實現遠程對這些用電器的電源進行控制。插座模塊控制的設備一般功率都比較大,安全期間所選用的繼電器模塊自帶光耦隔離,避免干擾。雙路繼電器模塊可以完成對兩個插座的控制,使得插座面板上的三孔和兩孔插座單獨進行通斷操作。
模塊面板包含刷卡器、指示燈1、指示燈2。其中刷卡器內嵌入有線圈,用于和ID卡進行通訊。指示燈1顯示當前狀態。紅色表示當前門處于上鎖狀態,反之為綠色。指示燈2表示當前讀卡狀態。藍色表示等待讀卡。將ID卡靠近,如果ID有效,指示燈2顯示綠色,并伴隨一聲蜂鳴器長響。之后門鎖狀態取反,指示燈1顯示與刷卡前相反顏色。如果ID卡無效,指示燈2顯示紅色,并伴有兩聲短暫蜂鳴器響聲。門狀態不變,指示燈1顯示不變。當模塊接收到遠程鎖門指令后,蜂鳴器發出3聲短暫響聲,之后門鎖進入鎖狀態,指示燈1顯示紅色。
環境信息感知模塊可以實現對環境信息的感知。模塊中包含溫度傳感器、濕度傳感器以及氣壓傳感器??梢垣@得環境的溫度、濕度以及氣壓數據。為了實現精確的濕度、氣壓和溫度數據,我們分別選用了GY-65氣壓模塊和DHT11濕度模塊。
該模塊用于實現手機對系統中各設備的無線控制。手機端安裝客戶端后,通過藍牙與該模塊配對。配對后通過客戶端軟件上的按鈕發送相關代碼,模塊進行處理后變成模塊中通用的指令發送給主機,并采取相應動作。軟件功能類似PC端超級終端或串口助手功能,我們使用了其中的按鍵 模式。該模式提供了9個可定義按鍵。按下相應按鍵發送對應字符串或者ASC碼,對按鍵進行定義后可以實現對系統中其他模塊的控制。
紅外遙控模塊可以實現對家中紅外遙控設備的控制,拓展系統控制范圍。模塊主要功能是將主機發出的控制指令翻譯為家電對應的紅外碼,并通過自帶的紅外發光二極管發送給家電。這里我們以運用日本NEC的制式。當發射器按鍵按下后,遙控器發出經過調制的38kHz紅外方波,這些高低點評構成紅外碼。
為了實現對整個系統的調度與控制,就需要一個控制主機用于對整個系統進行控制,于是我們設計了這樣一個主機。主機自身帶有LCD顯示屏,可以顯示系統所有模塊的狀態信息。主機同時帶有USB接口,可以連接電腦并使用PC端控制軟件實現對系統的控制及監視。主機程序流程圖如圖7。
串口總線雖然沒有CAN總線運用廣泛,但對于單片機而言,依靠自帶串口功能很容易實現。工作方式2波特率固定,工作方式3波特率可調。所謂9位串口就是串口每次發送或者接收的數據都是9位。串口數據的前八位都通過寄存器SBUF進行發送或接收。第9位數據則存放在SCON中的RB8位或TB8位。

圖7 主機程序流程
串口工作在方式3時,單片機會自動進入多機通訊模式。發送的數據均為9位。最高位也就是第9位是數據和地址的標志位。第9位為1時,表示當前發送的是地址,為0時表示當前發送的是數據。所有單片機都會接收地址,并會和自身的地址進行比較。如果比較結果一致,則將Sm2置0,等待接收數據。接收完成后Sm2置1,重新等待接收地址。如果比較結果不一致,則Sm2保持1不變。之后單片機會對第9位為0的所有數據自動忽略。即使收到也不會產生接收中斷,從而實現多機通訊(圖8)。

圖8 數據發送、接收程序流程
發送函數用于將數據打包后發送出去。函數會自動完成數據幀組裝;串口中斷處理函數用于在串口接收到數據產生中斷時做出相應的響應,單片機在產生中斷后自動跳轉到該函數中;牌分配及處理函數用于分配和處理令牌數據。主機在程序中會按照地址順序逐個發送令牌,從機接收的令牌后根據自己的需要發送相應的令牌或者數據給主機。在該函數中主要完成對令牌的分配以及對從機回復的程序做出相應處理。
函數中根據操作碼的不同調用相應的函數實現快速操作??焖俨僮骱瘮涤糜谔幚砜焖俨僮髦噶睢顟B上報函數用于將本機的狀態字節打包成數據幀發送給主機,實現主機對各從機的實時監視。選用了PROTUES平臺進行仿真,在元件庫中直接選擇AT89C51單片機連接后就可以實現仿真。使用軟件自帶的串口工具可以對串口進行實時監控。通過主機的令牌控制,成功避免了主從結構信道擁堵的問題。
智能家居控制系統完成了計劃的所有功能,可以實現本地及遠程的開關量控制和模擬量數據采集。在后期調試過程中發現一些設計缺陷,包括通訊口必須嚴格接線,若將電源線錯誤接入通訊線會造成系統大規模損壞,未來需要重新設計,將TTL電平轉換為其它高電壓電平后接入總線,以避免這一狀況。另外所有接入總線的設備都必須正常供電,若有設備被斷電,會造成總線被強制拉低,引起系統癱瘓,自檢程序也無法檢出錯誤,需要人工檢查。這將會作為系統下一步改進的目標。
[1]成 諫.自己動手打造智能宿舍[J].無線電,2013(4):12.
[2]徐 瑋.教你搭建自己的智能家居系統[M].北京:機械工業出版社,2013.
[3]劉修文.小丁學智能家居[M].北京:中國電力出版社,2012.
[4]周 洪.智能家居控制系統[M].北京:中國電力出版社,2006.
[5]王再英.智能建筑:樓宇自動化系統原理與應用[M].北京:電子工業出版社,2011.
[6]王用倫.智能樓宇技術[M].北京:人民郵電出版社,2010.
[7]王永華.現場總線技術及應用教程[M].北京:機械工業出版社,2012.
[8]魏立峰.單片機原理與應用技術[M].北京:北京大學出版社,2006.
[9]彭喜元.單片機原理及接口技術[M].北京:人民郵電出版社,2008.
[10]明日科技.C#從入門到精通[M].北京:清華大學出版社,2012.
[11]劉火良.STm32庫開發實戰指南[M].北京:機械工業出版社,2013.
[12]王宜懷.嵌入式技術基礎與實踐[M].北京:清華大學出版社,2011.