0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino无线气象站和Web服务器的制作

454398 来源:网络整理 作者:网络整理 2019-11-13 17:16 次阅读

步骤1:解码无线信号

这是最大的障碍,我必须将这一阶段的全部功劳交给JeeLabs的Dominique Pierre,我使用了该代码(在Dominique的支持下)对我的所有传感器进行了解码。测试硬件很简单(并在JeeLabs网站上进行了说明)。这里要注意的一点是,最初我使用的是Arduino UNO,但是(如后所述)我转到了MEGA。出于测试和解码目的,任何一个都可以使用,我强烈建议您执行此步骤,然后再进行其他操作,以便您可以识别和验证接收到的信号是否来自传感器,并可以对其进行解释。我使用了一个简单的Excel电子表格来手动验证解码的信号并在开始任何气象站编码之前计算出校验和。

步骤2:硬件

除了RF无线电接收器外,我还使用了RTC –您可以使用以太网屏蔽和NTP,但是我觉得重点在于应该是日志记录而不是Internet/服务器端,如果使用RTC时网络中断,则可以“离线”完成。我也为一个传感器有限的朋友构建了该项目的变体,因此包括一个“车载”压力和温度传感器。您所使用的取决于您自己,稍后我会提供所有元素的示例代码。该示意图提供了已使用硬件的概述。我在Fritzing中构建,还创建了一个“ mini Shield”,该插槽插入MEGA的“端”,以太网屏蔽即在该端完成(如图中的白色所示)。该“防护罩”包括可选件的脚印和一些将来可选件的突围针。已尝试/测试的组合包括:

•用于Oregon Scientific传感器的RF接收器和RTC

•用于Cresta传感器,RTC和BMP085气压/温度传感器的RF接收器

•外部LM35温度传感器(防水和测量以及我们花园中溪流的温度)和外部溪流深度监控器(此处未详细说明,但使用安装在桥上的I2C超声波测距仪来评估溪流的高度–有趣的是,大雨时深度可能在30cm到150cm之间变化! )。但是,任何组合都可以使用,并且可以将代码修改为适当的日志/Web服务。

如上所示,示意图显示了屏蔽上的组件,不需要全部使用,但是可以使用选项如果想要的话。以太网屏蔽层也未显示,只需插入MEGA。

您需要的组件:

1。 Arduino MEGA 2560

2。以太网屏蔽(带有micro SD卡)

3。 RF 433MHz接收器(已使用Aurel RX-4M50RR30SF,从这里开始运行良好)

4。空中结果5。 DS3234 RTC中断模块

6。 LM35温度传感器(最多2个,可选)

7。 BMP085压力传感器(可选)

为了将Arduino和“盾牌”安装到标准Arduino外壳中,我不得不卸下了两个定位销,但是这些定位销很容易折断,并且不会影响到固定的安装位置。硬件。请注意,在PCB上,接收器模块位于PCB的下侧(有足够的空间),因此仍可以弹出存储卡而不会受到干扰。

我用433MHz的鞭状天线使设备看起来更整洁(未连接照片,但显示为安装在第二张照片的包装盒中)–不确定其响应是否比我的测试天线更好-一根电线;但是看起来更整洁并且更专业!

第3步:记录数据的代码

这是一个扩展步骤1的步骤,获取接收到的信号并解释这些信号以获得“真实”值。这些数据存储在全局变量中,因为数据在多个地方使用(即日志记录阶段和网页服务页面,第4步)。我通常使用整数来尽可能地节省内存并加快处理速度,在将值记录或“提供”到网络时,除以10可以得到小数点后一位。我还包括了最大值和最小值的触发器(如果在一年中的某个时刻断电,它们会在午夜存储在EEPROM中)。对于某些参数,还有触发器发送电子邮件(第5步)。我为那些需要验证的元素添加了校验和,因为偶尔会处理错误的数据并歪曲最大/最小数据。 Oregon Scientific信号的解码基于互联网上的信息以及此处的Cresta设备的信息。请注意,每个Oregon Scientific和Cresta设备的RF解码代码都不相同。这两个示例都包含在示例草图文件中。

第4步:Web服务代码

有这有两个关键要素。一种是直接从Arduino提供固定格式的页面,本质上是传感器读数,电池状态,Arduino状态等的列表。这对于“调试”这两个软件很有用,但也可以验证硬件是否按预期工作–例如,如果传感器由于超出范围或受到干扰而未被解码,则可以在“最新更新”详细信息上对其进行监视。第二个要素是提供更复杂的页面。编码的解决方案非常强大(我认为),因为它将从SD卡的根目录加载模板文件(以文本形式),并在该文件中找到“变量”(以打开和关闭~~表示),在投放到网页之前,将其替换为值。这意味着可以创建非常复杂的网页,而无需重新编码Arduino,也无需占用内存/资源,包括对外部文件的引用,例如.css文件,图像等,这些文件可以存储在您自己的网站上,而不是在网站上提供最初,该代码旨在在UNO上工作,但我需要为趋势图存储大数据数组(48个值x 13组) (请参见示例网页),尽管编译大小低于32k,但Arduino因内存“过载”而失败。..转到MEGA还允许添加附加功能(例如电子邮件,日出等),而不会出现问题。 。随意优化代码并将其压缩到UNO上。

