22| 13
|
[项目] Arduino ESP32 彩色6寸电子纸墨水屏气象站 |
![]() 这是我十多年来一直想构建的项目。我终于成功了,我真的很兴奋——一个电池供电的气象站项目。我过去建造过许多气象站项目,但这次不同。它可以用电池使用数月。原因是它使用了令人惊叹的 E-Paper 显示屏。让我向您展示我是如何构建这个项目的,以及如何使用相同或类似的显示器构建自己的项目。 首先,让我解释一下这个项目是什么以及它是如何运作的。 如您所见,我们有一个大型 6 英寸 E-Paper 显示屏,可以显示 7 种颜色,并结合 ESP32 微处理器。在我过去六年用过的所有电子纸板中,这是最好的。 在显示屏上,我们显示温度、湿度、气压和天气预报。我们从两个传感器获取温度、湿度和气压,并从互联网获取天气预报。 我们还在此处显示一些图表。显示过去 24 小时温度读数的折线图、显示过去 24 小时湿度读数的条形图和显示过去 24 小时气压读数的条形图。 在我看来,最后一个条形图是其中最有用的。我们可以获取这些值,并使用特定算法 Zambretti 算法生成我们自己的天气预报。但这是另一个 Instructable 的主题。 |
主要硬件 电子纸显示板:https://educ8s.tv/part/ColorEPaper DHT22 传感器:https://educ8s.tv/part/DHT22 BMP180 传感器:https://educ8s.tv/part/BMP18 BME280 传感器:https://educ8s.tv/part/BME280 ![]() |
第 1 步:Inkplate6 彩色电子纸显示 这是一个 6 英寸彩色电子纸展示板。我已经制作东西十多年了,我对 e-ink 技术及其用途很着迷。如果您不熟悉它,电子墨水显示器仅在更新其内容时才会使用电力,因此即使此设备现在已关闭,它仍然会显示此图像。我在这个频道中使用 e-ink 显示器构建了许多项目。我一直想要一个多合一的板子。一个包含我构建项目所需的一切并且易于使用的板子。那么,让我们看看这个板子提供了什么。 首先,该板使用大型彩色 E-Ink 显示屏。这是我第一次使用彩色 E-Ink 显示屏,我喜欢它。颜色为任何项目增添了很多东西。此显示器可以显示 7 种不同的颜色。白色、黑色、红色、黄色、蓝色、绿色和橙色。它提供 600x448 像素的分辨率,屏幕刷新率约为 11 秒。由于显示器使用 E-Ink 技术,它仅在刷新其内容时消耗电量,因此如果我们不一直更新显示器,我们的功耗几乎为零。该板可实现 18μΑs 的深度睡眠电流。我喜欢它,我们可以构建可以使用电池持续数月的项目。神奇的东西。 该板还配备了一个集成了 Wi-Fi 和蓝牙连接的 ESP32 微控制器。我们还可以找到一个 SD 卡插槽,我们可以在其中存储文件和图像以在屏幕上显示。该板可以通过 USB-C 连接器进行编程和供电,并配有电池充电器和 Lipo 电池。此外,该板还配备了一个 RTC 时钟模块,用于跟踪时间并降低功耗。如您所见,该板还为我们提供了许多 gpio 引脚来连接我们的传感器和设备。该板还带有一个 3D 打印的外壳,如果您想修改它们,也可以在线获取这些文件。创客还能要求什么呢?我们想要的硬件一切都在这里。 ![]() |
第 2 步: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 库。 https://github.com/adafruit/DHT-sensor-library ![]() |
第 3 步:BMP180 传感器 BMP180 是一款低成本、低功耗的数字气压传感器,可通过 I2C 与 Arduino 通信。它通常用于测量大气压力、温度和海拔高度。凭借其高精度和宽测量范围,它是各种应用的宝贵工具,例如天气监测、无人机和其他车辆的高度跟踪以及气候数据收集。BMP180 体积小且易于集成,使其成为 Arduino 项目的热门选择。 传感器类型: 数字气压传感器 通信:协议 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 ![]() |
第 5 步:代码和库 为了编译项目,我们需要 4 个库,用于显示器的 Inkplate 库、用于 BMP180 传感器的库、用于 DHT22 传感器的库和 ArduinoJson 库,用于解析我们从互联网获得的数据。 Inkplate6 库 DHT22 文库 BMP180 文库 Arduino JSON 您可以直接从 Arduino IDE 下载所有库,因此无需访问任何网站。 该项目的软件由许多文件组成。我决定使用面向对象编程来使这个项目更易于使用。项目的每个功能都有自己的 Class。所以我们有一个检索天气预报的 Class。然后我们有一个读取传感器的类。然后我们有一个负责将数据读写到 EEPROM 存储器的 Class。我们需要的另一个类是一个保存所有历史传感器数据的类,最后是一个负责在显示屏上绘图的类。这样,如果您想使用不同的 display,则只需编写自己的 Display 类。如果您想使用不同的传感器,比如 BMP280,您只需修改传感器类。所有其他代码都可以正常工作。 您可以在此处找到代码链接:https://educ8s.tv/arduino-e-paper-weather-station/ 它是完全开源的,如果您愿意,您可以使用其他功能对其进行扩展。我很想看看您将以这段代码为起点构建什么。 该项目演示了面向对象编程 (OOP) 在创建可维护、灵活的代码方面的强大功能。如果您对这个气象站的代码如何组织成简洁的模块化类感兴趣,让我通过我的课程“OOP Made Easy”向您展示如何掌握 OOP。 您将创建更令人兴奋的东西,而不是建造气象站 - 一个活生生的数字生态系统,细胞在这里移动、交互和进化!通过这个引人入胜的项目,您最终将一劳永逸地理解 OOP,不再有像 “Cat” 和 “Dog” 类这样令人困惑的抽象示例。不用担心这门课程是用 Python 编写的 - 无论你是用 Arduino、Java、C++ 还是任何其他面向对象的语言编码,类、继承和封装等 OOP 原则的工作方式都完全相同。您将学习的概念将改变您使用任何语言进行编码的方式。在短短 3.5 小时内,您将学习如何将复杂的代码转换为美观、可维护的解决方案。想了解 OOP 如何改变您的编码技能吗? 访问 https://bit.ly/3NaMfg4 了解如何更智能地编码,而不是更难编码。 ![]() |
步骤 6:首次运行代码 在首次运行项目之前,最好先运行一次 clean_eeprom 程序。您可以在我在上一步中共享的 .zip 文件中找到代码,也可以在 github 存储库中找到代码。这个小程序会将我们将要使用的 EEPROM 存储器的值初始化为零,并将擦除之前存储在那里的任何数据。这是必需的,因为我们每次唤醒芯片时都会读取 EEPROM 存储器,如果 EEPROM 没有复位,我们将遇到问题。 现在,在项目代码中,我们需要输入 4 个值。首先,我们需要输入 WiFi 网络的 SSID 和密码,以便板子可以连接到互联网以检索天气预报。现在要检索天气预报,我们将使用 Openweathermap 免费 api。要使用它,我们必须创建一个帐户。当我们创建帐户时,我们将可以访问个人 API 密钥。我们需要在 APIKEY 变量中输入 key。我们要输入的最后一件事是我们要获取天气预报的城市的 ID。只需搜索您的城市,并记下 URL 末尾显示的 ID。您需要在此变量中输入此值。就是这样。我们的代码已准备好上传到开发板。 该设备现在显示从传感器和天气预报收集的所有数据。但是,由于缺乏历史数据,这些图表尚不可见。正确绘制图表需要 24 小时。 ![]() |
第 7 步:代码的工作原理 该项目通过每 6 分钟测量一次温度、湿度和压力读数来运行。然后,它进入深度睡眠模式,在该模式下,该器件几乎完全禁用,仅消耗 15μA 的电流。显示屏即使处于非活动状态,仍显示以前记录的读数,这是我选择它的主要原因。 由于深度睡眠模式会禁用所有设备内存以节省电量,因此存储在 RAM 中的任何数据都会丢失。因此,在进入睡眠模式之前,我将所有读数保存到设备的 EEPROM 存储器中,这是一种永久存储解决方案。唤醒后,该器件从 EEPROM 检索所有读数并更新它们。 每 10 个唤醒周期或 60 分钟,设备会获取温度、湿度和压力读数,并相应地更新图表。每 60 个唤醒周期或 360 分钟 (6 小时),设备会连接到互联网以检索天气预报。为了节省电力,此过程限制为每天四次,因为 WiFi 连接会消耗大量能源。 通过实施这些省电策略,电池寿命可以延长数月。我目前使用的是 1200mAh 电池,我会及时通知您它的使用寿命。该项目在过去 3 天里一直可靠运行,我迫不及待地想用 6 个月的时间与您分享这个项目。 ![]() |
DIY附录: 原文标题:Arduino ESP32 Color E-Paper Weather Station 原文链接:https://www.instructables.com/Ar ... er-Weather-Station/ 代码链接:https://educ8s.tv/arduino-e-paper-weather-station/ 视频教程:https://www.youtube.com/watch?v=AzechYMLUGY&feature=youtu.be 开源资料:https://www.youtube.com/watch?v=AzechYMLUGY&feature=youtu.be ![]() |
开源代码:epaper_weather_station.ino
|
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed