潮汐和天气钟

DOIT SUPER
转载
发布时间: 2025-06-14 16:37:20 | 阅读数 0收藏数 0评论数 0
封面
虽然你可以买到单指针指示潮汐是涨潮、退潮还是介于涨潮和退潮之间的模拟潮汐钟,但我想要的是一个能告诉我什么时候会退潮的钟。我想要一个可以快速查看的钟,无需开机、按任何按钮或等待。而且我想要一个电池续航时间长的钟。潮汐钟已运行一年,电池电压为 4.00 伏,因此该钟可以运行很多年。

准备工作:

材料:

所以我使用了一块 TTGO T5 开发板,这是一款基于 ESP32 的开发板,带有一个 2.13 英寸的电子纸显示屏,并连接到一个 TTL5110 芯片。TPL5110 每 2.5 小时开启一次 T5,每天从 NOAA 下载一次潮汐数据,从 OpenWeatherMap 下载一次天气数据,并将数据显示在电子纸上,然后指示 TPL5110 关闭 T5。

TTGO T5主板17美元

Adafruit TPL5110 开发板5 美元

Adafruit Perma-Proto 四分之一尺寸板(可选)0.71 美元(最低订单 8.50 美元)

锂聚合物电池 1200 mAh 10 美元(或其他合适的电源)

JST PH 2针电缆 – 公头0.75美元

220 uF电容器

工具:

烙铁

剥线钳

锂聚合物电池充电器

1

组装硬件

硬件组装非常简单,如原理图所示。我用的是 Adafruit Perma-proto 开发板,它和普通的原型板很像,只是布局像面包板,电路连接也和面包板一样,这点很棒。因为我只需要几个连接,而且想把整个组件装进一个小盒子里,所以我用 Dremel 切割轮把其中一块板切成四块。

220 uF 电容非常重要。没有它,TPL5110 就无法启动 T5。具体原因尚不清楚,但其他使用 TPL5110 的人也遇到过同样的问题。是不是 ESP32 启动时消耗的电流超过了 TTL5110 的供电能力?

不要硬接线电池。使用 JST-PH 线缆,这样你就可以断开电池连接来充电。如果 TPL5110 处于“开启”状态,或许有办法通过 TPL5110 从 T5 给电池充电,但我无法保证这种方法有效。

我做了一个木箱作为外壳,但任何内部尺寸至少为 1.5 英寸 x 2.75 英寸 x 1 英寸的东西都可以。

2

调整时间

TPL5110 开发板有一个微调电位器,用于设置 TPL5110 唤醒的时间间隔。用一把小螺丝刀将其逆时针旋转到底。在我的开发板上,这个电位器将唤醒间隔设置为 145 分钟,实际上超过了规格规定的最大值 120 分钟,但它确实有效,而且比每 120 分钟唤醒一次更省电,所以我就使用了它。您不需要知道确切的唤醒间隔,因为我们的目标只是每天大约凌晨 4 点下载一次数据。您可以在 env_config.h 中指定唤醒间隔(例如 145 分钟)和唤醒时间(例如凌晨 4 点)。

(如果您想要更好地控制其他项目的时间,TPL5110 板背面有一条线,您可以将其剪断以禁用电位器。然后将一个电阻器连接到延迟引脚,电阻决定间隔,根据此图表。)

3

软件

您需要带有ESP32 软件包的Arduino IDE。在 IDE 中,将您的开发板设置为“ESP32 Dev Module”。

该草图可在https://github.com/jasonful/Tides上找到,需要 3 个库:

  1. “ESP8266 气象站”,可从 Arduino 库管理器(或此处)获取。您只需要以下 6 个文件:ESPHTTPClient.h、ESPWiFi.h、OpenWeatherMapCurrent.cpp、OpenWeatherMapCurrent.h、OpenWeatherMapForecast.cpp 和 OpenWeatherMapForecast.h,其余文件可删除。
  2. Arduino 库管理器 (或此处)提供“Json Streaming Parser”
  3. https://github.com/LilyGO/TTGO-Epape-T5-V1.8/tree/master/epa2in13-demo即使代码没有打包为真正的库,您也可以将其复制到库目录下并包含它。
4

配置软件

您必须在 env_config.h 文件中设置几个参数(以及一些您可能需要设置的参数),包括:

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

运行

确保 T5 左侧的开关处于向上(开)位置,将草图上传到 T5,几秒钟内屏幕就会更新潮汐和天气信息。

如果需要调试软件,请将 Tides.ino 文件顶部的“#define DEBUG 0”改为“#define DEBUG 1”。这样可以打开串口调试输出,并在电子纸底部显示下载新数据前剩余的重启次数,以及上次下载数据的时间。


【未来方向】

  1. TPL5110 与电子纸显示器结合使用是显示不经常变化的数据的绝佳方式,并且具有出色的电池寿命
  2. 在设计这个产品时,我考虑过使用TrigBoard,它是一块 ESP8266 开发板,板载一个 TPL5111。这需要单独的电子纸显示屏和电子纸驱动板,例如这个这个。或者一个驱动板+开发板的组合,例如这个这个。为了将代码移植到 ESP8266,我认为 SSL 代码必须使用指纹而不是证书,而非易失性存储代码需要使用 EEPROM 或 RTC 存储器。
  3. 我最近听说Lolin32开发板在深度睡眠模式下表现不错:大约100uA。虽然不如TPL51110开发板(Adafruit官方数据是20uA),但也足够好了。
  4. OpenWeatherMap 返回的天气数据比我显示的要多得多。包括图标 ID,这需要去别处找单色图标。


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载