作為一名對理工科充滿熱情的青少年,從初中開始,我就特別想制作一個可顯示天氣、時間的桌面終端設備,但最終成品未能達到我的期望。上高中后,我自學電路板設計,結合之前學習的3D建模,C++、HTML等知識和經驗,重新制作這個作品。
我定下了設計目標:1.能顯示日期、天氣和文字(座右銘),其中,未來的天氣用圖表顯示;2.可充電,以便長時間使用;3.能使用無線訪問接入點(AP)配置Wi-Fi、網絡接口(API)申請信息、文字等。
目標確定后,我開始選擇電子元件。之前,我偶然了解到一種顯示屏——墨水屏,它比OLED顯示屏更加省電,且不會發光,人們晚上使用時不會覺得刺眼,于是我選用墨水屏作為顯示屏。微控制器我選擇了自己比較熟悉的ESP32。電路板的渲染圖如圖1,上面的電阻電容盡量選用0603封裝尺寸,這樣更容易焊接。
接下來便是設計程序。天氣數據源自“和風天氣”數據庫。ESP32的實時時鐘(RTC)使用網絡時間協議(NTP)進行同步。ESP32的喚醒和日期顯示均依賴于ESP32內部的實時時鐘。剛開始設計時,我使用的是Arduino開發框架,后來發現Arduino無法修改時鐘源,造成RTC時間漂移,最終我將Arduino的代碼移植到了ESP-IDF上繼續開發。
由于ESP32在非睡眠狀態時的電能消耗較大,而墨水屏每小時刷新一次,這意味著,ESP32在這一個小時內并不需要運行,為了節約電能,本次程序設計用到了ESP32的深睡眠功能。在這個作品中,被喚醒的可能性有兩種,一種是用戶自己按下配置按鈕進入AP配置模式,另一種是定時整點喚醒。通過計算和實驗驗證,在裝有一顆1200 mAh的電池的條件下,墨水屏天氣站能夠續航28天。
AP配置方式簡單來說就是讓ESP32發送一個熱點,ESP32充當服務器,用戶通過手機等電子產品訪問服務器提交Wi-Fi、天氣、文字等相關數據。如圖2、圖3,分別為墨水屏天氣站的天氣信息配置頁面和文字配置頁面。
用戶界面設計如圖4,其中未來5小時天氣和未來5天的天氣都是用圖表展示。
最后便是作品外殼的設計。外殼可提升作品的美觀度,保護內部器件。外殼使用3D打印機打印,材質為ABS塑料,正反兩面使用3 mm厚的亞克力板,將亞克力板與外殼用8顆M2×5 mm的螺絲連接,電路板與ABS外殼使用M2螺絲連接,使用雙面膠將電池固定在電路板上。作品渲染圖如圖5,實物圖如圖6。
本作品歷時6個月完成。在這一過程中,我不僅解決了一系列技術難題,還獲得了寶貴的實踐經驗。我深刻認識到:實踐是檢驗真理的唯一標準。(指導老師:盧韶儀" "彭麗歐" "劉燕君)
彩蛋:該作品已在Github、Oshwhub等平臺開源,遵循GPL3.0開源協議,歡迎感興趣的小伙伴復刻或優化。
Github開源地址:https://github.com/kitten-yyds/Weather_Terminal/tree/main
Oshwhub開源地址:https://oshwhub.com/kitten_yyds/mo-shui-ping-0402