佟源洋,趙鈺,方圓,劉鑫
(1.大連理工大學軟件學院,大連116600;2.中北大學,太原 030051)
TONG Yuan-yang1,ZHAO Yu1,FANG Yuan1,LIU Xin2
(1.School of Software Technology,Dalian University of Technology,Dalian 116600;2.North University of China,Taiyuan 030051)
基于Arduino平臺的智能家居系統模型設計
佟源洋1,趙鈺1,方圓1,劉鑫2
(1.大連理工大學軟件學院,大連116600;2.中北大學,太原030051)
隨著物聯網概念越來越普及,各大互聯網公司例如蘋果、谷歌等加快了智能家居產品推廣進程,未來智能家居系統具有廣泛的應用前景。智能家居系統通過整合計算機技術、嵌入式技術、傳感器技術、網絡通信技術以及自動控制技術,集中安防系統、家電系統、多媒體娛樂等功能于一體,為用戶提供了溫馨舒適、安全便利的生活條件,滿足信息化時代人們追求高品質的生活需求[1]。智能家居在國內正處于發展階段,研究并設計一款能夠滿足人們需求的智能家居系統模型,對智能家居的實際研發及部署具有重要意義[2]。
本文設計了智能家居系統模型,并最終完成了模型實物,為研究智能家居提供了一種設計思路。
智能家居系統模型采用Arduino作為核心控制單元,主要由五個模塊組成,即監測模塊、溫控模塊、網絡模塊、報警模塊和顯示模塊。這五個模塊協調工作,共同實現系統的數據采集、數據存儲、數據處理和設備遠程控制等功能[3]。
監測模塊主要由溫度傳感器、濕度傳感器、煙霧傳感器、火焰傳感器等組成,對家居環境中溫度、濕度和煙霧濃度等環境變量進行采集,并換成數字信號,然后將這些數據提供給Arduino做進一步處理。溫控模塊主要由溫度傳感器、加熱設備和制冷設備共同組成,構成一個閉環溫控子系統,Arduino根據溫度傳感器采集的溫度數據操控加熱和制冷設備,最終將溫度控制在22-24攝氏度范圍內。網絡模塊由ENC28J60和GSM構成,其主要任務是將本模型連接到網絡,然后利用網絡服務平臺Yeelink實現對智能家居模型的監視和控制,以及通過GSM發送短信。報警模塊主要由蜂鳴器、氣體傳感器和人體感應器組成,模型用蜂鳴器模擬室內報警鈴聲,其主要任務是實時監測家居環境安全,當監測到危險氣體或有人闖入時,報警模塊發出警報。顯示模塊由一塊液晶顯示屏組成,其主要任務是將采集到的環境信息顯示到LCD上,將家居環境信息以數字化形式呈現到用戶面前。
系統使用增量式開發,首先實現系統的整體運行,之后逐漸添加功能。本系統每個階段的功能設計如下:
第一階段:通過傳感器對周圍環境進行信號采集,包括溫度測量、濕度測量、光亮度測量、紅外線檢測、煙霧檢測等。第二階段:Arduino控制中心將會對采集到的信號進行安全判定,不符合的將會通過GPRS模塊進行報警,同時接受指令進行門窗的開關,閉環控制系統的溫度控制操作。第三階段:實現將傳感器數據存儲到互聯網,通過手機、網頁查看傳感器數據并發出指令到Arduino控制中心。第四階段:系統實現語音交互功能,使系統具有語音控制功能。
2.1系統硬件設計
系統硬件設計包括帶有處理器的核心板、監測模塊、溫控模塊、網絡模塊、報警模塊和顯示模塊及其電路設計。系統結構框圖如圖1所示:

