(四川輕化工大學(xué)物理與電子工程學(xué)院,四川宜賓 644005)
隨著科技的不斷發(fā)展,智能家居已經(jīng)在我們生活的品質(zhì)中起到關(guān)鍵作用,智能家居的興起的趨勢(shì)已勢(shì)不可擋。物聯(lián)網(wǎng)就是把世界上的萬(wàn)物連接到一起的形式,是由互聯(lián)網(wǎng)為基礎(chǔ)延伸的一種網(wǎng)絡(luò),其將不同模塊得到的熱度、光亮、氣味、電壓值等信息通過(guò)網(wǎng)絡(luò)傳輸?shù)叫枰娜伺c物上,從而實(shí)現(xiàn)對(duì)外界事物大感知??萍嫉目焖侔l(fā)展使我們的生活水平得以飛躍,智能家居的聲影已經(jīng)逐漸進(jìn)入人們的生活中,小到智能控制的插線板,大到機(jī)器人管家,智能家居控制系統(tǒng)發(fā)展變得豐富多樣化。這個(gè)領(lǐng)域剛興起不久,就得到人們的一致好評(píng),使得智能家居控制系統(tǒng)發(fā)展得迅速。網(wǎng)絡(luò)的發(fā)展,使得網(wǎng)絡(luò)控制、語(yǔ)音控制、隔空控制變?yōu)榭赡?,智能家居使我們的生活水平及質(zhì)量得到了飛的智悅,也使得智能家居更加的人性化與普及化。
網(wǎng)絡(luò)的控制需要客戶(hù)端和控制端處于網(wǎng)絡(luò)暢通才能運(yùn)行控制指令,需要搭載服務(wù)器,對(duì)控制端傳過(guò)來(lái)的數(shù)據(jù)及客戶(hù)端發(fā)來(lái)的數(shù)據(jù)指令進(jìn)行交互,這樣才能滿足使智能家居達(dá)到需要的要求。該設(shè)計(jì)通過(guò)Blinker的網(wǎng)絡(luò)服務(wù)器平臺(tái),使用ESP8266模塊掛載到服務(wù)器,通過(guò)客戶(hù)端進(jìn)入相應(yīng)的軟件來(lái)對(duì)掛載到網(wǎng)絡(luò)服務(wù)器上的控制端進(jìn)行指令控制,服務(wù)器把客戶(hù)端發(fā)來(lái)的控制指令通過(guò)網(wǎng)絡(luò)傳輸?shù)紼SP8266網(wǎng)絡(luò)模塊。ESP8266交互式的返回交互信息,并對(duì)接收到數(shù)據(jù)通過(guò)串口發(fā)送數(shù)據(jù)到Arduino系統(tǒng)板,此時(shí)Arduino通過(guò)對(duì)網(wǎng)絡(luò)傳輸而得到的數(shù)據(jù)進(jìn)行解析。對(duì)解析的數(shù)據(jù)進(jìn)行判斷,從而執(zhí)行相應(yīng)的操作。其硬件組成部分如圖1所示。
圖1 系統(tǒng)框圖
整個(gè)家居的自動(dòng)控制都是Arduino DUE板完成,對(duì)接收到的各種模塊數(shù)據(jù)、指令等進(jìn)行處理,完成相應(yīng)的控制要求。
溫濕度硬件電路使用的SHT30數(shù)字型的溫濕度傳感器,采用IIC通信方式對(duì)得到的溫濕度數(shù)據(jù)進(jìn)行傳輸。濕度測(cè)量的范圍在0~199% RH,精度為±3% RH;溫度測(cè)量的范圍在-40 ℃~125 ℃,精度在±0.3 ℃。該傳感器已經(jīng)滿足了正常家居的使用范圍。
顯示器使用的TFT屏,因其可以獨(dú)立地對(duì)各個(gè)像素點(diǎn)進(jìn)行控制,優(yōu)越的反應(yīng)速度及可視的角度達(dá)到了130度,是高端產(chǎn)品必備的部件。TFT_1.44顯示屏模塊采用SPI通信方式,與IIC相比SPI的速度更快。
使用ESP8266網(wǎng)絡(luò)傳感器,其工作電壓為3.3 V,網(wǎng)絡(luò)工作頻率范圍在2.412~2.484 GHz,因其模塊有豐富的硬件接口,可支持UART、GPIO、IIC、ADC等,在各種場(chǎng)合都非常的適用。
氣體無(wú)色無(wú)味,人的各種器官很難辨別出來(lái),當(dāng)一些有害氣體泄露,無(wú)一不危害到人的生命,所以為系統(tǒng)設(shè)計(jì)增加了氣體檢測(cè)傳感器。氣體檢測(cè)使用MQ-2煙霧傳感器,其特點(diǎn)在于有非常高的靈敏度、穩(wěn)定性高、使用壽命長(zhǎng),兼顧煙霧、甲烷、液化氣等可燃?xì)怏w的檢測(cè),適合家居的使用場(chǎng)景。
一般情況下,人最大能承受的36 V的電壓,而家用是220 V的交流電對(duì)人來(lái)說(shuō)萬(wàn)一觸電,傷害是巨大的,所以在人生安全的情況下,為系統(tǒng)設(shè)計(jì)手揮即關(guān)的功能,避免由觸碰而觸電的風(fēng)險(xiǎn)。該設(shè)計(jì)使用GP2D12紅外線測(cè)距傳感器完成手揮動(dòng)距離,其具有結(jié)構(gòu)簡(jiǎn)單、易于小型化、成本低、抗干擾強(qiáng)等優(yōu)點(diǎn),易于家居的使用。
當(dāng)室內(nèi)沒(méi)有人,都外出了,屋內(nèi)的錢(qián)財(cái)、物品沒(méi)人看管,無(wú)疑不會(huì)讓外出的人心存顧慮?;蛘弋?dāng)你在熟睡的時(shí)候,小偷入室盜竊,對(duì)錢(qián)財(cái)和人都是一種威脅。由此在該系統(tǒng)增添HC-SR501人體紅外感應(yīng)傳感器,其傳感器可調(diào)的監(jiān)測(cè)范圍適合家居報(bào)警功能的使用。
要實(shí)現(xiàn)智能終端的控制,軟件部分就要分為兩個(gè)部分:一塊是上位機(jī)手機(jī)的設(shè)計(jì);另一塊則是下位機(jī)及受控系統(tǒng)。而受控系統(tǒng)的設(shè)計(jì)又分為兩個(gè)部件,由Arduino DUE硬件完成自動(dòng)控制的操作和ESP8266網(wǎng)絡(luò)傳感器完成網(wǎng)絡(luò)的數(shù)據(jù)交互。Arduino DUE主要的功能是對(duì)IO端口連接的傳感器獲取的數(shù)據(jù)進(jìn)行處理和對(duì)ESP8266在網(wǎng)上獲取到的日期和時(shí)間,用TFT進(jìn)行顯示。由ESP8266網(wǎng)絡(luò)模塊通過(guò)上位機(jī)得來(lái)的控制指令解析后通過(guò)串口傳送,Arduino DUE控制部分接收到串口信息后完成相應(yīng)的控制。ESP8266網(wǎng)絡(luò)模塊的主要功能是連接到互聯(lián)網(wǎng),從網(wǎng)絡(luò)獲取時(shí)間日期,并且把手機(jī)控制端通過(guò)網(wǎng)絡(luò)發(fā)來(lái)的數(shù)據(jù)進(jìn)行解析,然后傳送給Arduino DUE,從而完成整個(gè)控制。
上位機(jī)的APP軟件(Blinker)通過(guò)網(wǎng)絡(luò)連接到Blinker平臺(tái),獲取ESP8266網(wǎng)絡(luò)模塊通過(guò)網(wǎng)絡(luò)上傳的數(shù)據(jù),同時(shí)等待數(shù)據(jù)的發(fā)送。
整個(gè)設(shè)計(jì)的核心組成就在下位機(jī)部分,所有的數(shù)據(jù)指令,控制指令都在這個(gè)部分作用給人或者物上。
2.2.1 Arduino DUE控制系統(tǒng)
Arduino系統(tǒng)會(huì)在開(kāi)機(jī)時(shí)去判斷ESP8266網(wǎng)絡(luò)模塊是否連上網(wǎng)絡(luò),當(dāng)網(wǎng)絡(luò)不通時(shí)會(huì)在TFT顯示屏上提示連接網(wǎng)絡(luò),當(dāng)判斷ESP8266網(wǎng)絡(luò)模塊已經(jīng)連上網(wǎng)絡(luò)則獲取ESP8266模塊得到的時(shí)間等信息。開(kāi)機(jī)過(guò)后Arduino一直通過(guò)串口檢測(cè)ESP8266模塊發(fā)送過(guò)來(lái)的信息,當(dāng)其中有控制指令則完成相應(yīng)的控制功能。同時(shí)Arduino DUE對(duì)自己芯片IO端口掛接的模塊的檢測(cè)數(shù)據(jù)進(jìn)行解析處理通過(guò)TFT顯示屏顯示。
1)整個(gè)系統(tǒng)開(kāi)機(jī)需要先獲取時(shí)間,首先需要調(diào)用“Blinker.h”庫(kù),然后通過(guò)相應(yīng)代碼獲取時(shí)間。
//Get the time
time_sec=Blinker.second()
time_m=Blinker.minute()
time_h=Blinker.hour()
time_wday=Blinker.wday()
time_month=Blinker.month()
time_mday=Blinker.mday()
time_year=Blinker.year()
2)獲取溫濕度則調(diào)用“ClosedCube_SHT3XD.h”庫(kù),初始化SHT30溫濕度傳感器后,通過(guò)相應(yīng)代碼獲取傳感器的測(cè)量值。
//獲取溫濕度
printResult(sht3xd.readTempAndHumidity(REPEATABILITY_HIGH,MODE_POLLING,50));
3)紅外線測(cè)距模塊用于揮手即可開(kāi)關(guān)燈的功能,Arduino DUE通過(guò)模擬量輸入端口A0獲取GP2D12測(cè)距傳感器的輸出電壓值,然后通過(guò)運(yùn)算處理獲得測(cè)距值。在使用時(shí)首先應(yīng)該考慮揮手動(dòng)作后要延遲一段時(shí)間后再測(cè)距判斷揮手動(dòng)作,所以調(diào)用控制器運(yùn)行時(shí)間已達(dá)到避免一揮手即多次動(dòng)作的情況。
//手揮開(kāi)關(guān)燈
data=analogRead(A0)
cm=2547.8/((float)data*0.49-10.41)-0.42
if((zz!=0)&&(cm<20)){Blinker.delay(15)
data=analogRead(A0)
cm=2547.8/((float)data*0.49-10.41)-0.42
if(cm<20){
if(millis()/2000!=millis_backup){
millis_backup=millis()/2000
digitalWrite(D2,!digitalRead(D2));//開(kāi)關(guān)燈控制IO口
4)整個(gè)系統(tǒng)開(kāi)機(jī)時(shí),MQ-2傳感器需要>30 s的時(shí)間進(jìn)行加熱后才能得到準(zhǔn)確的阻值。該傳感器的阻值R與室內(nèi)被測(cè)的有害氣體的濃度C的數(shù)學(xué)關(guān)系式為:log R=m*logC*n(m,n為常數(shù))。n的值與傳感器靈敏度有關(guān),不僅與傳感器的材料有關(guān),還與氣體種類(lèi)和室內(nèi)溫度等有關(guān)系。m的值為氣體濃度變化的靈敏度。設(shè)置模擬端口A0檢測(cè)傳感器輸出的電壓值來(lái)判定室內(nèi)空氣情況。
//氣體檢測(cè)
int val=analogRead(A0);//讀取氣體傳感器輸出電壓值
if(val>500)
digitalWrite(D3,HIGH);//有害氣體濃度過(guò)高觸發(fā)報(bào)警
else
digitalWrite(D3,LOW)
5)人體紅外感應(yīng)模塊的輸出方式為開(kāi)關(guān)方式,當(dāng)人進(jìn)入其感應(yīng)范圍則輸出高電平并延時(shí)一段時(shí)間,當(dāng)人離開(kāi)一段時(shí)間后則自動(dòng)跳變到低電平。傳感器上可設(shè)置重復(fù)或不可重復(fù)觸發(fā)、感應(yīng)范圍、延時(shí)時(shí)間,通過(guò)傳感器上的電位器進(jìn)行相應(yīng)的調(diào)節(jié)。把對(duì)應(yīng)的輸出IO口接到Arduino DUE的IO端口D4。當(dāng)夜晚或者屋內(nèi)人員離開(kāi)則對(duì)該IO端口進(jìn)行判斷;當(dāng)有人闖入則觸發(fā)人體紅外感應(yīng)傳感器,Arduino DUE檢測(cè)到后觸發(fā)警報(bào),并通過(guò)ESP8266網(wǎng)絡(luò)模塊傳輸?shù)缴衔粰C(jī)進(jìn)行提示。
time_h=Blinker.hour();//Acquisition hours
if((time_h>0)&&(time_h<5)){//判斷是否是凌晨1~5點(diǎn)
if(digitalRead(D3))//檢測(cè)D3端口是否為高電平,為“高”則觸發(fā)報(bào)警
digitalWrite(D5,HIGH)
if(!digitalRead(D3)){//檢測(cè)D3端口是否為低電平,為“低”則關(guān)閉報(bào)警
digitalWrite(D5,LOW)
2.2.2 ESP8266網(wǎng)絡(luò)模塊
在開(kāi)機(jī)運(yùn)行時(shí),要ESP8266網(wǎng)絡(luò)模塊接入網(wǎng)絡(luò),使之能掛接到平臺(tái),所以最開(kāi)始需要對(duì)ESP8266進(jìn)行相應(yīng)的配置,則需要將SSID名稱(chēng)、密碼設(shè)置到模式當(dāng)中。首先配置固定的SSID名稱(chēng)、密碼及Blinker的個(gè)人設(shè)備密鑰,然后通過(guò)調(diào)用Blinker庫(kù)把固定的AT指令和Blinker個(gè)人用戶(hù)的密鑰寫(xiě)入ESP8266控制器中,然后由Blinker庫(kù)函數(shù)來(lái)控制ESP8266的控制器自動(dòng)連接WIFI,最后掛接到Blinker服務(wù)器平臺(tái)。
1)SSID名稱(chēng)、密碼及密鑰配置
char auth[]="f2b812c58ff2"; // Your Device Secret Key
char ssid[]="wifi"; //Your WiFi network SSID or name
char pswd[]="yupeng123"; //Your WiFi network WPA password or WEP key
2)調(diào)用Blinker庫(kù)寫(xiě)入AT指令到控制器
BLINKER_DEBUG.stream(Serial)
Blinker.begin(auth,ssid,pswd); //Write SSID or key
Blinker.attachData(dataRead)
Blinker.setTimezone(8.0); //Set time zone
該系統(tǒng)設(shè)計(jì)的主要思想是便利家居生活,提高生活的品質(zhì),并以當(dāng)今生活的發(fā)展趨勢(shì)設(shè)計(jì)了該系統(tǒng)。該設(shè)計(jì)的重要組成部分為上位機(jī)和下位機(jī),下位機(jī)又分為Arduino DUE控制部分和ESP8266網(wǎng)絡(luò)模塊,整個(gè)系統(tǒng)的核心就在于此部分的組成。上位機(jī)主要負(fù)責(zé)發(fā)送控制指令;而下位機(jī)的Arduino DUE各種器件的觸發(fā)及各模塊數(shù)據(jù)的檢測(cè)顯示,ESP8266網(wǎng)絡(luò)模塊則通過(guò)網(wǎng)絡(luò)完成下位機(jī)Arduino DUE和上位機(jī)之間的數(shù)據(jù)交互傳輸。通過(guò)網(wǎng)絡(luò)的便利和快速反應(yīng)等特點(diǎn),使家居生活更加的方便與智能。