謝嘉,王世明,曹守啟,潘冬冬,崔家慶
(上海海洋大學工程學院,上海201306)
隨著人類社會的進步和經濟水平的快速發展,人們開始追求快速高效的生活。二十一世紀是一個個性化、自動化、快節奏的時代。個性化的生活方式和高檔次的居家環境逐漸進入人們的日常生活,現代人越來越追求家裝人性化、智能化。由此,人們對家居要求的檔次也越來越高,希望居住環境能達到舒適化、安全化、智能化和家居生活高效節能的要求[1-3]。這就促成了智能電子技術的快速發展和廣泛應用,而智能電子技術的發展使得新型智能家居技術不斷出現,這也是家庭生活方式的互聯網+概念,將為人們的生活提供一種全新的體驗。
智能家居(Smart Home)是指依托住宅平臺,科學統籌管理家居生活的各個方面,讓家居生活“智慧”起來[4]。這個管理過程的實現要依賴于計算機技術、網絡技術、通信技術和綜合布線技術等,把它們統稱為智能家居技術[5]。在智能家居的設計規劃中,其基本目標是“以人為本”。該設計將家庭中各種信息相關的通信設備,家用電器,照明設備和家庭安防裝置等和家居有關的執行裝置,通過有線或無線的方式連接到家庭智能控制系統上進行統籌的管理,或者通過與外界通信實現異地的訪問、監視和控制,來進行家庭事務性的管理,并保持這些設施與住宅環境的和諧與協調[6-10]。
文中研究設計了基于Arduino的無線智能家居控制系統。本系統以AVR單片機為控制核心,利用Arduino MEGA2560開發板以及XBee無線傳輸模塊,設計實現了一個基于Arduino的智能家居系統(SSBA,Smart home System Based on the Arduino)。其主要功能為用戶可以通過PC上位機等設備來控制家中的家居執行裝置,并且方便系統在控制端和設備執行端進行擴展,同時滿足用戶個性化、智能化的需求,系統要安全、穩定、可靠。
Arduino具有突出的優點,它能通過各種各樣的傳感器來感知環境,然后根據感知到的環境信息在其內部進行處理,得到控制信號來控制燈光、馬達和其他的家居執行裝置,從而來影響、改變環境。Arduino對信息的處理通過微控制器實現,其軟件通過Arduino的編程語言來編寫,具體利用Arduino編程語言(基于Wiring)和Arduino開發環境(基于Processing)來實現編程[11]。基于Arduino的系統,可以只包含Arduino,也可以包含Arduino和其他一些在PC上運行的軟件,它們之間通過通信(比如Flash,Processing,MaxMSP)來進行協調。
從用戶需求角度考慮,基于Arduino的智能無線家居控制系統(SSBA)的設計方案需要實現以下幾個方面的功能:
1)可以通過手機、上位機控制界面實現對家居執行裝置的開啟和關閉等控制;
2)可以方便地使新的家居執行裝置加入網絡或者離開網絡從而能夠便于控制中心進行統一控制;
3)通過兩種以上的方式完成對終端家居執行裝置的驅動,從而有利于系統的擴展升級;
4)系統軟件部分具有較好的開放性,為修改和擴展提供便捷,為客戶參與產品修改提供接口,滿足個性化需求;
5)系統要具有滿足家庭應用要求的安全性、穩定性和可靠性。
為此文中給出的SSBA總體設計方案如圖1所示。

