基于 Arduino 與 OneNET 云平臺(tái)的簡(jiǎn)易智能家居系統(tǒng)設(shè)計(jì)
引 言
目前,智能家居的研究主要以搭載 STM32 芯片 [1] 的硬件設(shè)備為中心控制器。同時(shí),智能家居云平臺(tái)大都建立在YeeLink 云 [2] 上, 而對(duì)于基于 OneNET 云平臺(tái) [3] 的研究仍然相對(duì)較少??紤]到成本和操作簡(jiǎn)易程度等方面的因素,本文以 Arduino 單片機(jī) [4] 為中心控制器設(shè)計(jì)系統(tǒng),將 OneNET 作為數(shù)據(jù)處理平臺(tái),該程序能夠跨平臺(tái)運(yùn)行,具有較好的開(kāi)放性。
1 系統(tǒng)總體設(shè)計(jì)
本文智能家居系統(tǒng)以 Arduino Sensor Sheild V2.0 單片機(jī)為主控模塊,各類傳感器作為數(shù)據(jù)采集模塊,在單片機(jī)中處理數(shù)據(jù)后經(jīng)ESP8266 無(wú)線模塊發(fā)送至OneNET 云平臺(tái)進(jìn)行數(shù)據(jù)處理,以 Android 的智能手機(jī)作為 APP 的展現(xiàn)平臺(tái)。具體系統(tǒng)結(jié)構(gòu)如圖 1 所示。
圖 1 簡(jiǎn)易智能家居系統(tǒng)結(jié)構(gòu)
系統(tǒng)主要包括四個(gè)部分。
(1) 數(shù)據(jù)采集。該部分主要依靠各類傳感器(如溫濕度傳感器、煙霧傳感器等)采集環(huán)境數(shù)據(jù),同時(shí)將采集到的數(shù)據(jù)傳輸?shù)脚c之相連的單片機(jī)中。
(2)云平臺(tái)數(shù)據(jù)傳輸。單片機(jī)將采集到的數(shù)據(jù)進(jìn)行處理,同時(shí)向 OneNET傳輸數(shù)據(jù),在云平臺(tái)中可以控制已經(jīng)搭載的模塊。
(3)APP。手機(jī)通過(guò)與無(wú)線模塊 ESP8266 相連,接收到網(wǎng)站傳來(lái)的數(shù)據(jù),將其顯示在 APP 上。
(4)指令執(zhí)行。在接收到指令數(shù)據(jù)時(shí)對(duì)傳感器或相應(yīng)的模塊進(jìn)行操作。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 Arduino Sensor SheildV2.0
Arduino Sensor Shield V2.0 專用傳感器擴(kuò)展板集市面上各種擴(kuò)展板優(yōu)點(diǎn)于一體,采用 PCB 沉金工藝加工,主板不僅將全部數(shù)字與模擬接口以舵機(jī)線序形式擴(kuò)展出來(lái),還特設(shè)藍(lán)牙模塊通信接口、SD 卡模塊通信接口、APC220 無(wú)線射頻模塊通信接口,以及 RB URF V1.1 超聲波傳感器接口,獨(dú)立擴(kuò)出,更加易用方便。在本文系統(tǒng)中作為中心處理器,連接LED、繼電器模塊、煙霧傳感器、紅外傳感器、溫濕度傳感器、ESP8266、LCD 顯示模塊。各類傳感器實(shí)時(shí)采集數(shù)據(jù),單片機(jī)將處理好的數(shù)據(jù)傳輸?shù)?OneNET 云平臺(tái)上處理,由其返回控制信號(hào)從而控制相應(yīng)的傳感器或其他模塊。
2.2 溫濕度傳感器 DHT11
DHT11 數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。傳感器上電后要等待 1 s,以越過(guò)不穩(wěn)定狀態(tài),在此期間無(wú)需發(fā)送任何指令 [5]。庫(kù)文件中擁有非常完善的函數(shù)控制塊,可以非常方便地采集到當(dāng)前室內(nèi)的溫濕度信息,免去了手動(dòng)解析的麻煩,并且修改起來(lái)也非常方便。
2.3 紅外傳感器
本文系統(tǒng)選用 HC-SR501 熱釋電紅外傳感器,采用可重復(fù)觸發(fā)的工作方式(即感應(yīng)輸出高電平后,在延時(shí)時(shí)間段內(nèi), 如果有人體在其感應(yīng)范圍活動(dòng),其輸出將一直保持高電平, 直到人離開(kāi)后才延時(shí)將高電平變?yōu)榈碗娖剑?,具有感?yīng)封鎖時(shí)間等特點(diǎn) [6]。當(dāng)感應(yīng)到有人經(jīng)過(guò)時(shí)向單片機(jī)傳輸信號(hào),再由單片機(jī)控制蜂鳴器報(bào)警。
2.4 煙霧傳感器 MQ-2
MQ-2 型煙霧傳感器是多種氣體探測(cè)器,探測(cè)范圍極其廣泛,具有靈敏度高、響應(yīng)快、穩(wěn)定性好、壽命長(zhǎng)、驅(qū)動(dòng)電路簡(jiǎn)單等優(yōu)點(diǎn) [7]。在本文系統(tǒng)中,MQ-2 煙霧傳感器主要用于測(cè)量各種氣體的總閾值,當(dāng)有害氣體達(dá)到一定濃度時(shí)才會(huì)進(jìn)行蜂鳴報(bào)警。
2.5 繼電器模塊和 LED 燈
繼電器模塊的作用是傳遞信號(hào)或同時(shí)控制多個(gè)電路,也可直接控制小容量電動(dòng)機(jī)或其他電氣執(zhí)行元件 [8]。
發(fā)光二極管(Light Emitting Diode,LED)是一種能夠?qū)㈦娔苻D(zhuǎn)化為可見(jiàn)光的固態(tài)半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光 [9]。
這兩個(gè)模塊都可以在手機(jī)APP 上進(jìn)行控制,由 OneNET 網(wǎng)站發(fā)送控制指令,單片機(jī)在接收到數(shù)據(jù)以后,經(jīng)過(guò)解析, 判斷控制信號(hào),從而控制這兩個(gè)模塊。在家用的情況下,用手機(jī)遠(yuǎn)程控制這些小型模塊非常方便。
2.6 ESP8266
ESP8266是由上海樂(lè)鑫信息科技有限公司開(kāi)發(fā)的集成無(wú)線芯片,支持二次開(kāi)發(fā),具有超高的性價(jià)比。目前多家廠商在做 ESP8266 芯片的開(kāi)發(fā)與服務(wù)工作,且其服務(wù)已經(jīng)較為全面,利于開(kāi)發(fā)者以較低的成本開(kāi)發(fā)出個(gè)性的智能產(chǎn)品,因價(jià)格較低、性能穩(wěn)定等受到較大關(guān)注 [10]。該芯片可工作于 AP 模式、Station 模式以及混合模式,本文系統(tǒng)中利用 AT指令進(jìn)行控制,使用 ESP8266的 Station模式,ESP8266模塊連接到由接入點(diǎn)建立的WiFi網(wǎng)絡(luò),用于向OneNET云平臺(tái)傳輸、接收數(shù)據(jù)。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 系統(tǒng)流程
Arduino Sensor Sheild V2.0 通過(guò)串口發(fā)送 AT 指令來(lái)控制ESP8266 WiFi 模塊的各項(xiàng)操作。模塊在開(kāi)機(jī)啟動(dòng)后自動(dòng)搜索附近網(wǎng)絡(luò),搜索到對(duì)應(yīng)的在程序中定義過(guò)名稱和密碼的網(wǎng)絡(luò)后進(jìn)行連接,連接上 WiFi 后,與 OneNET 網(wǎng)站進(jìn)行TCP 連接, 將傳感器采集到的數(shù)據(jù)進(jìn)行打包及 JSON 數(shù)據(jù)格式化后發(fā)送至 OneNET 網(wǎng)站。OneNET 網(wǎng)站將上傳的數(shù)據(jù)進(jìn)行可視化處理,且添加了發(fā)送控制指令的功能,單片機(jī)接收到控制指令的同時(shí)控制模塊進(jìn)行響應(yīng)。系統(tǒng)初始化如圖 2 所示。
3.2 數(shù)據(jù)流程
(1) 使用 DHT11溫濕度傳感器的庫(kù) <dht11.h>,讀取溫濕度值。
(2) 使用定時(shí)器 <TimerOne.h>庫(kù)監(jiān)控 AT指令發(fā)送和獲取返回?cái)?shù)據(jù)的時(shí)間。
(3) 使 用 OneNET提 供 的 <HttpPacket.h>庫(kù), 合 成POST 請(qǐng)求的HTTP 頭。
(5)使用 ESP8266 連接路由器,將數(shù)據(jù)發(fā)送到 OneNET服務(wù)器。
傳感器數(shù)據(jù)上傳流程如圖 3 所示。
4 系統(tǒng)測(cè)試結(jié)果
首先將單片機(jī)與 PC 機(jī)用數(shù)據(jù)線相連,然后打開(kāi)手機(jī)熱點(diǎn),設(shè)定好熱點(diǎn)名稱與密碼,連接成功后,在程序中設(shè)定延遲500 ms發(fā)送一次數(shù)據(jù),因此單片機(jī)每500 ms更新一次數(shù)據(jù),并將數(shù)據(jù)上傳至 OneNET 云平臺(tái),同時(shí) APP 同步更新數(shù)據(jù)。 將 LED 與繼電器開(kāi)關(guān)打向 OFF,由于網(wǎng)絡(luò)的傳輸造成一定的時(shí)間延遲(約為 3 s),單片機(jī)上的 LED 燈熄滅且繼電器紅燈亮起表示已經(jīng)關(guān)閉。同樣,打開(kāi)開(kāi)關(guān),發(fā)現(xiàn)單片機(jī)上的LED 燈亮起,且繼電器上的綠燈亮起表示繼電器已經(jīng)打開(kāi)。開(kāi)關(guān)關(guān)閉如圖 4 所示,LED 燈和繼電器關(guān)閉如圖 5 所示,開(kāi)關(guān)打開(kāi)如圖 6 所示,LED 燈和繼電器開(kāi)啟如圖 7 所示。
連接至 Arduino 主控模塊的各類硬件外設(shè)如圖 8 所示, 從左到右分別是 MQ-2 煙霧傳感器,ESP8266,DHT11 溫濕度傳感器、人體紅外傳感器。
圖 8 連接至 Arduino 主控模塊的各類硬件外設(shè)
5 結(jié) 語(yǔ)
從實(shí)驗(yàn)的測(cè)試結(jié)果來(lái)看,本文所設(shè)計(jì)的系統(tǒng)能夠?qū)崟r(shí)監(jiān)控室內(nèi)的各項(xiàng)指標(biāo),并且能夠通過(guò)紅外傳感器、溫濕度傳感器、煙霧傳感器等獲取數(shù)據(jù),實(shí)時(shí)傳輸?shù)?APP 上。用戶可以通過(guò) APP 上可視化的數(shù)據(jù)查看室內(nèi)狀況。該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單, 數(shù)據(jù)查詢方便,具有一定的可擴(kuò)展性,可以實(shí)現(xiàn)基本的智能家居環(huán)境監(jiān)測(cè)功能和簡(jiǎn)單的控制功能。