圖1 智能家居系統模型結構框圖
Arduino開發板對智能家居其他子系統進行控制操作,為用戶提供實時交互服務[4]。通過對開發板進行功能分析,得出核心開發板應滿足以下設計方案:
(1)完成人機交互功能。用戶可通過智能主控制模塊對智能家居系統模型進行整體控制,必定會涉及到人機交互的操作[5],所以為了更好的人性化服務,可在該模塊上提供LCD顯示屏。
(2)完成家電控制以及獲取傳感器信號采集功能。Arduino開發板通過GPIO進行收發數據。
輸入部分的信號包括:環境溫度信號、環境濕度信號、環境光照強度信號、煙霧傳感器輸出信號、紅外信號、網絡數據、遠程指令、火焰傳感器信號。
輸出部分的信號包括:環境溫度、環境濕度、環境光照強度、煙霧指標、報警信息。
(3)及時處理各個模塊的請求,通過中斷方式對不同模塊請求或控制指令進行處理。
Arduino核心開發板UNO上的AVR單片機AT-mega328主要封裝了CPU、存儲器、時鐘和外圍設備等[6],如圖2所示。
Arduino UNO開發板擁有20個GPIO引腳且其中6個引腳具有AD轉換等特性,具有功能強大的定時器/計數器及串口等通訊接口,使用RISC結構的8位單片機,采用了單級流水線、快速單周期指令系統等先進技術,具有1MIPS/MH z的高速運行處理能力[7]。其32KB的程序存儲器也滿足智能家居系統模型的需要[8]。

圖2 Arduino開發板設備封裝
2.2系統軟件設計
系統軟件使各個模塊協調合作共同完成系統功能,這些功能包括家居環境數據采集、數據處理、數據存儲和設備遠程控制等功能。系統工作流程圖如圖3所示,系統運行包括三個組成部分,分別是中斷服務部分、配置部分和執行部分,分別介紹如下。

圖3 系統工作流程圖
配置部分負責系統進入正常工作模式前的配置,包括Arduino核心控制單元的引腳狀態設置、各設備初始化、網絡連接初始化、定時器中斷設置等任務。
中斷服務部分通過傳感器對周圍環境進行信號采集。這些任務包括溫度測量、濕度測量、光亮度測量、紅外線檢測、煙霧檢測等。信息采集完畢后,Arduino核心控制單元將會對這些信息是否處于安全范圍內進行分析,如發現有不符之處,則會通過GPRS模塊進行報警。如溫度超限,則通過閉環控制系統進行溫度調節。
執行部分的任務為將傳感器數據通過Yeelink平臺存儲到網上,通過手機和PC機瀏覽器可查看傳感器數據,并發出指令到Arduino核心控制單元。
(1)監測模塊軟件設計
監測模塊的主要任務是對家居環境中溫度、濕度和煙霧濃度等環境變量進行采集,并將這些環境變量裝換成數字化的電信號,然后將這些數據供Arduino使用。本文介紹的智能家居系統模型監控模塊軟件設計重點包括兩個部分:一是,將濕度傳感器DHT11的單總線數字信號轉換成用戶易識別的十進制數字;二是,對于溫度傳感器DS18B20采用單總線設計,便于傳感器數量的擴展。其他傳感器數據獲取相對簡單,利用Arduino引腳直接讀取數據。
DHT11每次返回的數據有40bit,其中的前8bit是濕度的整數部分。由于系統對濕度的精度的要求不高,取其前8bit就能滿足需求。Arduino引腳在讀取DHT11的數據時是按位逐次讀取,為了提高效率,只對獲取的數值是1的位進行賦值,其余的位仍然保持原值0。
(2)溫控模塊軟件設計
溫控模塊的主要任務是將房間2的溫度控制在預先設定的溫度上,當然也可以是溫度范圍。溫控模塊包含三個部:制冷設備,加熱設備和溫度傳感器。溫控模塊需要這三個部分協調合作才能實現控制溫度的恒定。
控制室內溫度恒定的算法本文采用二值法,二值法的溫度偏離在人們可以接受的范圍內,而且二值法具有較高的效率。其基本工作原理是:溫度傳感器負責采集溫度信息,這些信息會和事先設定的溫度標準進行比較。若采集的溫度高于設定溫度則打開制冷設備,關閉加熱設備,降低室內溫度;若采集的溫度低于設定溫度則打開加熱設備,關閉制冷設備,升高室內溫度,直到溫度達到設定溫度為止。該模塊的程序流程圖如圖4所示。

