陸飛歌



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