圖1 SSBA系統總體結構
SSBA系統中上位機用于編寫命令控制界面,方便用戶使用,是SSBA系統中和人交互的終端。主控芯片主要作用是接收上位機的控制命令,翻譯處理后傳輸給數據發射器。數據發射器用于將數據發到空中,一個數據發射器可以給多個數據接收器發布信息。數據接收器用來接收從空中發來的控制信號,傳輸給執行裝置。執行裝置完成具體的工作,像開關燈、開關空調、開閉窗簾等。
文中設計的SSBA系統采用ZigBee無線網絡系統[12-16],應用多路、星形拓撲結構。網絡中有一個網絡協調器與上位機和負載建立網絡,并管理網絡,這樣用戶就可以通過上位機控制界面輕松地發送控制指令。若干XBee模塊以及Arduino Uno模塊作為終端設備,也可以只用XBee模塊作為終端節點,根據控制信號直接控制家電設備。
選用基于ZigBee協議的XBee模塊來進行無線數據的傳輸,通過使用ZigBee無線通信協議來實現控制,相對于有線控制的形式其優點如下:
1)施工方面,沒有了復雜的布線環節,安裝簡便,只需通過智能家居數據發射器發射的無線信號來控制家中的電器,燈光等家居執行裝置。
2)后期維護方面,由于智能家居的各設備之間采用無線方式連接,通過相應設備可以快速檢測出問題所在并及時修復。
3)在未來的設備擴展與更換方面,由于無線方式是整個區域的覆蓋,并不是單純的點與點之間的連接,使得新增的設備可以很容易添加進整個網絡,從而整個系統具備了很好的擴展能力。
根據上節確定的SSBA系統設計方案,該系統硬件部分主要包括上位機人機交互系統、主控中心監控系統、無線通信系統和安裝在執行裝置上的微處理控制系統等4個主要組成部分。具體的硬件設備為上位機、Arduino MEGA2560、Arduino XBee擴展板、XBee模塊、XBee適配器、Arduino Uno和執行裝置及其配套的硬件電路。SSBA系統硬件系統圖如圖2所示。

圖2 SSBA系統硬件系統圖
該部分硬件承擔人機交互的功能,構成上位機人機交互系統。上位機與Arduino MEGA2560通過USB轉串口數據線連接,選用CH340轉接芯片的數據線。在串口方式下,CH340提供常用的MODEM聯絡信號,用于為計算機擴展異步串口,或者將普通的串口設備直接升級到USB總線。
Arduino MEGA2560上有4個串口,其中一個串口用于上位機給網絡協調器發控制指令,剩下3個串口一個預留用于接收手機發來的控制信號,另一個預留用于接收其他遠程設備發來的控制信號,最后一個備用。此處,在上位機和網絡協調器之間添加了Arduino MEGA2560,具有以下優點:一方面運用Arduino MEGA2560的4串口可以接收來自3個不同控制設備的控制信號,再將其傳輸給網絡協調器,實現智能家居的多重化控制效果。另一方面Arduino MEGA2560可輸出3.3 V電壓,這樣就能與用3.3 V電壓進行供電的XBee模塊進行兼容,簡化了系統,提高了系統的穩定性和可靠性。
該部分硬件構成了整個系統的網絡協調器,是SSBA的主控中心監控系統。主控中心監控系統的主要功能是:進行網絡初始化,建立一個新的網絡,在網絡建成后運行新網絡。然后,該系統的網絡協調器隨時監聽、響應其它終端節點的加入網絡請求。最后,在終端設備加入網絡后,主控中心監控系統即可將上位機中的控制狀態命令發送至終端設備,從而進行相關設備的控制。
文中加上了Arduino XBee擴展板,方便實現Arduino MEGA2560與XBee模塊進行串行通信。這樣通過Arduino XBee擴展板就可以直接將XBee模塊裝于Arduino MEGA 2560上,同時也解決了XBee模塊的供電問題。
XBee終端用來接收由網絡協調器從空中發來的控制信號,這部分硬件最終實現無線通信系統的功能。該XBee終端可以配置成兩種形式:即路由模塊和ZigBee終端模塊。當此XBee模塊配置成路由模塊時,其接收來自網絡協調器的無線控制命令,該路由模塊不會進入睡眠模式,這樣有助于我進行硬件調試。而當此XBee模塊配置成ZigBee終端模塊時,它會自動進入睡眠模式,只有當父節點對它進行喚醒后才會進入運行模式,這樣就能真正體現其低功耗的價值,同時增加了設備運行的安全性。
在XBee終端配置了XBee adapter XBee USB適配器,給XBee模塊供電、引出模塊A/D和串口管腳,方便XBee終端模塊與其他MCU模塊進行通信以及進行相關控制的執行。
Arduino Uno在系統中是命令的執行裝置,它為系統的擴展留下了很大的空間,該部分硬件實現安裝在執行裝置上的微處理控制系統的功能。SSBA系統執行裝置部分組成如圖3所示。

