物联网双轴太阳能跟踪器:基于 Arduino 与 Cayenne 的智能能源管理
项目概述
本项目实现了一套低成本、双轴的物联网太阳能跟踪系统。系统利用四个光敏电阻(LDR)感知光照强度差异,驱动两个舵机(水平/垂向)使光伏板始终正对太阳;同时集成 DHT22 温湿度传感器与分压电路监测面板电压电流,所有数据经 Arduino Mega 2560 采集后,通过 W5100 以太网模块上传至 Cayenne 云平台。用户可在手机/电脑仪表盘实时查看光照、功率、温湿度曲线,一键切换自动/手动模式,手动模式下可远程拖动滑块控制舵机角度;平台还支持阈值报警(邮件/短信),实现全天候无人值守运维。
核心硬件清单
| 元件 | 数量 | 关键参数/备注 |
|---|---|---|
| Arduino Mega 2560 | 1 | 主控,提供 54 路数字 IO 与 16 路 ADC |
| W5100 以太网扩展板 | 1 | RJ45 接口,TCP/IP 协议栈内置 |
| SG90 / MG996R 舵机 | 2 | 分别驱动仰俯(垂直轴)与左右(水平轴) |
| GL5528 LDR 光敏电阻 | 4 | 四角安装,配 330Ω 分压电阻,接 A0~A3 |
| DHT22 温湿度传感器 | 1 | 单总线,接数字引脚 2 |
| 迷你太阳能板 | 1 | 115×85 mm,1.6 W,开路电压 ≤ 6 V |
| 分压取样电阻 | 10Ω × 2 | 串联作负载兼采样,接 A4 读取电压 |
| 指示 LED(红) | 1 | 接引脚 3,指示自动/手动模式 |
| 其它 | - | 330Ω/220Ω 电阻若干、杜邦线、面包板/万用板 |
系统工作流程
- 光照采集:四路 LDR 分压电压经 10 位 ADC 转换为 0~1023 数值。
- 跟踪算法:
水平轴:比较左侧两 LDR 平均值与右侧平均值,差值 > 阈值(10) 时驱动左右舵机旋转,直到差值落入 [-10, 10];
垂直轴:同理比较上/下两组 LDR,驱动仰俯舵机。
该滞回区间可抖动抑制、降低功耗。 - 环境与电参数采集:DHT22 读温湿度;分压电路计算面板电压(×2)、电压/10 得电流、功率 = 电压×电流。
- 云端同步:
Cayenne.loop()周期性调用CAYENNE_OUT回调上传传感器数据,CAYENNE_IN处理云端下发的舵机角度与模式切换指令。 - 人机交互:Cayenne 仪表盘配置 Value 图表、Button(模式)、Slider(舵机角度)、Trigger(报警)。
软件架构要点
Arduino 端嵌入式代码
- 使用
CayenneMQTTEthernet、Servo、DHT三大库。 - MQTT 凭证(用户名/密码/ClientID)需在 Cayenne 创建设备后获取并填入代码。
- 主循环先读取所有传感器,再判断模式引脚(D3)电平:
HIGH → 自动跟踪算法;
LOW → 调用Cayenne.loop()仅处理云端指令与数据上报。 - 舵机写入角度前做限位保护(10°~170°),防止机械结构撞击。
Cayenne 平台配置步骤
- 注册登录 Cayenne,选择“Bring Your Own Thing”获取 MQTT 凭证。
- 在 Arduino IDE 库管理器安装
CayenneMQTT库,填入凭证编译上传。 - 串口监视器确认 “Device connected” 后,回到网页“Add new → Custom Widgets”创建:
- 4 个 Value 绑定虚拟通道 2~5 对应四路 LDR
- Value 通道 0/1/10 对应电流/电压/功率
- Value 通道 11/12 对应温度/湿度(带单位)
- Button 通道 8 控制模式 LED(D3)
- Slider 通道 6/7 分别控制仰俯/左右舵机(0~1 对应 0~180°) - 创建 Trigger:如温度 > 60°C 发送邮件报警。
原型与实测
原型采用中空圆柱遮光罩固定 LDR,确保面板倾斜时至少一路 LDR 被遮挡产生差值。组装图可见原文 Fig.12/13。实测显示自动模式下跟踪角度误差 < 5°,云端数据刷新间隔约 2~3 秒,报警触发可靠。完整学术论文详见 Springer Link。
扩展建议
- 替换为 ESP32 + Wi-Fi/LoRa,摆脱有线网络限制。
- 引入 MPPT 充电控制器,实现真正的能量采集闭环。
- 增加风速/雨量传感器,恶劣天气自动收纳面板。
- 边缘计算部署轻量神经网络,预测云层运动提前调整角度。
制造工艺