×

带有Adafruit IO的太阳能气象站

消耗积分:0 | 格式:zip | 大小:0.34 MB | 2022-12-14

向日葵的花季

分享资料个

描述

这个项目是我第一个项目的高潮,因为我早已忘记了我决定尝试制作一个支持物联网的气象站的原因,让我开始爱好电子产品。

在最近购买了一些新组件、购买了一台 3D 打印机并发现了 Adafruit IO 之后,我推动完成并记录了这个项目,即我的太阳能、Adafruit IO 供电的气象站。

概述

该项目包括三个关键领域:

  • Feather M0 微控制器获取天气读数并将其上传到 Adafruit IO
  • 传感器:用于温度、压力和湿度读数的 BME280 传感器用于风雨读数的 SparkFun 天气计
  • 由 Sunny Buddy 以及太阳能电池和蓄电池组成的电力系统

电子产品

在这个项目中,电子设备相对简单。有:

  • 主 Feather 板连接到复位按钮、气象仪和 BME280。
  • Sunny Buddy 连接到太阳能电池、电池和电源开关。
  • 从 Sunny Buddy 到提供电源的 Feather 的连接。
poYBAGOX4e2ARdaPABFCsfqra-4338.jpg
在被带到外面之前挂钩
 

重置按钮这是最简单的连接。重置按钮连接到羽毛上的重置和接地引脚。用一小段电线将按钮焊接到每个引脚上。

BME280 BME280 通过 I2C 连接。它需要连接到 Feathers 3.3V、接地、SDA 和 SLC 引脚。这种连接有不同的选择,单根电线或 4 线带状电缆都可以工作。我建议在羽毛附近使用 JST 或类似的连接器,这样您就可以插拔 BME280 以便于设置,因为传感器将驻留在辐射屏蔽中。

就我而言,Feather 安装在我制作的一块小电路板上,该电路板上有连接 BME280 的孔。一个小面包板或原型板也可以。

请记住将BME280的总导线长度保持在 1m 以下(越短越好)。

气象仪 气象仪有两个连接点,均为 RJ-11。我建议购买 RJ-11 母连接器将它们插入,以便在需要时断开它们。您也可以切断连接器的末端以直接连接电线。

一个连接器用于雨量计。RJ-11 连接器必须连接到接地和羽毛针 11。

另一个连接器处理风速和风向。风速线连接到接地和羽毛引脚 6。风向需要模拟测量,因为值会根据仪表指向的方向而变化。为了正确测量这个值,需要一个分压器。

风向仪由一个接地引脚组成,另一个引脚连接到一个 10K 电阻,该电阻也连接到 Feather 引脚 A2。电阻器的另一端连接到 Feather 3.3V 引脚。

有关连接 Sparkfun 天气仪表的更多信息,请参阅Sparkfun 页面上的教程。

Sunny BuddySolar 充电器Sunny Buddy 需要在其自己的设置指南中描述的一些设置。您必须焊接太阳能电池板的连接器并配置电位器以实现最佳太阳能充电。请参阅Sparkfun 指南进行设置。

电池将插入 Sunny Buddy 上的电池连接器。

电源开关连接到 Sunny Buddy 上的一个负载端子,用一根小电线焊接。电源开关的另一侧和来自另一个负载终端的电线在 2 针 JST 连接器中结束。此连接器将插入羽毛电池连接器。

电源重要注意事项连接负载线时,请勿将Feather插入 USB 电源。Feather 有一个内置的 LiPo 充电器,当它有 USB 电源时,它会尝试为连接的电池充电。但是在这个设置中没有电池,而是有负载线连接到 Sunny Buddy。如果您出于任何原因需要连接 USB 以断开连接至 Feather 的 JST 电源连接器。

防水虽然外壳应该可以防止大部分水进入任何电子设备,但它仍然是可能的。作为额外的保护层,我将“CorrosionX”应用于电子设备。它用于海洋应用,以帮助防止水损坏,并获得良好的在线评论以保护电子产品。

Adafruit IO

Adafruit IO 是连接物联网项目的绝佳平台,让您可以轻松地将数据发送到服务,让您可以将其可视化并稍后从其他设备检索它。

Adafruit 有许多关于设置和使用以下服务的教程,这是该项目所需要的。

您的第一步是注册一个帐户。注册后,您将可以访问您的 Adafruit IO 密钥和用户名。您将这些添加到 config.h 文件中

#define IO_USERNAME   "YOUR USERNAME HERE"
#define IO_KEY        "YOUR IO KEY HERE"

气象站需要创建 9 个提要。他们是:

  • 电池电压
  • 湿度
  • 压力
  • 开始
  • 温度
  • 风向
  • 阵风
  • 风速

除了“开始”之外,名称是不言自明的。Start 记录处理器上电/复位的原因。这可能是第一次上电或看门狗复位。我添加它来监视正在发生的任何异常。

您可以在数据到达时实时查看这些提要。

您也可以创建仪表板。仪表板允许您一次以多种格式显示多个提要。我为自己创建了一个仪表板,以方便的方式显示提要。

pYYBAGOX4fCAUGX0AAESk9hbUHM447.png
我的气象站仪表板
 

我的车站仪表板是:https ://io.adafruit.com/Gamblor21/dashboards/weather

代码

该代码包含两个主要任务:设置和进行测量。尽管需要进行一些设置,但大多数包含的代码无需更改即可工作。

编辑 config.h配置文件包含您的 Adafruit IO 用户名和密钥,以及您将连接到的 WiFi 路由器的 SSID 和密码。

设置你的高度

// Set this to your location's altitude above sea level in meters
#define ALTITUDE 235

您必须在此处以海拔米为单位设置您自己所在位置的高度。谷歌地图和其他工具可以帮助您确定这个值。

检查引脚

// Pins for the weather gauages. Wind/Rain are digital, Wind direction must be analog
#define VBAT_PIN A7
#define LED_PIN 5
#define WIND_PIN 6
#define RAIN_PIN 11
#define WIND_DIR_PIN A2

如果您将任何仪表连接到不同的引脚,那么我提到您必须在此处更改引脚号。

Setup()正如预期的那样,设置函数将气象站设置为运行。主要任务是:

  • 在气象仪引脚上设置引脚模式和中断
  • 设置并连接到 Adafruit IO
  • 初始化 BME280 传感器
  • 将最后的重置原因发送到 Adafruit IO
  • 重置实时时钟 (RTC) 并设置闹钟以在 60 秒内唤醒

Loop()主循环做的第一件事是……去睡觉。这允许该站处于低功耗模式,直到中断消失,无论是从记录读数的仪表或警报响起,单选时间进行天气测量。

下一部分仅在警报响起时运行。任何其他中断都会跳过它,并且羽毛将重新进入睡眠状态。

警报触发的每一分钟都会发生以下情况:

  • 闪烁 LED(可选,可以关闭)
  • 调用io.run()以确保数据流向 Adafruit IO。这在循环过程中被调用多次,否则 WINC1500 缓冲区已满。如果您注意到 WiFi 传输灯卡在这可能已经发生。
  • 进行每分钟一次的测量
  • 检查时间并每两分钟进行一次测量
  • 检查时间并每五分钟进行一次测量
  • 重置警报以在下一分钟触发

通过将测量时间块从一个时间块移动到另一个时间块,可以轻松更改测量时间。

测量函数读取一个或多个传感器值(或由中断设置的变量),可选择进行一些基本处理并将最终值发送到 Adafruit IO。

一些值会在几个测量间隔内保存,以获得比瞬时测量更有意义的平均值。

中断当气象仪记录读数时,中断允许 Feather 在低功耗模式下唤醒。它们还允许 RTC 警报每 60 秒触发一次,让 Feather 从睡眠中醒来以读取读数。

任何中断都需要写入以执行非常快的任务,因为在中断执行时无法执行其他任何操作。在气象站中,中断要么增加一个变量,要么设置一个标志并立即退出。

3d 打印组件

气象仪安装在 3/4" 金属杆上,因此想法是将其他部件安装到同一杆上。

辐射屏蔽

 
 
 
poYBAGOX4giABhmpAAkzZHcg1-g760.jpg
 
1 / 6辐射屏蔽组件
 

BME280 受到辐射屏蔽(也称为史蒂文森屏幕)的保护。防护罩由几层和一个底部组成,可保护传感器免受阳光直射和雨水的影响,同时使其仍能感知天气。它旨在使用钕磁铁将部分固定在一起,以便将来访问。我添加了一个可以放在顶部和底部的手柄,以使防护罩可以夹在气象仪的金属杆上。

屏蔽层的每一层都是单独印刷的。除了中间的两个和两个把手(可选)外,您将需要每个部件一个。

底部部分用环氧树脂连接到中间部分之一。顶部的一块环氧树脂连接到另一个中间件。

钕磁铁被环氧树脂固定在支架片层的销钉和孔上。还将磁铁连接到顶层的钉子(以适合传感器层孔)和底部的孔(以连接到传感器层的钉子)。

最后,两个夹子被印刷并用环氧树脂连接到屏蔽的顶部和底部,以连接到气象仪的金属杆上。

BME280 将使用 M2.5 螺钉和螺母连接到支架上。

电子箱

 
 
 
pYYBAGOX4jOAP42FAAnEdDFE4VU638.jpg
 
1 / 6电子箱组件
 

电子箱包含所有其他必须受到保护的组件。这包括 Feather M0、Sunny Buddy、电池和开关。

这个盒子是为我为 Feather 准备的 PCB 设计的。该空间也可以容纳切割成尺寸的小型原型板。Sunny Buddy 有安装孔,可安装 3.5 毫米螺丝。

盒子底部有几个孔可以让传感器线穿过,还有电源开关和复位按钮的安装点。

盒子的顶部将滑过外壳并卡入到位。它设计有悬垂,以帮助防止雨水和雪水进入,但它不防水。

Fusion 360 文件您可以在此处获取原始 Fusion 360 文件的副本:

集会

您的最终组装地点将取决于您要测量天气的位置。项目周围的空间越大,影响读数的其他物体就越少,例如挡风的建筑物或保持热量和升高温度的表面。

在这个项目中,我选择将所有部件安装到 SparkFun 气象仪随附的金属杆上。风速计在顶部,其次是辐射屏蔽、电子箱,然后是雨量计。

太阳能电池板安装在电子箱的另一侧。不用说,这需要指向阳光最多的区域,最好是向上倾斜。通过意识到太阳的位置可以全年变化,因此请尝试选择最佳位置(或随着季节的变化而改变)。

 

pYYBAGOYeLqAA4SsAB9-W2P45Ho612.jpg
设置在我的后院
 

未来的计划和想法

这是一个长期运行的项目,让我开始更深入地了解电子产品。我相信随着时间的推移,我会继续更新和改进这个项目的某些部分。下面列出了我的一些想法。随意尝试其中任何一个:

  • 检测光照水平(白天/夜间检测,晴天/阴天)
  • 闪电探测器
  • 将时间与实际时间同步
  • 构建一个单独的设备以在小型 eInk 显示器上显示内部的天气数据
  • 将数据聚合为更易于人类使用的格式
  • 用人工智能进行短期天气预报实验

我希望你喜欢这个项目。请让我知道您看到的任何反馈、疑虑或错误。

 


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

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !