王 彬,張 宇,高淑芬,屈斌文,胡 曦
(江漢大學(xué) a. 工程訓(xùn)練中心;b. 人工智能學(xué)院;c. 人工智能研究院,湖北 武漢 430056)
晾衣窗是一款集窗戶和晾衣架于一體,通過兩者間的相互協(xié)調(diào),可同時滿足室內(nèi)通風(fēng)和衣物充分晾曬需求的晾衣設(shè)備。目前,國內(nèi)生產(chǎn)智能晾衣設(shè)備的廠商基本采取晾衣設(shè)備和窗戶分離,且均是安裝于陽臺內(nèi)部的模式,根據(jù)不同情況垂直升降,通過電路控制晾衣架,以達(dá)到晾衣的功能。為滿足衣物充分晾曬的需求及在家中無人情況下室內(nèi)空氣的流通,本文設(shè)計了一種將窗戶和晾衣架結(jié)合在一起的聯(lián)動型智能收縮晾衣窗系統(tǒng)。該系統(tǒng)根據(jù)實際機械結(jié)構(gòu)情況,結(jié)合傳感器以及接入物聯(lián)網(wǎng)(Internet of Things,IoT)平臺的控制實現(xiàn)這套智能家居的操控方案。
系統(tǒng)由單片機NodeMCU 核心板、霍爾傳感器、24 V 蓄電池、不間斷電源(uninterruptible power supply,UPS)模塊、DM542 電機驅(qū)動、24 V 直流步進(jìn)電機、24 V 轉(zhuǎn) 5 V 電源模塊等構(gòu)成。系統(tǒng)總體結(jié)構(gòu)如圖1 所示。其中,蓄電池的工作電壓和電流分別為24 V、3 A;UPS 不間斷電源模塊的作用是實現(xiàn)正常供電和蓄電池供電這兩種供電方式的無縫切換,同時為蓄電池提供充電保護(hù),防止過充損壞電池,保證電路穩(wěn)定運行[1-2];霍爾電流檢測模塊為WCS1800,電流檢測范圍為-25 ~+25 A,輸出TTL 電平信號,該模塊檢測是否斷電并返回信號給單片機;雨滴以及風(fēng)力傳感器工作電壓都在3.3 V 且輸出邏輯電平,通過發(fā)送信號給單片機告知程序當(dāng)前處于下雨或刮風(fēng)狀態(tài)。電機驅(qū)動模塊采用DM542,工作電壓在20 ~50 V 的步進(jìn)電機驅(qū)動,電機驅(qū)動連接單片機和電源,保證單片機的微信號能間接控制電機;電機的工作電壓為24 V,工作電流為3 A,電機接收電機驅(qū)動信號來進(jìn)行運轉(zhuǎn),最后控制機械結(jié)構(gòu)實現(xiàn)相應(yīng)功能。ESP8266 模塊為NodeMCU Lua V3 物聯(lián)網(wǎng)開發(fā)板CH340G,帶16 個邏輯口,1 個模擬口,是整個電路的控制核心,連接所有模塊并負(fù)責(zé)通信、信號處理以及所有自動控制正常進(jìn)行[3-4]。
圖1 系統(tǒng)總體設(shè)計結(jié)構(gòu)Fig.1 The overall design structure of the system
主控部分是整個系統(tǒng)裝置的核心,其主要作用是連接無線網(wǎng)絡(luò),接入服務(wù)器,且作為控制中心連接外圍傳感器,接收手機發(fā)送到云端的控制指令,并接入電路來控制電機的運行[5]。該主控系統(tǒng)采用的是ESP8266 模塊,其I/O 接入外設(shè)有A0 模擬口及所有可用的輸入輸出邏輯口。其中,A0 模擬口接收風(fēng)力傳感器的模擬電壓值,再通過MCU 計算其風(fēng)速,通過邏輯口D0 接收雨滴傳感器的邏輯值來判定是否有雨,D1、D2、D5 連接微動開關(guān)得到窗戶的具體位置,D3、D6、D7、D8、D9(RX)用來控制電機驅(qū)動來實現(xiàn)電機的運轉(zhuǎn),總體電路圖如圖2 所示。
圖2 總體電路圖Fig.2 Overall circuit diagram
傳感器是整個電路實現(xiàn)自動控制的核心,MCU 通過收集到的傳感器信號感知外界的變化并做出相應(yīng)的改變。本文所使用的傳感器有兩種:雨滴傳感器和風(fēng)力傳感器。
雨滴傳感器:通過感應(yīng)板和信號轉(zhuǎn)換模塊來實現(xiàn)。當(dāng)沒有雨滴落在感應(yīng)板上時,感應(yīng)板電阻設(shè)置為無窮大,信號轉(zhuǎn)換模塊輸出邏輯高電平;當(dāng)有雨水滴落在感應(yīng)板上時,感應(yīng)板的電阻會隨之發(fā)生變化,一旦電阻過低,信號轉(zhuǎn)換模塊就會輸出邏輯低電平,輸出的邏輯信號通過D0 口發(fā)送給MCU 來進(jìn)行處理。
風(fēng)力傳感器:由發(fā)電機和葉片組成,通過風(fēng)力推動葉片轉(zhuǎn)動來帶動電機。此時電機產(chǎn)生一個模擬電壓,其經(jīng)過一個將電機產(chǎn)生的電壓值降低到1/5 的電壓檢測模塊。由于MCU 的A0 口能接收到的最大電壓采用值為3.3 V,而傳感器能產(chǎn)生的電壓最大值為5 V,因此,電壓檢測模塊降低電機所產(chǎn)生電壓值的目的是防止電壓過高擊穿MCU 而造成損壞。
霍爾電流傳感器:電流經(jīng)過垂直于磁場的導(dǎo)體會在導(dǎo)體兩端產(chǎn)生一個電勢差,以此可進(jìn)行信號檢測功能。其功能為:①經(jīng)過運放會輸出對應(yīng)的模擬信號,適用于A/D 轉(zhuǎn)換;②輸出開關(guān)信號,根據(jù)預(yù)先設(shè)定的電流值,當(dāng)實際電流值大于預(yù)先設(shè)定的限流值時,開關(guān)信號會由低電平變?yōu)楦唠娖健1疚氖褂玫氖枪δ堍?,將該模塊輸出的高低電平輸送給主控模塊來檢測是否斷電[6-7]。
電機驅(qū)動電路是主控模塊控制電機運轉(zhuǎn)的核心。本文采用的驅(qū)動模塊為DM542 步進(jìn)電機驅(qū)動,單片機通過邏輯I/O 口模擬PWM 脈沖輸送給驅(qū)動器的PUL,調(diào)節(jié)PWM 占空比來實現(xiàn)電機的運轉(zhuǎn)速度的改變,并通過控制I/O 的輸出實現(xiàn)高低電平觸發(fā)光耦繼電器來拉高驅(qū)動器的PUL 使能,以此來啟動電機運轉(zhuǎn)。同樣單片機通過控制光耦繼電器觸發(fā)電機驅(qū)動的DIR 來改變電機的運轉(zhuǎn)方向。
UPS 不間斷電路的設(shè)計核心是UPS 模塊,該模塊的功率為60 W,工作電壓為24 V。其核心功能為:①當(dāng)電路正常工作,有家用電輸入時,電源先輸出一組24 V 供整個電路正常運轉(zhuǎn),另外一組輸出24 V 供電池充電;②當(dāng)電池充滿時,自動停止;③當(dāng)出現(xiàn)特殊情況斷電時,模塊內(nèi)部自動切換到電池輸出,來維持整個電路的應(yīng)急供電,整個過程實現(xiàn)無縫切換,且不會出現(xiàn)切換過程中有斷電現(xiàn)象。此外,霍爾電流傳感器通過測出220 V 家用電的電流來決定主控MCU 當(dāng)前處于何種情況,MCU 接收到斷電的消息后會通過服務(wù)器給用戶的手機微信發(fā)一條消息來通知用戶家中斷電,系統(tǒng)此時的供電模式為備用電源供電,用戶即可通過手機遠(yuǎn)程操控來改變系統(tǒng)默認(rèn)的應(yīng)急操作。
主程序部分主要對所有功能進(jìn)行合理的資源調(diào)度,合理地分配優(yōu)先級及其任務(wù)的處理中斷,對整個系統(tǒng)起到至關(guān)重要的作用。該程序基于整套底層控制邏輯規(guī)則,規(guī)劃各模式模塊之間的切換和調(diào)度及沖突響應(yīng)時間等,在這些規(guī)則上優(yōu)化程序的響應(yīng)時間、相關(guān)數(shù)據(jù)上傳與刷新。通過對各模塊的初始化,控制I/O 的輸出,執(zhí)行接收的云端指令,來完成所有系統(tǒng)的正常運轉(zhuǎn)[8]。程序流程圖如圖3 所示。
圖3 主程序流程圖Fig.3 Flow chart of the main program
本地控制中心程序?qū)⒏鱾€模塊驅(qū)動功能封裝成不同的函數(shù),驅(qū)動實現(xiàn)對接程序和硬件的接口。其作用為:一方面接收本地傳感器的相關(guān)數(shù)據(jù),另一方面本地控制中心函數(shù)負(fù)責(zé)各個硬件運轉(zhuǎn)的基礎(chǔ)法則且提供給主程序調(diào)用的接口,使得在主函數(shù)調(diào)用本地數(shù)據(jù)時,能夠有條不紊地進(jìn)行下去。其主要程序有雨水感應(yīng)采集程序和風(fēng)速采集程序。
雨水感應(yīng)采集程序:通過雨水感應(yīng)模塊處理后得到的高低電平來判斷當(dāng)前是否下雨,并返回一個bool 值給主程序。
風(fēng)速采集程序:當(dāng)MCU 采集到A0 口的采樣值Value時,通過公式(1)將采樣值轉(zhuǎn)變?yōu)閷嶋H電壓V(mV):
由于ESP8266 ADC 引腳具有10 位分辨率,即從A0 口將得到0 ~ 1 023 之間的采樣值,0 ~1 023 屬于ESP8266 開發(fā)板內(nèi)部裸芯片的采樣值,而本文使用的ESP8266 開發(fā)板都配備內(nèi)部分壓器可將輸入范圍提升到0 ~3.3 V。因此,如公式(1)所示,由于電壓轉(zhuǎn)換模塊將電壓降低到原來的1/5,將采集到A0 的Value值先除以1 024 再乘以3 300,最后乘以5 即可得到最終的真實電壓值。
得到電壓后,本文只需最后一步將電壓通過電機的曲線關(guān)系轉(zhuǎn)化為風(fēng)速,曲線關(guān)系如公式(2)所示:
式中,F(xiàn)表示風(fēng)速,m/s。風(fēng)力檢測程序通過以上這些關(guān)系最終得到風(fēng)速并返回相應(yīng)值。
網(wǎng)絡(luò)控制中心是整個系統(tǒng)的連接橋梁,以云端服務(wù)器作為中介。網(wǎng)絡(luò)控制中心負(fù)責(zé)上傳本地數(shù)據(jù)到云端,再通過云端發(fā)送給手機App 到達(dá)用戶,用戶接收到相關(guān)數(shù)據(jù)并可操控App 通過云服務(wù)器轉(zhuǎn)發(fā)相關(guān)指令到MCU 中,再經(jīng)過網(wǎng)絡(luò)函數(shù)的相關(guān)處理到主程序來進(jìn)行規(guī)則判斷,并最終調(diào)用本地函數(shù)完成整個運行過程。
語音控制方面也是網(wǎng)絡(luò)控制的一部分,通過對接第三方語音助手平臺,實現(xiàn)數(shù)據(jù)與服務(wù)器對接,接收平臺發(fā)來的數(shù)據(jù)對接到網(wǎng)絡(luò)控制中心來實現(xiàn)語音控制。因此,通過本地到云端再從云端到本地的一個雙向交互過程,構(gòu)成了整個系統(tǒng)的運行體系[9-11]。
網(wǎng)絡(luò)連接部分是通過消息隊列遙測傳輸(message queuing telemetry transport,MQTT)協(xié)議對接服務(wù)器的一個過程;MQTT 是一種基于發(fā)布/訂閱模式的“輕量級”通信協(xié)議,該協(xié)議構(gòu)建于TCP/IP 協(xié)議上,由IBM 在1999 年發(fā)布。MQTT 最大優(yōu)點在于可以用極少的代碼和有限的帶寬為連接遠(yuǎn)程設(shè)備提供實時可靠的消息服務(wù)[12]。其作為一種低開銷、低帶寬占用的即時通信協(xié)議,在物聯(lián)網(wǎng)、小型設(shè)備、移動應(yīng)用等方面有較廣泛的應(yīng)用。
當(dāng)程序啟動時,EPS8266 首先通過WiFi 聯(lián)網(wǎng)來獲取IP 地址,再通過MQTT 協(xié)議對接服務(wù)器進(jìn)行握手,函數(shù)將發(fā)送密鑰到服務(wù)器來對接相應(yīng)配置,配置成功后程序首次發(fā)送數(shù)據(jù)包到控制端App,App 接收到數(shù)據(jù)包返回接收狀態(tài),程序正常對接啟動完畢[13]。
軟件控制客戶端基于Blinker 平臺設(shè)計,通過平臺提供的控件及接入其云服務(wù)器接口來實現(xiàn)App 與MCU 的對接及其數(shù)據(jù)交換,用來控制整個系統(tǒng)的運轉(zhuǎn)。界面可顯示當(dāng)前的各種模式、窗戶的開關(guān)以及衣物的晾曬情況,可實時顯示風(fēng)速,提供各種操控模式供用戶使用??刂平缑嫒鐖D4 所示。
圖4 軟件界面圖Fig.4 Software interface
本文設(shè)計了一種基于智能手機聯(lián)網(wǎng)控制的晾衣窗控制系統(tǒng)。該軟件系統(tǒng)已進(jìn)行實際使用,效果良好,運行穩(wěn)定,能夠通過便捷的方式來滿足人們對窗戶和晾衣的操控需求。其成本低廉,快捷方便。目前,該項目還有一些需要提升的地方,如可將電路設(shè)計模塊化,這樣能保證電路維修簡單,出現(xiàn)故障更容易發(fā)現(xiàn);程序應(yīng)用方面還可以接入如天貓精靈等更多語音平臺為用戶提供便捷的服務(wù)。后續(xù)研究中將逐步完善,使其能應(yīng)用于不同場景。