基于Android平臺(tái)的電熱水器遠(yuǎn)程控制系統(tǒng)
0 引言
本文引用地址:http://2s4d.com/article/201609/304012.htm近幾年來,人們的生活品質(zhì)不斷提高,傳統(tǒng)家電都在向安全、節(jié)能、多功能、智能化方向發(fā)展,電熱水器的功能也在隨之完善。傳統(tǒng)儲(chǔ)水式電熱水器儲(chǔ)水量大,加熱時(shí)間一般都比較長(zhǎng),長(zhǎng)期供熱必然造成電能的浪費(fèi)。為了節(jié)約用電,很多人對(duì)電熱水器進(jìn)行了改進(jìn),文獻(xiàn)采用數(shù)字技術(shù),在電熱水器中加入單片機(jī)定時(shí)裝置,配以外圍驅(qū)動(dòng)電路和繼電器,控制電熱水器電源通斷的時(shí)間。這種裝置雖然達(dá)到了節(jié)能的目的,但使用起來仍不方便,用戶外出時(shí)長(zhǎng)未知或臨時(shí)改變時(shí)無法更改加熱時(shí)間。為此,文獻(xiàn)在電熱水器中加入短信收發(fā)模塊,利用手機(jī)短信向電熱水器的MCU控制器發(fā)送指令,實(shí)現(xiàn)遠(yuǎn)程遙控,此方法雖解決了靈活性問題,但帶來額外的短信費(fèi)用,不便于長(zhǎng)期使用,且無法隨時(shí)遠(yuǎn)距離獲取水溫信息,因而未得到廣泛應(yīng)用。
本文為滿足電熱水器控制的靈活性和水溫信息獲取方便性的要求,著眼于已經(jīng)相當(dāng)普及的Android手機(jī),把智能手機(jī)作為移動(dòng)網(wǎng)絡(luò)終端,將其應(yīng)用于傳統(tǒng)電熱水器,利用嵌入式開發(fā)技術(shù)和GPRS遠(yuǎn)程通信技術(shù),設(shè)計(jì)了一套電熱水器遠(yuǎn)程控制系統(tǒng),本系統(tǒng)具有安裝方便、價(jià)格低廉、使用靈活、界面友好、實(shí)時(shí)監(jiān)控等優(yōu)點(diǎn),且由于使用了開放的Android平臺(tái),使得此系統(tǒng)的功能擴(kuò)展和產(chǎn)品升級(jí)十分方便。
1 系統(tǒng)總體方案
電熱水器遠(yuǎn)程控制系統(tǒng)采用已經(jīng)十分成熟的客戶/服務(wù)器模式,總體方案如圖1所示,系統(tǒng)從結(jié)構(gòu)上分為三個(gè)部分:客戶端、服務(wù)器和控制器。
客戶端部署在Android手機(jī)上,接收來自用戶的各種控制命令,對(duì)獲取的指令加工處理后通過手機(jī)自帶的3G網(wǎng)絡(luò)將數(shù)據(jù)發(fā)送給服務(wù)器,并實(shí)時(shí)反饋命令執(zhí)行情況,獲取并顯示水溫信息和電熱水器開關(guān)狀態(tài);服務(wù)器由GPRS模塊及其控制器構(gòu)成,利用大覆蓋、高可靠性、低成本的移動(dòng)互聯(lián)網(wǎng)絡(luò),實(shí)現(xiàn)與客戶端握手和數(shù)據(jù)互傳;控制器與服務(wù)器端共用一個(gè)MCU,將接收到的用戶指令解碼后轉(zhuǎn)變?yōu)殚_關(guān)控制命令,并利用高精度溫度傳感器提取實(shí)時(shí)水溫?cái)?shù)值,再通過服務(wù)器下載到用戶手機(jī),通過直觀、友好的人機(jī)界面顯示給用戶,并等待用戶的下一步指令,從而實(shí)現(xiàn)整個(gè)系統(tǒng)的實(shí)時(shí)監(jiān)控。
2 Android平臺(tái)下的客戶端設(shè)計(jì)與實(shí)現(xiàn)
2.1 功能設(shè)計(jì)與操作流程
客戶端在Android手機(jī)上實(shí)現(xiàn),利用Java語言開發(fā)。這樣做的優(yōu)點(diǎn)是:界面友好、使用方便;開發(fā)成本低、不需增加硬件;支持覆蓋廣、不受地域限制;保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性和可靠性。為實(shí)現(xiàn)對(duì)電熱水器的遠(yuǎn)程控制,客戶端應(yīng)具有以下功能:1)登錄服務(wù)器。獲取服務(wù)器IP地址,采用Socket方式,建立與服務(wù)器的連接。2)獲取用戶開關(guān)指令并上傳。通過手機(jī)觸摸屏,獲取用戶開關(guān)指令,編碼成字符串后上傳給服務(wù)器。3)實(shí)時(shí)提取并顯示水溫。向服務(wù)器發(fā)送請(qǐng)求,等待服務(wù)器向手機(jī)發(fā)送當(dāng)前水溫?cái)?shù)值字符串,獲取后解碼并在手機(jī)屏幕上顯示??蛻舳瞬僮髁鞒倘鐖D2所示。
客戶端首先按照保存的IP地址連接服務(wù)器,如連接不成功,說明服務(wù)器動(dòng)態(tài)IP己更改,則向服務(wù)器發(fā)送請(qǐng)求連接短信,等待服務(wù)器收到后將新IP地址通過字符串形式回發(fā)給客戶端,后者再次連接,實(shí)現(xiàn)Socket連接的建立;用戶的開關(guān)指令編碼后由客戶端手機(jī)通過GPRS發(fā)送字符到服務(wù)器接收,“0”表示關(guān)閉熱水器,“1”表示加熱;指令發(fā)送后等待服務(wù)器回發(fā)的水溫值字符串,解碼后在手機(jī)屏幕上顯示;用戶可以通過手機(jī)設(shè)定水溫,服務(wù)器回發(fā)的水溫若達(dá)到設(shè)定值則停止加熱并發(fā)出聲音通知用戶。
2.2 Android Studio開發(fā)平臺(tái)搭建
本系統(tǒng)的客戶端的編程采用Android Studio IDE開發(fā)環(huán)境,它是Google于2013年發(fā)布的,與以往的Eclipse+ADT開發(fā)環(huán)境相比,Android Studio提供了集成的Android開發(fā)工具用于開發(fā)和調(diào)試,安裝時(shí)不需手動(dòng)配置。該開發(fā)環(huán)境對(duì)UI界面設(shè)計(jì)和編寫代碼有更好地支持,具備功能強(qiáng)大的布局編輯器,支持拖拉UI控件并進(jìn)行效果預(yù)覽,并可以方便地調(diào)整設(shè)備上的多種分辨率。
該開發(fā)平臺(tái)的搭建步驟十分簡(jiǎn)單:1)下載并安裝JDK,建立Java開發(fā)環(huán)境;2)設(shè)置環(huán)境變量:JAVA HOME、CLASSPATH和PATH,指定到JDK安裝路徑;3)從Google官方網(wǎng)站或第三方網(wǎng)站下載并安裝android-studio-bundle-
2.3 軟件主要模塊及關(guān)鍵代碼
(1)界面布局。根據(jù)客戶端功能設(shè)計(jì),客戶端UI包括TextView、Button、Switch等控件,布局代碼存放在Layout.XML文件中,采用相對(duì)布局方式RelativeLayout,該方式是Android中最常用的布局方式之一,在Android Studio中利用鼠標(biāo)拖動(dòng)即可實(shí)現(xiàn),不需編寫代碼。本程序所用控件及其功能如表1所示。
(2)Switch監(jiān)聽器。利用可視化控件Switch來表示接受用戶指令并顯示電熱水器的開關(guān)狀態(tài),設(shè)置Switch監(jiān)聽器代碼如下:
mySwitch.setOnCheckedChangeListener(newOnCheckedChangeListener()。
其中mySwitch為新建的Switch類對(duì)象。其監(jiān)聽器實(shí)例化方法為:
(3)Socket方式連接服務(wù)器。Socket通信則是在雙方建立起連接后就可以直接進(jìn)行數(shù)據(jù)的傳輸,在連接時(shí)可實(shí)現(xiàn)信息的主動(dòng)推送,而不需要每次由客戶端想服務(wù)器發(fā)送請(qǐng)求。本程序連接服務(wù)器通過響應(yīng)Button監(jiān)聽器實(shí)現(xiàn)。調(diào)用OnclickListener()中的onClick()為登陸B(tài)utton控件設(shè)置按鍵監(jiān)聽器,在監(jiān)聽器中建立Intent對(duì)象,通過調(diào)用startActivity(intent)打開與相應(yīng)功能菜單相對(duì)應(yīng)的Activity實(shí)現(xiàn)界面的跳轉(zhuǎn)。若鏈接超時(shí),則回出現(xiàn)網(wǎng)絡(luò)鏈接超時(shí)的提示,后臺(tái)發(fā)送請(qǐng)求短信,獲取服務(wù)器最新動(dòng)態(tài)IP地址,并重新鏈接網(wǎng)絡(luò)。建立Socket連接核心代碼如下:
評(píng)論