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