謝嘉,王世明,曹守啟,潘冬冬,崔家慶
(上海海洋大學(xué)工程學(xué)院,上海201306)
隨著人類社會的進步和經(jīng)濟水平的快速發(fā)展,人們開始追求快速高效的生活。二十一世紀(jì)是一個個性化、自動化、快節(jié)奏的時代。個性化的生活方式和高檔次的居家環(huán)境逐漸進入人們的日常生活,現(xiàn)代人越來越追求家裝人性化、智能化。由此,人們對家居要求的檔次也越來越高,希望居住環(huán)境能達(dá)到舒適化、安全化、智能化和家居生活高效節(jié)能的要求[1-3]。這就促成了智能電子技術(shù)的快速發(fā)展和廣泛應(yīng)用,而智能電子技術(shù)的發(fā)展使得新型智能家居技術(shù)不斷出現(xiàn),這也是家庭生活方式的互聯(lián)網(wǎng)+概念,將為人們的生活提供一種全新的體驗。
智能家居(Smart Home)是指依托住宅平臺,科學(xué)統(tǒng)籌管理家居生活的各個方面,讓家居生活“智慧”起來[4]。這個管理過程的實現(xiàn)要依賴于計算機技術(shù)、網(wǎng)絡(luò)技術(shù)、通信技術(shù)和綜合布線技術(shù)等,把它們統(tǒng)稱為智能家居技術(shù)[5]。在智能家居的設(shè)計規(guī)劃中,其基本目標(biāo)是“以人為本”。該設(shè)計將家庭中各種信息相關(guān)的通信設(shè)備,家用電器,照明設(shè)備和家庭安防裝置等和家居有關(guān)的執(zhí)行裝置,通過有線或無線的方式連接到家庭智能控制系統(tǒng)上進行統(tǒng)籌的管理,或者通過與外界通信實現(xiàn)異地的訪問、監(jiān)視和控制,來進行家庭事務(wù)性的管理,并保持這些設(shè)施與住宅環(huán)境的和諧與協(xié)調(diào)[6-10]。
文中研究設(shè)計了基于Arduino的無線智能家居控制系統(tǒng)。本系統(tǒng)以AVR單片機為控制核心,利用Arduino MEGA2560開發(fā)板以及XBee無線傳輸模塊,設(shè)計實現(xiàn)了一個基于Arduino的智能家居系統(tǒng)(SSBA,Smart home System Based on the Arduino)。其主要功能為用戶可以通過PC上位機等設(shè)備來控制家中的家居執(zhí)行裝置,并且方便系統(tǒng)在控制端和設(shè)備執(zhí)行端進行擴展,同時滿足用戶個性化、智能化的需求,系統(tǒng)要安全、穩(wěn)定、可靠。
Arduino具有突出的優(yōu)點,它能通過各種各樣的傳感器來感知環(huán)境,然后根據(jù)感知到的環(huán)境信息在其內(nèi)部進行處理,得到控制信號來控制燈光、馬達(dá)和其他的家居執(zhí)行裝置,從而來影響、改變環(huán)境。Arduino對信息的處理通過微控制器實現(xiàn),其軟件通過Arduino的編程語言來編寫,具體利用Arduino編程語言(基于Wiring)和Arduino開發(fā)環(huán)境(基于Processing)來實現(xiàn)編程[11]?;贏rduino的系統(tǒng),可以只包含Arduino,也可以包含Arduino和其他一些在PC上運行的軟件,它們之間通過通信(比如Flash,Processing,MaxMSP)來進行協(xié)調(diào)。
從用戶需求角度考慮,基于Arduino的智能無線家居控制系統(tǒng)(SSBA)的設(shè)計方案需要實現(xiàn)以下幾個方面的功能:
1)可以通過手機、上位機控制界面實現(xiàn)對家居執(zhí)行裝置的開啟和關(guān)閉等控制;
2)可以方便地使新的家居執(zhí)行裝置加入網(wǎng)絡(luò)或者離開網(wǎng)絡(luò)從而能夠便于控制中心進行統(tǒng)一控制;
3)通過兩種以上的方式完成對終端家居執(zhí)行裝置的驅(qū)動,從而有利于系統(tǒng)的擴展升級;
4)系統(tǒng)軟件部分具有較好的開放性,為修改和擴展提供便捷,為客戶參與產(chǎn)品修改提供接口,滿足個性化需求;
5)系統(tǒng)要具有滿足家庭應(yīng)用要求的安全性、穩(wěn)定性和可靠性。
為此文中給出的SSBA總體設(shè)計方案如圖1所示。
圖1 SSBA系統(tǒng)總體結(jié)構(gòu)
SSBA系統(tǒng)中上位機用于編寫命令控制界面,方便用戶使用,是SSBA系統(tǒng)中和人交互的終端。主控芯片主要作用是接收上位機的控制命令,翻譯處理后傳輸給數(shù)據(jù)發(fā)射器。數(shù)據(jù)發(fā)射器用于將數(shù)據(jù)發(fā)到空中,一個數(shù)據(jù)發(fā)射器可以給多個數(shù)據(jù)接收器發(fā)布信息。數(shù)據(jù)接收器用來接收從空中發(fā)來的控制信號,傳輸給執(zhí)行裝置。執(zhí)行裝置完成具體的工作,像開關(guān)燈、開關(guān)空調(diào)、開閉窗簾等。
文中設(shè)計的SSBA系統(tǒng)采用ZigBee無線網(wǎng)絡(luò)系統(tǒng)[12-16],應(yīng)用多路、星形拓?fù)浣Y(jié)構(gòu)。網(wǎng)絡(luò)中有一個網(wǎng)絡(luò)協(xié)調(diào)器與上位機和負(fù)載建立網(wǎng)絡(luò),并管理網(wǎng)絡(luò),這樣用戶就可以通過上位機控制界面輕松地發(fā)送控制指令。若干XBee模塊以及Arduino Uno模塊作為終端設(shè)備,也可以只用XBee模塊作為終端節(jié)點,根據(jù)控制信號直接控制家電設(shè)備。
選用基于ZigBee協(xié)議的XBee模塊來進行無線數(shù)據(jù)的傳輸,通過使用ZigBee無線通信協(xié)議來實現(xiàn)控制,相對于有線控制的形式其優(yōu)點如下:
1)施工方面,沒有了復(fù)雜的布線環(huán)節(jié),安裝簡便,只需通過智能家居數(shù)據(jù)發(fā)射器發(fā)射的無線信號來控制家中的電器,燈光等家居執(zhí)行裝置。
2)后期維護方面,由于智能家居的各設(shè)備之間采用無線方式連接,通過相應(yīng)設(shè)備可以快速檢測出問題所在并及時修復(fù)。
3)在未來的設(shè)備擴展與更換方面,由于無線方式是整個區(qū)域的覆蓋,并不是單純的點與點之間的連接,使得新增的設(shè)備可以很容易添加進整個網(wǎng)絡(luò),從而整個系統(tǒng)具備了很好的擴展能力。
根據(jù)上節(jié)確定的SSBA系統(tǒng)設(shè)計方案,該系統(tǒng)硬件部分主要包括上位機人機交互系統(tǒng)、主控中心監(jiān)控系統(tǒng)、無線通信系統(tǒng)和安裝在執(zhí)行裝置上的微處理控制系統(tǒng)等4個主要組成部分。具體的硬件設(shè)備為上位機、Arduino MEGA2560、Arduino XBee擴展板、XBee模塊、XBee適配器、Arduino Uno和執(zhí)行裝置及其配套的硬件電路。SSBA系統(tǒng)硬件系統(tǒng)圖如圖2所示。
圖2 SSBA系統(tǒng)硬件系統(tǒng)圖
該部分硬件承擔(dān)人機交互的功能,構(gòu)成上位機人機交互系統(tǒng)。上位機與Arduino MEGA2560通過USB轉(zhuǎn)串口數(shù)據(jù)線連接,選用CH340轉(zhuǎn)接芯片的數(shù)據(jù)線。在串口方式下,CH340提供常用的MODEM聯(lián)絡(luò)信號,用于為計算機擴展異步串口,或者將普通的串口設(shè)備直接升級到USB總線。
Arduino MEGA2560上有4個串口,其中一個串口用于上位機給網(wǎng)絡(luò)協(xié)調(diào)器發(fā)控制指令,剩下3個串口一個預(yù)留用于接收手機發(fā)來的控制信號,另一個預(yù)留用于接收其他遠(yuǎn)程設(shè)備發(fā)來的控制信號,最后一個備用。此處,在上位機和網(wǎng)絡(luò)協(xié)調(diào)器之間添加了Arduino MEGA2560,具有以下優(yōu)點:一方面運用Arduino MEGA2560的4串口可以接收來自3個不同控制設(shè)備的控制信號,再將其傳輸給網(wǎng)絡(luò)協(xié)調(diào)器,實現(xiàn)智能家居的多重化控制效果。另一方面Arduino MEGA2560可輸出3.3 V電壓,這樣就能與用3.3 V電壓進行供電的XBee模塊進行兼容,簡化了系統(tǒng),提高了系統(tǒng)的穩(wěn)定性和可靠性。
該部分硬件構(gòu)成了整個系統(tǒng)的網(wǎng)絡(luò)協(xié)調(diào)器,是SSBA的主控中心監(jiān)控系統(tǒng)。主控中心監(jiān)控系統(tǒng)的主要功能是:進行網(wǎng)絡(luò)初始化,建立一個新的網(wǎng)絡(luò),在網(wǎng)絡(luò)建成后運行新網(wǎng)絡(luò)。然后,該系統(tǒng)的網(wǎng)絡(luò)協(xié)調(diào)器隨時監(jiān)聽、響應(yīng)其它終端節(jié)點的加入網(wǎng)絡(luò)請求。最后,在終端設(shè)備加入網(wǎng)絡(luò)后,主控中心監(jiān)控系統(tǒng)即可將上位機中的控制狀態(tài)命令發(fā)送至終端設(shè)備,從而進行相關(guān)設(shè)備的控制。
文中加上了Arduino XBee擴展板,方便實現(xiàn)Arduino MEGA2560與XBee模塊進行串行通信。這樣通過Arduino XBee擴展板就可以直接將XBee模塊裝于Arduino MEGA 2560上,同時也解決了XBee模塊的供電問題。
XBee終端用來接收由網(wǎng)絡(luò)協(xié)調(diào)器從空中發(fā)來的控制信號,這部分硬件最終實現(xiàn)無線通信系統(tǒng)的功能。該XBee終端可以配置成兩種形式:即路由模塊和ZigBee終端模塊。當(dāng)此XBee模塊配置成路由模塊時,其接收來自網(wǎng)絡(luò)協(xié)調(diào)器的無線控制命令,該路由模塊不會進入睡眠模式,這樣有助于我進行硬件調(diào)試。而當(dāng)此XBee模塊配置成ZigBee終端模塊時,它會自動進入睡眠模式,只有當(dāng)父節(jié)點對它進行喚醒后才會進入運行模式,這樣就能真正體現(xiàn)其低功耗的價值,同時增加了設(shè)備運行的安全性。
在XBee終端配置了XBee adapter XBee USB適配器,給XBee模塊供電、引出模塊A/D和串口管腳,方便XBee終端模塊與其他MCU模塊進行通信以及進行相關(guān)控制的執(zhí)行。
Arduino Uno在系統(tǒng)中是命令的執(zhí)行裝置,它為系統(tǒng)的擴展留下了很大的空間,該部分硬件實現(xiàn)安裝在執(zhí)行裝置上的微處理控制系統(tǒng)的功能。SSBA系統(tǒng)執(zhí)行裝置部分組成如圖3所示。
圖3 SSBA系統(tǒng)執(zhí)行裝置部分組成
圖3中Arduino Uno將獲得的針對執(zhí)行裝置的控制命令發(fā)送給驅(qū)動電路,由驅(qū)動電路去控制主電路,主電路上連接著執(zhí)行裝置,從而使執(zhí)行裝置按照指令的要求運行。主電路和執(zhí)行裝置中的電壓和電流一般都較大,而Arduino Uno及其前面的其他SSBA系統(tǒng)電路都只能承受較小的電壓和電流,因此在驅(qū)動電路和主電路的連接處,設(shè)置了電氣隔離,本文系統(tǒng)采用光電隔離方法來實現(xiàn)。
根據(jù)上節(jié)的SSBA系統(tǒng)硬件設(shè)計,系統(tǒng)的軟件運行流程如圖4所示。系統(tǒng)運行開始后,由上位機給Arduino MEGA2560傳輸數(shù)據(jù),Arduino MEGA2560接收上位機傳來的控制命令,進行處理后傳給網(wǎng)絡(luò)協(xié)調(diào)器,網(wǎng)絡(luò)協(xié)調(diào)器將控制信號播放到空中。然后XBee終端接收從空中傳來的控制信號,處理后傳給Arduino Uno,Arduino Uno將獲得的控制命令發(fā)送給驅(qū)動電路,由驅(qū)動電路去控制主電路,從而使連接在主電路上的執(zhí)行裝置按照指令的要求運行。
圖4 SSBA系統(tǒng)運行流程框圖
Arduino MEGA和XBee模塊(網(wǎng)絡(luò)系統(tǒng)調(diào)器)的運行流程框圖如圖5和圖6所示。Arduino MEGA作用是接收來自上位機的控制命令并將其傳輸給XBee模塊(網(wǎng)絡(luò)協(xié)調(diào)器),XBee模塊(網(wǎng)絡(luò)系統(tǒng)調(diào)器)作用是接收來自Arduino MEGA的控制命令并將數(shù)據(jù)發(fā)到空中。
XBee終端運行流程框圖和Arduino Uno運行流程框圖如圖7和圖8所示。
圖5 Arduino MEGA運行流程框圖
圖6 XBee模塊運行流程框圖
圖7 XBee終端運行流程框圖
圖8 Arduino Uno運行流程框圖
在SSBA系統(tǒng)中,XBee終端作為無線數(shù)據(jù)透傳接收端,接收透傳數(shù)據(jù)并將其發(fā)受給Arduino Uno板。Arduino Uno用來對串口來的數(shù)據(jù)進行判斷,然后將命令發(fā)送到執(zhí)行裝置的驅(qū)動電路,使設(shè)備按要求運行,由Arduino Uno來連接執(zhí)行裝置為系統(tǒng)的擴展留下了很大的空間。
通過上述4個部分的運行可以完成SSBA整個系統(tǒng)的運作,完成指令的傳輸、播放、接收和執(zhí)行,以滿足用戶的要求。
XBee模塊支持AT固件(透傳模式)和API固件兩種模式,本文選用AT固件(透傳模式)。當(dāng)操作于AT固件模式時,XBee模塊可以看作是串口線的取代,所有的串口數(shù)據(jù)通過DIN管腳排隊等待XBee模塊RF發(fā)送寄存器發(fā)送。當(dāng)XBee模塊RF接收寄存器接收數(shù)據(jù)后,數(shù)據(jù)就通過DO管腳發(fā)送出去。模塊的參數(shù)是可以通過AT命令接口配置。本文設(shè)計直接利用Digi公司為XBee模塊配備的X-CTU軟件對模塊進行的配置,簡化了配置過程。在具體XBee模塊配置時做到了如下幾點:
1)同一個網(wǎng)絡(luò)中的設(shè)備必須符合同一個協(xié)議棧規(guī)范,在設(shè)備加入網(wǎng)絡(luò)之前,首先需要確認(rèn)協(xié)議棧規(guī)范的ID。為此本文對“特定網(wǎng)絡(luò)”規(guī)范ID、ZigBee協(xié)議棧規(guī)范的ID和ZigBee PRO協(xié)議棧規(guī)范的ID分別設(shè)置了不同的編號。
2)數(shù)據(jù)無線傳送的方式可以設(shè)置為廣播傳送,也可以設(shè)置為特定設(shè)備數(shù)據(jù)傳送,這需要對DH、DL中的數(shù)據(jù)進行確認(rèn)設(shè)置。
3)XBee模塊(網(wǎng)絡(luò)系統(tǒng)調(diào)器)和XBee終端節(jié)點設(shè)置要一致,保證數(shù)據(jù)發(fā)送能夠準(zhǔn)確接收。
4)在AT命令中對EE、KY進行設(shè)置,為系統(tǒng)建立了一個安全機制,這樣當(dāng)有其他ZigBee網(wǎng)絡(luò)中的設(shè)備進入網(wǎng)絡(luò)時,將不能竊取網(wǎng)絡(luò)中的相關(guān)數(shù)據(jù),并且不會對網(wǎng)絡(luò)造成干擾。
Arduino語言建立在C/C++基礎(chǔ)上,它把AVR單片機相關(guān)的一些參數(shù)設(shè)置都進行了函數(shù)化,這樣更便于小系統(tǒng)的開發(fā)??梢杂肁VR-C代碼直接在IDE中對Arduino MEGA或Arduino Uno進行編譯下載。
以下是本文設(shè)計的系統(tǒng)應(yīng)用到的函數(shù)解釋:
pinMode(pin,mode),數(shù)字IO口輸入輸出模式定義函數(shù),pin表示為0~13,mode表示為INPUT或OUTPUT。
digitalWrite(pin,value),數(shù)字IO口輸出電平定義函數(shù),pin表示為 0~13,value表示為 HIGH 或LOW,比如定義HIGH可以驅(qū)動執(zhí)行裝置。
Serial.begin(speed),串口定義波特率函數(shù),speed表示波特率,如9 600,19 200等。
int Serial.available(),判斷緩沖器狀態(tài)。
int Serial.read(),讀串口并返回收到參數(shù)。
Serial.print(),串口數(shù)據(jù)輸出。
根據(jù)上面的設(shè)計思想,系統(tǒng)實現(xiàn)的Arduino執(zhí)行程序如下:
SSBA系統(tǒng)利用Arduino MEGA2560開發(fā)板以及基于ZigBee協(xié)議的XBee無線傳輸模塊實現(xiàn)了智能家居系統(tǒng)的功能,系統(tǒng)能夠?qū)崿F(xiàn)通過上位機來控制家中家居執(zhí)行裝置的目的。本文設(shè)計和實現(xiàn)的SSBA系統(tǒng)具有如下優(yōu)點:
1)使用Arduino MEGA2560使得該系統(tǒng)更具簡便性,可控性較強,預(yù)留兩個串口,為系統(tǒng)添加其他外控設(shè)備做準(zhǔn)備,提高了系統(tǒng)的擴展性能。
2)使用Arduino編程語言編程,該語言是模塊化的編程,使得對程序流程的理解變得簡易,同時為以后的修改和擴展提供較大的方便。
3)在系統(tǒng)中增加了ZigBee組網(wǎng)的安全機制,提高了系統(tǒng)的安全性和唯一性;
4)硬件連接簡單,經(jīng)多次測試證明系統(tǒng)具有良好的穩(wěn)定性和可靠性,不會出現(xiàn)不定性受干擾現(xiàn)象。
SSBA系統(tǒng)具有較強的實用性和進一步擴展的功能,適合家居使用,通過擴展可以實現(xiàn)遠(yuǎn)程控制,同時將家居的所有設(shè)備都納入控制范圍。
[1]朱敏玲,李寧.智能家居發(fā)展現(xiàn)狀及未來淺析[J].電視技術(shù),2015,39(4):82-85.
[2]楊揚.智能家居系統(tǒng)應(yīng)用的研究[J].電子測試,2016(14):108-109.
[3]呂莉,羅杰.智能家居及其發(fā)展趨勢[J].計算機與現(xiàn)代化,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]林晶,王強.基于組態(tài)軟件的智能家居監(jiān)控系統(tǒng)研究[J].吉林建筑大學(xué)學(xué)報,2015,32(6):56-58.
[7]張博群.基于PLC智能家居系統(tǒng)的研究與設(shè)計[J].無線互聯(lián)網(wǎng)科技,2016(10):60-61.
[8]徐愛明.基于PLC的智能家居控制系統(tǒng)[J].電子測試,2016(6):11-15.
[9]牟宏均.基于PLC的智能家居遠(yuǎn)程監(jiān)控系統(tǒng)實現(xiàn)[J].自動化與儀器儀表,2016(7):266-267.
[10]羅昔柳,邊洪瑞,秦迎梅.基于三菱PLC的智能家居服務(wù)系統(tǒng)設(shè)計[J].控制工程,2009,16(11):44-48.
[11]Michael MR.Arduino從基礎(chǔ)到實踐[M].楊繼志,郭敬,譯.北京:電子工業(yè)出版社,2013.
[12]喬季軍,王德宇,李玉琳,等.融合ZigBee與WiFi無線技術(shù)智能家居系統(tǒng)的設(shè)計[J].自動化儀表,2015,36(12):48-51.
[13]井娥林.ZigBee路由算法的改進及在智能家居中的應(yīng)用[J].計算機與現(xiàn)代化,2016(12):92-96.
[14]劉禮建,張廣明.基于ZigBee無線技術(shù)的智能家居管理系統(tǒng)設(shè)計[J].計算機技術(shù)與發(fā)展,2011,21(12):250-253.
[15]王一棋,何麗莉,胡成全,等.基于ZigBee和Internet的無線智能家居網(wǎng)關(guān)系統(tǒng)[J].吉林大學(xué)學(xué)報:理學(xué)版,2015,53(2):302-306.
[16]李泊鋒,王亞剛.基于ZigBee無線技術(shù)的智能家居系統(tǒng)設(shè)計[J].電子科技,2016,29(3):86-89.