李民靖,郝東來(lái)
(西京學(xué)院,陜西 西安 710123)
世界上第一個(gè)智能家居實(shí)例的出現(xiàn),引起了歐美許多國(guó)家的家電行業(yè)改革,各個(gè)國(guó)家紛紛出臺(tái)了促進(jìn)智能家居加速發(fā)展的政策[1-3]。美國(guó)硅谷作為高科技的追隨者和創(chuàng)造者也開(kāi)展了對(duì)智能家居的研發(fā),它將信息技術(shù)與智能家居系統(tǒng)進(jìn)行了融合,作為其家居技術(shù)發(fā)展的一個(gè)重要方向。智能家居從被人們認(rèn)識(shí)到慢慢接受,后發(fā)展到被需要,未來(lái)人們的生活或許更離不開(kāi)智能家居[4-7]。
對(duì)比傳統(tǒng)的晾衣方法,智能晾衣將擁有更多優(yōu)勢(shì)。在這個(gè)智能家居電器已然存在于人們?nèi)粘<彝ド畹臅r(shí)代,大多數(shù)人還是采取手動(dòng)晾衣的辦法,這樣的晾衣方式不僅耗費(fèi)時(shí)間,而且還需要時(shí)刻關(guān)注天氣情況。例如當(dāng)人們不在家時(shí),下雨了,衣服卻還掛在陽(yáng)臺(tái)上,這樣一來(lái)就需要重新晾衣。諸如此類常見(jiàn)的問(wèn)題都能在智能晾衣架系統(tǒng)的應(yīng)用下得到解決。本系統(tǒng)通過(guò)個(gè)性化的設(shè)計(jì)實(shí)現(xiàn)通過(guò)BLINKER手機(jī)APP和OneNET平臺(tái)查看晾衣情況,以及BLINKER手機(jī)APP控制晾衣架根據(jù)天氣情況自動(dòng)收衣,以此來(lái)滿足用戶日常需求。系統(tǒng)在擁有成本低、功耗低等特點(diǎn)的基礎(chǔ)上,提供了可靠的智能晾衣服務(wù)。
基于OneNET的家居智能晾衣架系統(tǒng)設(shè)計(jì)滿足用戶對(duì)家庭晾衣架的遠(yuǎn)程操作以及對(duì)周圍環(huán)境監(jiān)測(cè)的需求,使得家居晾衣智能化、可控化、便利化。該設(shè)計(jì)使用平臺(tái)更加親民、便利,隨身攜帶的手機(jī)即可實(shí)現(xiàn)晾衣架的遠(yuǎn)程操作,且可視化界面簡(jiǎn)潔、易懂、方便用戶操作。
系統(tǒng)設(shè)計(jì)主要包括以下3個(gè)部分:
第一,依據(jù)智能晾衣架系統(tǒng)設(shè)計(jì)需求與目的來(lái)實(shí)現(xiàn)硬件選型,繪制出對(duì)應(yīng)的電路原理圖,按照原理圖實(shí)現(xiàn)硬件的電路連接,同時(shí)要求完成與之對(duì)應(yīng)的傳感器、舵機(jī)、燈泡等硬件的代碼編寫(xiě)和代碼燒錄。要求下位機(jī)能夠?qū)崿F(xiàn)對(duì)陽(yáng)臺(tái)周圍環(huán)境的數(shù)據(jù)采集,對(duì)雙舵機(jī)的擺動(dòng)控制以及燈泡的亮滅控制,還要能夠自動(dòng)根據(jù)周圍環(huán)境向后擺動(dòng)回收衣架。
第二,云服務(wù)器端設(shè)計(jì)要求能通過(guò)OneNET云平臺(tái)多協(xié)議接入來(lái)實(shí)現(xiàn)硬件設(shè)備的添加,通過(guò)代碼的編寫(xiě)來(lái)配置MQTT協(xié)議的接入以及OneNET云平臺(tái)數(shù)據(jù)接收界面的配置。該模塊用于實(shí)現(xiàn)智能晾衣架與云平臺(tái)的信息交互。
第三,BLINKER手機(jī)APP可視化界面要求能使用手機(jī)APP與下位機(jī)連接,使用點(diǎn)燈軟件開(kāi)發(fā)者模式對(duì)用戶可視化界面進(jìn)行開(kāi)發(fā)編輯與配置按鍵和監(jiān)視窗口,要求實(shí)現(xiàn)點(diǎn)燈軟件相關(guān)代碼編寫(xiě);該模塊通過(guò)手機(jī)熱點(diǎn)和下位機(jī)NodeMCU開(kāi)發(fā)板進(jìn)行數(shù)據(jù)的發(fā)送與收取,用于實(shí)現(xiàn)用戶對(duì)陽(yáng)臺(tái)晾衣架數(shù)據(jù)的遠(yuǎn)程監(jiān)測(cè)與監(jiān)控。該系統(tǒng)的主要整體結(jié)構(gòu)如圖1所示。
圖1 智能晾衣架系統(tǒng)設(shè)計(jì)整體框架
系統(tǒng)設(shè)計(jì)采用NodeMCU物聯(lián)網(wǎng)開(kāi)發(fā)板作為硬件系統(tǒng)的主控芯片,它是整個(gè)硬件系統(tǒng)的重要組成部分。主控芯片的主要作用是連接無(wú)線網(wǎng)絡(luò)、接入服務(wù)器,且作為控制中心連接智能晾衣架外圍的傳感器,是硬件系統(tǒng)最終能否聯(lián)動(dòng)完美運(yùn)行的一個(gè)重要因素。
采集模塊是由DHT11溫濕度傳感模塊、BH1750光照傳感模塊、雨滴傳感模塊以及主控芯片NodeMCU物聯(lián)網(wǎng)開(kāi)發(fā)板進(jìn)行聯(lián)動(dòng)采集周圍環(huán)境數(shù)據(jù)的。
ESP8266是一塊芯片,而NodeMCU是以ESP8266為核心的物聯(lián)網(wǎng)硬件開(kāi)發(fā)板,它支持WiFi功能且使用方法與Arduino開(kāi)發(fā)板類似,所以可以使用Arduino IDE軟件來(lái)對(duì)此開(kāi)發(fā)板進(jìn)行開(kāi)發(fā)。本系統(tǒng)使用的NodeMCU開(kāi)發(fā)板搭載了ESP8266芯片作為通信芯片。基本原理與ESP8266單獨(dú)芯片使用一致。
本次控制模塊使用的是9 g舵機(jī),該舵機(jī)體積小、使用方便、力度大、較為穩(wěn)定。舵機(jī)芯片擁有3個(gè)引腳,分別是VCC、GND、脈沖輸入??刂颇K的主要功能是控制晾衣架向前擺動(dòng)或者向后擺動(dòng)以及控制紫外線燈工作。通過(guò)手機(jī)APP實(shí)現(xiàn)無(wú)線遠(yuǎn)程控制雙舵機(jī),兩個(gè)舵機(jī)齒輪位置擺放一致且平行的時(shí)候,可以實(shí)現(xiàn)對(duì)晾衣架衣桿的前后擺動(dòng)控制。智能晾衣架舵機(jī)的控制一般最大旋轉(zhuǎn)角度為180°,滿足晾衣架需要前后擺動(dòng)的需求[8]。
調(diào)試模塊用于監(jiān)測(cè)上述下位機(jī)各模塊的基本工作情況,有利于掌握系統(tǒng)全局。調(diào)試模塊為CH341USB總線轉(zhuǎn)接芯片,該模塊通過(guò)下載安裝CH341SER驅(qū)動(dòng)來(lái)實(shí)現(xiàn)主控芯片NodeMCU對(duì)其的控制,以此在Arduino軟件上顯示串口,可以通過(guò)Arduino串口監(jiān)視窗口實(shí)時(shí)查看串口數(shù)據(jù)收發(fā)情況,使系統(tǒng)的調(diào)試便利起來(lái)。
OneNET支持多種協(xié)議的接入,系統(tǒng)設(shè)計(jì)使用的是OneNET的MQTT協(xié)議接入。MQTT協(xié)議具有輕量、簡(jiǎn)單、開(kāi)放和易于實(shí)現(xiàn)等特點(diǎn),這些特點(diǎn)使它有非常廣泛的使用范圍[9]。該協(xié)議的接入具體在Arduino的代碼中體現(xiàn)。在OneNET設(shè)備添加成功以后,OneNET的控制臺(tái)里可以對(duì)接入設(shè)備進(jìn)行實(shí)時(shí)監(jiān)測(cè)。下位機(jī)NodeMCU物聯(lián)網(wǎng)開(kāi)發(fā)板通過(guò)搭載的ESP8266芯片來(lái)實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)連接,通過(guò)下位機(jī)采集模塊對(duì)周圍環(huán)境數(shù)據(jù)進(jìn)行采集上傳,OneNET云平臺(tái)監(jiān)測(cè)界面可以直觀地利用圖表來(lái)顯示傳感器監(jiān)測(cè)的周圍環(huán)境數(shù)據(jù)。下位機(jī)通過(guò)MQTT協(xié)議實(shí)現(xiàn)與OneNET云服務(wù)的信息傳遞。
智能晾衣架與OneNET建立通信是基于OneNET提供的MQTT協(xié)議。通過(guò)Arduino的代碼編寫(xiě),實(shí)現(xiàn)了下位機(jī)在接入無(wú)線網(wǎng)絡(luò)的基礎(chǔ)上利用MQTT協(xié)議接入OneNET云服務(wù)器。在接入無(wú)線網(wǎng)絡(luò)的基礎(chǔ)上,編寫(xiě)Arduino相關(guān)MQTT協(xié)議連接的代碼來(lái)實(shí)現(xiàn)下位機(jī)ESP8266與云服務(wù)器的接入。首先智能晾衣架要入網(wǎng)需要在代碼內(nèi)編寫(xiě)char ssid[]和char pswd[]來(lái)確定入網(wǎng)名稱及密碼,由此來(lái)接入無(wú)線網(wǎng)絡(luò)。當(dāng)MQTT接入成功時(shí),會(huì)在OneNET多協(xié)議接入平臺(tái)中顯示綠色的在線狀態(tài);反之,設(shè)備會(huì)顯示灰色的離線狀態(tài)。
在實(shí)現(xiàn)下位機(jī)入網(wǎng)MQTT協(xié)議接入OneNET云平臺(tái)之后,可以在云平臺(tái)監(jiān)測(cè)到下位機(jī)發(fā)送的溫度、濕度、光照強(qiáng)度的監(jiān)測(cè)數(shù)據(jù)。具體監(jiān)測(cè)圖以濕度humi的監(jiān)測(cè)數(shù)據(jù)為例,如圖2所示。
圖2 濕度監(jiān)測(cè)數(shù)據(jù)
OneNET監(jiān)測(cè)數(shù)據(jù)圖顯示下位機(jī)與OneNET服務(wù)器連接正常,數(shù)據(jù)上傳穩(wěn)定,連接速度較快。
采用點(diǎn)燈BLINKER軟件平臺(tái)對(duì)手機(jī)APP可視化界面進(jìn)行開(kāi)發(fā)。Blinker應(yīng)用層針對(duì)用戶的實(shí)際傳感器部署需求和遠(yuǎn)程控制需求,利用自帶開(kāi)發(fā)工具開(kāi)發(fā)上位機(jī)APP[10]。界面的開(kāi)發(fā)同樣依賴于Arduino代碼的編寫(xiě)。在注冊(cè)過(guò)點(diǎn)燈APP的用戶以后,可以購(gòu)買開(kāi)發(fā)者模式,在此模式下手機(jī)APP可視化界面上下位機(jī)采集模塊采集的信息會(huì)變成實(shí)時(shí)的數(shù)據(jù)顯示,在價(jià)格低廉的基礎(chǔ)上實(shí)現(xiàn)了實(shí)時(shí)監(jiān)測(cè)陽(yáng)臺(tái)周圍環(huán)境的需求。通過(guò)WiFi的入網(wǎng)使得下位機(jī)NodeMCU開(kāi)發(fā)板接入互聯(lián)網(wǎng),同時(shí)點(diǎn)燈軟件通過(guò)下位機(jī)手機(jī)熱點(diǎn)的接入來(lái)識(shí)別設(shè)備的在線與離線狀態(tài)。點(diǎn)燈APP開(kāi)發(fā)的可視化界面能夠監(jiān)測(cè)智能晾衣架周圍環(huán)境、控制燈泡亮滅和舵機(jī)前后擺動(dòng)。
點(diǎn)燈APP與下位機(jī)的聯(lián)動(dòng)基于點(diǎn)燈軟件提供的密鑰和手機(jī)熱點(diǎn)WiFi的接入。密鑰主要用于識(shí)別設(shè)備,手機(jī)熱點(diǎn)用于下位機(jī)的入網(wǎng)。在配置點(diǎn)燈APP可視化界面時(shí),獲得了設(shè)備密鑰,需要將密鑰寫(xiě)入代碼中幫助下位機(jī)NodeMCU物聯(lián)網(wǎng)開(kāi)發(fā)板接入點(diǎn)燈手機(jī)APP。密鑰配置用char auth[]來(lái)實(shí)現(xiàn)。
使用Arduino成功燒錄代碼并下載到開(kāi)發(fā)板里以后,用USB數(shù)據(jù)線通電,將手機(jī)熱點(diǎn)打開(kāi),保證手機(jī)為入網(wǎng)狀態(tài)。此時(shí)打開(kāi)點(diǎn)燈APP可以看到,設(shè)備智能晾衣架處于在線狀態(tài),具體如圖3所示。
圖3 點(diǎn)燈設(shè)備在線狀態(tài)
在沒(méi)有接入網(wǎng)絡(luò),沒(méi)有給下位機(jī)通電的情況下,點(diǎn)燈軟件上端顯示離線,代表此時(shí)設(shè)備處于未入網(wǎng)的狀態(tài)。具體如圖4所示。
圖4 點(diǎn)燈設(shè)備離線狀態(tài)
本系統(tǒng)使用了Micro數(shù)據(jù)線來(lái)下載Arduino編寫(xiě)好的程序,利用安裝好的CH341SER串口驅(qū)動(dòng)識(shí)別硬件設(shè)備的接入。通過(guò)打開(kāi)電腦設(shè)備管理器來(lái)檢查硬件設(shè)備是否連接。當(dāng)顯示USB-SERAL CH340時(shí)說(shuō)明硬件CH340芯片被識(shí)別,即硬件連接成功。同時(shí)還要檢查Arduino軟件是否識(shí)別了硬件的接入,檢查接入的串口是否與設(shè)備管理器顯示的接入端口號(hào)一致。根據(jù)接入端口號(hào),Arduino軟件會(huì)識(shí)別出COM3這個(gè)端口號(hào)。具體如圖5所示。
圖5 端口檢查
本系統(tǒng)在實(shí)現(xiàn)晾衣架硬件設(shè)備串口連接以后,可以通過(guò)Arduino內(nèi)置的串口監(jiān)視窗口來(lái)實(shí)現(xiàn)晾衣架周圍環(huán)境的數(shù)據(jù)監(jiān)測(cè),代碼當(dāng)中設(shè)備串口波特率配置為115 200,在打開(kāi)串口以后選擇對(duì)應(yīng)的波特率115 200,即可觀測(cè)到硬件每隔一段時(shí)間上傳一次數(shù)據(jù)。temp對(duì)應(yīng)了溫度采集數(shù)據(jù),單位為℃。humi對(duì)應(yīng)了濕度采集數(shù)據(jù),是以百分比來(lái)衡量濕度大小。lumi代表光照強(qiáng)度,因?yàn)槭鞘覂?nèi),光線昏暗,測(cè)量值較小。rain代表雨滴值。在將Arduino代碼燒錄到NodeMCU開(kāi)發(fā)板以后,監(jiān)測(cè)的數(shù)據(jù)正常,都在串口監(jiān)視窗口中正常顯示。從圖6中可以清楚地看到智能晾衣架采集模塊上傳的各類數(shù)據(jù),均被串口正常采集。
圖6 串口監(jiān)視窗口
智能晾衣架自動(dòng)化的實(shí)現(xiàn)主要分兩個(gè)部分:第一個(gè)是雨滴傳感器監(jiān)測(cè)雨滴值大于設(shè)定的閾值時(shí),控制舵機(jī)回到起始位置;第二個(gè)是通過(guò)光強(qiáng)傳感器來(lái)實(shí)現(xiàn)。以上兩種情況均默認(rèn)衣架處于擺動(dòng)出去的狀態(tài)。雨滴值通過(guò)Arduino串口監(jiān)視窗口來(lái)監(jiān)測(cè),當(dāng)雨滴傳感器沒(méi)有雨滴時(shí),Arduino串口監(jiān)視窗口顯示數(shù)值為0時(shí),舵機(jī)保持原本狀態(tài);若數(shù)值不為0,控制舵機(jī)擺動(dòng)回初始狀態(tài)。光照強(qiáng)度也可以通過(guò)Arduino串口監(jiān)視窗口來(lái)監(jiān)測(cè)。當(dāng)光照強(qiáng)度小于600 lux時(shí),晾衣架的舵機(jī)不擺動(dòng);當(dāng)光照傳感器監(jiān)測(cè)光照值大于600 lux時(shí),控制舵機(jī)收回,即回到擺動(dòng)之前的狀態(tài)。
上位機(jī)由點(diǎn)燈APP和OneNET云平臺(tái)兩個(gè)部分與下位機(jī)聯(lián)調(diào),其中點(diǎn)燈APP與下位機(jī)的聯(lián)調(diào)包括點(diǎn)燈APP對(duì)監(jiān)測(cè)溫度、濕度、光照強(qiáng)度的實(shí)時(shí)顯示,以及對(duì)硬件系統(tǒng)里的舵機(jī)和發(fā)光二極管LED燈泡的控制。當(dāng)硬件通上電并且用USB數(shù)據(jù)線與電腦接入時(shí),可以得到Arduino對(duì)應(yīng)硬件串口監(jiān)測(cè)數(shù)據(jù)與手機(jī)點(diǎn)燈APP數(shù)據(jù)大小一致,說(shuō)明下位機(jī)成功地將數(shù)據(jù)傳輸給了上位機(jī)點(diǎn)燈APP的可視化界面。具體如圖7所示。
圖7 下位機(jī)與點(diǎn)燈APP數(shù)據(jù)成功傳遞
在下位機(jī)成功入網(wǎng)的情況下,且點(diǎn)燈設(shè)備顯示在線狀態(tài)時(shí),如果在上位機(jī)點(diǎn)燈APP按下紫外線燈按鍵,則聯(lián)動(dòng)下位機(jī)的發(fā)光二極管會(huì)亮,如圖8所示。
圖8 點(diǎn)燈APP按鍵點(diǎn)亮下位機(jī)LED燈
同樣的條件下,按下晾衣架控制按鈕,擁有齒輪形狀的圖表變成藍(lán)色時(shí),舵機(jī)向前擺動(dòng)90°;反之,舵機(jī)回歸起始狀態(tài)。具體聯(lián)動(dòng)狀態(tài)如圖9、圖10所示。晾衣架聯(lián)動(dòng)測(cè)試成功,根據(jù)按鍵按下與否,舵機(jī)會(huì)向前或者向后擺動(dòng)90°,以此來(lái)實(shí)現(xiàn)對(duì)晾衣架的控制。
圖9 點(diǎn)燈APP按鍵控制下位機(jī)舵機(jī)回歸起始狀態(tài)
圖10 點(diǎn)燈APP按鍵控制下位機(jī)舵機(jī)擺動(dòng)狀態(tài)
接下來(lái)是下位機(jī)與OneNET云服務(wù)器的聯(lián)動(dòng)測(cè)試。通過(guò)對(duì)比Arduino串口監(jiān)視窗口與云平臺(tái)設(shè)備接收的數(shù)據(jù)可以清楚地發(fā)現(xiàn),下位機(jī)與上位機(jī)云平臺(tái)通過(guò)MQTT協(xié)議實(shí)現(xiàn)了數(shù)據(jù)的傳遞。具體聯(lián)調(diào)結(jié)果如圖11所示。
圖11 下位機(jī)與OneNET云服務(wù)器數(shù)據(jù)成功傳遞
本文設(shè)計(jì)并實(shí)現(xiàn)了一款基于OneNET的家居智能晾衣架系統(tǒng),系統(tǒng)由三個(gè)部分組成,分別是OneNET云平臺(tái)、手機(jī)BLINKER軟件以及基于NodeMCU物聯(lián)網(wǎng)開(kāi)發(fā)板的硬件系統(tǒng)。經(jīng)過(guò)對(duì)智能晾衣架各部分系統(tǒng)功能的測(cè)試,發(fā)現(xiàn)系統(tǒng)能夠?qū)崿F(xiàn)預(yù)期功能。智能晾衣架系統(tǒng)設(shè)計(jì)仍然有許多可以拓展和提升的空間,為了在日常家居生活中起到更多作用,對(duì)智能晾衣架系統(tǒng)設(shè)計(jì)的相關(guān)技術(shù)還可以繼續(xù)探討和研究。通過(guò)對(duì)相關(guān)技術(shù)的運(yùn)用與學(xué)習(xí),一定能夠讓智能晾衣架更加貼近人們的實(shí)際生活,為人們帶來(lái)更多便利。
物聯(lián)網(wǎng)技術(shù)2023年11期