自制气象站与ESP32

63180年

689

57

介绍:用ESP32自制气象站

关于:DIY电子产品,Arduino和ESP32项目,家庭自动化和更多!你可以在YouTube (Giovanni aggiustatute to)和Instagram (@ giovanniaggiustatute to)上找到我。

你好!今天我们来看看我建的这个智能气象站。我建造的气象站测量温度、湿度、气压、风速和风向,以及降雨量。所有的数据都是通过一个ESP32收集的,这是一种Arduino,通过wifi发送到移动应用程序。在应用程序上,或者在网页上,我们可以看到来自气象站的实时数据和图表,例如温度,每天的最低和最高,以及压力图,我们可以用它来做一个粗略的天气预报。如果这听起来很难,不要担心,在这个指南中你可以找到所有的信息。


要了解更多关于建设的细节,请观看YouTube上的视频(它在意大利但它确实存在英文字幕).

供应

要建造气象站,我们需要:

  • 带外置wifi天线的ESP32板
  • 微型usb数据线
  • 装电子产品的塑料盒子
  • DHT22温湿度传感器
  • BMP180压力传感器
  • 各种电线电缆
  • 3D打印机白丝
  • 5v到3,3v电平转换器
  • 6个霍尔效应传感器
  • perfboard
  • M4和M5螺纹杆
  • M4、M5螺栓、螺母

还有很多我忘了加到清单上的东西!

工具:

  • 3 d打印机
  • 烙铁
  • 热熔胶
  • 电脑

此外,将项目连接到您需要的应用程序家助理在树莓派或电脑上运行。如果你没有家庭助手,你可以连接气象站Blynk,但是你需要为它写代码。如果您为Blynk编写代码,如果您愿意,您可以将其共享给其他人使用。

步骤1:温度传感器

为了测量温度和湿度,我将使用DHT22传感器。我将传感器焊接到一个perfboard上,在3,3v和信号引脚之间有一个连接器和一个上拉电阻。我把传感器放在了史蒂文森屏幕里。史蒂文森屏幕保护传感器免受阳光和雨水的直射,同时允许空气通过。通过避免太阳加热传感器,它可以获得更准确的温度读数。为了建造它,我用3D打印出了所有的部件,并用两根螺纹杆将它们连接在一起。我粘在史蒂文森屏幕内的传感器的perfboard,下面我把支架,将保持传感器。

在这里你可以找到史蒂文森屏幕的所有3d打印文件。

史蒂文森屏幕3

第二步:风向标

然后我们有风向标,它可以检测风是从哪个方向来的。我还用3D打印机制作了一些零件。风向标在后面有一个箭头形状的部件,前端在前面,内部有一个螺栓作为重量来平衡它。这面旗帜可以通过我放在底座上的滚珠轴承自由旋转。为了探测风的四个基点(北、东、南、西),我将使用4个霍尔效应传感器,这是一种当磁铁靠近时被激活的磁传感器。

我的想法是把霍尔传感器如第二张照片所示,与磁铁旋转和激活传感器的基点旗帜转向。对于中间点,例如东北,两个相应的传感器(北方和东部)将被激活。我已经把磁传感器放在这里的风向标的基础上,提高约1厘米,以使他们远离金属螺栓,可以吸引磁铁。在上面的部分,那是自由旋转,我粘了磁铁。这个部件还有保护传感器不被雨水淋湿的功能。我插入实际的风向标到螺纹杆,并确保它与自锁螺母。每个霍尔传感器都有3根电线,连接到它们原来的板上,上面有一个小LED,这对查看传感器是否正常工作很有用。我把这四块木板焊接到一块刨花板上。从那里,我用一根旧网线将gnd和5v连接到传感器,并将四个信号引脚连接到主板,我们将在后面看到。我把四个传感器板放在这个3d打印的盒子里,在上面放一块亚克力。

在这里你可以找到所有3d打印文件。

风标

第三步:风速测量

