陳凱旋 周世恒 陳濤 池政煒 林心怡
摘 要:隨著信息時代的發(fā)展和人民日益增長的美好生活的需要,智能家居系統(tǒng)的設(shè)計越來越受到廣泛關(guān)注。文中設(shè)計基于Arduino與OneNET云平臺的簡易智能家居系統(tǒng),以Arduino Sensor Sheild V2.0為主控模塊,利用WiFi無線模塊ESP8266將傳感器數(shù)據(jù)傳輸至OneNET中國移動物聯(lián)網(wǎng)開放平臺,可以實時監(jiān)測智能家居環(huán)境,并能通過手機應(yīng)用進行遠程操控。該系統(tǒng)成本低廉,搭建方便,具有數(shù)據(jù)可視化、網(wǎng)絡(luò)化等特點,為實現(xiàn)智能家居生活提供了一種簡易的解決方案。
關(guān)鍵詞:Arduino;傳感器;智能家居;ESP8266;OneNET;遠程操控
中圖分類號:TP39文獻標識碼:A文章編號:2095-1302(2019)12-00-03
0 引 言
目前,智能家居的研究主要以搭載STM32芯片[1]的硬件設(shè)備為中心控制器。同時,智能家居云平臺大都建立在 YeeLink云[2]上,而對于基于OneNET云平臺[3]的研究仍然相對較少??紤]到成本和操作簡易程度等方面的因素,本文以Arduino單片機[4]為中心控制器設(shè)計系統(tǒng),將OneNET作為數(shù)據(jù)處理平臺,該程序能夠跨平臺運行,具有較好的開放性。
1 系統(tǒng)總體設(shè)計
本文智能家居系統(tǒng)以Arduino Sensor Sheild V2.0單片機為主控模塊,各類傳感器作為數(shù)據(jù)采集模塊,在單片機中處理數(shù)據(jù)后經(jīng)ESP8266無線模塊發(fā)送至OneNET云平臺進行數(shù)據(jù)處理,以Android的智能手機作為APP的展現(xiàn)平臺。具體系統(tǒng)結(jié)構(gòu)如圖1所示。
系統(tǒng)主要包括四個部分。
(1)數(shù)據(jù)采集。該部分主要依靠各類傳感器(如溫濕度傳感器、煙霧傳感器等)采集環(huán)境數(shù)據(jù),同時將采集到的數(shù)據(jù)傳輸?shù)脚c之相連的單片機中。
(2)云平臺數(shù)據(jù)傳輸。單片機將采集到的數(shù)據(jù)進行處理,同時向OneNET傳輸數(shù)據(jù),在云平臺中可以控制已經(jīng)搭載的模塊。
(3)APP。手機通過與無線模塊ESP8266相連,接收到網(wǎng)站傳來的數(shù)據(jù),將其顯示在APP上。
(4)指令執(zhí)行。在接收到指令數(shù)據(jù)時對傳感器或相應(yīng)的模塊進行操作。
2 系統(tǒng)硬件設(shè)計
2.1 Arduino Sensor Sheild V2.0
Arduino Sensor Shield V2.0專用傳感器擴展板集市面上各種擴展板優(yōu)點于一體,采用PCB沉金工藝加工,主板不僅將全部數(shù)字與模擬接口以舵機線序形式擴展出來,還特設(shè)藍牙模塊通信接口、SD卡模塊通信接口、APC220無線射頻模塊通信接口,以及RB URF V1.1超聲波傳感器接口,獨立擴出,更加易用方便。在本文系統(tǒng)中作為中心處理器,連接LED、繼電器模塊、煙霧傳感器、紅外傳感器、溫濕度傳感器、ESP8266、LCD顯示模塊。各類傳感器實時采集數(shù)據(jù),單片機將處理好的數(shù)據(jù)傳輸?shù)絆neNET云平臺上處理,由其返回控制信號從而控制相應(yīng)的傳感器或其他模塊。
2.2 溫濕度傳感器DHT11
DHT11數(shù)字溫濕度傳感器是一款含有已校準數(shù)字信號輸出的溫濕度復(fù)合傳感器。傳感器上電后要等待1 s,以越過不穩(wěn)定狀態(tài),在此期間無需發(fā)送任何指令[5]。庫文件中擁有非常完善的函數(shù)控制塊,可以非常方便地采集到當前室內(nèi)的溫濕度信息,免去了手動解析的麻煩,并且修改起來也非常方便。
2.3 紅外傳感器
本文系統(tǒng)選用HC-SR501熱釋電紅外傳感器,采用可重復(fù)觸發(fā)的工作方式(即感應(yīng)輸出高電平后,在延時時間段內(nèi),如果有人體在其感應(yīng)范圍活動,其輸出將一直保持高電平,直到人離開后才延時將高電平變?yōu)榈碗娖剑?,具有感?yīng)封鎖時間等特點[6]。當感應(yīng)到有人經(jīng)過時向單片機傳輸信號,再由單片機控制蜂鳴器報警。
2.4 煙霧傳感器MQ-2
MQ-2型煙霧傳感器是多種氣體探測器,探測范圍極其廣泛,具有靈敏度高、響應(yīng)快、穩(wěn)定性好、壽命長、驅(qū)動電路簡單等優(yōu)點[7]。在本文系統(tǒng)中,MQ-2煙霧傳感器主要用于測量各種氣體的總閾值,當有害氣體達到一定濃度時才會進行蜂鳴報警。
2.5 繼電器模塊和LED燈
繼電器模塊的作用是傳遞信號或同時控制多個電路,也可直接控制小容量電動機或其他電氣執(zhí)行元件[8]。
發(fā)光二極管(Light Emitting Diode,LED)是一種能夠?qū)㈦娔苻D(zhuǎn)化為可見光的固態(tài)半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光[9]。
這兩個模塊都可以在手機APP上進行控制,由OneNET網(wǎng)站發(fā)送控制指令,單片機在接收到數(shù)據(jù)以后,經(jīng)過解析,判斷控制信號,從而控制這兩個模塊。在家用的情況下,用手機遠程控制這些小型模塊非常方便。
2.6 ESP8266
ESP8266是由上海樂鑫信息科技有限公司開發(fā)的集成無線芯片,支持二次開發(fā),具有超高的性價比。目前多家廠商在做ESP8266芯片的開發(fā)與服務(wù)工作,且其服務(wù)已經(jīng)較為全面,利于開發(fā)者以較低的成本開發(fā)出個性的智能產(chǎn)品,因價格較低、性能穩(wěn)定等受到較大關(guān)注[10]。該芯片可工作于AP模式、Station模式以及混合模式,本文系統(tǒng)中利用AT指令進行控制,使用ESP8266的Station模式,ESP8266模塊連接到由接入點建立的WiFi網(wǎng)絡(luò),用于向OneNET云平臺傳輸、接收數(shù)據(jù)。
3 系統(tǒng)軟件設(shè)計
3.1 系統(tǒng)流程
Arduino Sensor Sheild V2.0通過串口發(fā)送AT指令來控制ESP8266 WiFi模塊的各項操作。模塊在開機啟動后自動搜索附近網(wǎng)絡(luò),搜索到對應(yīng)的在程序中定義過名稱和密碼的網(wǎng)絡(luò)后進行連接,連接上WiFi后,與OneNET網(wǎng)站進行TCP連接,將傳感器采集到的數(shù)據(jù)進行打包及JSON數(shù)據(jù)格式化后發(fā)送至OneNET網(wǎng)站。OneNET網(wǎng)站將上傳的數(shù)據(jù)進行可視化處理,且添加了發(fā)送控制指令的功能,單片機接收到控制指令的同時控制模塊進行響應(yīng)。系統(tǒng)初始化如圖2所示。
3.2 數(shù)據(jù)流程
(1)使用DHT11溫濕度傳感器的庫
int chk = DHT11.read(DHT11PIN);//讀取溫濕度值
//串口調(diào)試DHT11輸出信息
DebugSerial.print("Read sensor:");
switch (chk)
{
case DHTLIB_OK:
DebugSerial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
DebugSerial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
DebugSerial.println("Time out error");
break;
default:
DebugSerial.println("Unknown error");
break;
}
(2)使用定時器
(3)使用OneNET提供的
packet.setHostAddress(OneNETServer);
packet.setDevId(device_id_temp);//device_id
packet.setAccessKey(API_VALUE_temp);//API_KEY
packet.createCmdPacket(POST,TYPE_DATAPOINT,p);
(4)使用
StaticJsonBuffer<200> jsonBuffer;
JsonObject&value = jsonBuffer.createObject();
value["value"] = thisData;
JsonObject&id_datapoints = jsonBuffer.createObject();
id_datapoints["id"] = sensor_id_temp;
JsonArray&datapoints = id_datapoints.createNestedArray(“datapoints”);
datapoints.add(value);
JsonObject&myJson = jsonBuffer.createObject();
JsonArray&datastreams = myJson.createNestedArray(“datastreams”);
datastreams.add(id_datapoints);
char p[200];
int num = myJson.printTo(p,sizeof(p));
(5)使用ESP8266連接路由器,將數(shù)據(jù)發(fā)送到OneNET服務(wù)器。
if (sendCommand("AT\r\n","OK",1000,10) == Success);
else ESP8266_ERROR(5);
clrEsp8266RxBuffer();
if (sendCommand("AT+CWMODE=1\r\n","OK",3000,10) == Success);
else ESP8266_ERROR(7);
clrEsp8266RxBuffer();
char cmd[50];
strcpy(cmd,"AT+CWJAP=\"");
strcat(cmd,ssid);
strcat(cmd,"\",\"");
strcat(cmd,password);
strcat(cmd,"\"\r\n");
if (sendCommand(cmd,“OK”,20000,10) == Success);
else ESP8266_ERROR(8);
clrEsp8266RxBuffer();
傳感器數(shù)據(jù)上傳流程如圖3所示。
4 系統(tǒng)測試結(jié)果
首先將單片機與PC機用數(shù)據(jù)線相連,然后打開手機熱點,設(shè)定好熱點名稱與密碼,連接成功后,在程序中設(shè)定延遲500 ms發(fā)送一次數(shù)據(jù),因此單片機每500 ms更新一次數(shù)據(jù),并將數(shù)據(jù)上傳至OneNET云平臺,同時APP同步更新數(shù)據(jù)。將LED與繼電器開關(guān)打向OFF,由于網(wǎng)絡(luò)的傳輸造成一定的時間延遲(約為3 s),單片機上的LED燈熄滅且繼電器紅燈亮起表示已經(jīng)關(guān)閉。同樣,打開開關(guān),發(fā)現(xiàn)單片機上的LED燈亮起,且繼電器上的綠燈亮起表示繼電器已經(jīng)打開。開關(guān)關(guān)閉如圖4所示,LED燈和繼電器關(guān)閉如圖5所示,開關(guān)打開如圖6所示,LED燈和繼電器開啟如圖7所示。
連接至Arduino主控模塊的各類硬件外設(shè)如圖8所示,從左到右分別是MQ-2煙霧傳感器,ESP8266,DHT11溫濕度傳感器、人體紅外傳感器。
5 結(jié) 語
從實驗的測試結(jié)果來看,本文所設(shè)計的系統(tǒng)能夠?qū)崟r監(jiān)控室內(nèi)的各項指標,并且能夠通過紅外傳感器、溫濕度傳感器、煙霧傳感器等獲取數(shù)據(jù),實時傳輸?shù)紸PP上。用戶可以通過APP上可視化的數(shù)據(jù)查看室內(nèi)狀況。該系統(tǒng)結(jié)構(gòu)簡單,數(shù)據(jù)查詢方便,具有一定的可擴展性,可以實現(xiàn)基本的智能家居環(huán)境監(jiān)測功能和簡單的控制功能。
參 考 文 獻
[1]李錦詩,黃彥蓉,劉龠.智能家居現(xiàn)狀調(diào)查與未來發(fā)展[J].科技經(jīng)濟導(dǎo)刊,2017(1):19-21.
[2]基于YeeLink物聯(lián)網(wǎng)平臺的校園環(huán)境監(jiān)測系統(tǒng)的設(shè)計[D].保定:河北大學,2015.
[3]楊艷,李東睿.淺談基于OneNET平臺的物聯(lián)網(wǎng)通用應(yīng)用平臺的設(shè)計與實現(xiàn)[J].數(shù)字通信世界,2018(1):57-58.
[4]劉文杰,朱明,覃振權(quán).基于Arduino的物聯(lián)網(wǎng)溫控實驗設(shè)計[J].實驗技術(shù)與管理,2017,34(1):150-152.
[5]柴世龍,劉毅,張振虎.基于ZigBee的溫濕度監(jiān)測系統(tǒng)設(shè)計[J].科技視界,2015(4):211-212.
[6]王東,莫先.基于STM32和HC-SR501智能家居的智能照明系統(tǒng)設(shè)計[J].重慶理工大學學報,2016,30(6):135-142.
[7]鄭道林,孫耀杰,左兆輝.基于MQ-2與GSM的CO監(jiān)測報警系統(tǒng)的設(shè)計[J].電子設(shè)計工程,2014,22(4):162-165.
[8]鄒洪森.基于物聯(lián)網(wǎng)技術(shù)的無線繼電器模塊研制與應(yīng)用[J].寧夏電力,2014(5):33-38.
[9]陳大華,章荷珍.物聯(lián)網(wǎng)LED智能照明產(chǎn)業(yè)的崛起[J].中國照明電器,2013(1):11-15.
[10]邱宏斌.一種基于ESP8266模塊的物聯(lián)網(wǎng)設(shè)計思路[J].電子世界,2017(7):157.