覆盆子 PI-實施負擔得起的家庭自動化系統 [第二部分]

在前一篇有關 負擔得起的家庭自動化基於樹莓派, 我們學會了檢查房子水管連接從面板的八個繼電器連接到我們 覆盆子 PI.

螢幕截圖 2015-02-01 20:20:47今天我們將看到如何控制共十六個電器 感謝我們執行上面的電路, 使板給了我 Jordi@electronics.cat 和你你已經可以看到的摘要 硬體自由日; 由相同設計, 和百分百 免費的硬體.

對於此練習,我要去使用 PI 的三個分支, 這就是負責適應所有的引腳 GPIO覆盆子 PI3.3V5V 雙向和將允許我們對 第二為 PiCam I2C 匯流排保留工作; 我也會用我用的板繼電器 optoacoplados 在上一篇文章中關於家庭自動化.

Pi3Ramas

在由 @JordiBinefa 設計的三個範圍中的 IP.

所有這些都使得在我們的處置 總共有十六個通訊端 domotic 兩個之間劃分 覆盆子, 和與 可擴充性的達 128 情況下 PI 的 3 分支機搆, 因為它能讓我們利用兩輛巴士 I2C 犧牲使用連接到 PiCam 的連接器的可能性.

連接 pi 的三個分支, 我們必須焊接對應第二匯流排引腳的六 I2C 這並不是工廠的士兵, 那一刻 Jordi 它正在積極推動其板新版本為覆盆子 PI B + 和樹莓派模型 2.

奧林巴斯數碼相機我們可以説明焊針持有兩個條狀的三 跳線, 但 我們必須確保他們更加吻合我們盡可能在所有的時間 在焊錫他們之前.

我們現在可以連接 PI 的三個分支覆盆子 我以前編輯過 隔離兩個板塊, 為什麼 Jordi 這種塑膠使用分隔符號.

Pi 為三個分支和塑性指數分頻器連接器 P3.

set05_08_v02_P2P3P4

由 @JordiBinefa P3 連接器的方案.

開展與的連接 中繼轉接板, 我們必須彎板繼電器的針腳 我想要連接到 pi 的三個分支, 説明我們用一些鉗子; 在下一張圖片,你可以看到最後的結果.

取決於針腳的位置 VCC吉安達 在我們的接力, 我們將會把這 跳線 一個模組中的繼電器, 或另一個位置,投資這些資金; 始終銘記介意, 必須由 USB 供電繼電器板.

IN1 IN2 第 3 IN4 VCC GND

IN1 IN2 第 3 IN4 GND VCC

現在我們將連接我們 繼電器的八個輸出繼電器的配接器板, 是在 PI 的三個分支; 應當指出, 本模組是相容與四個和八個輸出繼電器.

然後我們可以看到的表之間的連接 繼電器模組, 的 PI 的三個分支, 和 覆盆子 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.

WRTNode_ETH然後我們將創建我們將包含的主頁 按鈕輸入的類型 你將不得不按執行 腳本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]&nbsp;<input type="submit" name="encender11" value="Encender">
 <input type="submit" name="apagar11" value="Apagar">
 </form>
 &nbsp;&nbsp;

 <!--GPIO04--> 
 <form action="" method="post">
 Electrodomestico 0 [GPIO 04 - P4 Bit 7 - IN1]&nbsp;<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]&nbsp;<input type="submit" name="encender9" value="Encender">
 <input type="submit" name="apagar9" value="Apagar">
 </form>
 &nbsp;&nbsp;

 <!--GPIO22--> 
 <form action="" method="post">
 Electrodomestico 1 [GPIO 22 - P4 Bit 6 - IN2]&nbsp;<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, 或它分享這份出版物下方的按鈕, 如果您有任何疑問或建議,請不要猶豫,置評.

説明我們達成更多的讀者 Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 思考"覆盆子 PI-實施負擔得起的家庭自動化系統 [第二部分]

  1. 很好的帖子, 繼續!!
    一個問題, 我想要也容易覆盆子系統安裝家庭自動化, 但不是如何例如知道光的現狀,盲或一些設備, 如果它已被手動啟動.
    我說這為例, 如果我想要打開一盞燈從手機而不是在那狀態是在那個時候.

    Salu2

    • 你好 Igor, 謝謝你的評論.

      我突然想起,你可以使用某種類型的驗證達到你想要控制的照明的張力感應器, 並通知它是您在即時的 web 伺服器,要知道在任何時候,如果它是對或不.

留言