基于物联网的系统使用传感器检测实时天气
扫描二维码
随时随地手机看文章
想象一下,一觉醒来,打开你的笔记本电脑,立刻看到一张反映屋外实时天气的壁纸——多云、晴朗或有雾!
我们的自动天气壁纸更换器将物联网与软件自动化无缝集成。使用Bolt物联网模块,LM35温度传感器和LDR光传感器,我们的系统检测当地天气状况,并动态更新笔记本电脑的壁纸以匹配环境。
通过实时传感、API集成和自动化,该项目将硬件和软件融合在一起,提供个性化的用户体验。非常适合天气爱好者,技术极客和自动化爱好者!
当您的环境不断变化时,为什么要满足于静态壁纸呢?
BoltIoT平台
Bolt物联网平台使您能够控制您的设备并安全地从物联网设备收集数据,无论您身在何处。通过部署机器学习算法,只需点击几下即可检测异常并预测传感器值,从而获得可操作的见解。要了解更多,请访问boltiot.com。
Integromat(做)
Integromat的作用是无缝连接你的应用程序/服务,这样你就可以专注于新的任务,而不是一次又一次地重复相同的任务。回到最重要的事情上。
我们必须创建一个integrmat场景,使用api与pixabay通信。这是我创建的场景蓝图。
在Make (integrmat)中导入蓝图的步骤
Make(以前的integrmat)中的蓝图是一个预先配置的场景,可以导入以快速设置自动化。下面是导入蓝图并设置它的方法。
下载蓝图文件
•获取待导入蓝图的。json文件。
•将其保存在本地计算机的已知位置。
登录Make (integrmat)
•去Make的网站。
•使用您的凭据登录。
导航到场景页面
•在仪表板中,从左侧栏单击“scenario”。
•点击“Create a new scenario”按钮(右上角)。
导入蓝图
•在场景编辑器页面上,单击底部面板中的三个点(…)菜单。
•从下拉菜单中选择“Import Blueprint”。
•点击“选择文件”,然后选择下载的。json蓝图文件。
•点击“打开”上传蓝图。
检查并配置场景
•加载蓝图后,在可视化场景编辑器中查看模块和连接。
•如果任何模块需要身份验证,请单击它们并提供必要的API密钥、登录详细信息或令牌。
•确保所有必需的服务和集成都被正确地链接起来。
测试场景
•点击“运行一次”(左下)来测试设置。
•检查场景是否正确执行。
•如果需要,调整模块设置或排除任何问题。
激活场景
•一旦场景按预期工作,单击“保存”。
•根据你的需要制定一个时间表(例如,每5分钟,每小时,每天)。
•点击“启用”激活自动化。
Mailgun:电子邮件自动化服务
Mailgun是一个功能强大的电子邮件自动化服务,专为开发人员和企业通过api发送,接收和跟踪电子邮件而设计。它提供SMTP和RESTful API功能,以实现无缝的电子邮件传递,使其成为事务性电子邮件、营销活动和电子邮件路由的理想选择。
这是一个可选的步骤,如果您不想要这个服务,那么从主程序脚本和配置文件中删除相关代码。如果你想收到包含你周围的天气状况和壁纸的链接的邮件,目前已经设置为你的笔记本电脑壁纸,然后创建一个Mailgun帐户,并在conf python文件中放入你的Mailgun凭据。
组装硬件组件
1. 获取上面提到的所有必需组件。
2. 取一个面包板,如图所示插入LM35传感器。
3. 如电路图所示,将VCC引脚连接到2 * 4.4k欧姆电阻。
4. 然后将第二个4.4k欧姆电阻的另一端连接到Bolt wifi模块中的5v电源引脚。
5. 然后再取另一根线,将LM35传感器的VCC引脚直接连接到Bolt模块的GPIO1引脚上。(分压器电路)
6. 传感器的OUT引脚接螺栓模块的A0数字引脚,GND引脚接螺栓模块的GND。
7. 现在将LDR传感器插入面包板。
8. 将LDR的一端连接到10k欧姆电阻,并通过面包板连接将该电阻的另一端连接到A0引脚。
9. 使用面包板将LDR传感器的另一端通过接线连接到Bolt模块的GPIO4引脚上。
连接螺栓到云
组装硬件后,注册并连接Bolt单元到Bolt Cloud。更了解螺栓与云的注册和连接。
在integrmat上建立逻辑
1. 首先使用链接在integrmat上创建一个帐户。
2. 配置你的Webhook URL
3. 添加HTTP请求模块,添加pixabay url和set方法作为GET方法。在查询字符串中添加参数,如下图所示。
4. 配置HTTP请求模块,如图所示。
5. 运行模块一次,从pixabay获取响应变量。
5. 现在创建一个Tools set变量模块并选择large_image_url
6. 现在创建一个Webhook Response模块。
7. 如果您不想经历这个过程,那么按照将蓝图模块导入Make中提到的步骤进行操作。您可以在附件部分找到.json文件。
工作原理
工作原理是通过使用可用的传感器LDR光传感器和LM35温度传感器来确定天气。该项目使用Bolt IoT、LM35和LDR传感器,根据实时天气情况动态改变笔记本电脑壁纸。它还集成了Z-score异常检测,以识别异常的温度和光线变化,确保壁纸仅在必要时更新。
1. 传感器数据采集
a) LM35(温度传感器)读数
电源开关:
•电路通过设置引脚4 (LOW)和引脚1 (HIGH)使能LM35,保证LM35的供电。
•请注意,Bolt IoT wi-fi模块中的GPIO引脚仅提供3.3v,对于LM35传感器,它需要5v电源才能运行。
•因为我们不能通过Bolt云直接控制Bolt模块中的5v电源引脚,所以我们创建了一个分压器设置,其中LM35温度传感器的VCC连接到模块上的GPIO1和5v电源,并使用一系列电阻将5v电源连接到LM35的VCC。
•这将确保当GPIO1打开时,LM35将获得足够的供电,当GPIO关闭时,LM35将没有足够的供电,它将被关闭。
•5秒的延迟确保稳定的读数。
阅读温度:
•LM35的模拟输出使用Bolt IoT ADC从A0引脚读取。
•原始ADC值转换为温度使用公式:温度(°C) =(100 *温度)/1024
•读取后,引脚1设为LOW,引脚4设为HIGH,将电源切换回LDR。
b) LDR(光传感器)读数
•直接读出:LDR在LM35读出后已经通电,因此其模拟值直接从A0读取。
•ADC值越高=光线强度越大,ADC值越低=光线越暗。
2. 数据处理与异常检测(Z-Score分析)
历史存储:
•最后几个温度和光读数存储在history_data列表中。
•历史存储:最后几个温度和光读数存储在history_data列表中。
z分数计算:
•计算以往读数的均值和方差。
•z分数阈值决定了正常读数的上限和下限。
•如果一个新值超出了计算的界限,它将被标记为异常。
3. 天气状况分析
•函数weather_decide (temp, light)分析最新的温度和光照数据,并将其分类为不同的天气条件(例如,晴、雨、雾、雪)。
•极端读数与热浪、风暴或冰冻天气有关。
•该功能决定要设置的壁纸类型。
4. 触发Webhook和抓取壁纸
•如果检测到异常或1小时后,脚本触发Integromat webhook:
•webhook将确定的天气状况发送给integrmat /Make。
•从API获取相应的墙纸图片URL。
5. 壁纸更新
下载图片:
•获取的图像被下载并保存到D:\ wallpaper \wallpaper.jpg。
设置为壁纸(windows专用):
•systemparametersinfo函数用于立即更新墙纸。
6. 电子邮件通知(Mailgun集成)
更改墙纸成功后,使用Mailgun API发送邮件通知。
邮件内容包括:
•当前温度
•光强度
•天气状况
•图片链接
7. 连续循环执行
•该过程每10秒重复一次,确保实时监控。
•壁纸仅在重大天气变化或每1小时更新,以避免不必要的更新。
使用VS Code执行Python程序的步骤
1. 安装VS Code和Python
•从这里下载并安装Visual Studio Code。
•安装Python (3)X版本)从这里下载。
•打开VS Code并从扩展市场安装Python扩展。
2. 安装所需的Python库
•在运行脚本之前,使用VS Code中的Terminal安装所需的库:
•打开VS Code。
•按Ctrl + '(反勾)打开终端。
运行如下命令安装依赖项:
3. 设置conf.py文件
•您的脚本导入conf.py,其中包含API密钥和设备配置。
•在同一目录下创建一个名为conf.py的新文件,并添加以下详细信息:
•用您的实际凭据替换占位符。
4. 连接螺栓物联网模块
•启动Bolt IoT模块。
•确保它连接到Wi-Fi并连接到Bolt Cloud。
5. 运行Python脚本
•创建一个python文件并编写如automatic_change.py文件所示的python代码。
•在VS Code中打开脚本。
•单击“运行>不调试运行”或按“F5”。
如果从终端运行,使用:
6. 验证执行
•脚本将从LM35和LDR传感器读取数据。
•这将决定天气状况。
•它将调用webhook来获取墙纸。
•它会在你的电脑上设置壁纸。
•如果配置,它将发送电子邮件通知。
输出
本文编译自hackster.io