构建一个基于ESP8266/ESP32和MAX7219的wifi连接的LED矩阵时钟和气象站
扫描二维码
随时随地手机看文章
ESPTimeCast是一个基于ESP8266/ESP32和MAX7219的wifi连接的LED矩阵时钟和气象站。它显示从OpenWeatherMap获取的当前时间、星期几和当地天气(温度/湿度/天气描述)。安装和配置完全通过内置的web界面进行管理。
3D打印盒
想给你的ESPTimeCast一个家吗?你可以3D打印一个定制的案例!一个时尚的版本(V2)的情况下刚刚发布!箱体前面板(3mm)可激光切割!
在这里买你的:
•打印
•Cults3D
媒体提到
ESPTimeCast已在:
•Hackaday
•XDA开发者
特性
•LED矩阵显示器(8x32)由MAX7219供电,具有自定义字体支持
•简单的Web界面,所有配置(WiFi,天气,时区,显示持续时间,和更多)
•自动NTP同步与鲁棒状态反馈和重试
•从OpenWeatherMap获取天气(每5分钟,温度/湿度/描述)
•回退AP模式,便于首次设置或配置
•从IANA名称选择时区(后端集成DST)
•获取我的位置按钮,以获得您的大致纬度/长度。
•星期和天气描述以多种语言显示
•存储在LittleFS中的持久配置,带有备份/恢复系统
•状态动画WiFi连接,AP模式,时间同步。
高级设置面板:
•自定义主备NTP服务器输入
•显示星期几开关(默认为开启)
•显示闪烁冒号开关(默认为开启)
•显示日期开关(默认为关闭)
•24/12小时时钟模式切换(默认24小时)
•英制单位(°F)切换(默认为公制°C)
•显示湿度开关(显示温度之外的湿度)
•天气描述切换(显示:大雨、散云、雷暴等)
•翻转显示(180度)
•可调显示亮度
•调光时间安排
•倒计时功能(滚动/戏剧性)
•可选葡萄糖+趋势显示(nightscout兼容,通过ntpserver2设置)
•高级设置面板:自定义主/从NTP服务器输入显示星期切换(默认开启)显示闪烁冒号切换(默认开启)显示日期切换(默认关闭)24/12h时钟模式切换(24小时默认)英制单位(°F)切换(公制°C默认)显示湿度切换(显示湿度除了温度)天气描述切换(显示:大雨,散云,雷暴等)翻转显示(180度)可调显示亮度调光小时调度倒计时功能(滚动/戏剧性)可选葡萄糖+趋势显示(nightscout兼容,通过ntpserver2设置)
布线
电源转换从3.3V切换到5V显示
注:针在相同的位置,但要确保正确的声明在你的草图
•D1 Mini→MAX7219
•接地接地
•5V VCC
•D5 CLK
•D7 CS
•D8 DIN
提示:始终仔细检查VCC (5v), GND和DIN/CS/CLK是否与MAX7219模块的引脚顺序匹配-不同的模块有时会以不同的方式标记它们。有关其他Wemos板,请查看官方GitHub Repo
重要的硬件更新:所有Wemos板的引脚已更新为在同一位置焊接,检查您的板版本并相应地更新草图。在观察到过热问题和从Mini D1的3.3V引脚为MAX7219矩阵供电时的不稳定行为后,我们正式切换到通过5V USB导轨为显示器供电。
什么变化:
•之前:显示器VCC连接到ESP板的3.3V引脚上。
•现在:显示器VCC将连接到电路板的5V引脚(直接来自USB电源)。
为什么需要这种改变:
•MAX7219 LED矩阵设计用于5V工作。
•Mini D1上的板载3.3V稳压器(通常是AMS1117)在电流输出方面非常有限(最大~800mA,在实践中通常要少得多)。
高亮度矩阵模块-特别是绿色/黄色显示器-可以吸收足够的电流使稳压器过载,导致:
•过热
•电压降
•稳压器完全失效(一些用户报告损坏后只有2.4V输出)
•高亮度矩阵模块-特别是绿色/黄色显示-可以吸收足够的电流使稳压器过载,导致:过热电压下降完全稳压器故障(一些用户报告损坏后只有2.4V输出)
使用5V的好处:
•更高的亮度和更稳定的矩阵性能
•降低了ESP8266单板的热负荷
•避免对板载调节器造成长期损坏
•MAX7219与来自ESP的3.3V逻辑信号一起工作良好(不需要电平移位器)
Web UI与配置
内置的web界面提供完整的配置:
•WiFi设置(SSID和密码)
•天气设置(OpenWeatherMap API密钥,城市,国家,坐标)
•时区(如果找到TZ将自动填充)
•星期和天气描述语言
•显示时钟和天气的持续时间(毫秒)
•高级设置(见下文)
•首次设置/ AP模式
设备上电。如果WiFi失败,它会在AP模式下自动启动:
•名称:ESPTimeCast
•密码:12345678
•如果在浏览器中没有打开http://192.168.4.1或http://setup.esp,强制门户应该自动打开。
设备上电。当WiFi故障时,AP模式下自动启动:SSID:ESPTimeCast
•密码:12345678
如果在浏览器中没有打开http://192.168.4.1或http://setup.esp,强制门户应该自动打开。
设置你的WiFi和所有其他选项。
单击“保存设置”,设备保存配置,重新启动并连接。
设备在启动后显示其本地IP地址,以便您可以再次登录以进行设置更改
*外部链接和“获取我的位置”按钮需要互联网接入。当设备处于AP模式时,它们将无法工作-首先连接到Wi-Fi。
UI的例子:
高级设置
单击web UI中“高级设置”旁边的齿轮图标以显示额外的配置选项。
可用的高级设置:
•主NTP服务器:覆盖默认NTP服务器(例如pool.ntp.org)。
•备用NTP服务器:备用NTP服务器(例如time.nist.gov)
•星期几:以所需语言显示星期几
•闪烁冒号开关(默认为开启)
•显示日期(默认为关闭,持续时间与天气持续时间相同)
•24/12h时钟:在24小时和12小时时间格式之间切换(默认为24小时)
•英制单位(°F)切换(默认为公制°C)
•湿度:显示温度以外的湿度
•天气描述切换(显示天气描述在选定的语言* 3秒或滚动一次,如果描述太长)
•翻转显示:垂直/水平翻转显示
•亮度:Off - 0(暗)至15(亮)
•调光功能:开始时间,结束时间和所需的亮度选择
•倒计时功能,设置倒计时到您的收藏/下一个事件,2种模式:滚动/戏剧性!
*非英语字符转换为最接近的英语字母。*对于世界语、爱尔兰语和斯瓦希里语,不提供天气描述翻译。存在日语翻译,但由于设备不能显示所有的日语字符,因此在所有这些情况下都将使用英语。
提示:不要忘记按保存按钮来保留您的设置
配置笔记
•OpenWeatherMap API密钥:
•在这里开个帐
•在这里检查您的API密钥
•城市名称:如东京、伦敦等。
•国家代码:2字母代码(如JP、GB)
•邮政编码:在城市字段中输入邮政编码,在国家字段中输入美国(仅限美国)
•纬度和经度可以在城市字段(纬度)和国家字段(经度)中输入坐标。
•时区:从IANA区域中选择(例如,美国/纽约,自动处理DST)
开始
本指南将引导您设置环境并将ESPTimeCast项目上传到ESP8266或ESP32板。请仔细按照您的具体板类型的说明。
ESP8266设置
按照以下步骤准备用于ESP8266开发的Arduino IDE:
•安装ESP8266单板包:
•打开文件>偏好在Arduino IDE。
•将http://arduino.esp8266.com/stable/package_esp8266com_index.json添加到“附加董事会管理器url”。
•进入Tools > Board > Boards Manager....通过“esp8266社区”搜索“esp8266”,点击“安装”。
安装ESP8266单板包:在Arduino IDE中打开文件> Preferences。将http://arduino.esp8266.com/stable/package_esp8266com_index.json添加到“附加董事会管理器url”。进入Tools > Board > Boards Manager....通过“esp8266社区”搜索“esp8266”,点击“安装”。
选择您的开发板:
•转到Tools > Board并选择您的特定板,例如,Wemos D1 Mini(或您的ESP8266变体)。
•选择您的板:转到Tools > Board并选择您的特定板,例如,Wemos D1 Mini(或您的ESP8266变体)。
配置Flash大小:
•在Tools下,选择Flash大小为4MB FS:2MB OTA:~1019KB。这确保了草图和LittleFS数据有足够的空间。
•配置Flash大小:在“Tools”下选择“Flash Size”为“4MB FS:2MB OTA:~1019KB”。这确保了草图和LittleFS数据有足够的空间。
安装库:
•去素描>包括图书馆>管理图书馆…并安装以下内容:
•ArduinoJson由Benoit Blanchon编写
•MD_Parola由majicDesigns(这通常也会安装它的依赖:MD_MAX72xx)
•ESPAsyncTCP由ESP32Async实现
•ESPAsyncWebServer由ESP32Async
•安装库:转到Sketch >包括库>管理库…ArduinoJson由Benoit BlanchonMD_Parola由majicDesigns(这通常也会安装它的依赖:MD_MAX72xx)ESPAsyncTCP由ESP32AsyncESPAsyncWebServer由ESP32Async
ESP32设置
按照以下步骤为ESP32开发准备Arduino IDE:
安装ESP32单板包:
•进入Tools > Board > Boards Manager....用expressif Systems搜索esp32,然后点击“安装”。
•安装ESP32单板包:进入Tools > Board > Boards Manager....用expressif Systems搜索esp32,然后点击“安装”。
选择您的开发板:
•转到Tools > Board并选择您的特定板,例如,LOLIN S2 Mini(或您的ESP32变体)。
•选择您的板:转到Tools > Board并选择您的特定板,例如,LOLIN S2 Mini(或您的ESP32变体)。
配置分区方案:
•在Tools下,选择Partition Scheme“Default 4MB with spiffs”。这确保了草图和LittleFS数据有足够的空间。
•配置分区方案:在Tools下,选择分区方案“Default 4MB with spiffs”。这确保了草图和LittleFS数据有足够的空间。
上传代码和数据
一旦你的Arduino IDE设置为你的板(如上所述):
打开项目文件夹:
对于ESP8266:导航到并打开ESPTimceCast_ESP8266项目文件夹。在其中,您将找到主草图文件,通常名为ESPTimceCast_ESP8266.ino。打开这个。在Arduino IDE中。
对于ESP32:导航到并打开ESPTimceCast_ESP32项目文件夹。在其中,您将找到主草图文件,通常名为ESPTimceCast_ESP32.ino。打开这个。在Arduino IDE中。
打开项目文件夹:对于ESP8266:导航到并打开ESPTimceCast_ESP8266项目文件夹。在其中,您将找到主草图文件,通常名为ESPTimceCast_ESP8266.ino。打开这个。在Arduino IDE中。对于ESP32:导航到并打开ESPTimceCast_ESP32项目文件夹。在其中,您将找到主草图文件,通常名为ESPTimceCast_ESP32.ino。打开这个。在Arduino IDE中。
上传草图:
打开主草图文件后,点击Arduino IDE工具栏中的“上传”按钮(右箭头图标)。这将编译整个项目并将其上传到您的板。
上传草图:打开主草图文件后,点击Arduino IDE工具栏中的“上传”按钮(右箭头图标)。这将编译整个项目并将其上传到您的板。
上传/数据文件夹(LittleFS):
这个项目使用LittleFS来存储web界面文件和其他资产。你需要LittleFS Uploader插件。
安装LittleFS Uploader Plugin
上传前,请确保Serial Monitor已关闭。
打开命令面板(Windows上是Ctrl+Shift+P, macOS上是Cmd+Shift+P)。
搜索并运行:Upload Little FS to Pico/ESP8266/ESP32(确切的命令名称可能会有所不同)。
对于ESP32很重要:如果上传失败,您可能需要手动将ESP32置于“下载模式”。按住Boot键(通常标记为‘ Boot ’或‘IO0’或‘IO9’),短暂按下并释放RST键,然后释放Boot键。
上传/数据文件夹(LittleFS):该项目使用LittleFS存储web界面文件和其他资产。你需要LittleFS Uploader插件。安装LittleFS Uploader插件上传之前,请确保Serial Monitor已关闭。打开命令面板(Windows上是Ctrl+Shift+P, macOS上是Cmd+Shift+P)。搜索并运行:Upload Little FS to Pico/ESP8266/ESP32(确切的命令名称可能会有所不同)。对于ESP32很重要:如果上传失败,您可能需要手动将ESP32置于“下载模式”。按住Boot键(通常标记为‘ Boot ’或‘IO0’或‘IO9’),短暂按下并释放RST键,然后释放Boot键。
显示的行为
ESPTimeCast自动切换两种显示模式:时钟和天气。如果“显示天气描述”启用了第三种模式(描述),将显示持续时间为3秒,如果描述太长而无法显示,则描述将从右向左滚动一次。
你在LED矩阵上看到的内容取决于设备是否成功获取了当前时间(通过NTP)和天气(通过OpenWeatherMap)。下表总结了每种场景下显示的内容:
它是如何工作的:
•显示自动在时钟和天气模式之间交替(每种模式的持续时间是可配置的)。
•如果“显示天气描述”被启用,第三模式描述将在天气显示后显示,持续时间为3秒。
•在时钟模式下,如果NTP时间可用,您将看到当前时间加上一个独特的星期图标。如果NTP不可用,您将看到!国家结核控制规划。
•在天气模式下,如果天气可用,你会看到温度(如23ºC)。如果没有天气,但有时间,它就会回到显示时钟。如果两者都不可用,您将看到!TEMP。
•所有状态/错误消息(!国家结核控制规划,!TEMP)是显示在显示器上的大图标。
本文编译自hackster.io