示例文件(graphs.htm)在下面创建网页,并利用Google Charts api通过简单的超链接调用呈现图表。请注意,该代码仅适用于8.3命名文件(由于使用了SDFat),因此使用了.htm命名文件。要查看处理后的页面,只需键入Arduino IP代码:端口,然后输入/graphs.htm。

该代码还包括用于计算某些派生参数(例如云底高度和风寒)的数学方法。除正常页面交付外的URL:

•YourIP:Port/EEPROM –强制将当前的最大和最小(和下雨次数)记录到EEPROM中。在出于任何原因断电以确保维护年度数据之前执行此操作很有用。注意:每天午夜只对EEPROM写入一次。这可以延长Arduino EEPROM的寿命,并且由于我打算每天无限期供电,因此我认为每天就足够了。

•YourIP:Port/TIME&year&year&mo&day&hr&mi –尽管已使用RTC,但它似乎会浪费一段时间。此功能允许用户(通过Web)将RTC重置为“正确的时间”并更新夏令时的更改。

基本日志记录和服务器代码均基于此处的教程,并进行了修改以满足我的需要和更改为Arduino 1.0编译器。

库参考

•TimeLord库

•EEPROMWriteAnything库

•RTCLib库

•SDFat库(和以太网/SD卡教程)

步骤5:电子邮件代码

使用一个简单的网页客户端,我将一个URL称为php位于我网页上的脚本,用于通过电子邮件发送设置的电子邮件分发列表。同样,由于它是由Arduino托管的,因此我可以随时更改电子邮件的分发和内容。

气象台警报电子邮件php脚本:

《?php

//以下几行阅读了URL中的参数

$ TO =‘电子邮件地址1’;

$ TO。=‘,电子邮件地址2’;

$ FROM =‘您的电子邮件地址’;

$ SUBJECT =‘天气站点更新”;

$ TIME = $ _REQUEST [“ TIME”];

$ TEMPNOW = $ _REQUEST [“ TEMPNOW”];

$ WSNOW = $ _REQUEST [“ WSNOW”];

$ WDNOW = $ _REQUEST [“ WDNOW”];

$ RAIN = $ _REQUEST [“ RAIN”];

$ TEMPMAX = $ _REQUEST [“ TEMPMAX”];

$ TEMPMIN = $ _REQUEST [“ TEMPMIN” ];

$ WSMAX = $ _REQUEST [“ WSMAX”];

$ TRIGGER = $ _REQUEST [“ TRIGGER”];

$ MESSAGE =’来自气象站的消息

时间为‘。$ TIME 。 ’

-现在的温度是‘。$ TEMPNOW。 ’C

-现在的风速为‘。$ WSNOW。 “每小时deg

-今天下雨”。$ RAIN。 ’mm

-今天的最高温度是‘。$ TEMPMAX。 ’C

-今天的最低温度是‘。$ TEMPMIN。 ’C

-今天的最大风速为‘。$ WSMAX。 ’mph

由于‘。$ TRIGGER发送了电子邮件。 ’;

//这将发送消息

mail($ TO,$ SUBJECT,$ MESSAGE,“发件人:”。$ FROM);

?》

如果有,还会发出一封电子邮件

步骤6:已知限制和需要改进的地方

1。我遇到的最大问题是,在检查任何网页请求时,Arduino缺少对RF信号的解码。更改为Arduino 1.0会使情况变得更糟(似乎需要花费很多时间才能检查任何服务器请求)。为了克服这个问题,我只会在收到并解码了RF信号时检查互联网活动(这对我来说很有效,因为我有很多传感器,每隔几秒钟就会收到一个信号),或者每5秒通过关于mills()的检查。这在实践中可行(用户接收网页的最大延迟约为5秒钟,并且没有明显的阅读损失),但是我敢肯定有更好的方法可以做到这一点,例如软件中断? 》 2。有些编码很差(我可以更好地利用函数/过程,甚至可能更好地利用某些库工作(这超出了我的能力)),而且我敢肯定,有更有效的方法可以达到相同的目的。该代码可以正常工作,并且可以可靠地完成我的工作(运行几个月没有问题),但是欢迎任何改进/建议。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web服务器
    +关注

    关注

    0

    文章

    137

    浏览量

    24361
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186569
  • 气象站
    +关注

    关注

    1

    文章

    739

    浏览量

    15633
