DIY及创意
直播中

听我讲

9年用户 655经验值
擅长:电源/新能源 MEMS/传感技术
私信 关注
[创意DIY]

【开源项目】Arduino ESP32 彩色电子气象站

这是我十多年来一直想建立的项目。我终于成功了,我真的很兴奋——一个电池供电的气象站项目。我过去建造过许多气象站项目,但这次不同。它可以在电池上持续数月。原因是它使用的令人惊叹的电子纸显示。让我向你展示我是如何构建这个项目的,以及如何使用相同或相似的显示器来构建自己的项目。

Arduino ESP32 彩色电子纸气象站

首先,让我解释一下这个项目是什么以及它是如何工作的。

如您所见,我们有一个大型 6 英寸电子纸显示屏,可以显示 7 种颜色,并结合 ESP32 微处理器。在我过去六年使用过的所有电子纸板中,这是最好的。

在显示屏上,我们显示温度、湿度、气压和天气预报。我们从两个传感器获取温度、湿度和气压,并从互联网上获取天气预报。

我们还在此处显示一些图表。显示过去 24 小时温度读数的折线图、显示过去 24 小时湿度读数的条形图以及显示过去 24 小时气压读数的条形图。

在我看来,最后一个条形图是其中最有用的。我们可以获取这些值,并使用特定的算法 Zambretti 算法生成我们自己的天气预报。但这是另一个 Instructable 的主题。

制作材料

  • 电子纸展示板
  • DHT22 传感器
  • BMP180 传感器

自选

  • BME280 传感器:

用品

第 1 步:Inkplate6 彩色电子纸显示屏

这是一个6英寸的彩色电子纸显示板。我已经做了十多年了,我对电子墨水技术及其用途很着迷。如果您不熟悉它,电子墨水显示器只有在更新其内容时才会使用电力,因此即使此设备现在已关闭,它仍然显示此图像。我在这个频道中使用电子墨水显示器构建了许多项目。我一直想要一个多合一的板子。一个包含我构建项目所需的一切的板子,并且易于使用。那么,让我们看看这个板子提供了什么。

砚板6色电子纸显示屏

首先,该板使用大型彩色电子墨水显示屏。这是我第一次使用彩色电子墨水显示屏,我喜欢它。颜色为任何项目增色不少。该显示器可以显示 7 种不同的颜色。白色、黑色、红色、黄色、蓝色、绿色和橙色。它提供 600x448 像素的分辨率,屏幕刷新率约为 11 秒。由于显示器使用电子墨水技术,因此它仅在刷新内容时才消耗电量,因此,如果我们不一直更新显示器,我们的功耗几乎为零。该板可实现 18μΑs 的深度休眠电流。我喜欢它,我们可以构建可以使用电池持续数月的项目。令人惊奇的东西。

砚板6色电子纸显示屏

该开发板还具有集成 Wi-Fi 和蓝牙连接的 ESP32 微控制器。我们还可以找到一个SD卡插槽,我们可以在其中存储文件和图像以显示在屏幕上。该板可以通过 USB-C 连接器进行编程和供电,并具有电池充电器和锂聚合物电池。此外,该板还带有一个 RTC 时钟模块,用于跟踪时间并降低功耗。如您所见,该板还为我们提供了许多GPIO引脚来连接我们的传感器和设备。该板还带有一个 3D 打印外壳,如果您想修改它们,也可以在线获取这些文件。创客还能要求什么?我们想要的硬件一切都在这里。

第 2 步:DHT22 传感器

DHT22 是一款非常受欢迎的温度和湿度传感器。它价格便宜,易于使用,并且规格声称具有良好的精度和准确性。

DHT22 传感器

DHT传感器由电容式湿度传感器和热敏电阻两部分组成。内部还有一个芯片,可以进行一些模数转换,并输出带有温度和湿度的数字信号。使用任何微控制器都可以很容易地读取数字信号。

DHT22 的特性

  • 低成本
  • 3 至 5V 电源和 I/O
  • 转换期间使用最大电流 2.5mA
  • 0-100% 湿度读数,精度为 2-5%
  • -40 至 125°C 温度读数±精度为 0.5°C

与Arduino的连接非常简单。我们将带有 + 号的传感器引脚连接到 Arduino 的 5V 或 3.3V 输出。我们将带有 - 符号的传感器引脚连接到 GROUND。最后,我们将OUT引脚连接到Arduino的任何数字引脚。

为了将DHT22传感器与Arduino一起使用,我们必须使用DHT库。

第 3 步:BMP180 传感器

BMP180 是一款低成本、低功耗的数字气压传感器,可通过 I2C 与 Arduino 通信。它通常用于测量大气压力、温度和海拔高度。凭借其高精度和宽测量范围,它是各种应用的宝贵工具,例如天气监测、无人机和其他车辆的高度跟踪以及气候数据收集。BMP180 体积小且易于集成,是 Arduino 项目的热门选择。

