×

太阳能路灯网络

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

张文

分享资料个

描述

警告:使用高压设备时要格外小心(在这种情况下最高为 60 伏)。存在火花、损坏、火灾和死亡的风险。

进行中的工作该项目正在开发中。我将在每个硬件、软件或数据进展后分享更新。这是我的第一个 Arduino 项目,数字是近似值(未校准)。谢谢阅读!

背景

作为提高安全性的第一步,我们在农场内安装了大约 12 盏太阳能路灯,其中只有主屋连接到电网。

最近,安全成为重中之重,我们的目标是在陆地的关键点安装摄像头和传感器;全太阳能。

我们意识到我们有许多这样的路灯可用(已安装和仍然装箱),我们想知道我们是否可以将它们用作太阳能存储系统,作为灯功能的补充或替代。

关于我们

我是一名拥有大量 C 背景的专业软件/应用程序开发人员。在这个项目之前,我已经学习了大约三周的 Arduino 和微控制器,我发现这个世界非常令人兴奋,让我在专业项目之间忙于家里。

该物业的所有者是该项目的投资者。我用“我们”和“我们”来指代他和我。

我们位于中美洲;全年从早上 6 点到下午 6 点,太阳都会在这里说“你好”。

我们的最终目标

我们想在灯具中插入小型防水可拆卸的 Arduino 设备,用于监控从 Arduino 到 Arduino 到服务器的数据传输;简而言之,监控和使用灯具作为传输网络。

我们希望流式传输安全镜头以存储在本地服务器和云中;通过使用灯的面板或电池作为电源连接 IP 摄像机和有线/无线网络设备。

poYBAGOX6F-AHklDAAHpdoWUxEo815.png
 

我们希望 Arduino 网络收集的数据能帮助我们了解我们是否过多地损害了太阳能路灯的自主权;以及由于我们所在地区充足的日照时间而没有收集到多少太阳能。

第一步

第一步是收集数据,所以我们需要构建一个Arduino模块来监控灯的电压和电流;换句话说,就是电池和面板的充放电行为。

下一步将是添加射频通信以将数据传递到中央服务器进行存储和远程监控。

灯及其内部结构

这些灯是我们从中国进口的。幸运的是(或不幸地)供应商收取并发送了双倍数量的灯,但我们对此表示满意,因为我们发现它们非常有用。

它们的价格约为每个 250 美元;手册上说他们可以在没有太阳的情况下运行长达 3 天;IP66防水;平均消耗5W;2 个照明级别,检测到运动时最高 100W;太阳能电池板应使用 25 年;建议每 2-3 年清洁一次 LED;并提到使用 2 年后可能出现电池故障。

铝制机身沉重而坚固。卸下传感器板上的两个螺钉后,可以轻松访问灯的内部。对我们来说幸运的是,设计简单且模块化,并且控制器可以从系统中分离出来,并且有足够的电缆长度来使用。

pYYBAGOX6GSAUpGuAAFEIPwRbLE071.png
 

这些是万用表的第一个数字:

  • 电池:13-15V
  • LED 阵列:60V (高照度模式)
  • 面板:不充电时20V x2A ;充电时15V x2.2A 这意味着〜30W面板。

监控原型

建立受控环境后;尽我所能切割、剥离、连接和保护电缆,这是第一个监控原型:

pYYBAGOX6HGAcCy0AALSBE2QlqM085.png
 

Arduino 输出每秒通过串行通信发送到服务器设备,在我的情况下是我的 Mac 或我的 Raspberry Pi,但您可以使用其他设备。

我在原型中添加了一个蜂鸣器,只是为了确保系统正在运行,因为有时电源设备会因为 USB 电缆损坏而关闭,而且我最初担心可能会烧毁房子。每隔 3 秒,我就会听到一声小小的“哔”声,或者担心它的缺失。

服务器设备正在运行一个 python 脚本来捕获串行输入并将这些行附加到一个输出文本文件中,包括每行的当前日期和时间。每行的值由表格分隔,可以复制粘贴或在任何电子表格程序中打开以进行后处理,如 Excel 或 Open/LibreOffice。

Arduino 代码如下,位于该项目的软件部分。

 
 
 
poYBAGOX6LqAMYYuAA4hCTVekK068.jpeg
 
1 / 2
 

用于捕获和存储的本地服务器

对于本地服务器,此 python 程序“read_serial.py”已添加到我们 RaspberryPi 的主文件夹中:

#!/usr/bin/env python3
import datetime
import serial
import sys
if __name__ == '__main__':
   ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
   ser.flush()
   while True:
       if ser.in_waiting > 0:
           line = ser.readline().decode('utf-8').rstrip()
           now = datetime.datetime.now()
           file_object = open('/home/pi/samples.txt', 'a')
           file_object.write(now.strftime("%Y-%m-%d %H:%M:%S"))
           file_object.write("\t")
           file_object.write(line)
           file_object.write("\n")
           file_object.close()

该脚本可以从终端执行以进行测试,如下所示:

 ./read_serial.py >> samples.txt

输出将附加到文件“samples.txt”中,按 Ctrl+C 可以中断程序。您可以从其他终端使用此命令监控“samples.txt”文件的增长:

tail -f samples.txt

也可以通过按 Ctrl+C 来中断。

为了更长期的运行,最好创建一个系统服务,它会随服务器自动启动,并在服务器关闭之前停止:

cd /lib/systemd/system/
sudo nano read_serial.service

“read_serial.service”文件将具有以下正文:

[Unit]
Description=Read Serial Arduino
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/python /home/pi/read_serial.py
Restart=on-abort
[Install]
WantedBy=multi-user.target

现在让我们设置权限、启用和启动服务:

sudo chmod 644 /lib/systemd/system/read_serial.service
chmod +x /home/pi/read_serial.py
sudo systemctl daemon-reload
sudo systemctl enable read_serial.service
sudo systemctl start read_serial.service

这里有几个有用的命令:

sudo systemctl status read_serial.service
sudo systemctl stop read_serial.service

首次监测

在设置本地服务器并确认软件按预期运行后,是时候在屋顶上设置面板,用长电缆将其连接到我们的监控原型并等待第一批数据。

 
 
 
poYBAGOX6ROADHcSAApmlrYND6o21.jpeg
 
1 / 2
 

这是使用 Arduino 收集的第一批数据的表示:

pYYBAGOX6R2AKZEmAAJjRMORIXI136.png
 

下一步

  • 正常运行数据:收集另外几天的数据。
  • 完全放电数据:覆盖太阳能电池板并收集数据,直到电池放电。
  • 充满电数据:夜间关闭灯并收集数据,直到电池充满电。
  • 外部/寄生负载数据:将我的路由器 (12V 2A) 和调制解调器 (9V 1A) 连接到灯的电池并收集 3 天或更长时间的数据。
  • RF通信:实现Arduinos之间的网格通信;我有兴趣从头开始实施一些东西;重点是减少碰撞和能源消耗。
  • 最终模块:构建微型、防水和可拆卸模块;并将它们安装到灯具中。
  • App :构建用于远程监控的应用程序和服务,包括通过推送通知发出警报。

感谢阅读,我希望在完成每个步骤后更新这个项目。


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

评论(0)
发评论

下载排行榜

全部0条评论

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