×

电子纸潮汐和天气追踪器开源分享

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-06-12

李麒铭

分享资料个

描述

MagPi 杂志第 106 期精选

我的父母最近在水上找到了一席之地,并且每天都沉迷于查看潮汐,所以我决定为他们打造一个定制的 TideTracker。这个想法是展示当天预测的高潮和低潮时间,以及显示过去 24 小时潮汐的图表。除此之外,我还添加了一些基本的天气数据,让他们一目了然。

该项目使用 Raspberry Pi 作为大脑,使用 E-Ink 显示器来显示信息。最初研究项目时,我发现了 Luke Haas 的一个类似项目,我在编写自己的程序之前用来测试显示器的功能,请在此处查看该项目

电子墨水屏

对于这个项目,我想使用电子墨水显示器有几个原因。首先是它们能量低;一旦屏幕被写入,即使断电,屏幕上的图像也会保留,这意味着设备可以进入睡眠模式而无需为显示器供电。其次,它可能位于阳光充足的地方,无需担心电子墨水屏幕的亮度或眩光。最后,因为我认为它们很酷而且我还没有机会在我的任何项目中使用它们。

该项目为 Raspberry Pi 使用 WaveShare 7.5 英寸显示器和 HAT。这个显示器有很多不同的版本,但我使用的是基本的 800x480 黑白版本。

pYYBAGNh1zeAQmVaAADneQ5Gldw524.png
https://www.waveshare.com/7.5inch-e-paper-hat.htm
 

大脑:

该项目在 Raspberry Pi ZeroW 上运行,考虑到它的紧凑尺寸和 wifi 连接,它是完美的。所有的计算和代码都是用 python 完成的;这包括收集潮汐/天气数据、分析、图像处理和写入电子墨水显示屏。该程序是一个循环,从两个源中提取数据,对其进行分析,将其打印到显示器上,然后休眠 10 分钟并重复。

pYYBAGNh1z2AXYpyAAF28HkiYdg10.jpeg
焊接 HAT 接头的引脚
 

数据源:

天气数据:

天气是根据城镇/城市的坐标直接从OpenWeatherMap.org中提取的。使用免费的 One Call API,我们可以在一个 json 文件中获取当前、预报和历史天气数据。这是将打印到屏幕并用于确定所用天气图标的信息。

潮汐数据:

使用 noaa_coops python 包的本地 NOAA 站是一个很棒的工具,可让您通过其简单的 API 提取请求的数据。首先,您必须确定最近的本地站点,该站点会收集我们要查找的数据并获取站点 ID 号。

pYYBAGNh10CAaKUNAAFFFGFGWpA770.png
 

从该站提取并分析过去 24 小时的潮位数据以创建一个绘图,然后将其导出并保存为 png 以备后用。预测的潮汐时间也根据当地标准和日光时间提取。

pYYBAGNh10KAaZz0AABNJyYoHrg602.png
 

为了显示的目的,该图实际上被保存为灰度,因为它不能显示颜色。

图像处理:

显示的信息实际上是推送到屏幕的单个图像文件,这意味着每次程序更新时都会创建一个新图像(当前设置为 10 分钟间隔)。它以与显示器大小 (800x480) 相匹配的空白图像开始,系统地在其上添加/粘贴了所有信息。我首先绘制了分隔不同部分的直线分界线,然后移至天气。天气图标是根据提取的数据确定的;该图标是从图像库中选择的,调整大小,然后粘贴到适当的位置。之后添加潮汐数据,写入高低时间并粘贴到先前生成的图中。生成的图像就是您在下面看到的。

poYBAGNh10aAEfwHAACM2gh_hpM362.png
“Tomorrow”和“Next-Next Day”原本是作为实际日期的占位符,但从来没有费心去改变它们。
 

写入电子墨水屏:

如上所述,生成一个图像文件,然后通过 SPI 通信发送到显示器。为此,首先需要对屏幕进行初始化,这要归功于电子墨水 wiki上的源代码,这很容易完成刷新图像时,显示会在更新时闪烁。之后,重要的是让屏幕进入“睡眠”状态,以帮助防止长时间使用期间恒定电压可能造成的潜在损坏。即使在断电后,显示器仍将保持图像。

poYBAGNh10qAIlJAAAFnT7iSnwA08.jpeg
使用备用的树莓派 3B+(正式版未使用)测试写屏功能
 

构建:

我想象这个项目的方式是看起来像放在咖啡桌上的那些数码相框之一。框架外壳和支架采用 Fusion 360 设计,并印在 Prusa i3 MK3 上。框架采用简单的设计,具有用于显示器的平坦正面,背面板为 RPi 和电子墨水 HAT 留出空间。您可以在下方看到显示电源端口孔和支架安装点的背板。

poYBAGNh11CAKGO6AAJ0hF2wE9Q552.png
背板
 

打印出框架部件后,组件就会与一些杂项硬件组装在一起。

pYYBAGNh11SAYiKPAAHxEyoblxM50.jpeg
组装前的最终测试
 

支架单独印刷并卡入框架背面。

poYBAGNh12CAILcjAAMPc88uKHk544.png
正在打印的框架的后支架
 

打印并组装完所有零件后,将进行最终测试以确保一切正常。

pYYBAGNh12mAL6sUAALZkTITbZg18.jpeg
在工作台上组装好的 TideTracker
 

社区建设

听到来自各地的人们对项目的兴趣以及构建自己的版本的建议,真是太棒了。所以我认为在项目中添加一个部分来突出显示其他人已经完成的构建并使用共享的任何新版本继续发展它会很酷。

与我共享的第一个构建是由Gwil完成的,他将该项目改编为在英国工作(他的代码链接如下)。

pYYBAGSBRVaAccOiAAsD0InoeMg674.jpg
英国由 Gwil 建造
 

Brendan Aye的下一个项目建立在原始代码的基础上,并添加了一个新的月相功能以及一些其他更改,他的代码链接在他下面的评论中。

poYBAGSBRV-Af9raAA_wdrV3U7U160.jpg
由 Brendan Aye 打造
 
 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !