陸飛歌
很多人都希望當(dāng)自己不在家的時(shí)候,能有一個(gè)小助手幫忙打理陽臺:自動(dòng)澆花、自動(dòng)開關(guān)窗戶、自動(dòng)晾收衣服以及安防報(bào)警等??涩F(xiàn)在市場上并沒有完善的、高集成度的陽臺管理解決方案,若使用多種設(shè)備管理陽臺,易出現(xiàn)操作煩瑣的弊端。因此,我希望能研究出一套智能陽臺管理解決方案,讓人們可以樂享生活。這就是智能陽臺管家制作的初衷。
在設(shè)計(jì)階段,我只在系統(tǒng)上設(shè)置了智能澆花和智能開關(guān)燈功能,但在查閱資料的過程中我發(fā)現(xiàn),同時(shí)具備這兩類功能的產(chǎn)品已經(jīng)有很多了,同質(zhì)化嚴(yán)重,所以我打算在功能方面進(jìn)行創(chuàng)新,打造一個(gè)真正的多功能陽臺小管家。
我列舉出人們在陽臺上普遍需要完成的事和人們出差旅行在外時(shí)希望機(jī)器完成的事,如防盜、開關(guān)窗、開關(guān)燈等。這些功能的實(shí)現(xiàn)均不需要大型設(shè)備或結(jié)構(gòu),于是我決定將這幾個(gè)功能整合在一個(gè)裝置內(nèi)。
如何實(shí)現(xiàn)通訊是智能陽臺管家面臨的首要問題。這個(gè)系統(tǒng)要實(shí)現(xiàn)可遠(yuǎn)程控制的功能,就需要裝備合適的通訊模塊。經(jīng)過測試,傳統(tǒng)的藍(lán)牙通訊方式或紅外傳輸方案支持的距離十分有限,無法實(shí)現(xiàn)遠(yuǎn)距離控制系統(tǒng)的需求,且連接很不穩(wěn)定,容易出現(xiàn)數(shù)據(jù)丟失的情況,不符合項(xiàng)目的要求,所以我決定使用ESP8266模塊作為智能陽臺管家的通訊芯片,并通過WLAN聯(lián)網(wǎng)與云端交換數(shù)據(jù)。然而在后來的實(shí)踐過程中,我發(fā)現(xiàn)ESP8266模塊性能不足,導(dǎo)致連接Wi-Fi速度過慢,數(shù)據(jù)交換時(shí)間長;此外,ESP8266模塊的IO口數(shù)量較少,無法連接陽臺管家,且閃存空間太小,無法刷入大型固件,需要使用大量的傳感器和執(zhí)行器。這些問題增大了項(xiàng)目的制作難度。于是我改用性能更為強(qiáng)大的ESP32開發(fā)板,它有更多管腳和高達(dá)240MHz的核心主頻,完美彌補(bǔ)了ESP8266模塊的缺陷。
如何進(jìn)行人機(jī)交互,也就是選擇怎樣的操作平臺對硬件進(jìn)行控制,是智能陽臺管家面臨的第二個(gè)問題。我的原計(jì)劃是將項(xiàng)目接入blinker平臺,通過該平臺遠(yuǎn)程操控陽臺管家。但是在對目標(biāo)用戶的調(diào)查中我發(fā)現(xiàn),不少用戶認(rèn)為blinker操作麻煩,技術(shù)門檻高,對用戶不太友好,所以我嘗試自建服務(wù)器并自己研發(fā)app,使用websocket方式和云端通信方式操控陽臺管家。
在使用過程中,我又發(fā)現(xiàn)一個(gè)問題:webscoket方式需使用大量的流量,且易導(dǎo)致主板出現(xiàn)嚴(yán)重發(fā)熱,十分影響陽臺管家的穩(wěn)定性,于是我換用HTTP請求方法中的 GET請求(即從指定的資源請求數(shù)據(jù))來發(fā)送數(shù)據(jù)到云端。開發(fā)云端時(shí)我在前端使用HTML配合Javascript,便于多端適配和快速迭代更新;后端使用當(dāng)下流行的php語言建構(gòu),ESP32發(fā)送的包含數(shù)據(jù)的HTTP請求將被php程序接收并存入MySQL數(shù)據(jù)庫或?qū)懭隞son,同時(shí)ESP32也可以通過HTTP請求獲取云端的參數(shù)和指令。這樣的架構(gòu),讓使用者在任何有互聯(lián)網(wǎng)的地方都能使用智能陽臺管家。
項(xiàng)目若想實(shí)現(xiàn)用戶遠(yuǎn)程實(shí)時(shí)查看陽臺情況和操控陽臺管家的功能,其搭載的開發(fā)板就必須能隨時(shí)向云端發(fā)送大量數(shù)據(jù),這對智能陽臺管家app的運(yùn)轉(zhuǎn)提出了極高的要求。為此,我拋棄了Python,改使用Arduino Ide,以C++語言開發(fā)并編譯固件,從而提高陽臺管家的性能和穩(wěn)定性。
通訊和控制方案確定以后,就要開始逐一考慮智能陽臺管家的各項(xiàng)功能。首先是智能澆花功能。由于人們在陽臺種植的植物品種不一,習(xí)性也各不相同,一刀切的定時(shí)澆水功能并不實(shí)用。于是我為智能陽臺管家裝備了土壤濕度傳感器,用戶可在控制面板自定義澆水的土壤濕度閾值和溫度閾值,智能陽臺管家會通過比對傳感器的數(shù)據(jù)與用戶設(shè)置的數(shù)據(jù),自主判斷是否應(yīng)該給植物澆水,實(shí)現(xiàn)精準(zhǔn)、個(gè)性化的澆水服務(wù)。但在測試中效果并不理想,比如一些喜暖植物在寒冬不宜澆水,因此完全根據(jù)土壤濕度澆水仍然不夠智能。在經(jīng)過思考后,我又添加了DHT11溫濕度傳感模塊,讓智能陽臺管家根據(jù)當(dāng)前溫度和用戶定義的溫度判斷是否應(yīng)該給植物澆水,判斷為“是”后,主板就啟動(dòng)繼電器控制水泵澆水,這樣一來,澆水功能被優(yōu)化得更為智能和人性化。
第二個(gè)功能是智能開關(guān)窗功能。保持室內(nèi)空氣流通對身體健康十分重要,因此開窗透氣是很多人每天必做的事。用戶可通過app在云端設(shè)置自動(dòng)開窗的溫度閾值和時(shí)間,陽臺管家通過紅外測障傳感器判斷窗戶的開啟狀況,并在指定的時(shí)間開窗或關(guān)窗。開關(guān)窗的傳動(dòng)結(jié)構(gòu)由L298N直流電機(jī)驅(qū)動(dòng)板連接直流電機(jī),配合同步帶組成,這樣的設(shè)計(jì)能實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn),保證傳動(dòng)結(jié)構(gòu)的穩(wěn)定,達(dá)到開關(guān)窗的目的。
第三個(gè)功能是智能提醒功能。一場暴雨可能會打濕晾曬在陽臺的衣物。為了解決這個(gè)問題,我設(shè)計(jì)了提醒收衣功能。智能陽臺管家配備了雨水傳感器,當(dāng)檢測到降雨,便會通過蜂鳴器報(bào)警,并發(fā)送通知到app,提醒用戶收衣服,同時(shí)關(guān)閉窗戶防止陽臺被打濕。這個(gè)功能還設(shè)計(jì)了免打擾選項(xiàng),可勾選以避免在夜深人靜時(shí)打擾用戶休息。
第四個(gè)功能是智能防盜功能。通過紅外熱釋電傳感器,陽臺管家能夠監(jiān)測到從陽臺進(jìn)入的人或動(dòng)物,并通過蜂鳴器報(bào)警和發(fā)送通知到app,提醒用戶陽臺有異常情況。
最后一個(gè)功能是智能開關(guān)燈功能。不同于傳統(tǒng)智能燈具中的“光敏—燈泡”或“光敏—聲敏—燈泡”的設(shè)計(jì),陽臺管家可以通過IP地址或自定義的經(jīng)緯度來計(jì)算當(dāng)?shù)氐娜粘鋈章鋾r(shí)間,并據(jù)此進(jìn)行開關(guān)燈操作。此外,用戶還可以通過app自行設(shè)定開關(guān)燈的時(shí)間或者手動(dòng)開關(guān)燈。
完成了智能陽臺管家的主體功能和服務(wù)端搭建后,接下來要開發(fā)手機(jī)app。App聚合了陽臺管家各項(xiàng)功能的設(shè)置,用戶還可在其上查看陽臺管家的日志和警示記錄。這個(gè)app同樣以前端作為基礎(chǔ)進(jìn)行封裝,體積小,且能夠更新升級,降低用戶的使用成本。
在功能的實(shí)現(xiàn)完成后,我將各傳感器和執(zhí)行器重新按順序連接到ESP32開發(fā)板上,并使用雪弗板制作了主機(jī)的外殼。但因?yàn)榘遢d設(shè)備太多,供電十分不穩(wěn)定,所以我又重新焊接了自定義的擴(kuò)展板,將直流電源的供電口拉出兩條線,其中一條專門為電機(jī)、水泵等功率大的設(shè)備單獨(dú)供電,解決了電流問題。最后我用木條、亞克力板等制作了一個(gè)模擬陽臺,將開關(guān)窗的同步帶驅(qū)動(dòng)結(jié)構(gòu)安裝好,將陽臺管家放置在模擬陽臺上進(jìn)行測試。測試結(jié)果顯示,各功能運(yùn)行正常,符合預(yù)期目標(biāo)。
(本作品獲桂林市第一屆創(chuàng)客馬拉松最佳技術(shù)獎(jiǎng)、第五屆“互聯(lián)網(wǎng)+”青少年創(chuàng)新創(chuàng)業(yè)大賽全國入圍獎(jiǎng)、2021年桂林市青少年科技創(chuàng)新大賽一等獎(jiǎng)、2021年宋慶齡少年兒童發(fā)明獎(jiǎng)廣西一等獎(jiǎng) 指導(dǎo)老師:李玉華、黃義強(qiáng)、馬玉橋、毛瑞華)