藍(lán)土慶
(嶺南師范學(xué)院網(wǎng)絡(luò)與信息技術(shù)中心,廣東湛江,524048)
所謂物聯(lián)網(wǎng)是指具有全面感知能力的物物之間通過互聯(lián)網(wǎng)相連的集合網(wǎng)絡(luò)。目前,物聯(lián)網(wǎng)、云計(jì)算和互聯(lián)網(wǎng)三網(wǎng)融合的技術(shù)相應(yīng)出現(xiàn),為智能家居的發(fā)展提供了技術(shù)支撐。通過互聯(lián)網(wǎng)將物與物彼此之間信息互通相連,實(shí)現(xiàn)人與物之間的高度智能化控制是智能家居目前發(fā)展的一大特征。因此,通過智能家居控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)能夠更好地滿足人們對高質(zhì)量生活的追求[1]。本文將探討與設(shè)計(jì)一種智能家居控制系統(tǒng),實(shí)現(xiàn)環(huán)境集控、煤氣和安防監(jiān)測報(bào)警等功能。
本文研究設(shè)計(jì)的智能家居控制系統(tǒng)如圖1所示,它主要包括三個(gè)部分,第一部分是下位機(jī)控制系統(tǒng),下機(jī)控制系統(tǒng)內(nèi)部由執(zhí)行單元、CPU、無線網(wǎng)絡(luò)控制單元、互聯(lián)網(wǎng)模塊等多個(gè)部件組成;第二部分是網(wǎng)絡(luò)服務(wù)器,網(wǎng)路服務(wù)器在服務(wù)端對數(shù)據(jù)實(shí)施各種操作處理。第三部分是上位機(jī)控制終端程序,包括移動(dòng)端APP和瀏覽器終端等,用戶可通過上位機(jī)的客戶端窗口向下位機(jī)控制系統(tǒng)發(fā)號施令【2】。
該系統(tǒng)的工作流程是:下位控制系統(tǒng)中的一系列無線傳感器會(huì)采集家居中的環(huán)境數(shù)據(jù),然后由互聯(lián)網(wǎng)模塊將數(shù)據(jù)傳輸?shù)椒?wù)器,當(dāng)服務(wù)器接受到數(shù)據(jù)之后,會(huì)作出相應(yīng)的處理。用戶通過處于同一網(wǎng)絡(luò)的客戶端程序可以向控制系統(tǒng)發(fā)出對應(yīng)指令,客戶端程序會(huì)將指令信息通過網(wǎng)絡(luò)傳輸給服務(wù)器,由服務(wù)器作出處理,從而實(shí)現(xiàn)對整個(gè)智能家居系統(tǒng)的控制[3][4]。
圖1 智能家居控制系統(tǒng)總體框架圖
圖2 智能家居控制系統(tǒng)的硬件結(jié)構(gòu)示意圖
該智能家居控制系統(tǒng)的實(shí)時(shí)感知無線傳感網(wǎng)絡(luò)主要采用Zigbee【2】網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),通過Zigbee網(wǎng)絡(luò)節(jié)點(diǎn)可實(shí)現(xiàn)對室內(nèi)的溫度、光度、煤氣濃度等環(huán)境參數(shù)的采集。主要由以下五個(gè)控制模塊組成:(1)智能燈光模塊由光照傳感器和LED燈組成,負(fù)責(zé)對光照強(qiáng)度進(jìn)行控制;(2)智能家電控制模塊通過對電路開關(guān)的控制,實(shí)現(xiàn)對家用電器的控制;(3)智能溫控模塊通過控制空調(diào)實(shí)現(xiàn)對室內(nèi)溫度的控制;(4)煤氣泄漏報(bào)警模塊可以實(shí)現(xiàn)對屋內(nèi)煤氣泄漏的監(jiān)控;(5)紅外傳感器報(bào)警模塊可實(shí)現(xiàn)電子防盜報(bào)警功能,由于紅外線是不可見光,有較強(qiáng)的隱藏性和保密性,因此可應(yīng)用到家居中實(shí)現(xiàn)人體探測的功能。當(dāng)所布防的區(qū)域內(nèi)檢測到有人員移動(dòng)時(shí),該模塊將動(dòng)作向指定手機(jī)發(fā)送安防信息。系統(tǒng)的硬件結(jié)構(gòu)如圖2所示。
本智能家居控制系統(tǒng)的主要硬件選擇如下:(1)主控采用的是Arduino單片機(jī)Atmel32u4芯片,它具有豐富的第三方資源,極大方便了下位機(jī)系統(tǒng)各種功能的設(shè)計(jì);(2)無線模塊是智能家居系統(tǒng)實(shí)現(xiàn)遠(yuǎn)程操作控制的保障,本系統(tǒng)選用的無線模塊是CC3000WiFi,該模塊在智能家居上有著廣泛的應(yīng)用;(3)溫濕度傳感器是DHT11數(shù)字式傳感器,該傳感器的靈敏度高,穩(wěn)定性好,抗干擾能力強(qiáng)。該傳感器與一個(gè)8位二進(jìn)制的單片機(jī)相連,有一個(gè)NTC感溫單元和一個(gè)電阻式感濕單元;(4)光傳感器是智能燈光模塊的核心部件,本系統(tǒng)采用的是LX1972環(huán)境模擬光傳感器,該傳感器能夠模擬人眼對光線的響應(yīng)機(jī)制,從而實(shí)現(xiàn)對光的合理控制;(5)氣體傳感器是煤氣泄漏模塊的核心部件,能夠有效防止火災(zāi)的發(fā)生,該系統(tǒng)選用了煙霧傳感器MQ-2作為氣體傳感器。當(dāng)室內(nèi)的煙霧濃度達(dá)到一定的閥值時(shí)會(huì)觸發(fā)傳感器,傳感器會(huì)發(fā)出蜂鳴警報(bào),并且通知用戶做出緊急處理;(6)熱釋電傳感器主要采用了美國 HAMAMATSU公司生產(chǎn)的 P2288,對人體的移動(dòng)具有較強(qiáng)的敏感性和抗干擾性。
安卓系統(tǒng)的內(nèi)核是Linux內(nèi)核,整個(gè)系統(tǒng)是以Linux內(nèi)核為核心,然后在外層包含了多個(gè)硬件的底層驅(qū)動(dòng)程序,在應(yīng)用層包含了應(yīng)用程序可以接入系統(tǒng)的接口。應(yīng)用程序?qū)釉诎沧肯到y(tǒng)架構(gòu)的最上層,通常一個(gè)Activity就是一個(gè)應(yīng)用程序的一個(gè)單獨(dú)用戶界面,用戶通過Activity與應(yīng)用程序進(jìn)行交互[5]。由于一個(gè)程序需要實(shí)現(xiàn)多個(gè)功能,通常,每個(gè)安卓應(yīng)用程序都包含多個(gè)Activity,不同的Activity對應(yīng)不同的功能模塊。
本文的智能家居控制系統(tǒng)選用Tomcat作為系統(tǒng)的服務(wù)器。Tomcat 是一個(gè)集成了 JavaEE【2】標(biāo)準(zhǔn)的小型Web服務(wù)器,并且其性能穩(wěn)定,安全免費(fèi)開源。Tomcat服務(wù)器在工作時(shí)首先啟動(dòng)server.xml文件進(jìn)而實(shí)現(xiàn)Server啟動(dòng),Server啟動(dòng)時(shí),會(huì)首先啟動(dòng)Service,然后相繼啟動(dòng)多個(gè)Connector連接器,啟動(dòng)后的Connector會(huì)處于等待狀態(tài),等待客戶機(jī)的連接。當(dāng)客戶通過瀏覽器對服務(wù)器進(jìn)行訪問時(shí)就會(huì)與Connector連接器連接,然后連接器會(huì)將用戶的請求交給Engine處理,Engine接到請求后會(huì)對其進(jìn)行數(shù)據(jù)解析,然后交給相應(yīng)的Host,Host交給對應(yīng)的Web[4]。
Web服務(wù)器是運(yùn)行在計(jì)算機(jī)服務(wù)端的程序,也就是通常所說的網(wǎng)站服務(wù)器。Web服務(wù)器可以為APP終端或者瀏覽器提供所需要的數(shù)據(jù)。Web服務(wù)器是一種被動(dòng)程序,當(dāng)客戶端或者瀏覽器通過互聯(lián)網(wǎng)向其發(fā)起連接時(shí),服務(wù)器才會(huì)響應(yīng),服務(wù)器不能主動(dòng)與客戶端程序或者瀏覽器主動(dòng)連接請求??蛻舳伺cWeb服務(wù)器端的通信過程如圖3所示。
圖3 智能家居控制系統(tǒng)的數(shù)據(jù)通信過程
Http協(xié)議是超文本傳輸協(xié)議,屬于TCP/IP應(yīng)用層協(xié)議。Http協(xié)議是實(shí)現(xiàn)客戶端程序和服務(wù)端程序通信的應(yīng)用最為廣泛的通信協(xié)議。該協(xié)議規(guī)定了兩者在進(jìn)行信息交換時(shí)應(yīng)該遵循一定的數(shù)據(jù)格式。
Http協(xié)議的一個(gè)事務(wù)操作主要分為以下四個(gè)步驟:(1)客戶端或者瀏覽器與Web服務(wù)器建立連接之后。(2)當(dāng)兩者連接成功后,客戶端程序或者瀏覽器會(huì)向服務(wù)器端程序發(fā)送請求。(3)服務(wù)器收到客戶端或者瀏覽器請求之后,會(huì)給瀏覽器發(fā)出請求響應(yīng)。(4)Web服務(wù)器端反饋信息后,客戶端程序或者瀏覽器接收到信息后會(huì)按照一定的格式展示,并且斷開連接。
該智能家居控制系統(tǒng)使用的是CC3000。該器件能夠連接各種傳感器,并且將傳感器的數(shù)據(jù)傳給服務(wù)器。
CC3000連接互聯(lián)網(wǎng)時(shí)需要進(jìn)行如下操作:(1)初始化CC3000模塊。(2)設(shè)置波特率115200,對串口進(jìn)行初始化操作。(3)設(shè)置系統(tǒng)的SSID和密碼,并且發(fā)起互聯(lián)網(wǎng)連接。(4)連接成功后,中間可能會(huì)有延時(shí)100ms,之后會(huì)出現(xiàn)連接成功提示。
CC3000連接互聯(lián)網(wǎng)的代碼如下:
#define SSID“SSID”//設(shè)置無線網(wǎng)絡(luò)ID
#define PASSWORD“88888888”//設(shè)置無線網(wǎng)絡(luò)密碼
void setup{
Serial.Begin(115200);//
Serial.println(F(“存儲到 Flash”));
If(!Wido.begin()){
Serial.Println(F(“初始化失敗,清檢查連接”));
while(1);
}
Char*ssid=WLAN_SSID;
Serial.print(F(“嘗試連接”));
Serial.println(SSID);
/*如果連接失敗,串口返回?cái)?shù)據(jù),再次進(jìn)入循環(huán)*/
if(!Wido.connectToAP(WLAN_SSID,WLAN_PASSWORD,WLAN_SECURITY)){
Serial.println(F(“連接失敗”));
While(1);
}
Serial.println(F(“已連接”));
Serial.println(F(“請求 DHCP”));
While(!Wido.checkDHCP()){
Sleep(100);// 延時(shí) 100ms。
} }
Web服務(wù)器在智能家居控制系統(tǒng)中起著橋梁作用,一方面要接收來傳感器的數(shù)據(jù),另一方面要接收來自客戶端或者瀏覽器的數(shù)據(jù)。在該系統(tǒng)中Web服務(wù)器的接口直接與Arduino【4】控制器進(jìn)行連接,它的數(shù)據(jù)傳輸圖如圖3所示。
(1)數(shù)據(jù)庫設(shè)計(jì)
智能家居控制系統(tǒng)中的數(shù)據(jù)庫采用的是MySQL數(shù)據(jù)庫,本文以其中的兩個(gè)數(shù)據(jù)表設(shè)計(jì)為例闡述該系統(tǒng)數(shù)據(jù)庫的設(shè)計(jì)過程。表1和表2分別是該系統(tǒng)的用戶信息表和房間實(shí)時(shí)數(shù)據(jù)表。
表1 用戶信息表
表2 房間實(shí)時(shí)數(shù)據(jù)表
_gas float 否 是 可燃?xì)怏w濃度_Infrared float 否 是 紅外監(jiān)測
(2)Servlet開發(fā)
Servlet【3】是一段運(yùn)行在服務(wù)器端的Java程序,這段程序的主要功能是處理客戶端的請求并將其結(jié)果發(fā)送給客戶端,能夠動(dòng)態(tài)顯示網(wǎng)頁內(nèi)容。服務(wù)器端通過創(chuàng)建Servlet實(shí)例響應(yīng)客戶端的請求。Servlet在第一次啟動(dòng)后就會(huì)駐留在計(jì)算機(jī)內(nèi)存中,無需每次都加載 Servlet的接口程序核心代碼如下所示:
Package cn.wu.smarthome;
Import java.io.*;
Import javax.servlet.*;
Public class FirstServlet extends GenericServlet{
Public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException{
Res.getOutputStream().write(“My FirstServlet!”.getBytes());
} }
(1)Android與數(shù)據(jù)庫通信
安卓系統(tǒng)與數(shù)據(jù)庫通信的過程是:客戶端向Web服務(wù)器發(fā)送JSON請求,Web服務(wù)器對請求進(jìn)行解析然后采取相應(yīng)處理,然后JDBC對遠(yuǎn)程數(shù)據(jù)庫進(jìn)行處理操作。Web服務(wù)器將數(shù)據(jù)庫響應(yīng)的操作打包成JSON數(shù)據(jù)包返回給客戶端程序,客戶端在接受到程序后會(huì)對數(shù)據(jù)進(jìn)行JSON解析,然后進(jìn)行響應(yīng)處理[5]。
(2)應(yīng)用程序功能設(shè)計(jì)
本智能家居控制系統(tǒng)的客戶端應(yīng)用程度設(shè)計(jì)結(jié)構(gòu)是:程序啟動(dòng)時(shí)首先進(jìn)入登錄頁,登錄成功后程序自動(dòng)跳轉(zhuǎn)到首頁,在程序的首頁有智能家電、智能燃?xì)鈭?bào)警、智能溫度控制、智能燈光控制和紅外布防等幾個(gè)模塊。智能燈光控制模塊連接客廳、臥室、廚房、走廊燈多個(gè)燈光,通過該模塊可以分別對這些燈光進(jìn)行控制;智能家電控制連接熱水器、空氣凈化器、音響、洗衣機(jī)等,通過該模塊可以對其實(shí)施遠(yuǎn)程控制;智能溫度控制模塊可以實(shí)現(xiàn)對空調(diào)的遠(yuǎn)程控制和調(diào)節(jié);燃?xì)鈭?bào)警和紅外布防可根據(jù)需要設(shè)定區(qū)域監(jiān)測、設(shè)防或撤防等功能。
智能家居便是在這一背景下的產(chǎn)物,本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)智能家居系統(tǒng),該系統(tǒng)主要分為智能燈光、智能溫度控制、智能家電控制、智能燃?xì)鈭?bào)警控制和紅外傳感器報(bào)警等幾個(gè)功能模塊,為智能家居的實(shí)現(xiàn)提供了現(xiàn)實(shí)案例。