構(gòu)建一個基于ESP8266/ESP32和MAX7219的wifi連接的LED矩陣時鐘和氣象站
ESPTimeCast是一個基于ESP8266/ESP32和MAX7219的wifi連接的LED矩陣時鐘和氣象站。它顯示從OpenWeatherMap獲取的當(dāng)前時間、星期幾和當(dāng)?shù)靥鞖?溫度/濕度/天氣描述)。安裝和配置完全通過內(nèi)置的web界面進(jìn)行管理。
3D打印盒
想給你的ESPTimeCast一個家嗎?你可以3D打印一個定制的案例!一個時尚的版本(V2)的情況下剛剛發(fā)布!箱體前面板(3mm)可激光切割!
在這里買你的:
?打印
?Cults3D
媒體提到
ESPTimeCast已在:
?Hackaday
?XDA開發(fā)者
特性
?LED矩陣顯示器(8x32)由MAX7219供電,具有自定義字體支持
?簡單的Web界面,所有配置(WiFi,天氣,時區(qū),顯示持續(xù)時間,和更多)
?自動NTP同步與魯棒狀態(tài)反饋和重試
?從OpenWeatherMap獲取天氣(每5分鐘,溫度/濕度/描述)
?回退AP模式,便于首次設(shè)置或配置
?從IANA名稱選擇時區(qū)(后端集成DST)
?獲取我的位置按鈕,以獲得您的大致緯度/長度。
?星期和天氣描述以多種語言顯示
?存儲在LittleFS中的持久配置,帶有備份/恢復(fù)系統(tǒng)
?狀態(tài)動畫WiFi連接,AP模式,時間同步。
高級設(shè)置面板:
?自定義主備NTP服務(wù)器輸入
?顯示星期幾開關(guān)(默認(rèn)為開啟)
?顯示閃爍冒號開關(guān)(默認(rèn)為開啟)
?顯示日期開關(guān)(默認(rèn)為關(guān)閉)
?24/12小時時鐘模式切換(默認(rèn)24小時)
?英制單位(°F)切換(默認(rèn)為公制°C)
?顯示濕度開關(guān)(顯示溫度之外的濕度)
?天氣描述切換(顯示:大雨、散云、雷暴等)
?翻轉(zhuǎn)顯示(180度)
?可調(diào)顯示亮度
?調(diào)光時間安排
?倒計時功能(滾動/戲劇性)
?可選葡萄糖+趨勢顯示(nightscout兼容,通過ntpserver2設(shè)置)
?高級設(shè)置面板:自定義主/從NTP服務(wù)器輸入顯示星期切換(默認(rèn)開啟)顯示閃爍冒號切換(默認(rèn)開啟)顯示日期切換(默認(rèn)關(guān)閉)24/12h時鐘模式切換(24小時默認(rèn))英制單位(°F)切換(公制°C默認(rèn))顯示濕度切換(顯示濕度除了溫度)天氣描述切換(顯示:大雨,散云,雷暴等)翻轉(zhuǎn)顯示(180度)可調(diào)顯示亮度調(diào)光小時調(diào)度倒計時功能(滾動/戲劇性)可選葡萄糖+趨勢顯示(nightscout兼容,通過ntpserver2設(shè)置)
布線
電源轉(zhuǎn)換從3.3V切換到5V顯示
注:針在相同的位置,但要確保正確的聲明在你的草圖
?D1 Mini→MAX7219
?接地接地
?5V VCC
?D5 CLK
?D7 CS
?D8 DIN
提示:始終仔細(xì)檢查VCC (5v), GND和DIN/CS/CLK是否與MAX7219模塊的引腳順序匹配-不同的模塊有時會以不同的方式標(biāo)記它們。有關(guān)其他Wemos板,請查看官方GitHub Repo
重要的硬件更新:所有Wemos板的引腳已更新為在同一位置焊接,檢查您的板版本并相應(yīng)地更新草圖。在觀察到過熱問題和從Mini D1的3.3V引腳為MAX7219矩陣供電時的不穩(wěn)定行為后,我們正式切換到通過5V USB導(dǎo)軌為顯示器供電。
什么變化:
?之前:顯示器VCC連接到ESP板的3.3V引腳上。
?現(xiàn)在:顯示器VCC將連接到電路板的5V引腳(直接來自USB電源)。
為什么需要這種改變:
?MAX7219 LED矩陣設(shè)計用于5V工作。
?Mini D1上的板載3.3V穩(wěn)壓器(通常是AMS1117)在電流輸出方面非常有限(最大~800mA,在實踐中通常要少得多)。
高亮度矩陣模塊-特別是綠色/黃色顯示器-可以吸收足夠的電流使穩(wěn)壓器過載,導(dǎo)致:
?過熱
?電壓降
?穩(wěn)壓器完全失效(一些用戶報告損壞后只有2.4V輸出)
?高亮度矩陣模塊-特別是綠色/黃色顯示-可以吸收足夠的電流使穩(wěn)壓器過載,導(dǎo)致:過熱電壓下降完全穩(wěn)壓器故障(一些用戶報告損壞后只有2.4V輸出)
使用5V的好處:
?更高的亮度和更穩(wěn)定的矩陣性能
?降低了ESP8266單板的熱負(fù)荷
?避免對板載調(diào)節(jié)器造成長期損壞
?MAX7219與來自ESP的3.3V邏輯信號一起工作良好(不需要電平移位器)
Web UI與配置
內(nèi)置的web界面提供完整的配置:
?WiFi設(shè)置(SSID和密碼)
?天氣設(shè)置(OpenWeatherMap API密鑰,城市,國家,坐標(biāo))
?時區(qū)(如果找到TZ將自動填充)
?星期和天氣描述語言
?顯示時鐘和天氣的持續(xù)時間(毫秒)
?高級設(shè)置(見下文)
?首次設(shè)置/ AP模式
設(shè)備上電。如果WiFi失敗,它會在AP模式下自動啟動:
?名稱:ESPTimeCast
?密碼:12345678
?如果在瀏覽器中沒有打開http://192.168.4.1或http://setup.esp,強(qiáng)制門戶應(yīng)該自動打開。
設(shè)備上電。當(dāng)WiFi故障時,AP模式下自動啟動:SSID:ESPTimeCast
?密碼:12345678
如果在瀏覽器中沒有打開http://192.168.4.1或http://setup.esp,強(qiáng)制門戶應(yīng)該自動打開。
設(shè)置你的WiFi和所有其他選項。
單擊“保存設(shè)置”,設(shè)備保存配置,重新啟動并連接。
設(shè)備在啟動后顯示其本地IP地址,以便您可以再次登錄以進(jìn)行設(shè)置更改
*外部鏈接和“獲取我的位置”按鈕需要互聯(lián)網(wǎng)接入。當(dāng)設(shè)備處于AP模式時,它們將無法工作-首先連接到Wi-Fi。
UI的例子:
高級設(shè)置
單擊web UI中“高級設(shè)置”旁邊的齒輪圖標(biāo)以顯示額外的配置選項。
可用的高級設(shè)置:
?主NTP服務(wù)器:覆蓋默認(rèn)NTP服務(wù)器(例如pool.ntp.org)。
?備用NTP服務(wù)器:備用NTP服務(wù)器(例如time.nist.gov)
?星期幾:以所需語言顯示星期幾
?閃爍冒號開關(guān)(默認(rèn)為開啟)
?顯示日期(默認(rèn)為關(guān)閉,持續(xù)時間與天氣持續(xù)時間相同)
?24/12h時鐘:在24小時和12小時時間格式之間切換(默認(rèn)為24小時)
?英制單位(°F)切換(默認(rèn)為公制°C)
?濕度:顯示溫度以外的濕度
?天氣描述切換(顯示天氣描述在選定的語言* 3秒或滾動一次,如果描述太長)
?翻轉(zhuǎn)顯示:垂直/水平翻轉(zhuǎn)顯示
?亮度:Off - 0(暗)至15(亮)
?調(diào)光功能:開始時間,結(jié)束時間和所需的亮度選擇
?倒計時功能,設(shè)置倒計時到您的收藏/下一個事件,2種模式:滾動/戲劇性!
*非英語字符轉(zhuǎn)換為最接近的英語字母。*對于世界語、愛爾蘭語和斯瓦希里語,不提供天氣描述翻譯。存在日語翻譯,但由于設(shè)備不能顯示所有的日語字符,因此在所有這些情況下都將使用英語。
提示:不要忘記按保存按鈕來保留您的設(shè)置
配置筆記
?OpenWeatherMap API密鑰:
?在這里開個帳
?在這里檢查您的API密鑰
?城市名稱:如東京、倫敦等。
?國家代碼:2字母代碼(如JP、GB)
?郵政編碼:在城市字段中輸入郵政編碼,在國家字段中輸入美國(僅限美國)
?緯度和經(jīng)度可以在城市字段(緯度)和國家字段(經(jīng)度)中輸入坐標(biāo)。
?時區(qū):從IANA區(qū)域中選擇(例如,美國/紐約,自動處理DST)
開始
本指南將引導(dǎo)您設(shè)置環(huán)境并將ESPTimeCast項目上傳到ESP8266或ESP32板。請仔細(xì)按照您的具體板類型的說明。
ESP8266設(shè)置
按照以下步驟準(zhǔn)備用于ESP8266開發(fā)的Arduino IDE:
?安裝ESP8266單板包:
?打開文件>偏好在Arduino IDE。
?將http://arduino.esp8266.com/stable/package_esp8266com_index.json添加到“附加董事會管理器url”。
?進(jìn)入Tools > Board > Boards Manager....通過“esp8266社區(qū)”搜索“esp8266”,點擊“安裝”。
安裝ESP8266單板包:在Arduino IDE中打開文件> Preferences。將http://arduino.esp8266.com/stable/package_esp8266com_index.json添加到“附加董事會管理器url”。進(jìn)入Tools > Board > Boards Manager....通過“esp8266社區(qū)”搜索“esp8266”,點擊“安裝”。
選擇您的開發(fā)板:
?轉(zhuǎn)到Tools > Board并選擇您的特定板,例如,Wemos D1 Mini(或您的ESP8266變體)。
?選擇您的板:轉(zhuǎn)到Tools > Board并選擇您的特定板,例如,Wemos D1 Mini(或您的ESP8266變體)。
配置Flash大?。?/strong>
?在Tools下,選擇Flash大小為4MB FS:2MB OTA:~1019KB。這確保了草圖和LittleFS數(shù)據(jù)有足夠的空間。
?配置Flash大?。涸凇癟ools”下選擇“Flash Size”為“4MB FS:2MB OTA:~1019KB”。這確保了草圖和LittleFS數(shù)據(jù)有足夠的空間。
安裝庫:
?去素描>包括圖書館>管理圖書館…并安裝以下內(nèi)容:
?ArduinoJson由Benoit Blanchon編寫
?MD_Parola由majicDesigns(這通常也會安裝它的依賴:MD_MAX72xx)
?ESPAsyncTCP由ESP32Async實現(xiàn)
?ESPAsyncWebServer由ESP32Async
?安裝庫:轉(zhuǎn)到Sketch >包括庫>管理庫…ArduinoJson由Benoit BlanchonMD_Parola由majicDesigns(這通常也會安裝它的依賴:MD_MAX72xx)ESPAsyncTCP由ESP32AsyncESPAsyncWebServer由ESP32Async
ESP32設(shè)置
按照以下步驟為ESP32開發(fā)準(zhǔn)備Arduino IDE:
安裝ESP32單板包:
?進(jìn)入Tools > Board > Boards Manager....用expressif Systems搜索esp32,然后點擊“安裝”。
?安裝ESP32單板包:進(jìn)入Tools > Board > Boards Manager....用expressif Systems搜索esp32,然后點擊“安裝”。
選擇您的開發(fā)板:
?轉(zhuǎn)到Tools > Board并選擇您的特定板,例如,LOLIN S2 Mini(或您的ESP32變體)。
?選擇您的板:轉(zhuǎn)到Tools > Board并選擇您的特定板,例如,LOLIN S2 Mini(或您的ESP32變體)。
配置分區(qū)方案:
?在Tools下,選擇Partition Scheme“Default 4MB with spiffs”。這確保了草圖和LittleFS數(shù)據(jù)有足夠的空間。
?配置分區(qū)方案:在Tools下,選擇分區(qū)方案“Default 4MB with spiffs”。這確保了草圖和LittleFS數(shù)據(jù)有足夠的空間。
上傳代碼和數(shù)據(jù)
一旦你的Arduino IDE設(shè)置為你的板(如上所述):
打開項目文件夾:
對于ESP8266:導(dǎo)航到并打開ESPTimceCast_ESP8266項目文件夾。在其中,您將找到主草圖文件,通常名為ESPTimceCast_ESP8266.ino。打開這個。在Arduino IDE中。
對于ESP32:導(dǎo)航到并打開ESPTimceCast_ESP32項目文件夾。在其中,您將找到主草圖文件,通常名為ESPTimceCast_ESP32.ino。打開這個。在Arduino IDE中。
打開項目文件夾:對于ESP8266:導(dǎo)航到并打開ESPTimceCast_ESP8266項目文件夾。在其中,您將找到主草圖文件,通常名為ESPTimceCast_ESP8266.ino。打開這個。在Arduino IDE中。對于ESP32:導(dǎo)航到并打開ESPTimceCast_ESP32項目文件夾。在其中,您將找到主草圖文件,通常名為ESPTimceCast_ESP32.ino。打開這個。在Arduino IDE中。
上傳草圖:
打開主草圖文件后,點擊Arduino IDE工具欄中的“上傳”按鈕(右箭頭圖標(biāo))。這將編譯整個項目并將其上傳到您的板。
上傳草圖:打開主草圖文件后,點擊Arduino IDE工具欄中的“上傳”按鈕(右箭頭圖標(biāo))。這將編譯整個項目并將其上傳到您的板。
上傳/數(shù)據(jù)文件夾(LittleFS):
這個項目使用LittleFS來存儲web界面文件和其他資產(chǎn)。你需要LittleFS Uploader插件。
安裝LittleFS Uploader Plugin
上傳前,請確保Serial Monitor已關(guān)閉。
打開命令面板(Windows上是Ctrl+Shift+P, macOS上是Cmd+Shift+P)。
搜索并運行:Upload Little FS to Pico/ESP8266/ESP32(確切的命令名稱可能會有所不同)。
對于ESP32很重要:如果上傳失敗,您可能需要手動將ESP32置于“下載模式”。按住Boot鍵(通常標(biāo)記為‘ Boot ’或‘IO0’或‘IO9’),短暫按下并釋放RST鍵,然后釋放Boot鍵。
上傳/數(shù)據(jù)文件夾(LittleFS):該項目使用LittleFS存儲web界面文件和其他資產(chǎn)。你需要LittleFS Uploader插件。安裝LittleFS Uploader插件上傳之前,請確保Serial Monitor已關(guān)閉。打開命令面板(Windows上是Ctrl+Shift+P, macOS上是Cmd+Shift+P)。搜索并運行:Upload Little FS to Pico/ESP8266/ESP32(確切的命令名稱可能會有所不同)。對于ESP32很重要:如果上傳失敗,您可能需要手動將ESP32置于“下載模式”。按住Boot鍵(通常標(biāo)記為‘ Boot ’或‘IO0’或‘IO9’),短暫按下并釋放RST鍵,然后釋放Boot鍵。
顯示的行為
ESPTimeCast自動切換兩種顯示模式:時鐘和天氣。如果“顯示天氣描述”啟用了第三種模式(描述),將顯示持續(xù)時間為3秒,如果描述太長而無法顯示,則描述將從右向左滾動一次。
你在LED矩陣上看到的內(nèi)容取決于設(shè)備是否成功獲取了當(dāng)前時間(通過NTP)和天氣(通過OpenWeatherMap)。下表總結(jié)了每種場景下顯示的內(nèi)容:
它是如何工作的:
?顯示自動在時鐘和天氣模式之間交替(每種模式的持續(xù)時間是可配置的)。
?如果“顯示天氣描述”被啟用,第三模式描述將在天氣顯示后顯示,持續(xù)時間為3秒。
?在時鐘模式下,如果NTP時間可用,您將看到當(dāng)前時間加上一個獨特的星期圖標(biāo)。如果NTP不可用,您將看到!國家結(jié)核控制規(guī)劃。
?在天氣模式下,如果天氣可用,你會看到溫度(如23oC)。如果沒有天氣,但有時間,它就會回到顯示時鐘。如果兩者都不可用,您將看到!TEMP。
?所有狀態(tài)/錯誤消息(!國家結(jié)核控制規(guī)劃,!TEMP)是顯示在顯示器上的大圖標(biāo)。
本文編譯自hackster.io





