禹謝華,鄧林茂,張曉云,陳美龍,匡鳳飛
1.福建師范大學 閩南科技學院,福建 泉州 362332
2.廈門大學 信息科學與技術學院,福建 廈門 361005
3.冠捷顯示科技(廈門)有限公司,福建 廈門 361101
基于Android與Arduino智能家居控制系統(tǒng)的設計與實現(xiàn)
禹謝華1,2,鄧林茂2,3,張曉云1,陳美龍1,匡鳳飛1
1.福建師范大學 閩南科技學院,福建 泉州 362332
2.廈門大學 信息科學與技術學院,福建 廈門 361005
3.冠捷顯示科技(廈門)有限公司,福建 廈門 361101
作為時下最炙手可熱的移動應用端操作系統(tǒng),Android以其顯著的開放性、便于開發(fā)的靈活性、能夠與Google應用的無縫對接性及豐富的第三方軟硬件資源等成為智能應用系統(tǒng)不可或缺的組成部分;Arduino單片機系統(tǒng)以其開源的電子原型平臺、靈活便捷的設計和豐富的傳感器資源等被廣泛應用。其與Java和C語言相類似的基于Wiring/Processing的語言開發(fā)環(huán)境更是受到越來越多的電子愛好者和開發(fā)者的青睞。本文以移動手機安卓系統(tǒng)為無線控制終端,結(jié)合Arduino單片機系統(tǒng),設計并實驗仿真了一款基于Android與Arduino的智能家居控制系統(tǒng),以控制LED燈示例,通過網(wǎng)絡http傳輸控制指令到Arduino單片機系統(tǒng),Arduino根據(jù)所接收到的指令,控制不同的家居電器完成所要求的工作任務。仿真實驗表明,文章所設計方法行之有效,可以靈活的運用到日常家居電器設備,提供了一種智能家居系統(tǒng)設計的新思路,具有易實現(xiàn),應用廣的特點。
Android;Arduino;智能家居;控制系統(tǒng)
智能家居控制系統(tǒng)是針對不同的用戶需求,利用計算機和網(wǎng)絡通訊技術,將與家居生活有關的諸如安保安防、燈光控制、家電控制等功能有機地結(jié)合在一起,通過網(wǎng)絡化、智能化控制和管理,實現(xiàn)方便、自動、快捷的日常事務的一種全新家居生活體驗。其核心部分便在于如何將用戶需求轉(zhuǎn)換成計算機語言,計算機語言又如何通過某種網(wǎng)絡通訊方式傳輸?shù)揭苿涌刂贫?,控制端再根?jù)所接收到的計算機語言,轉(zhuǎn)換成相應的信號控制指令。
手機是人們最常用的移動電子設備,使用手機成為家居系統(tǒng)的控制終端就順理成章的成為了最理想的控制方式。通過對已有的家居控制方案的研究分析后發(fā)現(xiàn),大部分的研究中用戶都是需要依賴自己專用的控制端進行操作。本文所設計系統(tǒng)的主要優(yōu)勢便在于結(jié)合時下最熱門的代表創(chuàng)客精神的Arduino系統(tǒng),配合占有率最高的Android手機操作系統(tǒng),用戶只需輕點幾個按鈕,安裝一個APP,就可以用安卓手機方便、自如的實現(xiàn)家居控制,操作簡單,易用性強。在整個設計中,手機與接收命令的單片機控制端可以采用不同的方式進行通信,例如有線網(wǎng)絡、WIFI、藍牙或紅外等,各種方式各有利弊,但考慮到部分情況下需要相對較遠距離對家居設備的控制,文章采用的方式是:通過手機訪問網(wǎng)頁客戶端,將用戶的指令通過網(wǎng)頁消息的方式Post到服務器Server端,單片機系統(tǒng)根據(jù)服務器端接收到的命令,轉(zhuǎn)換成對應的控制流程,從而實現(xiàn)家居智能控制。
需要設計一個Android手機端家居控制APP,用來訪問網(wǎng)頁客戶端,服務器端通過Arduino開發(fā)板系統(tǒng)來實現(xiàn),Arduino開發(fā)板系統(tǒng)采用的單片機型號是AVRATmega328,搭配W5100網(wǎng)絡擴展板,可以實現(xiàn)聯(lián)網(wǎng)功能。家居控制方面,以控制RGB LED燈為例。單片機通過獲取Server端的信息,得知用戶需要控制燈顯示何種顏色、開燈及關燈等信息,將這些信息轉(zhuǎn)換成0~255,通過控制單片機PWM輸出從而讓LED燈顯示不同的顏色(圖1)。
Arduino開發(fā)板系統(tǒng)是整個家居控制系統(tǒng)的核心,它的處理器是一個具有32 KB的系統(tǒng)內(nèi)可編程的八位AVR微控制器ATmega328,同時具有十四路的數(shù)字in/out口(其中六路可作為PWM的輸出),六路作為模擬輸入,一個ICSP header,一個電源插座,一個USB口,一個復位按鈕和一個16 MHz的晶體振蕩器。引腳圖如圖2所示。
圖1 系統(tǒng)總體框架圖Fig.1 The overall framework of the system
圖2 ATmega328引腳圖Fig.2 Pins of ATmega328
Arduino的聯(lián)網(wǎng)功能主要是通過W5100網(wǎng)絡擴展板來實現(xiàn)的。W5100是Wiznet公司開發(fā)的具有TCP/IP協(xié)議硬解碼的網(wǎng)絡芯片,它集成了以太網(wǎng)物理層內(nèi)核[1]。W5100的使用僅需對其進行簡單的端口(Socket)編程即可,不會局限于Ethernet的控制,能夠在很大程度上降低網(wǎng)絡編程及工作人員在硬件接口設計方面的工作量,且能夠維持遠程數(shù)據(jù)的可靠穩(wěn)定通訊[2]。單片機與W5100之間的相互連接一般有三種不同的形式,分別是SPI總線連接方式、間接總線鏈接方式和直接總線連接方式。其中,SPI模式的接口連接線路不多,通常用于傳輸速率相對較低且數(shù)據(jù)通訊量不大的情形;直接總線接口模式則在數(shù)據(jù)量傳輸較大的情況是較為適用;而間接總線接口模式下的數(shù)據(jù)傳輸性能則前述的兩者之間[3]。本文設計中所采用的是SPI總線連接模式,在這種模式下,僅需四個引腳進行數(shù)據(jù)間的通信聯(lián)絡,這四個引腳的定義分別為:SCLK,/SS,MOSI,MISO,對應Arduino上的引腳則分別是16、17、18、19。SPI方式的連接框圖如圖3所示:
圖3 W5100與ATmega328連接示意圖Fig.3 The schematic connection between W5100 and ATmega328
本項目的家居設備使用的是Chainable RGB LED可級聯(lián)全彩LED,將VCC/GND/CI/DI四個pin腳分別連接至Arduino的VCC/GND/pin7/pin8即可,控制LED顏色亮暗均由ATmega328的pin7和pin8來完成。
3.1 Arduino程序設計
Arduino程序的程序大體可分為如下的三大部分:
(1)聲明變量及各類接口的名稱。
(2)setup()。首先調(diào)用setup()函數(shù)運行Arduino程序,在這一過程中需要完成串口的配置、變量的初始化、類庫文件的引入及輸入或輸出針腳類型的設置等操作[4]。需要注意的是,setup()函數(shù)僅在每次的Arduino上電或重啟的過程中被執(zhí)行一次。
(3)loop()。該函數(shù)不斷反復循環(huán)執(zhí)行,根據(jù)反饋信息的不同,適時動態(tài)調(diào)控Arduino主控板的操作。
本文所設計家居控制系統(tǒng)的Arduino程序主要可分為如下的三個功能模塊:
(1)設置W5100,使Arduino轉(zhuǎn)換為WEB服務器,并通過html語言創(chuàng)建網(wǎng)頁需要顯示的內(nèi)容。首先需要在申明變量的地方設置mac地址、IP地址和初始化Server端口(HTTP默認是80端口),如下所示:
圖4 獲取Client端數(shù)據(jù)流程圖Fig.4 Get the Client side data flowchart Get the Client side data flow chart
完成以上步驟后,Server就配置成功了。接下來在loop()里面不斷監(jiān)聽Client端是否連接,并且設置Client需要顯示的內(nèi)容,具體流程圖如圖4所示。
這里需要注意的是,在獲取鼠標點擊的顏色值時,當網(wǎng)頁表單采用POST方式傳送到服務端,不同的瀏覽器工具,鼠標點擊的顏色值對應POST參數(shù)中的字符位置不一樣,本文使用的是安卓平臺,對應的位置是第4至第9的字符,而像IE這類瀏覽器對應的位置是第7到第12的字符,如果沒獲取正確,顏色控制就會得不到匹配。
(2)接收Web Client端發(fā)送過來的數(shù)據(jù)并對數(shù)據(jù)進行處理,通過計算得到RGB的PWM值。計算過程是將獲取到的鼠標點擊的十六進制顏色值轉(zhuǎn)換成ASCII碼值,碼值減去87或46后可得到實際數(shù)值。
(3)根據(jù)處理后的數(shù)據(jù)控制RGB LED燈的顏色。RGB的PWM值目前已經(jīng)算出,如果是用戶點擊“turn on”或是“turn of”,RGB的PWM值分別設置為(255,255,255)和(0,0,0)。具體過程如下所示:
先導入ChainableLED的庫文件,在變量聲明的地方去設置Arduino pin7和pin8為輸出:
ChainableLED leds(7,8,1);
接著,在setup()去初始化LED硬件:
leds.init();
最后,調(diào)用PWM設置函數(shù)去控制LED燈的顏色。
leds.setColorRGB(0,red_color,green_color,blue_color);
通過Arduino控制其他外圍家居設備時,與以上的這三個步驟都是類似的。
3.2 Android APP模塊設計
Android APP的主要目的是能訪問服務器端的web網(wǎng)頁,然后通過HTTP命令把用戶的操作發(fā)送到服務器端。那么,APP的基本功能是能訪問網(wǎng)頁,通過Android Web View可以輕松的實現(xiàn)這個功能[5]。Web View(網(wǎng)絡視圖)能加載顯示網(wǎng)頁,可以將其視為一個瀏覽器。Web View視圖和Android Brower應用程序都是基于Web Kit引擎,所以兩者可以賦予Web應用程序相同的性能和功能[6]。
具體實現(xiàn)過程如下所示:
(1)在布局文件activity_main.xml中聲明一個Web View控件,同時聲明一個progress bar用來顯示W(wǎng)eb View控件加載進度:
(2)在要Activity中實例化WebView和ProgressBar組件:
(3)調(diào)用Web View的loadUrl()方法,設置Web View要顯示的網(wǎng)頁,本文只需要訪問使用Arduino建立的Server IP:
(4)調(diào)用set Web View Client控件,設置Web View和progress bar視圖。主要方法有:
(5)重寫Activity類的on Key Down()方法,點擊系統(tǒng)回退鍵,支持返回上一頁:
(6)添加一個exit退出菜單,支持快速退出:
圖5 Android智能家居(燈光)控制終端界面Fig.5Android smart home(LED)control terminal interface Android
(7)在AndroidManifest.xml文件中添加網(wǎng)絡權限,避免出現(xiàn)Web page not available的錯誤提示信息:
重復再寫兩行如上的代碼,分別用ACCESS_WIFI_STATE和ACCESS__STATE替換上面的INTERNET,即可完成網(wǎng)絡權限的添加工作[7]。
(8)在string.xml中,修改app的name為Home Control:l
最后通過Eclipse編譯生成的APK文件安裝到手機,在Arduino有連接到網(wǎng)絡的情況下,打開其界面,如圖5所示。
用戶可以點擊彩色調(diào)色板上的顏色,LED顏色的文本框會顯示出顏色的具體值,并以#xxxxxx格式顯示。例如當用戶點擊紅色區(qū)域時,文本框就會顯示#ff0000。顏色值通過HTML的表單實現(xiàn)數(shù)據(jù)交互,POST到Arduino Server端。調(diào)色板的六種顏色可以通過previouse/next進行切換,根據(jù)用戶需求,只需在代碼中填入多組顏色的table,用戶就可以方便的進行顏色切換,選擇自己想要控制的顏色。Turn on和Turn off分別是控制LED燈的開和關,當點擊Turn on時,LED燈亮起,默認的顏色是白色;當點擊Turn off時,LED燈即全部熄滅。
智能家居系統(tǒng)是基于Arduino和W5100搭建的網(wǎng)絡Server平臺,通過編寫安卓手機客戶端的APK來發(fā)送命令到Arduino的MCU(ATmega328),Arduino根據(jù)接收到的命令最終靈活的完成控制家居設備(RGB LED)執(zhí)行相應任務的工作,而且這種方式在絕大多數(shù)智能家居系統(tǒng)的通信方式的設計中都能夠適用。同時也方便用戶不在家的時候,可以通過互聯(lián)網(wǎng)的方式進行遠程控制。實驗在內(nèi)網(wǎng)的環(huán)境中測試成功,不足的是在外網(wǎng)的環(huán)境下進行超遠程控制這部分受到環(huán)境的影響因素還需要進行不斷完善[8]。另外,智能家居電器功能的實現(xiàn)主要是通過使用LED燈的開關及不同顏色的切換來驗證,完成了諸如不同家居電器電器設備的開關、同一電器設備不同功能的開啟和關閉等絕大多數(shù)功能的移動手機控制,但其他較為復雜的功能實現(xiàn),還將在以后的研究過程中進一步的探討實踐。
[1]WIZnet Co.,Ltd.W5100 data sheet:version 1.2.4[Z].2011
[2]Dave Smith,Jeff Friesen.Android5.0開發(fā)范例代碼大全[M].北京:清華大學出版社,2015
[3]晏 勇,周相兵.智能家居自適應網(wǎng)絡設計與實現(xiàn)[J].西南大學學報:自然科學版,2014,36(11):215-220
[4]陸 揚,付 斌,游 江.W5100在單片機實現(xiàn)以太網(wǎng)通信中的應用[J].黑龍江科技信息,2011(5):76-76,15
[5]張楊楊.移動互聯(lián)網(wǎng)環(huán)境下定位服務設計及原型實現(xiàn)[D].西安:長安大學,2014
[6]肖遠東.智能家居用電管控系統(tǒng)的設計與實現(xiàn)[J].南京工程學院學報:自然科學版,2014,12(3):59-63
[7]仲元昌,王靖欣,胡江坤,等.Android內(nèi)核移植及在遠程監(jiān)控中的應用[J].重慶理工大學學報:自然科學版,2011,25(1):102-106
[8]崔 鄧,沈敬偉,周廷剛.一種面向移動智能手機用戶軌跡停留點提取的時空聚類算法研究[J].西南師范大學學報:自然科學版,2016,41(10):81-87
Design and Implementation of Intelligent Home Control System Based onAndroid andArduino
YUXie-hua1,2,DENGLin-mao2,3,ZHANGXiao-yun1,CHENMei-long1,KUANGFeng-fei1
1.Minnan Science and Technology Institute/FuJian Normal University,Quanzhou362332,China
2.School of Information Science and Engineering/Xiamen University,Xiamen361005,China
3.TPV Display Technology(Xiamen)Co.,Ltd.Xiamen361101,China
As one of the most sought-after mobile application terminal operating system,Android has become an indispensable part of the intelligent application system,because it has the features of definite openness,flexibility for development,perfect connection with Google applications and abundant third party software and hardware resources and so on.Arduino MCU system is widely used in society because of its characteristics of open source electronic prototype platform,flexible and convenient design,rich sensor resources,etc.Moreover,its classes Java and C language based on Wiring/Processing development environment are becoming more and more popular among the electronics enthusiasts and developers.Taking the mobile phone Android system as wireless control terminal,and combining Arduino MCU system,an intelligent home control system based on Android and Arduino is designed and implemented in this paper.By controlling LED lamp samples,with the network HTTP transmission control instructions sending to the Arduino MCU system,and according to the
instructions,Arduino can control different household electrical appliances to complete the required tasks.Experiments show that the methods designed in this paper can be flexibly applied to daily household appliances,such as,home appliance control,security equipment,etc.This paper provides a new idea for the design of intelligent home system,which is easy to implement and widely used.
Android;Arduino;intelligent home;control system
U666.12+4
A
1000-2324(2017)04-0532-05
2016-02-03
2016-02-20
2015年度“福建省高校杰出青年科研人才培育計劃”項目(閩教科[2015]54號);2015年福建省高等學校創(chuàng)新創(chuàng)業(yè)教育改革項目(SJKC-2015-02);2016年本科高校重大教育教學改革研究項目:基于區(qū)域經(jīng)濟發(fā)展的應用型軟件人才培養(yǎng)模式研究(JZ160253);2016年省級互聯(lián)網(wǎng)實驗教學示范中心項目(SFZX-2016-01);2016年福建省高等學校服務產(chǎn)業(yè)特色專業(yè)建設項目(SJZY-2016-02)
禹謝華(1982-),男,碩士,副教授,思科認證網(wǎng)絡工程師.主要研究方向:移動互聯(lián)網(wǎng),人工智能,單片機技術,無線傳感器網(wǎng)絡.E-mail:yuxiehua@163.com