风筝
发表于: 2022-4-14 16:15:22 | 显示全部楼层

在本篇文章中,我们将学习如何使用Arduino Pro Mini开发板和ESP32 Wifi模块制作基于LoRa的无线气象站。您可以将气象站节点放置在屋顶或距离您家仅几公里的任何偏远位置。该气象站还可以增加BME280气压传感器与BH1750光传感器和雨量传感器等传感器。这样,这个气象站就可监测各种环境参数,如温度、湿度、压力、海拔、露点、降雨量和光强度等。


通过使用LoRa模块SX1278/RFM95,您可以在几公里距离的地方监控数据。该设备使用3.7V锂离子电池供电,功耗低。网关可以放置在房屋内的室内,也可以放置在一定的高度以实现远距离。该网关使用Lora SX1278/RFM95和ESP32 Wifi模块制成。接收方从传感器节点收集数据并将其上传到服务器。

Weather-Station.jpg


可以通过多种方式观察接收到的数据。本文将以3种方法演示如何显示数据。第一种方法是监控服务器上的数据。使用ESP32模块的本地IP,可以监控网页上的数据。在第二种方法中,您可以将数据上传到 Thingspeak服务器并以图形格式监控记录的数据。第三种方法,您可以在Blynk应用程序上在线监控数据。您可以选择任何一种方法来监测天气数据。


所需的组件

●    ESP-32S开发板

●    Arduino Pro Mini开发板

●    LoRa模块Ra-02

●    BME280气压传感器模块

●    BH1750光强度模块

●    FC-37雨量传感器模块

●    3.7V、1000mAh锂离子电池


气象站采用的传感器

BME280气压传感器模块

气压传感器(Barometric Pressure Sensor)模块BME280可以测量温度、湿度和大气压力。传感器采用I2C总线接口,工作在3.3V电源。该装置结合了高线性度和高精度传感器,非常适合低电流消耗、长期稳定性和高EMC鲁棒性。

BME280.jpg


该传感器最适合测量精度为±3%的湿度、绝对精度为±1 hPa的气压以及精度为 ±1.0°C 的温度。由于压力随高度变化而压力测量非常精准,您还可以将其用作具有±1米或更高精度的高度计!


雨量传感器

雨量传感器(Rain Sensor)用于检测湿度传感器无法检测到的水。

Rain-Sensor.jpg


雨量传感器检测覆盖在其传感器电路板的水。传感器板充当可变电阻,从潮湿时的100k欧姆变为燥时的2M 欧姆。简而言之,电路板越湿,传导的电流就越多。


BH1750环境光传感器

BH1750光强度传感器(Ambient Light Sensor)是一款具有I2C总线接口的数字环境光传感器。该传感器最适合获取环境光数据。该传感器可以准确测量高达65535的LUX 值。它消耗非常低的电流并使用光电二极管来感应光。

BH1750.jpg


传感器工作在3.3V上,使用其I2C引脚,您可以轻松地将其与任何微控制器连接。


除了所有这些传感器,您还可以将风速计传感器添加到该项目中。风速计测量风速并告知您有关空气移动速度的状况。


LoRa气象站节点和网关电路

无线气象站需要发送器和接收器电路进行无线通信。因此发送器电路称为传感器节点,接收器电路称为网关。


传感器节点电路

我们需要选择一个低功耗的Arduino开发板,Arduino Pro Mini开发板工作在3.3V,使用8M主频。我们可以使用Ai-Thinker的LoRa模块SX1278。BH1750和BME280传感器适用于I2C协议。LoRa模块SX1278采用SPI协议。该设备由3.7V锂离子电池供电,并连接到Pro Mini的RAW引脚。

Lora-Arduino-Based-Weather-Station.jpg


雨量传感器、BH1750环境光传感器、BME280气压传感器和LoRa模块连接到Arduino Pro Mini开发板的3.3V。您可以使用TP4056电池充电模块为电池充电。除此之外,添加太阳能电池板并在电路中收集太阳能也是不错的选择。

Wireless-Weather-Station.jpg


在面包板上组装电路,也可以为此项目设计定制PCB。除了雨量传感器需要放在外面监测降雨量之外,所有的传感器都可以放在一个小的防水盒里。传感器节点以非常小的功耗运行,将设备置​​于睡眠模式将延长电池寿命。此外,去除不必要的稳压器并使用低压差LDO或降压转换器IC可以进一步降低功耗。