圖4 溫控模塊流程圖
(3)網絡模塊軟件設計
網絡模塊采用已經集成好的Arduino網絡擴展板ENC28J60。網絡模塊一端連接智能家居系統模型,另一端連接Yeelink網絡服務平臺,采集到的所有數據都可以上傳到該平臺。對家庭電器的遠程控制也要通過Yeelink網絡服務平臺實現。
網絡模塊的主要任務是實現網絡的連接,數據的上傳和下載。在這一部分可以使用Arduino現成的庫EtherCard,其中包含網絡連接、數據上傳和數據下載的基本函數。在連接網絡時,Arduino屬于客戶端。系統作為客戶端連接入網的基本過程是:首先初始化網絡模塊,設定獲取的網絡數據緩存區大小和MAC地址;然后獲取IP地址,這里是連接到DHCP服務器自動獲取;最后連接到Yeelink網絡服務平臺。每一步都有相應的庫函數可以使用,按照這個順序即可實現網絡的連接。
數據的上傳和下載都有相關的庫函數使用。這里需要用到下面兩個函數:


ether.browseUrl()函數能夠從Yeelink網絡服務平臺上獲取指定位置的開關的狀態。數據包如圖5所示。本文的解決方法是首先將獲取的數據包轉換成字符串,從字符串中截取表示你開關狀態部分。

圖5 數據包
ether.httpPost()函數能夠將數據上傳到Yeelink網絡服務平臺指定位置并存儲。每一個設備都是一個文件,具有唯一的URL。對于數據上傳,它實際上就是將數據發送到設備文件上進行保存,然后以設定的數據格式進行保存。保持上傳的數據格式和設定的數據格式一致是數據上傳能否成功的關鍵。本系統選擇的是數值型傳感器,其優點是所有上傳的數據最終會以二位曲線圖顯示,便于用戶觀察。
這兩個函數都要有回調函數,回調函數在調用它的函數執行完畢時才會被調用。可以把從數據包中截取開關狀態任務交給回調函數來完成。
(4)報警模塊軟件設計
報警模塊的主要任務是保衛家居安全,當有陌生人闖入室內,或者是檢測到室內有危險氣體泄漏,或者是檢測到家庭意外火災,報警模塊都會發出警報聲提醒住戶危險。報警模塊用到一個蜂鳴器和四個傳感器,包括兩個人體感應器HC-SR501和兩個個氣體傳感器MQ-2。其基本工作流程是:房間1和房間2中的兩個人體感應器時刻監視室內,當人體感應器監測到陌生人闖入室內時,人體感應器返回值是1,警報器(蜂鳴器)開始蜂鳴報警。同時,室內有有害氣體時,警報器開始報警。其流程圖如圖6所示。
(5)顯示模塊軟件設計
顯示模塊的主要任務是將監測模塊采集到的溫度、濕度、煙霧濃度和人體感應等信息實時顯示出來。顯示模塊設計的重點是利用74HC595擴展引腳的數目。本文介紹的智能家居系統的設計中使用了兩片74HC595擴展引腳,它們共用一個TH_CP引腳,這樣LCD部分和LED部分數據移位保持步調一致。對于LCD部分,Arduino愛好者開發了以 74HC595驅動LCD的庫LiquidCrystal595,直接調用庫中相關函數就能顯示想要顯示的內容。對于LED部分,使用數組存放每個LED燈狀態,將這些數據串行輸入74HC595,然后并行輸出驅動每個LED。利用74HC595控制LED分為兩部,將控制LED的數據信息按順序存放至數組中,將這個長度為8的數組裝換成一個十進制的整數,最后將這個十進制數轉換成二進制數據逐位輸入74HC595。

圖6 報警模塊流程圖
3.1硬件測試
對智能家居系統模型的各個模塊進行硬件測試時,通過使用萬用表,對智能家居系統模型上使用到的電阻、電容等器件進行測量,確保所有元器件都能正常工作;通過使用示波器對電路的測試來確定電路中電壓大小是否與設計電壓相吻合,確保各芯片的接入電壓介于其適用范圍內。其測試項目和測試情況表1所示。

表1 智能家居系統模型硬件測試情況表
對閉環溫度控制系統的制冷和加熱模塊,通過DS18B20溫度傳感器和一顆經過測試的其他類型溫度傳感器進行溫度調節對比測試,通過設置不同的溫度,發現溫度最低為2攝氏度,最高可以為50攝氏度,且保持的溫度越向兩級設置,穩定下來的時間越久。其中最低溫度需要7分鐘,最高溫度需要3.5分鐘。
對各個傳感器進行矯正測試,包括溫濕度及煙霧傳感器,均通過其他經過驗證過的傳感器進行對比,得出誤差結果。結果顯示均在誤差范圍內。
3.2軟件測試
(1)監測模塊測試
智能家居系統模型的測試目標為:各種傳感器能準確地讀取環境中的數據。其中溫度精確到0.01℃,濕度精確到1%,氣體傳感器的數值一般認為300以內是正常值。經測試可知實際溫度為26.50℃,濕度為33.00%;兩個人體感應器未檢測到有陌生人闖入;兩個氣體傳感器的測量值為111和168,均符合要求。對室內進行加熱,模擬室內溫度變化,使環境中溫度升高,測量的溫度從26.50℃上升到33.94℃,這個測試結果說明溫度傳感器DS18B20是正常工作的。用手臂模仿模擬陌生人,當手臂在人體感應器HC-SR501周圍擺動時即可以認為模擬陌生人闖入室內,兩個人體感應器的返回值都從0變為為1,說明人體感應器正常工作。在模型中放入一杯開水,模擬室內濕度變化的情況,過一段時間后,濕度測量值從33.00%上升至49.00%,測試結果說明濕度傳感器DHT11正常工作。點燃一根香煙放入模型內,用來模擬房間內發生火災的危險情況。氣體傳感器的返回值明顯升高,測試結果說明氣體傳感器MQ-2也正常工作。綜合以上測試結果,監測模塊正常工作,符合設計的要求。
(2)溫控模塊測試
智能家居系統模型中的溫控模塊采用二值算法控制溫度恒定。對溫控模塊的數據測試結果可以通過Arduino IDE的串口監視串口進行觀察。測試目標為室內溫度應恒定在22攝氏度,測試過程及結果如圖7所示。

圖7 溫度控制檢測結果
由圖7可知,室內溫度在較小的范圍內波動,但是基本穩定在22℃左右。從整體上來講,這樣小的波動并不影響人們的家居舒適度,能夠滿足人們的家居溫度控制需求,測試結果表明溫控模塊工作正常。
(3)網絡模塊測試
網絡模塊的核心器件是ENC28J60,在智能家居系統模型中它的主要任務是實現和Internet網絡的連接,完成系統和Yeelink服務平臺的數據交互。用戶可以通過PC或智能手機客戶端登錄Yeelink服務平臺觀察結果,并且可以通過手機客戶端或者電腦客戶端對LED進行控制。測試目標為數據上傳和遠程控制LED。通過電腦客戶端觀察氣體傳感器數據上傳結果,在Yeelink服務平臺上觀察結果如圖8所示。
從圖8可知,上傳的數據最終都被上傳到Yeelink服務平臺上進行存儲,可在直角坐標系中觀察到近期的數據記錄情況。接下來測試遠程控制LED燈,測試結果說明用戶可以運程控制LED小燈。
(4)報警模塊測試
報警模塊的主要任務是當危險氣體濃度超標或者有陌生人闖入時,報警模塊能夠發出聲音通知室內的用戶。測試目標為當測量到有害氣體或監測到有陌生人闖入時發出警報。在未模擬陌生人闖入并未向模型中放入點燃的香煙時,測試結果如圖9所示:

圖8 氣體曲線圖