圖3 SSBA系統執行裝置部分組成
圖3中Arduino Uno將獲得的針對執行裝置的控制命令發送給驅動電路,由驅動電路去控制主電路,主電路上連接著執行裝置,從而使執行裝置按照指令的要求運行。主電路和執行裝置中的電壓和電流一般都較大,而Arduino Uno及其前面的其他SSBA系統電路都只能承受較小的電壓和電流,因此在驅動電路和主電路的連接處,設置了電氣隔離,本文系統采用光電隔離方法來實現。
根據上節的SSBA系統硬件設計,系統的軟件運行流程如圖4所示。系統運行開始后,由上位機給Arduino MEGA2560傳輸數據,Arduino MEGA2560接收上位機傳來的控制命令,進行處理后傳給網絡協調器,網絡協調器將控制信號播放到空中。然后XBee終端接收從空中傳來的控制信號,處理后傳給Arduino Uno,Arduino Uno將獲得的控制命令發送給驅動電路,由驅動電路去控制主電路,從而使連接在主電路上的執行裝置按照指令的要求運行。

圖4 SSBA系統運行流程框圖
Arduino MEGA和XBee模塊(網絡系統調器)的運行流程框圖如圖5和圖6所示。Arduino MEGA作用是接收來自上位機的控制命令并將其傳輸給XBee模塊(網絡協調器),XBee模塊(網絡系統調器)作用是接收來自Arduino MEGA的控制命令并將數據發到空中。
XBee終端運行流程框圖和Arduino Uno運行流程框圖如圖7和圖8所示。

圖5 Arduino MEGA運行流程框圖

圖6 XBee模塊運行流程框圖

圖7 XBee終端運行流程框圖

圖8 Arduino Uno運行流程框圖
在SSBA系統中,XBee終端作為無線數據透傳接收端,接收透傳數據并將其發受給Arduino Uno板。Arduino Uno用來對串口來的數據進行判斷,然后將命令發送到執行裝置的驅動電路,使設備按要求運行,由Arduino Uno來連接執行裝置為系統的擴展留下了很大的空間。
通過上述4個部分的運行可以完成SSBA整個系統的運作,完成指令的傳輸、播放、接收和執行,以滿足用戶的要求。
XBee模塊支持AT固件(透傳模式)和API固件兩種模式,本文選用AT固件(透傳模式)。當操作于AT固件模式時,XBee模塊可以看作是串口線的取代,所有的串口數據通過DIN管腳排隊等待XBee模塊RF發送寄存器發送。當XBee模塊RF接收寄存器接收數據后,數據就通過DO管腳發送出去。模塊的參數是可以通過AT命令接口配置。本文設計直接利用Digi公司為XBee模塊配備的X-CTU軟件對模塊進行的配置,簡化了配置過程。在具體XBee模塊配置時做到了如下幾點:
1)同一個網絡中的設備必須符合同一個協議棧規范,在設備加入網絡之前,首先需要確認協議棧規范的ID。為此本文對“特定網絡”規范ID、ZigBee協議棧規范的ID和ZigBee PRO協議棧規范的ID分別設置了不同的編號。
2)數據無線傳送的方式可以設置為廣播傳送,也可以設置為特定設備數據傳送,這需要對DH、DL中的數據進行確認設置。
3)XBee模塊(網絡系統調器)和XBee終端節點設置要一致,保證數據發送能夠準確接收。
4)在AT命令中對EE、KY進行設置,為系統建立了一個安全機制,這樣當有其他ZigBee網絡中的設備進入網絡時,將不能竊取網絡中的相關數據,并且不會對網絡造成干擾。
Arduino語言建立在C/C++基礎上,它把AVR單片機相關的一些參數設置都進行了函數化,這樣更便于小系統的開發。可以用AVR-C代碼直接在IDE中對Arduino MEGA或Arduino Uno進行編譯下載。
以下是本文設計的系統應用到的函數解釋:
pinMode(pin,mode),數字IO口輸入輸出模式定義函數,pin表示為0~13,mode表示為INPUT或OUTPUT。
digitalWrite(pin,value),數字IO口輸出電平定義函數,pin表示為 0~13,value表示為 HIGH 或LOW,比如定義HIGH可以驅動執行裝置。
Serial.begin(speed),串口定義波特率函數,speed表示波特率,如9 600,19 200等。
int Serial.available(),判斷緩沖器狀態。
int Serial.read(),讀串口并返回收到參數。
Serial.print(),串口數據輸出。
根據上面的設計思想,系統實現的Arduino執行程序如下:


