亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」

本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于 ESP32 的物联网气象站

发布时间:2022-02-02
分享到:

基于 ESP32 的物联网气象站

发布时间:2022-02-02
分享到:

大家好,在这个教程中,我将向您展示如何使用非常著名的 ESP32 和 3 个传感器制作气象站,这些传感器可以测量和显示实时值,包括:

  • 温度
  • 湿度
  • 气压
  • 紫外线指数
  • 红外线辐射
  • 可见光

参数以实时值和图表的形式显示在 Blynk IoT 平台的 Web 仪表板和电话应用程序上。

这可能是开始使用物联网的好项目。硬件和连接部分很容易。代码和设置部分有点长,所以请仔细阅读说明直到最后,以确保一切正常。

您还可以在下方观看此项目的完整演示视频。

演示视频

  补给品

  • ESP32 开发板
  • DHT11/21/22温湿度传感器
  • SI1145 阳光传感器
  • BMP180 气压传感器
  • 穿孔板或面包板(用于连接)
  • 公对母跳线
  • Grove 连接器电缆(仅当您使用 Grove 传感器时)
  • 微型 USB 数据线

  第 1 步:连接

首先,我们首先将所有传感器连接到 ESP32。我已附上接线图图像,以便您查看。您也可以下载下面的 pdf 文件。由于我使用的是 Grove 传感器,我首先将 Grove 电缆连接到所有传感器,并使用公对母跳线进一步将它们连接到 ESP32。

您可以使用电路板放置 ESP32,也可以焊接一个非常简单的屏蔽,就像我在 ESP32 上的每个引脚上并联连接公头所做的那样。我为 Vin、Gnd、D21 和 D22 等引脚添加了一些额外的公头,因为这些引脚使用最多。

尽管连接非常简单,但我将它们写在下面以便于理解。温度和湿度传感器仅使用一个数字引脚进行通信(将连接到引脚 D5),而其他两个传感器使用 I2C 通信,因此它们都将连接到 ESP32 上的 D21(SDA)和 D22(SCL)引脚.

DHT 温度和湿度传感器的连接:

  • Vcc(红色)→ ESP32 上的 Vin
  • 接地(黑色)→ ESP32上的接地
  • NC(白色)→ 未连接
  • SIG(黄色)→ ESP32 上的D5

BMP180 气压传感器的连接:

  • Vcc(红色)→ ESP32 上的 Vin
  • 接地(黑色)→ ESP32上的接地
  • SDA(白色)→ ESP32 上的 D21
  • SCL(黄色)→ ESP32 上的D22

SI1145 阳光传感器的连接:

  • Vcc(红色)→ ESP32 上的 Vin
  • 接地(黑色)→ ESP32上的接地
  • SDA(白色)→ ESP32 上的 D21
  • SCL(黄色)→ ESP32 上的D22

示意图 - ESP32 气象站.pdf

第 2 步:清理布线

完成连接后,我将所有传感器和 ESP32 用一些双面胶带放在一块硬板上,然后用胶带清理布线,使它看起来很整洁。

第 3 步:代码

从下面下载此项目的代码并在您的 Arduino IDE 中打开它。

Code_ESP32_Weather_Station.ino

第 4 步:在 Arduino IDE 上设置 ESP32

如果您是第一次使用 ESP32,则默认情况下不会在 Arduino IDE 上添加它。所以为了让它与 Arduino IDE 兼容,我们需要先将它添加到 IDE 中。如果您之前已经将 ESP32 与 Arduino IDE 一起使用,则可以跳过此步骤。

首先去官方的Espressif 文档并复制稳定的发布链接。我在下面提到了它,所以你也可以从这里复制

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

现在在您的 Arduino IDE 上:

  • 转到文件 > 首选项
  • 在“其他董事会经理 URL”下粘贴上面复制的链接
  • 如果已经提到了其他链接,请用逗号分隔此链接和其他链接
  • 点击确定
  • 现在转到工具>董事会>董事会经理
  • 在搜索栏下,输入ESP32并回车
  • 您将看到Espressif Systems 的 ESP32
  • 点击它下面 的安装
  • 点击关闭

现在,如果您转到 Tools > Board,您现在将能够看到添加的所有 ESP32 变体。

第 5 步:安装所需的库

为了使我们的代码正常工作,我们必须安装必要的库。

现在去 Sketch > Include Library > Manage Libraries

在搜索栏中输入“Blynk”并安装Volodymyr Shymanskyy的Blynk 库

同样下载以下库:

  • Adafruit的DHT 传感器库
  • Seeed Studio的Grove 气压计传感器
  • Seeed Studio的Grove 阳光传感器