LoRa模块的工作频率为433Mhz,但您可以根据您所在的地区选择868MHz或915MHz频率。根据您所在地区的可用性,您可以使用具有不同天线的其他Lora模块。


Wifi网关电路

在网关方面,我们只使用了LoRa模块SX1278和ESP32 Wifi模块。LoRa通过SPI引脚连接到ESP32开发板。本机通过USB电缆供电。

ESP32-Lora-Gateway.jpg


网关单元可以放置在靠近WiFi网络的地方。ESP32 Wifi模块连接到本地wifi网络。LoRa从传感器节点接收数据。使用esp32 wifi模块将数据上传到服务器。

ESP32-Lora.jpg


在Arduino IDE上安装库

在开始编程部分之前,您需要将库安装到Arduino IDE。以下是代码中使用的库列表。

1.  LoRa库:LoRa库用于使用LoRa无线发送和接收数据。该库直接公开LoRa无线电,并允许您使用相同的无线电参数将数据发送到范围内的任何无线电。所有数据都是广播的,没有寻址。

2.  BME280库:Adafruit的BME280库与Arduino建立I2C连接,并从传感器读取温度、湿度和压力值。

3.  BH1750库:该软件包包含一个Arduino 库,用于基于BH1750FVI的数字光传感器分线板。必须在用户代码中配置I2C总线有助于Arduino和传感器之间的通信。

4.  Blynk库:Blynk是最流行的物联网平台,用于将任何硬件连接到云,设计应用程序来控制它们,并大规模管理您部署的产品。使用Blynk库,您可以将400多种硬件模型(包括 ESP8266、ESP32、NodeMCU 和 Arduino)连接到Blynk云。


传感器节点的代码

LoRa气象站传感器节点的代码如下所示。您可以复制代码并将其上传到Arduino Pro Mini开发板。如果您使用多个传感器节点,请确保在代码中更改设备ID。 sensor node.rar (1.06 KB, 下载次数: 35)


网关代码:WebServer

以下是ESP32开发板的网关代码。 使用此代码,您可以在Web浏览器上查看气象站数据。ESP32网络服务器会创建一个网页,记录所有与气象站相关的数据。 web server.rar (1.65 KB, 下载次数: 31)


现在您可以将代码上传到ESP32开发板。上传代码后,打开发射器和接收器部分的串口监视器。如果每个连接都正确,则发送方将初始化并开始发送数据。在接收方,接收方将连接到网络并打印IP地址。

weather-serial.jpg


复制IP地址并将其粘贴到网页浏览器上。您可以在计算机或智能手机的Chrome浏览器粘贴该网址并按Enter键。

LoRa-Waeather-Station-WebServer.jpg


浏览器中将显示气象站数据。您可以重新加载页面刷新天气数据。或者在代码中使用AJAX函数,然后可以无需重新加载页面就能刷新数据。


网关代码:Thingspeak服务器

现在让我们在Thingspeak服务器上监控LoRa气象站数据。为此,请在Thingspeak服务器上创建一个帐户。然后使用以下详细信息创建一个新通道,例如温度、湿度、压力、海拔、露点温度、降雨量和光照强度。

Thingspeak-Setup.jpg


然后转到API Key并复制Write API Key。在下面的代码中更改API密钥、WiFi SSID和密码。 thinspeak.rar (1.39 KB, 下载次数: 20)


代码上传后,再次打开串口监视器。 如果您看到数据发送和接收,则意味着您的节点和网关都工作正常。

thinspeak-serial.jpg


现在转到Thingspeak Private视图。 在这里,您将看到以图形格式记录的数据。

thinspeak-Graph.jpg


网关代码:Blynk应用程序

该代码是使用Blynk应用程序监控无线气象站的数据。ESP32 LoRa网关的数据将被记录到Blynk云服务器。


在以下代码中更改由您的Blynk应用程序生成的Blynk身份验证令牌。还要更改WiFi SSID和密码。 Blynk.rar (1.18 KB, 下载次数: 17)


代码上传后,ESP32将连接到Blynk服务器。 现在您可以在手机上查看Blynk应用程序。 手机将接收无线LoRa气象站的数据。

Blynk-Weather-Station-Lora.jpg


以上就是基于LoRa的无线气象站监测系统,如果有任何疑问,请随时在本帖下面回复。


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-21 23:54 , Processed in 0.054377 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表