圖9 正常情況下檢測結果
由圖9可知,煙霧警報和陌生人闖入警報的值都是0,蜂鳴器不蜂鳴。接下來模擬陌生人闖入或室內發生火災,此時測試結果如圖10所示。
此時,煙霧警報和陌生人闖入警報的值分別為1,并且可聽到蜂鳴器發出警報聲,測試結果說明系統的報警模塊工作正常。

圖10 模擬危險情況時檢測結果
(5)顯示模塊測試
顯示模塊只需滿足數字和英語字符的顯示,測試目標為顯示讀取的溫度值和字母字符。測試結果表明,LCD1602正常顯示數字和字符,測試結果說明顯示模塊正常工作。
本項目旨在設計一款性價比高,實用性廣,功能多樣且開發快速的智能家居系統模型模型。完成的智能家居系統模型的基本功能如下:能夠遠程控制模擬家電的開關狀態;能夠采集家庭環境信息并進行顯示和遠程展示;能夠防護家庭安全,一旦出現異常狀況,能及時發送信息至用戶;用戶與系統的信息交流。該智能家居系統模型運行于以ATmega328為核心處理器芯片的Arduino開發平臺上,實現了全部預定目標,下一步可考慮將其設計思路移植到實際智能家居系統中進行應用。
[1]王凱明.智能家居系統的研究[D].西安:西安科技大學結構工程學院,2005.
[2]曾松偉,章云,邱偉強.基于物聯網的智能家居控制系統設計[J].現代電子技術,2011,35(9):168-171.
[3]Hsien-Tang Lin.Implementing Smart Homes with Open Source Solutions[J].International Journal of Smart Home,2013,7(4):289-296.
[4]Alam MR and Reaz MB.A Review of Smart Homes-Past,Present,and Future[J].IEEE Transcation on System Man and Cybernetics Part C-Applications and Reviews,IEEE Transactions on.2012,53(6):1190-1203.
[5]Chan M.and Esteve D.A review of smart homes-Present state and future challenges[J].Computer Methods and Programs in Biomedicine,2008,24(1):55-81.
[6]程晨.Arduino開發實戰指南:AVR篇[M].北京:機械工業出版社,2012.
[7]Martin Evans,Joshua Noble,Jordan Hochenbaum.Arduino實戰[M].北京:人民郵電出版社,2014.
[8]Dale Wheat.Arduino技術內幕[M].北京:人民郵電出版社,2013.
劉鑫(1993~),女,山西忻州人,在讀本科,研究方向為嵌入式系統開發與應用
TONG Yuan-yang1,ZHAO Yu1,FANG Yuan1,LIU Xin2
(1.School of Software Technology,Dalian University of Technology,Dalian 116600;2.North University of China,Taiyuan 030051)
Arduino;Intelligent Home;Automatic control;Remote control
Design of Smart Home System Model Based on Arduino
1007-1423(2015)31-0066-07
10.3969/j.issn.1007-1423.2015.31.017
佟源洋(1993-),男,遼寧鐵嶺人,在讀本科,研究方向為嵌入式系統
趙鈺(1994-),男,內蒙古自治區呼和浩特人,在讀本科,研究方向為嵌入式系統
方圓(1996-),女,河南襄城人,在讀本科,研究方向為嵌入式系統
2015-09-29
2015-10-30
提出一種基于Arduino的智能家居系統模型。該模型主要由監測模塊、報警模塊、網絡模塊、顯示模塊和溫控模塊五個部分組成,該系統利用布置在模型各個位置的傳感器的環境數據,對智能家居環境進行自動控制及基于PC與移動端App的遠程監控。實驗表明,該系統完全達到預期目的,可有效監測及控制室內環境參數。
Arduino;智能家居;自動控制;遠程控制
2014Google校企合作專業綜合改革項目“大學生創新訓練項目”
Presents a model of smart home system based on Arduino.The model consists of the monitoring module,alarm module,network module,display module and temperature control module.The system uses the sensors to disposed at various locations of environmental data model,whereby the smart home environment can automatic control or through PC-based remote monitoring and mobile App terminals controlling. Experiments show that the system is fully achieve the intended purpose,can effectively monitor and control the indoor environmental parameters.