第 6 步:创建 Blynk 帐户

转到blynk.io并创建一个新帐户或直接登录已有账户。

第 7 步:创建新模板

完成登录后,它会显示“首先创建您的第一个模板”,因此单击“新建模板”。

  • 在名称下,您可以输入任何内容。我将其命名为“气象站”
  • 在“硬件”下选择ESP32
  • 在“连接类型”下选择WiFi
  • 如果需要,您还可以添加描述
  • 点击“完成”
  • 现在您将看到提供的唯一模板 ID 和名称

第 8 步:创建数据流

要从 ESP32 接收 Blynk 上的数据,您必须创建数据流。

  • 首先转到“数据流”
  • 在“新数据流”下选择“虚拟引脚”
  • 第一个数据流被命名为“温度”
  • 在引脚下选择“V0”
  • 数据类型将是“双”,因为我们收到带小数位的准确值
  • 单位为摄氏度 (°C)
  • “最小值”可以保持为0,“最大值”可以保持为100
  • 在“小数”下选择“#.##”,因为我们希望我们的值最多保留 2 个小数位
  • 默认值可以保持为0
  • 点击“创建”

现在同样我们需要添加5 个其他数据流:

湿度:

  • 引脚 - V1
  • 数据类型 - 双
  • 单位 - 百分比 (%)
  • 最小值 - 0
  • 最大值 - 100
  • 小数点 - #。##
  • 默认值 - 0

压力:

  • 引脚 - V2
  • 数据类型 - 双
  • 单位 - 无(因为毫巴不可用)
  • 最小值 - 0
  • 最大值 - 2000
  • 小数点 - #。##
  • 默认值 - 0

可见光:

  • 引脚 - V3
  • 数据类型 - 双
  • 单位 - 无
  • 最小值 - 0
  • 最大值 - 300
  • 小数点 - #。##
  • 默认值 - 0

红外辐射:

  • 引脚 - V4
  • 数据类型 - 双
  • 单位 - 无
  • 最小值 - 0
  • 最大值 - 300
  • 小数点 - #。##
  • 默认值 - 0

紫外线指数:

  • 引脚 - V5
  • 数据类型 - 双
  • 单位 - 无
  • 最小值 - 0
  • 最大值 - 300
  • 小数点 - #。##
  • 默认值 - 0

添加所有这些数据流后,单击保存。

第 9 步:配置 Web 仪表板:添加标签

Web Dashboard 是显示所有数据的地方。我们可以将许多类型的小部件添加到 Web Dashboard - 一些用于显示数据,一些用于提供信号

  • 首先我们必须放置一个标签
  • 将其拖放到仪表板上
  • 你甚至可以调整它的大小
  • 现在为每个值再放置 5 个标签小部件
  • 要配置小部件,请单击其上的齿轮图标
  • 第一个将被命名为温度
  • 然后选择数据流(从中获取并显示数据)作为温度(V0)
  • 您可以探索其他几个选项
  • 您可以设置标签颜色并根据值进行更改
  • 您可以选择“显示级别”,它将在标签旁边显示温度级别
  • 完成后点击保存
  • 现在对其他 5 个标签重复相同的过程
  • 只需为相应的标签选择正确的数据流

第 10 步:配置 Web 仪表板:添加图表

现在我们已经完成了标签,我们可以添加图表来查看过去的数据。

  • 拖放图表小部件
  • 在免费版 Blynk 中,我们无法在同一张图表上显示 2 个不同的数据流,因此我们需要为所有值添加 6 个不同的图表
  • 配置图表也类似,
  • 只需选择正确的数据流
  • 选择图表颜色
  • 选择图表类型,例如线条、面积、柱形或阶梯线
  • 如果需要 ,打开“显示 Y 轴”和“自动缩放”
  • 点击保存
  • 对所有其他图表重复相同的操作

现在我们的 Web Dashboard 已经完成,我们可以点击 Save。

请记住,它现在显示的值将是完全随机的。这只是为了显示一些示例数据。

第 11 步:创建新设备

配置模板后,现在我们将添加我们的设备。操作步骤:

  • 首先转到左侧的 “搜索”
  • 点击“新设备”
  • 选择“从模板”
  • 选择我们创建的模板(在我的例子中是气象站)
  • 设备名称可以根据您的选择保留(我保持与模板名称相同)
  • 点击创建
  • 现在我们的设备已经创建,但它会显示离线,因为它仍然没有连接

第 12 步:将凭证复制到代码中

创建设备后,您将在页面右上角看到一些凭据。这些是:

  • 模板编号
  • 设备名称
  • 身份验证令牌