BMP180 传感器

  • 传感器类型:数字气压传感器
  • 通信:协议 I2C
  • 测量范围:大气压力:300 至 1100 hPa(海拔 9000 米至 -500 米)
  • 温度测量:范围-40°C至85°C(-40°F至185°F)
  • 精度:压力:±0.2 hPa (0.75 毫巴);温度:±1.0°C (2°F)
  • 分辨率:压力:0.01 hPa (0.03 毫巴);温度:0.01°C (0.02°F)
  • 功耗典型值:0.3 μA;最大值:2.5 μAD

第 4 步:连接

连接非常简单。我将一些接头引脚焊接到电路板上,并将传感器连接到它们上。

连接

BMP180 传感器使用 I2C 接口,因此我们必须将电源和另外两根电线连接到电路板的 SCL 和 SDA 引脚。

DHT22 传感器需要电源和一根电线,我已将其连接到引脚 IO13。

第 5 步:代码和库

为了编译项目,我们需要 4 个库,用于显示器的 Inkplate 库、用于 BMP180 传感器的库、用于 DHT22 传感器的库和用于解析我们从互联网上获得的数据的 ArduinoJson 库。

  • Inkplate6 库
  • DHT22 库
  • BMP180 库
  • Arduino JSON

您可以直接从Arduino IDE下载所有库,因此无需访问任何网站。

该项目的软件由许多文件组成。我决定使用面向对象编程来使这个项目更易于使用。项目的每个功能都有自己的类。因此,我们有一个检索天气预报的类。然后我们有一个读取传感器的类。然后我们有一个类,负责在EEPROM存储器中读取和写入数据。我们需要的另一个类是保存所有历史传感器数据的类,最后是负责在显示器上绘图的类。这样,如果要使用不同的显示器,则只需编写自己的 Display 类。如果你想使用不同的传感器,比如说BMP280,你只需要修改传感器类。所有其他代码都可以正常工作。

代码和库

您可以在此处找到代码的链接:https://educ8s.tv/arduino-e-paper-weather-station/

或者在此 GitHub 存储库中:https://github.com/educ8s/Arduino-Color-E-Paper-Weather-Station

它是完全开源的,如果您愿意,您可以使用其他功能对其进行扩展。我很想看看您将以此代码为起点构建什么。

第 6 步:代码的工作原理

该项目每六分钟读取一次温度、湿度和压力读数。然后,它进入深度睡眠模式,在此模式下,器件几乎完全禁用,仅消耗 15μA 的电流。显示屏即使处于非活动状态,仍显示先前记录的读数,这是我选择它的主要原因。

代码的工作原理

由于深度睡眠模式会禁用所有设备内存以节省电量,因此存储在 RAM 中的任何数据都会丢失。因此,在进入睡眠模式之前,我将所有读数保存到设备的 EEPROM 存储器中,这是一种永久存储解决方案。唤醒后,器件会从 EEPROM 检索所有读数并对其进行更新。

每 10 个唤醒周期或 60 分钟,设备就会获取温度、湿度和压力读数,并相应地更新图表。每 60 个唤醒周期或 360 分钟(6 小时),设备连接到互联网以检索天气预报。为了节省电力,此过程限制为每天四次,因为 WiFi 连接会消耗大量能源。

通过实施这些省电策略,电池寿命可以延长数月。我目前正在使用 1200mAh 电池,我会让您了解其使用寿命的最新信息。

总结

为了增强设备的外观,是时候将其封闭起来了。我使用的是电路板随附的原始外壳,但如果您愿意,您可以设计和 3D 打印自己的外壳。我只是为传感器从外壳中伸出一个孔,使它们能够有效地收集数据。它放在我的桌子上看起来很酷,我无法停止盯着它看。

这个项目是一个使用Arduino ESP32和彩色电子纸显示屏制作的天气站,它不仅可以显示温度、湿度、气压和天气预报,还能通过图表展示过去24小时的温湿度和气压变化。这个天气站的特点是低功耗,它使用的电子纸显示技术只在更新内容时消耗电力,因此可以实现长达数月的电池续航。另外,它还可以连接到互联网获取实时天气预报,非常适合放在桌面上,随时查看天气变化。

结论

来源:https://www.instructables.com/Arduino-ESP32-Color-E-Paper-Weather-Station/

回帖(2)

nokin01

2024-3-5 08:11:36
非常酷?的项目。作者写的很好。值得推荐。
举报

严工

2024-6-7 14:10:15
好贵,搜了一下  1000多

举报

更多回帖

发帖
×
20
完善资料,
赚取积分