风筝
发表于: 2022-4-6 17:45:31 | 显示全部楼层

在本篇文章中,我们将使用GSM模块和Arduino开发板构建一个基于MQTT协议的风力气象站。风力气象站是主要用于测量野外风速的设备。冲浪、滑翔伞、风筝、热气球等户外活动越来越受到人们的关注。这些活动或多或少受到风速的影响。这就是为什么有必要建立一个风力气象站。气象站不仅可以测量风速,还可以测量周围的温度、湿度、大气压力、紫外线指数、PM2.5值等。风力气象站可以放置在野外测量风速。


因此,在本文中,我们将介绍GSM风力气象站套件的功能及其组件。向套件上传基本代码后,在OLED显示屏上读取气象站数据。我们还将制作一个基于MQTT的风力气象站,并在MQTT Dashboard上监控数据。Mosquitto是一个免费的开源MQTT代理,可用于此应用程序。


风力气象站硬件

要购买此气象站套件,您可以查看的Makerfabs的商品链接。开发板将花费大约45.80美元。如果需要另外的PM2.5传感器,价格为50.70美元。

Wind-Weather-Station-Overview.jpg

风力气象站测量室外湿度、温度、气压、风速,并将结果远程传输到服务器进行实时检查。以下是用于连接风速计和PM2.5传感器的外部端口。您可以连接太阳能电池板为锂离子电池充电。

IP-OP-Interface.jpg


在另一侧,有用于连接I2C或模拟传感器的引脚。有一个滑动开关可以打开/关闭设备。


该套件还包括一个具有NPN输出的杯型风速计传感器。它可以检测到微小的空气瞬间并测量风速。该风速计是基于GSM的风力气象站的重要组成部分。

Anemometer.jpg


与模拟输出的风速计不同,这种风速计输出脉冲更准确地反映了风速。此外,这款风速计完全防水,安装设计稳定,适合户外应用。它还有一个4针军用型插头,可与连接器或扩展电缆连接。在电缆的另一端,有一个3针连接器,非常适合气象站盒。


您可以将盒子与风速计一起放置在房屋顶部或室外要测量天气参数的地方。


内部电路和PCB

打开盒子后,就可以看到该系统的PCB电路板和结构。里面有一块PCB板,几根天线和一块电池。电池是3.7V、1800mAh容量的锂离子电池。GPS和GSM天线通过UFL连接器连接到电路板。还有一个2针可拆卸电池连接器。

GSM-Weather-Station-PCB.jpg


PCB有一个A9G GSM+GPRS+GPS模块。 A9G GPS Tracker是一款基于IoT(物联网)解决方案的产品,集成了微控制器ATSAMD21G18。A9G具有最佳的电源管理和存储。该电路板是低功耗的,由AI-Thinker制造。


PCB使用了ATSAMD21G18微控制器,它是Microchip公司的32 位 ARM Cortex M0+微控制器。有一个用于编程和串行应用的Micro-USB端口。该板集成了DHT11湿度和温度传感器、BMP280气压传感器以及一些用于连接外部传感器(如 PM2.5 和风速计)的端口。 LED和蜂鸣器用于状态指示。您可以禁用它们以降低功耗。复位按钮可用于调试和测试。您可以连接6V太阳能电池板为锂离子电池充电。

Front.jpg


PCB电路板的背面有一个0.91英寸的OLED显示屏。它还有一个SD卡插槽,以便可以插入SD卡并将其用作数据记录器。电路板上的长复位按钮用于启用或禁用OLED显示屏。有一个SIM卡托盘,仅支持2G SIM卡用于 GPRS应用。插入SIM卡时要小心,并检查SIM卡的方向。


设置Arduino IDE进行编程

在Arduino IDE中没有预装ATSAMD21G18相关的开发板。因此,我们需要从Board Manager 安装“Arduino Zero Board”。


从顶部的Arduino IDE菜单中打开Boards Manager,选择Tools-> Board-> Boards Manager...,打开 Boards Manager 对话框。然后安装Arduino SAMD Boards(32-bits ARM Cortex-M0+)。

Arduino-Zero.jpg


安装完成后,您现在可以选择Arduino Zero开发板。要对该板进行编程,您需要连接Micro USB数据线。


读取风力气象站数据的基本代码

让我们首先测试下基本的示例代码。打开您的Arduino IDE并粘贴以下代码。这是用于检查设备是否工作的测试代码。 basic.rar (3.7 KB, 下载次数: 1)


此代码需要一些库,如BMP280 库、Adafruit SSD1306、Adafruit GFX以及DHT11库。首先,下载以下库并将它们添加到库文件夹中。

●    BMP280 库:https://github.com/adafruit/Adafruit_BMP280_Library

●    SSD1306库:https://github.com/adafruit/Adafruit_SSD1306

●    GFX 库:https://github.com/adafruit/Adafruit-GFX-Library

●    DHT11库:https://github.com/adafruit/DHT-sensor-library


测试风力气象站

将Micro USB数据线连接到PCB的USB端口,另一端连接到计算机。现在点击上传按钮,代码将在几秒钟内上传。


上传完成后,打开串口监视器。您可以从BMP280传感器查看风速值以及温度、压力、高度值。从DHT11传感器可以看到湿度、温度和热量指数值的值。所以这意味着传感器工作得很好。

Datas-from-the-Board.jpg


OLED显示屏还将显示天气参数,如温度、湿度、压力、风速、紫外线指数。

GSM-Arduino-Weather-Station-1.jpg


使用GSM模块和Arduino的基于MQTT的风力气象站

让我们使用GSM GPRS应用程序将此产品转换为基于物联网的产品。我们将使用MQTT连接传输气象站数据。


以下是MQTT气象站的完整代码。您可以复制代码并将其上传到Arduino Zero开发板。 mqtt.rar (3.64 KB, 下载次数: 2)


检查MQTT Dashboard上的数据

首先,您必须使用一个MQTT代理,例如演示中使用的Mosquitto。其次,定义一个唯一的客户端ID。本文是在Android应用程序中完成的。因此,请从下面的链接下载 Android 应用程序:MQTT 仪表板应用程序


打开Android应用程序,向MQTT客户端输入信息:服务器URL为test.mosquitto.org,服务器端口为1883,服务器名称为makerfabs-g。

MQTT-Setup.jpg


使用MQTT客户端并订阅以下主题:“/public/TEST/makerfabs-T”、“/public/TEST/makerfabs-H”、“/public/TEST/makerfabs-W”、“/public/TEST/ makerfabs-P“。它将接收温度、湿度、压力和风速。

setup-mqtt2.jpg


以上这就是如何使用GSM模块和Arduino开发板设计基于MQTT协议的风力气象站来远程监控气象数据的方法。如果有任何疑问,请随时在本帖回复。

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

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 20:12 , Processed in 0.106929 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

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

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