潮汐和天气钟





准备工作:
材料:
所以我使用了一块 TTGO T5 开发板,这是一款基于 ESP32 的开发板,带有一个 2.13 英寸的电子纸显示屏,并连接到一个 TTL5110 芯片。TPL5110 每 2.5 小时开启一次 T5,每天从 NOAA 下载一次潮汐数据,从 OpenWeatherMap 下载一次天气数据,并将数据显示在电子纸上,然后指示 TPL5110 关闭 T5。
TTGO T5主板17美元
Adafruit Perma-Proto 四分之一尺寸板(可选)0.71 美元(最低订单 8.50 美元)
锂聚合物电池 1200 mAh 10 美元(或其他合适的电源)
JST PH 2针电缆 – 公头0.75美元
220 uF电容器
工具:
烙铁
剥线钳
锂聚合物电池充电器
组装硬件







硬件组装非常简单,如原理图所示。我用的是 Adafruit Perma-proto 开发板,它和普通的原型板很像,只是布局像面包板,电路连接也和面包板一样,这点很棒。因为我只需要几个连接,而且想把整个组件装进一个小盒子里,所以我用 Dremel 切割轮把其中一块板切成四块。
220 uF 电容非常重要。没有它,TPL5110 就无法启动 T5。具体原因尚不清楚,但其他使用 TPL5110 的人也遇到过同样的问题。是不是 ESP32 启动时消耗的电流超过了 TTL5110 的供电能力?
不要硬接线电池。使用 JST-PH 线缆,这样你就可以断开电池连接来充电。如果 TPL5110 处于“开启”状态,或许有办法通过 TPL5110 从 T5 给电池充电,但我无法保证这种方法有效。
我做了一个木箱作为外壳,但任何内部尺寸至少为 1.5 英寸 x 2.75 英寸 x 1 英寸的东西都可以。
调整时间

TPL5110 开发板有一个微调电位器,用于设置 TPL5110 唤醒的时间间隔。用一把小螺丝刀将其逆时针旋转到底。在我的开发板上,这个电位器将唤醒间隔设置为 145 分钟,实际上超过了规格规定的最大值 120 分钟,但它确实有效,而且比每 120 分钟唤醒一次更省电,所以我就使用了它。您不需要知道确切的唤醒间隔,因为我们的目标只是每天大约凌晨 4 点下载一次数据。您可以在 env_config.h 中指定唤醒间隔(例如 145 分钟)和唤醒时间(例如凌晨 4 点)。
(如果您想要更好地控制其他项目的时间,TPL5110 板背面有一条线,您可以将其剪断以禁用电位器。然后将一个电阻器连接到延迟引脚,电阻决定间隔,根据此图表。)
软件




您需要带有ESP32 软件包的Arduino IDE。在 IDE 中,将您的开发板设置为“ESP32 Dev Module”。
该草图可在https://github.com/jasonful/Tides上找到,需要 3 个库:
- “ESP8266 气象站”,可从 Arduino 库管理器(或此处)获取。您只需要以下 6 个文件:ESPHTTPClient.h、ESPWiFi.h、OpenWeatherMapCurrent.cpp、OpenWeatherMapCurrent.h、OpenWeatherMapForecast.cpp 和 OpenWeatherMapForecast.h,其余文件可删除。
- Arduino 库管理器 (或此处)提供“Json Streaming Parser”
- https://github.com/LilyGO/TTGO-Epape-T5-V1.8/tree/master/epa2in13-demo即使代码没有打包为真正的库,您也可以将其复制到库目录下并包含它。
配置软件

您必须在 env_config.h 文件中设置几个参数(以及一些您可能需要设置的参数),包括:
- WiFi SSID和密码
- NOAA 站点 ID(换句话说,您在哪里)
- OpenWeatherMap AppID,您需要注册(简单且免费)
- OpenWeatherMap LocationID(再次询问,你在哪里)
- CONFIG_USE_TPL5110,允许你在没有 TPL5110 的情况下使用 T5。相反,软件将进入深度睡眠模式。T5 开发板在深度睡眠模式下的功耗约为 8 mA,因此我预计电池只能使用几天。
- 【软件如何工作】
- (如果您不介意的话可以跳过此部分。)
- 目标是每天唤醒一次,但由于 TPL5110 的最大间隔只有 2 小时左右,T5 必须更频繁地唤醒。因此,在下载潮汐和天气数据后,它会计算从现在到明天凌晨 4:00 之间有多少个这样的 2 小时间隔。由于 TPL5110 会完全切断 T5 的电源,这让事情变得稍微复杂一些,这对电池来说虽然好,但意味着我们会失去 RAM 和实时时钟。这就像每天早上醒来都失忆了一样。为了确定现在几点,它会从 NOAA 的 HTTP 标头中提取时间。为了记住还有多少个 2 小时间隔,它会将计数器写入非易失性存储器(闪存)。每次唤醒时,它都会检查该计数器,将其减一,然后存储,如果大于零,它会立即向 TPL51110 发送信号(“完成”),告诉它进入睡眠状态。当计数器达到零时,代码会下载新数据,并重新计算和重置计数器。
运行

确保 T5 左侧的开关处于向上(开)位置,将草图上传到 T5,几秒钟内屏幕就会更新潮汐和天气信息。
如果需要调试软件,请将 Tides.ino 文件顶部的“#define DEBUG 0”改为“#define DEBUG 1”。这样可以打开串口调试输出,并在电子纸底部显示下载新数据前剩余的重启次数,以及上次下载数据的时间。
【未来方向】
- TPL5110 与电子纸显示器结合使用是显示不经常变化的数据的绝佳方式,并且具有出色的电池寿命。
- 在设计这个产品时,我考虑过使用TrigBoard,它是一块 ESP8266 开发板,板载一个 TPL5111。这需要单独的电子纸显示屏和电子纸驱动板,例如这个或这个。或者一个驱动板+开发板的组合,例如这个或这个。为了将代码移植到 ESP8266,我认为 SSL 代码必须使用指纹而不是证书,而非易失性存储代码需要使用 EEPROM 或 RTC 存储器。
- 我最近听说Lolin32开发板在深度睡眠模式下表现不错:大约100uA。虽然不如TPL51110开发板(Adafruit官方数据是20uA),但也足够好了。
- OpenWeatherMap 返回的天气数据比我显示的要多得多。包括图标 ID,这需要去别处找单色图标。











