电子说
黄昏至黎明开关和计时器开关都是使灯光自动化的便捷方法。如果您可以将两者结合起来,甚至将它们连接到互联网上,以获得真正的智能照明系统,那不是很好吗?
Raspberry Pi,一个继电器,一个光传感器和一些仅需代码即可实现此自动照明必杀技。
所需条件
用于光感应智能开关的组件易于采购。您将需要:
任何运行Raspbian的模型Raspberry Pi。
在亚马逊上很容易找到的中继板。
Adafruit TSL2561发光度传感器
跳线。
一些灯可以自动运行!
光感应智能开关的工作原理
使用继电器的方式与我们自动车库门开启器项目的方式相同,您可以对Raspberry Pi进行编程,以在固定时间打开和关闭照明电路。在混合物中添加一个亮度传感器,意味着Pi可以检测环境光水平,并选择仅在真正需要时才打开灯光。
因为Pi是可以连接的微型计算机连接到网络,您也可以将其设置为通过互联网进行控制。您的智能灯将具有三个输入来确定它们何时亮起:
已编程的时间表。
环境光水平。
超驰信号
第1步:将Raspberry Pi连接到中继
如果您不熟悉使用GPIO,请先阅读所需的所有内容了解Raspberry Pi的GPIO引脚。
首先,检查您的中继板上是否有将VCC和JD-VCC引脚连接在一起的跳线。
关闭所有电源,然后按如下所示将中继板连接到您的Pi:
将Pi针2(5v)连接到继电器板上的JD-VCC。
Pi针6(GND)到继电器板上的GND。
Pi针15(GPIO) 22)到中继板上的IN1
Pi引脚17(3.3v)到中继板上的VCC。
第2步:连接光度传感器
TSL2561是一种光传感器,可以检测红外光,全光谱和人类可见光。它可以向Raspberry Pi发送非常精确的数字读数。传感器报告的光线水平范围为0.1(无光照)至40,000(明亮的太阳)。
TSL2561板使用i2c协议与Raspberry Pi通讯。 I2C仅需要两个连接,一个用于时钟,以使两个设备保持同步,另一个用于传输数据。当然,勒克斯传感器也需要一定的功率,因此总共需要进行四个连接:
将Pi引脚1(3.3v)连接到勒克斯传感器上的Vin(或VCC)li》
将Pi针3(SDA)连接到流明传感器上的SDA
将Pi针5(SCL)连接到勒克斯传感器上的SCL
将Pi针9( GND)到lux传感器上的GND
第3步:配置和安装依赖项
在进行进一步操作之前,则需要检查Raspberry Pi上是否已启用I2C(默认情况下已禁用)。在终端中输入以下内容:
sudo raspi-config
选择 Interface Options》 P5 I2C,,然后选择 Yes 。。 》
点击 Enter ,然后选择 Finish 退出配置屏幕。重新启动Pi,以使更改生效:
sudo reboot
Pi能够与传感器板通信需要一些依赖项。键入以下命令:
sudo apt-get update
sudo apt-get install -y python-smbus
sudo apt-get install -y i2c-tools
您可以通过键入以下内容来检查一切是否正常:
sudo i2cdetect -y 1
如果您的依赖项是已安装并且您的勒克斯传感器正确连接,您将看到类似以下的响应:
在此处,该实用程序正在报告已找到I2C设备(勒克斯传感器)位于I2C地址39。
您还没有完全解决依赖关系。您还将需要一些库。首先,创建一个文件夹,以将与此项目相关的所有内容保存在:
mkdir ~/lighting
cd ~/lighting
下一步,下载bottle,这是一个轻量级的框架,可以在Pi上创建一个简单的Web服务器。您将使用它来控制来自网络的灯光。
wget https://bottlepy.org/bottle.py
您需要的其他库位于Github上,因此,如果您的Raspberry Pi还没有安装了Git,现在将其添加:
sudo apt-get install git
现在克隆两个库,如下所示:
git clone https://github.com/adafruit/Adafruit_Python_GPIO.git
git clone https://github.com/adafruit/Adafruit_Python_PureIO.git
最后,通过创建一个新文件来创建测试脚本:
nano test.py
粘贴以下代码(由Adafruit提供):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
from tsl2561 import TSL2561
if __name__ == “__main__”:
tsl = TSL2561(debug=True)
print(tsl.lux())
按屏幕上的说明按 Ctrl + X 保存。
完成后,运行测试脚本:
python test.py
如果一切都已安装并且可以正常工作,您将获得一个电话号码。该数字是传感器的照度读数。尝试阻挡或移动传感器,使其获得更多或更少的光线。然后再次运行测试脚本,并查看数字的变化。
步骤4:创建自动化脚本
Raspberry Pi在天黑时会打开灯光,但也会切换他们在某些时候离开。例如,您可能希望在晚上天黑时打开灯,然后在午夜关闭以节省电。他们可以在清晨再次亮起,然后在天亮时自行关闭。
要管理具有多个计时区域的日程表,有两种不同的脚本。如果您想在黑暗中打开灯,则每分钟就会运行一个( onzone.py )。另一个( offzone.py )会在您希望熄灭的时间内每分钟运行一次,而不管照明强度如何。
脚本将计划使用cron作业运行。通过选择每个脚本在白天和晚上的哪个小时运行,可以轻松设置灯光自动点亮的时间。您可以根据需要设置任意的打开和关闭时间段。
以及用于自动控制灯光的脚本,还有第三个脚本可以管理覆盖情况。这样一来,无论环境光线如何,您都可以远程打开灯光。
脚本1:ON区域
此Python脚本将在您需要的每一分钟运行如果天黑了,灯会亮。通过将此命令复制并粘贴到终端中来下载脚本:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
每次运行onzone.py时,它将从传感器获取一个勒克斯值,以查看是否是黑暗的。如果是,它将检查灯光是否亮起或熄灭。如果它们关闭,它将打开它们。如果不是很暗,脚本将查看指示灯是否亮着。如果是的话,除非它们被覆盖,否则它将关闭它们。
脚本使用名为 lowlux 的变量来确定在什么地方足够暗以打开灯。您可以通过更改onzone.py顶部附近的以下行中的值来将其更改为适合您自己的安装的方式:
lowlux = 50 脚本2:OFF区域
该脚本将在每天要关闭的灯光下运行,除非它们已被覆盖。下载脚本:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
此脚本不在乎它的亮或暗。它的工作只是简单地将灯关掉(除非已被覆盖)。
脚本3:覆盖服务器
此脚本创建了一个简单的Web服务,该服务可以接受命令以执行以下操作:
无论环境光线水平如何,都将灯打开几分钟。
将灯关闭。
找出当前灯是开还是关。
找出当灯被覆盖时应保持多长时间。
下载脚本:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
在继续下一步之前,请运行offzone.py脚本,如下所示:
python offzone.py
这将创建脚本用来跟踪所有内容的控制文件。
步骤5:安排脚本
您的Raspberry Pi可以使用cron运行自动化脚本。设置时间表如下:
sudo crontab -e
将这两行粘贴到文本编辑器中:
* 7,8,9,17,18,19,20,21,22,23 * * * python /home/pi/lighting/onzone.py 》 NULL
* 0,1,2,3,4,5,6,10,11,12,13,14,15,16 * * * python /home/pi/lighting/offzone.py 》 NULL
注意:如果您登录Raspberry Pi的用户名不是默认的 pi ,请相应地更改路径。
列出所有您希望在天黑时灯亮的时间。在第一行。所有要熄灭的时间都在第二行。
现在将替代脚本设置为在Pi启动时自动运行:
sudo nano /etc/rc.local
将此行粘贴在文件底部,然后保存并退出:
nohup python /home/pi/lighting/lightserver.py &
最后,重新启动Raspberry Pi,以便可以检查服务器脚本是否以以下方式加载:它应该
sudo reboot 第6步:测试继电器
在连接灯之前,请使用替代功能测试一切是否正常。在与Pi相同的网络上的Web浏览器中键入以下内容,用您自己的Raspberry Pi的地址替换IP地址:
11.22.33.44:1234/overrideon/3
如果一切正常,您可以会听到继电器的喀哒声,浏览器会回答灯已打开三分钟。
继电器闭合时,您可以测试其他倍率功能。这将告诉您由于覆盖而使指示灯保持点亮状态还有多分钟:
11.22.33.44:1234/getoverrideremaining
这应该告诉您指示灯点亮:
11.22.33.44:1234/lightstatus
最后,您可以使用以下命令再次将其关闭:
11.22.33.44:1234/overrideoff
继电器将在打开时发出咔嗒声。
第7步:连接灯光
在将灯光连接到继电器之前,请先关闭并拔下Raspberry Pi。使用继电器板上的常开(NO)连接器代替常规开关,如下所示:
最后,您可以安装勒克斯传感器在可以捕获环境光水平的地方。请注意,如果TSL2561在直射的阳光下会报告为饱和,因此,如果可能的话,最好将其保持在阴暗处。
更多Raspberry Pi项目供您尝试
通过在Web浏览器中键入命令来远程覆盖新的智能照明设置非常麻烦。更好的方法是连接Amazon Echo之类的东西,以使事情变得更容易。将IFTTT上的Alexa服务和Webhooks服务结合在一起是添加语音控制的简单方法。
请参阅我们的使用IFTTT的指南来帮助您入门。
另一种选择是使用Siri快捷方式。一个带有菜单的快捷方式可以查询灯的状态,并使用覆盖功能将其打开和关闭。
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !