在前一篇有关 负担得起的家庭自动化基于树莓派, 我们学会了检查房子水管连接从面板的八个继电器连接到我们 覆盆子 PI.
今天我们将看到如何控制共十六个电器 感谢我们执行上面的电路, 使板给了我 Jordi 的 @electronics.cat 和你你已经可以看到的摘要 硬件自由日; 由相同设计, 和百分百 免费的硬件.
对于此练习,我要去使用 的 PI 的三个分支, 这就是负责适应所有的引脚 GPIO 的 覆盆子 PI 的 3.3V 自 5V 双向和将允许我们对 第二为 PiCam I2C 总线保留工作; 我也会用我用的板继电器 optoacoplados 在上一篇文章中关于家庭自动化.
所有这些都使得在我们的处置 总共有十六个套接字 domotic 两个之间划分 覆盆子, 和与 可扩展性的达 128 情况下 PI 的 3 分支机构, 因为它能让我们利用两辆巴士 I2C 牺牲使用连接到 PiCam 的连接器的可能性.
连接 pi 的三个分支, 我们必须焊接对应第二总线引脚的六 I2C 这并不是工厂的士兵, 那一刻 Jordi 它正在积极推动其板新版本为覆盆子 PI B + 和树莓派模型 2.
我们可以帮助焊针持有两个条状的三 跳线, 但 我们必须确保他们更加吻合我们尽可能在所有的时间 在焊锡他们之前.
我们现在可以连接 PI 的三个分支 到 覆盆子 我以前编辑过 隔离两个板块, 为什么 Jordi 这种塑料使用分隔符.
开展与的连接 中继转接板, 我们必须弯板继电器的针脚 我想要连接到 pi 的三个分支, 帮助我们用一些钳子; 在下一张图片,你可以看到最后的结果.
取决于针脚的位置 VCC 和 吉安达 在我们的接力, 我们将会把这 跳线 一个模块中的继电器, 或另一个位置,投资这些资金; 始终铭记介意, 必须由 USB 供电继电器板.
现在我们将连接我们 继电器的八个输出继电器的适配器板, 是在 PI 的三个分支; 应当指出, 本模块是兼容与四个和八个输出继电器.
模块继电器 optoacoplados | 连接器 P3 | 覆盆子 PI 模型 B |
VCC | + 5V | + 5V |
在 7 | 位 0 | GPIO 29 |
在 6 | 位 1 | GPIO 28 |
在 5 | 位 2 | GPIO 18 |
在 4 | 位 3 | GPIO 7 |
在 3 | 位 4 | GPIO 8 |
在 2 | 位 5 | GPIO 10 |
在 1 | 位 6 | GPIO 9 |
在 0 | 位 7 | GPIO 11 |
吉安达 | 吉安达 | 吉安达 |
现在开始连接 继电器 optoacoplados 板 直接向 GPIO 其他 覆盆子, 在下面的图片你可以看到最终结果.
之间的连接 GPIO 我们 覆盆子 他们将同样 前一篇文章, 然而在这种情况下我添加了所有连接表.
模块继电器 optoacoplados | 覆盆子 PI 模型 B |
VCC | + 5V |
在 1 | GPIO 3 |
在 2 | GPIO 2 |
在 3 | GPIO 24 |
在 4 | GPIO 25 |
在 5 | GPIO 23 |
在 6 | GPIO 27 |
在 7 | GPIO 22 |
在 8 | GPIO 4 |
吉安达 | 吉安达 |
要运行 在 python 中的脚本 我们将在下面看到的网站, 首先,我们要向用户授予权限 www 数据 它是分配给 web 服务器的用户; 为什么 首先,我们将安装 apache web 服务器,正如我们已看到在以前的文章 我们会写 sudo visudo 在终端中和在文件的末尾 我们会将作为 sudoer 添加到 www 数据, 如下图所示的最终结果.
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: ALL
为每个十六个 GPIO 引脚 在本练习中的员工, 我们需要创建一个子目录, 和 在 Python 中的两个脚本; 一个人若要打开, 和其他打开中继, 这里有一个例子与 PIN 11.
#!usr/bin/env/ python
#enciende.py
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(11, GPIO.IN)
#!usr/bin/env/ python
#apaga.py
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(11, GPIO.OUT)
在每个 覆盆子 PI 我们将会把你 十六个脚本 若要打开连接继电器或到 针脚 在每个员工, 你可以参考前面的表中; 的 脚本 对应于 覆盆子 直接从连接 GPIO 中继板会将它们放在目录中 /首页/pi/继电器/gpio.
若要创建目录和子目录的层次结构, 与复制中的程序性的文件 Python 我们将使用这些其他两个 脚本 在 Bash; 第一次会执行在 PI 连接到 PI 的三个分支.
#!/bin/bash
#Raspberry PI con la pi de 3 ramales.
#Creamos la jerarquía de directorios.
mkdir /home/pi/reles/gpio
mkdir /home/pi/reles/gpio/11
mkdir /home/pi/reles/gpio/9
mkdir /home/pi/reles/gpio/10
mkdir /home/pi/reles/gpio/8
mkdir /home/pi/reles/gpio/7
mkdir /home/pi/reles/gpio/18
mkdir /home/pi/reles/gpio/28
mkdir /home/pi/reles/gpio/29
ls /home/pi/reles/gpio
#Y copiamos los scripts
cp enciende.py apaga.py /home/pi/reles/gpio/11
cp enciende.py apaga.py /home/pi/reles/gpio/9
cp enciende.py apaga.py /home/pi/reles/gpio/10
cp enciende.py apaga.py /home/pi/reles/gpio/8
cp enciende.py apaga.py /home/pi/reles/gpio/7
cp enciende.py apaga.py /home/pi/reles/gpio/18
cp enciende.py apaga.py /home/pi/reles/gpio/28
cp enciende.py apaga.py /home/pi/reles/gpio/29
ls /home/pi/reles/gpio/*
其他 十六个脚本 对应的控制 覆盆子 连接到 PI 的三个分支 我们将保持它们在目录中 /var/www/继电器/gpio /.
#!/bin/bash #Raspberry pi con relé compatible con GPIO. #Creamos la jerarquía de directorios. mkdir /var/www/rele/gpio mkdir /var/www/rele/gpio/4 mkdir /var/www/rele/gpio/22 mkdir /var/www/rele/gpio/27 mkdir /var/www/rele/gpio/23 mkdir /var/www/rele/gpio/25 mkdir /var/www/rele/gpio/24 mkdir /var/www/rele/gpio/2 mkdir /var/www/rele/gpio/3 ls /var/www/rele/gpio #Y copiamos los scripts. cp enciende.py apaga.py /var/www/rele/gpio/4 cp enciende.py apaga.py /var/www/rele/gpio/22 cp enciende.py apaga.py /var/www/rele/gpio/27 cp enciende.py apaga.py /var/www/rele/gpio/23 cp enciende.py apaga.py /var/www/rele/gpio/25 cp enciende.py apaga.py /var/www/rele/gpio/24 cp enciende.py apaga.py /var/www/rele/gpio/2 cp enciende.py apaga.py /var/www/rele/gpio/3 ls /var/www/rele/gpio/*
在这个时候,我们必须创建 密钥对 所以, 覆盆子 PI 它是页后,可以运行 脚本 连接到 PI 的三个分支 远程, 正如用户将做它 www 数据必须指定一个密码 为了登录并代表您创建密钥对.
#Asignamos un password al usuario www-data
usuario@maquina:~$ passwd www-data
Introduzca la nueva contraseña de UNIX:
Vuelva a escribir la nueva contraseña de UNIX:
passwd: contraseña actualizada correctamente
#Creamos el par de claves RSA de 4096 bits
www-data@maquina:~$ ssh-keygen -b 4096 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/www/.ssh/id_rsa.
Your public key has been saved in /var/www/.ssh/id_rsa.pub.
The key fingerprint is:
5a:dc:bd:af:0d:ae:9d:9f:bb:c2:d4:5b:dd:67:8d:18 tmo@tmo-K55A
The key's randomart image is:
+--[ RSA 4096]----+
| |
| |
| |
| . . .E |
| S . .+ .+|
| o o.o B|
| . oo +.|
| oo=.. |
| ..=+Bo |
+-----------------+
#Copiamos la clave pública a la otra raspberry
www-data@maquina:~$ ssh-copy-id pi@192.168.*.***
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'pi@192.168.*.***'"
and check to make sure that only the key(s) you wanted were added.
一旦创建 公共和私有密钥对, 我们会检查我们可以 通过访问 SSH 而无需输入密码; 为 由同一网站的不同覆盆子继电器 同一本地网络上, 在这种情况下 我已经连接他们由于小免费路由器 WRTNode.
然后我们将创建我们将包含的主页 按钮输入的类型 你将不得不按执行 脚本 在 Python 从 web 界面使用 post 方法; 对于本例中我将显示只有四个开始与 web,这篇文章不是太长.
<html>
<head>
<!--/var/www/rele/index.php-->
</head>
<body>
<!--GPIO11-->
<form action="" method="post">
Enchufe 0 [GPIO 11 - P3 Bit 7 - IN1] <input type="submit" name="encender11" value="Encender">
<input type="submit" name="apagar11" value="Apagar">
</form>
<!--GPIO04-->
<form action="" method="post">
Electrodomestico 0 [GPIO 04 - P4 Bit 7 - IN1] <input type="submit" name="encender4" value="Encender">
<input type="submit" name="apagar4" value="Apagar">
</form>
<br></br>
<!--GPIO09-->
<form action="" method="post">
Enchufe 1 [GPIO 09 - P3 Bit 6 - IN2] <input type="submit" name="encender9" value="Encender">
<input type="submit" name="apagar9" value="Apagar">
</form>
<!--GPIO22-->
<form action="" method="post">
Electrodomestico 1 [GPIO 22 - P4 Bit 6 - IN2] <input type="submit" name="encender22" value="Encender">
<input type="submit" name="apagar22" value="Apagar">
</form>
</body>
</html>
<?php
// Funciones PHP del pin GPIO 11
if ($_POST[encender11]) {
$a- exec("sudo python /var/www/rele/gpio/11/enciende.py");
echo $a;
}
if ($_POST[apagar11]) {
$a- exec("sudo python /var/www/rele/gpio/11/apaga.py");
echo $a;
}
// Fin de las funciónes del pin GPIO 11
// Funciones PHP del pin GPIO 9
if ($_POST[encender9]) {
$a- exec("sudo python /var/www/rele/gpio/9/enciende.py");
echo $a;
}
if ($_POST[apagar9]) {
$a- exec("sudo python /var/www/rele/gpio/9/apaga.py");
echo $a;
}
// Fin de las funciónes del pin GPIO 9
// Funciones PHP del pin GPIO 04
if ($_POST[encender4]) {
$a- exec("ssh root@192.168.*.*** python /home/pi/reles/gpio/4/enciende.py");
echo $a;
}
if ($_POST[apagar4]) {
$a- exec("ssh root@192.168.*.*** python /home/pi/reles/gpio/4/apaga.py");
echo $a;
}
// Fin de las funciónes del pin GPIO 04
// Funciones PHP del pin GPIO 22
if ($_POST[encender22]) {
$a- exec("ssh root@192.168.*.*** python /home/pi/reles/gpio/22/enciende.py");
echo $a;
}
if ($_POST[apagar22]) {
$a- exec("ssh root@192.168.*.*** python /home/pi/reles/gpio/22/apaga.py");
echo $a;
}
// Fin de las funciónes del pin GPIO 22
?>
如果我想要喂他一切从单一的插座, 必须 旁路所有负输出 220V 继电器.
与电源的连接 我们要让他们的最后一项与相同的方式, 括之间的插头和开关方案 小型断路器 便于跟踪的实践.
在下一篇文章中对 负担得起的家庭自动化 我们将学会利用两辆巴士 I2C 由于对 PI 的三个分支, 我们会 概念检查证明 128 可互换的电器指示灯.
如果你愿意,你可以跟着我 推特, Facebook, 谷歌 +, LinkedIn, 或它分享这份出版物下方的按钮, 如果您有任何疑问或建议,请不要犹豫,置评.
很好的帖子, 继续!!
一个问题, 我想要也容易覆盆子系统安装家庭自动化, 但不是如何例如知道光的现状,盲或一些设备, 如果它已被手动激活.
我说这为例, 如果我想要打开一盏灯从手机而不是在那状态是在那个时候.
Salu2
你好,伊戈尔 ·, 谢谢你的评论.
我突然想起,你可以使用某种类型的验证达到你想要控制的照明的张力传感器, 并通知它是您在实时的 web 服务器,要知道在任何时候,如果它是对或不.
我来自墨西哥的朋友和我可以 arquirir 模块三分支
你好以色列, 谢谢你的评论.
您可以从本网站购买它:
http://electronics.cat/php/common/index.php?lang=en&page=508
这些都是购买须知:
http://electronics.cat/php/common/index.php?lang=en&page=buy