现在风速计来了。我在去年的一个视频里讲过这个,你们可以找到在这里.我还用3D打印机制作了风速表,下面你可以找到STL文件。风速计由底座和旋转部分组成。旋转部分,杯子和中心件分别打印,用3颗螺钉组装。在风速表内部,底座上有一个磁霍尔传感器,旋转部分上有一块磁铁。传感器每转一圈就发出一个脉冲。从每分钟转数我们可以计算出风速,但目前我不知道每分钟转数乘以什么数才能得到km/h。如果有人知道如何计算它,请在下面的评论中写下这些计算。根据我在网上找到的,一个粗略的(可能是错误的)估计是将rpm乘以0,18。

风速计

4 .雨量计

最后,还有雨量计。我在之前的教程,所以你可以在那里找到所有的细节,包括3D打印文件。然而,这也使用了一个磁传感器,传感器状态的每一次变化都意味着一定数量的水通过了。雨量是以毫米为单位的高度。

5 .铝框架

为了使它更容易安装气象站在它的最终搭配,我将把各种传感器放在一个单一的结构。为了制作它,我使用了矩形铝型材。我把雨量计放在中间,把风速计和风向标放在两边。为了支撑所有的东西,我又切了两块铝型材。在它们的一边,我挖了一个漂亮的大洞,这样我就可以固定它们,而不用让下面的螺栓伸出来。在把所有东西连接在一起之后,这就是结果。这一步是可选的,因为如果你想,你可以将单个传感器安装在你已有的结构上,例如屋顶的一侧。

步骤6:电子和压力传感器

但是现在我们有了所有的电子设备,它们都在这个接线盒里。为了使连接更容易,我买了这个板,在终端上带有ESP32引脚。我不知道为什么,但我的ESP32不适合这个板。所以我必须制作适配器与一个perfboard移动引脚。我把ESP32固定在盒子里,在盒子的下面我放了WiFi连接的天线。

我差点忘了大气压力传感器,也就是BMP180。我把它放在盒子里,为了让空气通过,我在下面画了个格子。该传感器通过i2c通信,因此除了3,3v和GND外,还需要两根电线连接到ESP32。

现在所有的传感器都带着电线进来了。温度传感器只有一根信号线,它直接连接到一个ESP32的引脚。问题出在风速计、雨量计和风向标的霍尔传感器上,它们的工作电压为5v,而ESP32的工作电压为3.3v。因此,为了将信号从5v转换到3.3v,我将使用一些电平转换器,就像这些。为了让所有东西都更整齐,我把它们焊接在了perfboard上。为了使板和ESP32之间的连接,我使用了JST连接器,它比经典的跳线更牢固。最后,我将gnd, 5v和3.3v的导线连接在一起,并用扎带将导线整理好。

上面你可以找到所有传感器的电气连接示意图。

第七步:家庭助理

气象站将连接到家庭助手,这是一种本地服务器,用于控制我们家里的各种家庭自动化设备。家庭助手可以在树莓派或虚拟机上运行,就像我一样。为了将气象站连接到家庭助手,我将使用ESPhome,它允许您将ESP32连接到家庭助手。一切设置好后,我可以从网页或应用程序上实时看到气象站的数据。此外,数据会被记录下来,我还可以看到长期趋势的图表。

循序渐进:

  • 在树莓或虚拟机上安装家庭助手,如果你还没有这样做(网上有很多针对不同系统的教程)。
  • 从官方插件商店安装ESPhome
  • 在ESPhome中添加新设备,选择“ESP32”
  • 在ESPhome代码空间中,粘贴以下代码使用ESPhome提供的wifi,并在需要的地方插入wifi ssid和密码
i2c: sda: 21 scl: 22 scan: true id: bus_a sensor: - platform: dht pin: 4 temperature: name: "Temperatura esterna" humidity: name: "Umidità esterna" update_interval: 10s - platform: pulse_counter pin: 23 count_mode: rising_edge: INCREMENT falling_edge: INCREMENT unit_of_measurement: 'mm' name: 'Pioggia istanea ' filters: - multiply: 0.173 total: unit_of_measurement: 'mm' name: 'Pioggia' accuracy_decimals: 3 filters: - multiply: 0.173 update_interval: 5s - platform: bmp085 temperature: name:" tempatura centralina" pressure: name: "Pressione esterna" update_interval: 10s - platform: pulse_counter pin: 19 unit_of_measurement: 'Km/h' name: 'Velocità del vento' filters: - multiply: 0.18 update_interval: 5s - platform: uptime name: uptime binary_sensor: - platform: gpio pin: 33 name: " vento direzione NORD" - platform: gpio pin: 25 name: " vento direzione OVEST" - platform: gpio pin: 26 name: " vento direzione SUD" - platform: gpio pin: 27 name: " vento direzione EST"


  • 单击安装并打开连接电脑,用micro usb数据线将ESP32与计算机连接
  • 请按照屏幕上的说明在ESP32上安装代码

步骤8:风向标配置

风向标分别以二进制传感器(开或关)的形式给出四个传感器的状态。要将这四个值转换为更易于读取的格式(例如。西南)我们必须在家庭助手中创建一个自定义传感器。有一些代码,但它是非常容易。

  • 要创建自定义传感器,我们必须编辑configuration.yaml事业中
  • 为此,我们需要安装文件编辑器插件或类似的东西
  • 将下面的代码粘贴到下面传感器:
sensor:—platform: template sensors: direzione_vento: friendly_name: Wind direction value_template:> - - - - - -{%如果各州(binary_sensor.vento_direzione_ovest) = =‘off’和州(binary_sensor.vento_direzione_nord) = =‘off’%}西北{% elif州(binary_sensor.vento_direzione_est) = =‘off’和州(binary_sensor.vento_direzione_nord) = =‘off’%}东北{% elif州(binary_sensor.vento_direzione_ovest) = =‘off’和州(binary_sensor.vento_direzione_sud) = =‘off’%}{% elif州西南部(binary_sensor.vento_direzione_est) = =‘了’states('binary_sensor.vento_direzione_sud') == 'off' %}东南{% elif states('binary_sensor.vento_direzione_nord') == 'off' %}北{% elif states('binary_sensor.vento_direzione_est') == 'off' %}东{% elif states('binary_sensor.vento_direzione_sud') == 'off' %}南{% elif states('binary_sensor.vento_direzione_ovest') == 'off' %}西{% endif %}
  • 然后,检查配置,如果有效,重新启动Home Assistant。

步骤9:雨量计配置

雨量计通过ESPhome发送总雨量,每一步都在增加。如果ESP32重新启动,则该值为0。因此,要有一个只能增加并在经过一定时间后重置的值,我们可以使用实用程序计,由家居助理提供。这样我们就可以在仪表板上显示当天的总降雨量等等。

  • 转到设备,再转到助手
  • 创建一个新的hepler并选择utility meter
  • 选择雨量计实体并插入计数器的名称
  • 选择每隔多长时间重置计数器(例如24小时或1个月)

为您想要显示的降雨量的每个时间间隔创建其他计数器。

步骤10:仪表盘

一旦气象站最终上线,我们就可以创建自定义仪表板来显示传感器读数和图表。对于图表,我建议使用迷你图形卡集成,它可以通过家庭助理社区商店安装。在顶部你可以找到我的仪表盘的截图,如果你想要得到你的仪表盘的想法。下面我上传了我的仪表板的代码文件,如果你想通过文本编辑器编辑它。

要记录数据,可以在Home Assistant中配置一个数据库(记录器集成)。我没有发布如何配置它的细节,因为我还在学习很多关于家庭助手的知识,而且我还没有完成它的配置。

要查看智能手机上的数据,你可以下载Home Assistant应用程序。要从本地网络外连接,我使用的是naabu Casa Cloud,这是最简单的解决方案,但它不是免费的。还有其他的解决方案,但它们并不完全安全。