将它们一一复制,并在各自位置的代码中替换它们。

  • 在#define BLYNK_TEMPLATE_ID之后,在“”下添加您的模板 ID
  • 在#define BLYNK_DEVICE_NAME之后,在“”下添加您的设备名称
  • 下char auth[] = " "; 在“”下添加您的身份验证令牌
  • 下char ssid[] = " "; 在“”下添加您的 WiFi 名称 (SSID)
  • 下char pass[] = " "; 在“”下添加您的 WiFi 密码

第 13 步:设置 DHT 传感器类型
 

可能需要在代码中再做一点小改动。如果您使用的是 DHT11 或 DHT21 温度和湿度传感器而不是 DHT22(默认设置),请取消注释相应的行。

例如,如果您使用的是DHT11:

#define DHTTYPE DHT11
// #define DHTTYPE DHT22
// #define DHTTYPE DHT21

如果您使用的是DHT21:

// #define DHTTYPE DHT11
// #define DHTTYPE DHT22
#define DHTTYPE DHT21

如果您使用的是DHT22,请不要进行任何更改!

第 14 步:将代码上传到 ESP32

使用 Micro-USB 电缆将 ESP32 连接到 PC。在工具中选择正确的板子和 com 端口。板取决于您使用的是什么型号的 ESP32,比如我的是 ESP32 开发套件。

最后,点击上传。

一旦显示“正在连接...”,请按住ESP32 上的启动按钮几秒钟然后松开。它应该就可以成功上传了。

第 15 步:测试和故障排除

上传完成后:

  • 打开串行监视器
  • 将波特率设置为115200
  • 按下ESP32 上的 重置按钮
  • 如果已成功连接到 WiFi,您应该会看到串行监视器上显示 Blynk 徽标
  • 如果未连接,请检查您是否在代码中正确输入了 WiFi 凭据以及 Auth Token、设备名称和模板 ID
  • 现在回到 Blynk 仪表板
  • 您应该可以在线看到您的设备并且正确显示值
  • 如果某些值未正确显示,请首先编辑仪表板并检查您是否选择了正确的数据流
  • 如果仍然无法正常工作,请检查传感器连接并重新连接。
  • 为确保所有传感器都正常工作,您可以首先上传每个传感器的示例草图,以在串行监视器上显示值并逐个检查它们

你可以看看上面的图片。就我而言,一切都像魅力一样运作。我什至让设备打开了几个小时,它没有任何连接问题。我附上了过去一小时和过去 ​​6 小时的图表数据的一些图片。

为了证明它确实有效,我将空气吹到温度和湿度传感器上。由于我们呼出的空气比周围的空气潮湿且温暖,因此您可以在其中一张图片中看到值的峰值。该图表还显示了温度和湿度的突然增加以及压力的一些下降,因为温度和压力成反比。

第 16 步:设置移动仪表板

在这里,我将解释如何将气象站连接到手机。这是完全可选的。

  • 首先从 Play Store/App Store 下载 Blynk IoT 应用程序
  • 使用您之前使用的相同凭据登录
  • 我们的设备将默认添加,因为它与网络同步,但我们仍然需要设置移动仪表板
  • 这几乎类似于设置 Web 仪表板
  • 如果您单击小部件框上屏幕的右上角,您将看到所有可用的小部件以及一些新的小部件,以及网络仪表板中不存在的一些小部件
  • 我们对标签值感兴趣,因此选择它,将其放在仪表板上并根据需要调整大小
  • 现在再放 5 个
  • 单击标签进行配置,并遵循与 Web Dashboard 相同的过程
  • 在这里您可以在显示的值之前和之后添加文本,因此我在值之后添加了相应的单位
  • 如果需要,您还可以添加超级图表
  • 同样,对于免费版本,您只能在图表中显示一个数据流
  • 您甚至可以编辑过去数据的范围,例如 15 分钟、30 分钟、1 小时等。

第 17 步:测试移动仪表板

如果您的设备已打开并且您已正确完成所有操作,您将看到显示的所有值。该应用程序有一些错误,例如它会自动删除小部件名称和数据流,因此请继续检查。该应用程序在黑暗模式下也能正常运行。

第 18 步:结论

了解工作原理后,您可以尝试在此项目中添加更多传感器(例如风速传感器、雨量传感器等)。这并不难。你只需要更多的虚拟别针,你将不得不添加更多的标签和图表。您还可以添加 LCD 显示屏以在设备本身上显示数据。如果您购买高级版 Blynk,数据也可以存储在云端。

如果您有任何疑问,可以在下面发表评论或给我发送电子邮件:saiyamagr@gmail.com

以上内容翻译自网络,原作者Saiyam,如涉及侵权,请联系删除。

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论