
一目了然的氣象資訊
回想筆者小時候,幾乎每天晚上 7:45 分左右都會開始盯著電視台新聞,等著氣象預報的播報。即便目前智慧型手機普遍,隨手可以透過手機查閱近期的氣象資訊,但對於年長者(手機操作不熟悉)或是兒童(沒有手機)來說,若可以有一個簡單的氣象資訊畫框可以查閱還是相當方便的!因此本篇將透過簡單的幾個步驟製作氣象畫框,可以擺放於家中或辦公室還可以從容優雅地展現個人風格。使用素材清單如下:

What’s LILYGO T5 e-Paper
LILYGO 生產了許多以 ESP32 為核心的整合型開發版,包含搭載不同的顯示、通訊模組於一體等。T5 e-Paper 則是將ESP32-S3整合了 4.7” 電子紙顯示器(e-paper display, EPD),解析度為 540×960 16 階灰階顯示,並且提供觸控與非觸控兩種版本。引腳圖 pin map 如下,開發板上整合了 PCF8563 RTC 時鐘IC、電池充放電電路與 micro SD 記憶卡等介面,若是非觸控的版本還有約 6 隻引腳可以自行擴充運用。ESP32-S3 模組使用 N16R8 版本,代表其有 16MB Flash 與外部 8MB PSRAM。

安裝開發板支援與函式庫 Install Boards & Library
為了後續能順利編譯範例程式碼,需要預先安裝 ESP32 開發板與對應的 Library。在 Arduino IDE(以下以2.x版本為例)功能列 → Files → Preferences ,在對話框下方的 “Additional Boards Manager URLs” 中增加 ESP32 開發板支援清單網址 https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json 。

為了較好的相容性,在 ESP32 開發版支援的版本,選擇安裝 2.x.x 版本。

Library 需要安裝 Lilygo-EPD47,內含電子紙驅動函式。

配合範例程式馬,ArduinoJson 需安裝 6.x.x 版本,若已經安裝最新版本 7.x.x 記得在編譯時要退回舊版本。

範例程式碼 Source Code
CircusPi 的 GitHub 有提供 patch 版本的 LilyGo-EPD-4-7-OWM-Weather-Display 專案程式碼,可以下載後簡單修改設定即可用。進行設定前需要取得 OWM 的 API 金鑰,前往 Open Weather Map 網站登入或註冊帳號,接著從右上角個人帳號下拉選單中點選 “My API keys”,於金鑰頁面中右方建立一個新的 API key,並將其複製起來。

使用 Arduino IDE 開啟範例程式,切換至 owm_credentials.h使用 Arduino IDE 開啟範例程式,切換至 owm_credentials.h 檔案,將 ssid 與 password 變數的值填入 Wi-Fi 名稱密碼,apikey 填入剛剛在 Open Weather Map 取得的 API Key。下方有城市的參數可以填入要顯示預報的城市,如 Taipei, Kaohsiung, Taichung 等,所有城市的清單可以在 OWM 中查找。
Arduino IDE 的功能列 → Tools 選擇對應的開發板與序列埠設定。細項設定如下:
- Board: ESP32S3 Dev Module
- USB CDC On Boot: Enable
- Flash Size: 16MB
- Partition Scheme: 16MB Flash (3MB APP/9.9 FATFS)
- PSRAM: OPI PSRAM
完成後進行燒錄。

燒錄完成後重新啟動應該會從 Serial Monitor 的 LOG 中觀察到連線 WiFi 網路並且取得氣象資訊等資訊,解析完成氣象資訊後即會更新電子紙的顯示內容。如下圖所示,上方會顯示目前即時天氣狀態,包含溫濕度、氣象狀態、降雨機率、風向、氣壓、能見度等資訊。中間顯示未來3~21小時的氣象預報。下方則是未來三天的氣壓、溫度、濕度、降雨量的預報趨勢圖。預設的設定是對齊時鐘每 15 分鐘會進行更新,也就是開機時更新,之後是每整點0分、15分、30分、45分刷新畫面。在更新資訊後 ESP32 會進入深入睡眠模式,等待時間到時才會被喚醒、重新連線 Wi-Fi、更新氣象資訊等循環。

耗電量觀察 Power Consumption
電子紙在沒有更新畫面時是不耗電的,但 ESP32 需要定期連線 Wi-Fi 更新資訊等,若單靠電池可以維持多久不需要充電?為查明數據筆者準備了 Nordic Power Profiler Kit II 監測電源耗電量,透過其從 Lilygo T5 e-paper 鋰電池 JST 2.0 連接器進行供電,電壓設定為 4.0V(鋰電池電壓範圍通常在3.2~4.2之間)。

ESP32 在休眠時大約只會消耗 230~260uA (如下圖)。

在ESP32被喚醒時會執行連線 Wi-Fi、取得氣象資料、更新電子紙顯示等流程,從下圖中可以看到連線 Wi-Fi 瞬間可接近 1A 耗電量,後續會在 200mA~400mA 之間,完成後再次進入休眠。從喚醒的 10 秒區間作計算,平均耗電流為 61.5mA,預設一小時會喚醒4次則 40 秒平均 61.5mA,其餘時間(3560秒)都在休眠平均245uA,則一小時的耗電量會在 0.926mA。若使用 1000mAh 的電池則大約可以連續使用45天,若一併考量電池健康度與安全電量裕度,可以再打個8折估算。

畫框 Photo Frame
接下來就是整合手工藝的部分了,準備一個小型相框可以容納 LILYGO T5 電子紙大小約 12 x 6.5 cm 即可,筆者使用的是從 DAISO 大創購入的 12.7 x 8.9 cm 大小的相框。需要留意的是大部分相框會需要再扣除邊框的大小,實際顯示的大小會再略小一點。

LILYGO T5-4.7-S3 E-paper 的電路板有幾個連接器高度較高,筆者是將其對應位置的紙板挖除,使紙板較能貼合電路板,並且也方便將電池引出。

小結 Wrap Up
筆者很喜歡能夠將電子融入生活的專案,就如同本篇使用 ESP32S3 核心的電子紙,運用 open source 的資源,再搭配上些許的手做與小巧思,就是一個具備個人風格特色的數位畫框,實用且可以融入居家與辦公空間。除此之外 LILYGO 官方也有提供其他範例程式與文件,若想進一步研究的開發者也可以多多參考,發展出自己喜歡的專案吧!