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

基于LoRaWAN的自动气象站

发布时间:2021-11-21
分享到:

基于LoRaWAN的自动气象站

发布时间:2021-11-21
分享到:

在嵌入式电路场景中,您发现人们构建气象站系统是很常见的。连接传感器、微控制器和 Wi-Fi 等网络协议的一种非常简单的方法是构建气象站。如今,IoT(物联网)领域发展非常迅速,并且越来越需要有关网络协议的新技术。

本项目的主要思想首先是:搭建一个使用LPWAN网络协议的自动气象站。LPWAN(低功耗广域网)网络提供了通过长距离传输创建低功耗系统的可能性。

特点:

  • 7项环境措施:温度、湿度、大气压力、紫外线辐射强度、降水量、风向和风速
  • 带有光伏板和电池的自治系统
  • LoRaWAN 基础设施(远程传输)
  • 防水

补给品

我已经把它作为构建这个项目的基本组件列表。有一些工具可以轻松构建:

  • 万用表。
  • 螺丝刀、钳子、绝缘胶带、公制植物。
  • 用于插入组件的防水盒。

软件是可选工具。我正在使用 Visual Studio Code 的 PlatformIO 扩展进行代码开发(C++ 语言)。您也可以在 Arduino IDE 上设置此代码。AutoDesk Eagle 软件用于设计电路原理图和电路板绘图。 

第 1 步:概述

LoRaWAN

让我们解释一下 LoRaWAN 网络是如何工作的:End-Device功能正在发送数据包;在这种情况下,它是一个气象站读取环境变量。该网关负责接收这个包被称为“有效载荷”,并在一个JSON格式转换这个包。网关使用 TCP/IP 协议将转换后的信息重新发送到网络服务器。然后,网络服务器能够存储此数据或发送到向用户显示所有数据流量的应用服务器。

嵌入式系统

该项目分为三个系统:传感器系统、通信系统和电力系统。传感器系统包括 MCU (ESP32) 之间的所有传感器集成。通信系统包括 LoRaWAN 收发器模块和 ESP32。LoRaWAN 网关设置也包含在通信系统中。电力系统包括光伏系统,其中包含电池、充电控制器和太阳能电池板。

第 2 步:设计

设计部分最重要的是设计,即使是您不期望的。我首先在原型板上构建了嵌入式系统。检查所有系统稳定性后,我开始设计PCB项目。

在为系统设计 PCB 之前,我首先在原型板上构建。检查传感器的运行情况并检查 ESP32 之间的 LoRaWAN 模块连接。

气象站.brd
WeatherStation_Prototype.fzz

第 3 步:集成

软硬件集成对所有系统的运行和可靠性都很重要。我首先集成了微控制器和传感器,进行了测试,然后开始了收发器模块的集成。

图表显示了我如何连接 ESP32 上的所有引脚。在连接之前检查组件数据表总是更好(您可能使用不同的模型)。

第 4 步:测试

该项目的主要目的是:降低能耗。LPWAN 协议通过低操作频率帮助完成此任务,低成本传感器由于不那么准确而有所帮助,我已经进行了一些软件修改以减少更多。

使用万用表进行功耗测试,因此我可以测量系统的总功耗并构建光伏系统。

第 5 步:编码
当您需要缩小并查看所有系统运行良好时,编码是一个艰难的步骤。我一直在使用带有 PlatformIO 扩展的 VS Code 来开发 C++ 代码。

您可以在我的Github上查看整个代码;) 我将解释已实现代码中的主要思想,但会解释注释。

解释:

  • 定义所有 ESP32 引脚、传感器设置、LoRaWAN 设置和辅助变量。
  • 插入测量时间和发送时间。
  • 在设置时,我正在设置调制解调器睡眠(关闭 WiFi 和蓝牙)。
  • LoRaWAN 参数设置为:DEVEUI、APPEUI、DEVADR、APSKEY、NWSKEY、Region(巴西)、ADR(ON)和加入模式(ABP)。
  • loop 函数读取传感器数据并通过 LoRaWAN 发送到网关。

第 6 步:光电供应
 

我已经决定 2 天充满电,这意味着如果由于任何原因太阳没有出现,系统将运行 2 天。该计划需要一些数学运算来计算您需要多少电量来为您的系统供电。

数据处理:

首先,在读取和处理数据时,您应该使用万用表或电流表测试所有组件的安培数。我有 48,24 mA。当我将此值乘以 3.3V(组件电源电压,ESP32 除外,它是 5V)时,我得到了 192.1 mW。所以,这就是我需要提供的价值。

太阳能电池板通过太阳辐射提供能量。我买了 2 块太阳能电池板,每块 2W (6V),并决定进行串联布置。因此,如果我将太阳能电池板提供的总功率乘以一天中的太阳能小时数(我猜是 5 小时),我将得到以下值:

产生的能量 = 4W x 5 小时 = 20 Wh

系统一天消耗的能量也是有价值的计算:

消耗的能量 = 192.1mW x 24 小时 = 4.61 Wh

因此,通过这两个计算,我们可以选择电池安培数:

充电容量 = (4.61Wh x 2 天) / (12V x 20%) = 3.84 Ah

然后,您可以选择所需的电池。我选择了以下项目:

  • 1x 7AH Estacionary 电池,12V。
  • 1 个充电控制器。
  • 2 x 2W 6V 太阳能电池板(串联排列)

第 7 步:组装

在测试所有系统都可以正常工作后,您可以尝试组装部分。

  • 结构/三脚架:我买了一个横幅三脚架。当你没有太多重量时它会起作用。
  • 电子元件盒:我买了一个防水的盒子,就像你在房子外面用来装断路器的盒子一样(至少我们在巴西有)。在里面你可以检查太阳能电池板的嵌入式系统、电池和充电控制器。所有传感器线都来自盒子外面。
  • 传感器放置:这是一个无聊的部分......我买了一根管子来放置几厘米长的传感器。左下角的防辐射罩和右下角的雨量计(都用一些拉链锁着)。风传感器很容易,只需用钉子放在最高处即可锁定它们。

附言。辐射防护罩经过修改,上面放了一块透明的塑料。这是用于紫外线传感器的目的。

第 8 步:网关

LoRaWAN网关是 LoRaWAN 网络上的一个实体。所述网关porpuse正在接收终端设备的数据和用于processsing发送到网络服务器。在您的设备位置寻找 LoRaWAN 本地范围非常重要,在巴西有美国塔以合理的租金提供 LoRaWAN网关。

请求的 LoRaWAN网关服务包括 5000 个上行链路、200 个下行链路和 100个向外部服务(例如 Google Firebase、The Things Network)的发送。图像显示了气象站所在的位置。

第 9 步:网络服务器

LoRaWAN 网络需要一个网关来接收数据和一个界面来显示给用户。我选择不构建 LoRaWAN 网关。我决定为我所在地区的网关使用支付租金,而不是花费金钱和更多的时间来构建一个。

ProIoT平台具有提供服务,提供5000个上行,200个下行,并有100个/月“重发”到外部服务。您可能有不同的视图/界面,但在所有 LoRaWAN 网络中,您有相同的步骤。

  • 设备 EUI:可以通过 LoRaWAN 模块找到设备扩展唯一标识符。
  • 安全激活:我选择使用 ABP,因为它的功耗更低,范围更广。(但不太安全)。您可以在此处查看 ABP 和 OTAA 之间的区别。
  • 密码学:NS。
  • 设备地址、应用程序 EUI、应用程序会话密钥、网络会话加密密钥:这些是您的凭据,应与您的 LoRaWAN 模块匹配。您必须检查这些凭据,因为如果它们不匹配,则无法连接。
  • 频率操作:检查您所在地区的频率。巴西(南美洲)使用 915 ~ 928 MHz。

设置凭据和其他选项后,您就可以测试连接。我一直在测试上行消息,因为我不需要网关确认,甚至不需要在我的 LoRaWAN 模块上接收任何东西。

监控

例如,您必须配置接收“有效载荷”。我以这样的 JSON 格式发送数据:

{“T”:“23”,“H”:“78”,“P”:“1018”,“U”:“2”,“S”:“7”,“D”:“270”,“ R": "4"}

此有效负载为每个可读变量提供一个“别名”(例如,“T”表示“温度”)。我只使用整数数字,因为使用浮点值可能会溢出有效负载容量。

ProIoT 界面包括一个“仪表板”。您可以在“主页界面​​”中包含您收到的一些变量,并且可以附加绘图、仪表、时间线。

第 10 步:应用服务器

读取公共接口中的数据非常有用,因为它可以帮助每个人获得可信赖的数据。不幸的是,在这个应用程序中,我没有将网络服务器与公共应用程序服务器集成。这些数据不是发布数据,而是存储在 ProIoT 平台上,您可以私下查看请求权限的数据,也可以尝试从这里检查数据仪表板。

第 11 步:完成

我准备在结果中展示三个步骤。

  1. 位置:正确放置气象站很重要,因为它会影响数据的准确性。矿山气象站位于建筑物顶部(至少 12 米高)和外部。确切位置是:26º55'08.5"S 49º06'23.2"W ( https://goo.gl/maps/pqnzKmH7BkNMj6yY6 )。
  2. 系统自主性:光伏系统应该 24/7 全天候运行,但有些阴天会使系统变得困难。我通过断开太阳能电池板的连接来模拟太阳能电池板上的阴影。系统在耗尽所有电池能量后继续发送数据超过50 小时。然后不幸的是,系统在仅将太阳能电池板连接到电池上后才恢复(没有嵌入式系统消耗能量)。
  3. 验证数据:气象站应该提供可信的数据。我已经向政府实体请求了一些附近气象站的气象数据。

第 12 步:验证

给定的气象变量验证来自 Defesa Civil de Blumenau - AlertaBlu。比较时间在 10/31/2021 和 11/09/2021 之间。

经验证的气象变量是:温度、湿度、大气压力和降水。在此期间,AlertaBlu 提供了 240 个包裹(每小时 1 个)。使用这个数量,可以计算出比较我的气象站的接收率。

第一张图片显示数据接收率为 69%,并且仅验证了该数据。在第二张图片中,您可以检查每个变量的相对误差和标准偏差。所有比较数据的平均相对误差为14.37%。

第 13 步:结论
这项工作真的很难思考、设计、购买正确的组件和整个集成。当然有问题,所以我会列出我在写这篇文章时没有解决的问题:

  • LoRaWAN 模块看起来不足以进行长距离传输,因为数据接收速率还可以接受。
  • 气象站上的传感器位置并不完美,这一事实导致了一些准确性的偏差。
  • 我无法在用于数据监控的公共服务器之间进行应用程序服务器集成。

我花费了更多更少的 220 美元来构建这个项目。(我认为这是第一次尝试的合理价格)。但是有一些方法可以改进这个项目:

  • 包括RTC模块,更好的控制时间可以更好地控制传输速率。
  • 最好找 LoRaWAN 模块。是的,有一个气象站可以远距离发送数据,而有一个无法实现的 LoRaWAN 模块,这是一种耻辱。
  • 开发人工智能算法来进行天气预报。

你可以在我的Github 上查看这项工作中的所有内容。我正在发表一篇文章,所以有一天它可能会有用。

以上内容来源于网络,如涉及侵权请联系删除(原作者@Lucasgb7)

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论