第11步:完成!

这个项目完成了,我希望你会觉得有趣。当然,你也可以制造一些传感器,而不是全部。如果你有任何问题,请在评论区留言。如果你想了解更多细节,请查看你可以在顶部找到的视频在这里.它是意大利语的,但别担心,它也有英文字幕。非常感谢阅读我的指南,再见!

1人做这个项目!

建议

  • 金属比赛

    金属比赛
  • 大米和谷物挑战赛

    大米和谷物挑战赛
  • 灯的挑战

    灯的挑战

57岁的评论

非常有洞察力的帖子!
对3D打印机的型号/技术和材料有什么建议吗?

0
LarryF29

2小时前回复

Creality 3d

1
2020年trebor

问题6日前步骤1

当构建风向标时,我注意到您正在使用3D打印支持每个霍尔效应传感器,从文本,我假设是1厘米高。此外,我注意到有一个3D打印的“间隔”放在螺纹杆。这个间隔的长度是多少?
如果STL文件可以用于这些部分,那就很方便了,但尺寸才是真正需要的。谢谢分享你的工作。

0

问题11天前

我试图使用下面重置总雨的计数,我有点迷失与家庭助理编码和什么替换使这个工作。无论我做什么,我都会得到一个如下sensor。integration。reset的错误,有人能给出建议吗?



按钮:
平台:模板
名称:集成重置
on_press:
然后:
-sensor.integration.reset: my_integration_sensor

0
Arnov沙玛

17天前

Nice Instructables配对

0
profegealfonso

17天前

你好,构建所有的3d组件,并开始输入程序的部分。一、温度传感器(工作正常)
几秒钟,风速计和雨量计,都很好用。
第三,风向标,我在软件上遇到了一个问题,当我加载二进制传感器,加载esp时,它不再连接到网络,并抛出了一个错误
不能连接到ESPHome API用于meteo.local:连接到('192.168.100.26',6053)时超时"
警告初始连接失败。ESP可能没有连接到WiFi
任何想法?你能帮我吗?谢谢你!

好项目!谢谢分享。我已经开始收集部分建立这个项目:>)

0
MaxM84

问题6周前

Bellissimo progetto era da mesi che ne cercavo uno di questo generere autocostruito:D w l’italia…这是另一件事è可能是我们的印章和印章。谢谢

0
乔凡尼Aggiustatutto

26天前的回复

谢谢!我们有一个坚定的决心,一个坚定的决心,一个伟大的问题,我的想法più精确。L'unica cosa è che la resina deve re bene ai raggi uv。

0
MaxM84

26天前的回复

他考虑的是在resina dopo il lavaggio的一个后的sotto lamade UV x l' indurento…

0
UmbertoG

6周前

药膏:-)
Bellissimo lavoro davvero。
Unico appunto è perché tu non abbia usato un BME280 al posto dell'accoppiata BMP180-DHT22。Avresti avuto tutto su bus I2C a vantaggio della semplicità di costruzione e di scrittura del software。
好,我爱你,我爱你,我爱你。

0
乔凡尼Aggiustatutto

26天前的回复

我很高兴,我很高兴,我很高兴。阿谀谄媚因为切ho messo si romperà metterò quello。祝你好运!

0

4周前

我无意中发现了你的项目。不错的工作!

0

问题4星期前步骤5

你什么时候要加一个“车间之旅”?看来你准备得很好啊!o);

0
乔凡尼Aggiustatutto

26天前的回复

出版一个工作坊之旅是个好主意!谢谢!我在我的youtube频道上做了一个工作坊之旅,但那是两年前的事了,很多东西都变了。

0
Kedryn73

6周前

真的很好,但是DHT22将持续1-3个月(至少,湿度部分)在我住的地方(离大海2公里),然后它将永远处于100%的湿度。

我仍然需要找到一个足够强的温度/嗡嗡声传感器在我的房子外面(很少低于0,最高40,但很多湿度和咸味)