SSBA系統利用Arduino MEGA2560開發板以及基于ZigBee協議的XBee無線傳輸模塊實現了智能家居系統的功能,系統能夠實現通過上位機來控制家中家居執行裝置的目的。本文設計和實現的SSBA系統具有如下優點:
1)使用Arduino MEGA2560使得該系統更具簡便性,可控性較強,預留兩個串口,為系統添加其他外控設備做準備,提高了系統的擴展性能。
2)使用Arduino編程語言編程,該語言是模塊化的編程,使得對程序流程的理解變得簡易,同時為以后的修改和擴展提供較大的方便。
3)在系統中增加了ZigBee組網的安全機制,提高了系統的安全性和唯一性;
4)硬件連接簡單,經多次測試證明系統具有良好的穩定性和可靠性,不會出現不定性受干擾現象。
SSBA系統具有較強的實用性和進一步擴展的功能,適合家居使用,通過擴展可以實現遠程控制,同時將家居的所有設備都納入控制范圍。
[1]朱敏玲,李寧.智能家居發展現狀及未來淺析[J].電視技術,2015,39(4):82-85.
[2]楊揚.智能家居系統應用的研究[J].電子測試,2016(14):108-109.
[3]呂莉,羅杰.智能家居及其發展趨勢[J].計算機與現代化,2007(11):18-20.
[4]Bae CS,Yoo JH,Kang KC,et al.Home server for home digitalservice environments [J].IEEE Transactions on Consumer Electronics,2003,49(4):1129-1135.
[5]Lian KY,Hsiao SJ,Sung WT.Intelligent multisensor control system based on innovative technology integration via ZigBee and Wi-Fi networks[J].Journal of Network and Computer Applications,2012,36(2):756-767.
[6]林晶,王強.基于組態軟件的智能家居監控系統研究[J].吉林建筑大學學報,2015,32(6):56-58.
[7]張博群.基于PLC智能家居系統的研究與設計[J].無線互聯網科技,2016(10):60-61.
[8]徐愛明.基于PLC的智能家居控制系統[J].電子測試,2016(6):11-15.
[9]牟宏均.基于PLC的智能家居遠程監控系統實現[J].自動化與儀器儀表,2016(7):266-267.
[10]羅昔柳,邊洪瑞,秦迎梅.基于三菱PLC的智能家居服務系統設計[J].控制工程,2009,16(11):44-48.
[11]Michael MR.Arduino從基礎到實踐[M].楊繼志,郭敬,譯.北京:電子工業出版社,2013.
[12]喬季軍,王德宇,李玉琳,等.融合ZigBee與WiFi無線技術智能家居系統的設計[J].自動化儀表,2015,36(12):48-51.
[13]井娥林.ZigBee路由算法的改進及在智能家居中的應用[J].計算機與現代化,2016(12):92-96.
[14]劉禮建,張廣明.基于ZigBee無線技術的智能家居管理系統設計[J].計算機技術與發展,2011,21(12):250-253.
[15]王一棋,何麗莉,胡成全,等.基于ZigBee和Internet的無線智能家居網關系統[J].吉林大學學報:理學版,2015,53(2):302-306.
[16]李泊鋒,王亞剛.基于ZigBee無線技術的智能家居系統設計[J].電子科技,2016,29(3):86-89.