基于Arduino和Raspberry Pi制造智能风力涡轮机监测器
风力涡轮机的安全高效运行至关重要,但其人工监控并不实用。本项目开发了一套智能风力涡轮机监控系统,可根据风况自动控制涡轮机的伺服位置,并实时感知风暴、野生动物、振动等环境风险,通过手机向您发送电子邮件,及时通知您。
传感器连接到Arduino Nano 33 IoT,由系统读取数据;使用树莓派显示实时监控仪表盘,两者之间的通信通过MQTT协议实现。如果出现问题,IFTTT将自动发送电子邮件通知给您。
工作原理
该系统包含两个部分:
在代码中,Arduino Nano 33 IoT IoT IoT 每500毫秒读取一次四个传感器的数据,并将数据以JSON格式发布到一个MQTT主题。它提供两种模式:自动(AUTO)和手动(MANUAL),其中舵机的角度可通过电位器(作为风速传感器)控制,也可由用户直接通过仪表盘进行设置。
树莓派监听相同的MQTT主题,将接收到的所有数据更新到Tkinter仪表板上,如果收到警报则激活蜂鸣器和LED灯,并调用IFTTT的Webhook发送电子邮件通知。
硬件设置
将传感器连接到Arduino Nano 33 IoT,方法如下:
•电位器(风)→ A0
•雨传感器 → A1
•振动传感器 → D2
•超声波触发 → D3
•超声波回波 → 电阻器 → D4
•伺服电机 → D5
在树莓派方面:
•LED → GPIO 17
•蜂鸣器 → GPIO 27
安装所需库
在 Arduino IDE 中,通过库管理器安装以下库:
•WiFiNINA - 用于 WiFi WiFi 连接
•PubSubClient - 用于 MQTT
•伺服 - 用于伺服电机控制
在树莓派上安装 Python 依赖项:
获取代码
仓库包含:
•sketch_turbine.ino - Arduino Nano 333 物联网固件
•dashboard.py - - - 基于树莓派的监控仪表板
配置 WiFi 和 MQTT
在Arduino代码中,更新您的凭据:
Arduino 在启动时会连接到 WiFi。如果 WiFi WiFi 断开,它会自动重新连接,且不会停止涡轮运行——无论连接状态如何,舵机都会在 AUTO AUTO 模式下继续运行。
传感器逻辑与报警系统
Arduino 读取所有四个传感器,并根据这些阈值触发警报:
当AUTO模式下触发任何警报时,伺服会立即返回中心位置(90°),以保护涡轮。
MQTT 通信
ArduinoArduinoArduino 每 50000 毫秒发布一次 JSON JSON 状态消息:
树莓派订阅此主题,并实时更新仪表板。命令通过一个独立的命令主题从仪表板发送回Arduino。
树莓派仪表板
仪表板使用 Python Tkinterinter 构建,可实时显示所有传感器数值。它还包含手动控制按钮:
•自动模式——根据风力让涡轮机自动运行
•中心(90°)——将伺服回至中心,然后返回自动模式
•伺服滑块 - 在手动模式下拖动以设置特定角度
•快速方向按钮——可立即跳转至0°、45°、90°、135°、180°
如果Arduino断开连接超过10秒,仪表盘会显示警告。如果Arduino处于手动模式且MQTT连接中断超过10秒,为确保安全,系统将自动切换回自动模式。
IFTTTTTTT 邮件通知
当检测到警报时,系统会向IFTTT Webhooks发送HTTP请求,从而触发邮件通知。
设置方法如下:
•前往 ifttt.com.com 并创建一个新的小程序
•如果此 → 代理 → “接收网络请求” → 事件名称:turbine_alert
•选择“Webhooks”
•选择“接收网络请求”
•然后 → → → 邮件 → 使用 {{Value1}}、{{Value2}}、{{Value3}} 设置主题和正文
•我建议根据IFTTT账户的邮箱选择电子邮件或Gmail。
•填写您的主题和内容。
•复制您的 API API 密钥
•选择你的触发器,然后向下滚动并点击“文档”,获取你的密钥
•将密钥粘贴到Arduino代码中:
系统在每次提醒之间设有60秒的冷却时间,以避免频繁发送至您的收件箱。只有当出现新提醒时才会发送,不会在提醒处于激活状态期间持续发送。
结果
系统成功:
•根据风传感器输入实时调整伺服位置
•检测并响应风暴、野生动物、振动及传感器故障等状况
•在WiFi或MQTT断开后可自动重新连接,且不会中断涡轮机运行
•在检测到危险后几秒内发送电子邮件警报
•可通过仪表盘实现完全的远程手动控制
本文编译自hackster.io