收藏 人收藏

    评论

    相关推荐

    负氧离子气象站

    气象站
    pingao141378
    发布于 :2024年10月19日 08:52:28

    区域生态自动气象站:数据监测与传输

    BK-CQX12,区域生态自动气象站主要用于监测和收集气象数据,以便更好地了解和管理区域生态环境。这些气象站通常配备各种传感和设备,用于实时监测气温、湿度、降水量、风速、气压等
    的头像 发表于 08-09 16:30 260次阅读
    区域生态自动<b class='flag-5'>气象站</b>:数据监测与传输

    校园气象站高校科普论文气象站多功能气象站

    校园气象站高校科普论文气象站多功能气象站是一种集气象监测、数据传输、数据处理、信息发布等功能于一体的数字化气象设备。它可以通过各种传感
    的头像 发表于 08-06 17:53 404次阅读
    校园<b class='flag-5'>气象站</b>高校科普论文<b class='flag-5'>气象站</b>多功能<b class='flag-5'>气象站</b>

    便携式气象站:未来气象监测的便携新选择

    气象站
    万象环境科技
    发布于 :2024年06月23日 10:39:24

    便携式气象站:科技与便捷的完美融合

    气象站
    万象环境科技
    发布于 :2024年06月22日 21:14:07

    什么是自动气象站

    在科学技术迅猛发展的今天,自动气象站以其高效、精准、实时的特点,逐渐成为现代气象观测的先锋。它不仅极大地提升了气象观测的效率和准确性,还为农业生产、交通运输、环境保护等领域提供了重要的气象
    的头像 发表于 06-14 09:15 495次阅读
    什么是自动<b class='flag-5'>气象站</b>?

    小型气象站是什么?有哪些作用?

    小型气象站可以监测多种气象参数,包括但不限于温度、湿度、气压、风速、风向、降水量等。这些数据对于农业、气象预测、交通运输、环境监测等领域都至关重要。例如,在农业领域,农民可以根据气象站
    的头像 发表于 05-29 17:03 533次阅读

    多参数自动气象站:科技前沿与应用尖端

    JD-CQX10 多参数自动气象站代表了气象监测领域的科技前沿与应用尖端,其集成了多种传感和先进技术,能够实现对气象要素的全面监测和高效数据采集。 这些先进的自动
    的头像 发表于 05-16 17:16 383次阅读

    微型气象站的性能表现如何?

    。准确性取决于传感的精度和校准程度。对于温度、湿度、风速等参数的监测,微型气象站的传感需要具备高精度和高稳定性,确保监测数据的准确性。定期的校准和维护是保证微型气象站准确性的关键步
    的头像 发表于 05-10 16:22 360次阅读

    农业小型自动气象站应用

    。 小型自动气象站,由农业环境监测领域硬件和软件设计而来,采用物联网、无线通讯等技术,稳定运行在各种恶劣户外环境下,具备低功耗、高稳定性、高精度、无人值守等特点,24小时全天候监测农业生产的各项气象参数。 采用小
    的头像 发表于 04-24 16:42 407次阅读

    小型农业气象站厂家:数据分析与决策支持

    ,助力农业增产致富。 一、智能化农业气象站——助力农民科学种植 小型农业气象站厂家推出的智能化农业气象站,集成了先进的气象传感器、数据采集系统和云平台
    的头像 发表于 04-02 16:35 415次阅读

    罐区防爆气象站:科技保障,安全生产

    JD-FBCQ罐区防爆气象站是指在石油、化工等工业罐区内设置的一种气象监测设备,旨在监测和分析当地气象变化,提供关键气象信息,以保障罐区安全生产。科技保障在这里主要体现在提供高精度、实
    的头像 发表于 03-19 16:40 573次阅读

    什么是科研用的小型气象站

      JD-CQX7科研用的小型气象站是一种专门设计用于科学研究领域的气象监测设备,其主要特点是小巧轻便、灵活易用,并具有高精度的测量性能。这种气象站通常包括多个传感,能够测量和记录气
    的头像 发表于 03-15 15:26 352次阅读

    农业气象站:助力现代农业发展

    农业气象站:助力现代农业发展
    的头像 发表于 01-31 11:28 382次阅读

    【开源项目】Arduino ESP32 彩色电子气象站

    这是我十多年来一直想建立的项目。我终于成功了,我真的很兴奋——一个电池供电的气象站项目。我过去建造过许多气象站项目,但这次不同。它可以在电池上持续数月。原因是它使用的令人惊叹的电子纸显示。让我向你
    发表于 01-16 14:01