Raspberry PI - implementazione di un sistema di domotica a prezzi accessibili [Parte II]

Nel post precedente circa Domotica accessibile basato su Raspberry PI, Abbiamo imparato a controllare le connessioni di rete di casa da un pannello di otto relè collegato al nostro Raspberry PI.

Screenshot di 2015-02-01 20:20:47Oggi vedremo come controllare un totale di sedici elettrodomestici Grazie al circuito che abbiamo implementato sopra, e abilitazione tavole mi ha dato Jordi di @electronics.cat e già poteva vedere nel riepilogo della Giornata della libertà di hardware; progettato dallo stesso, e cento per cento hardware libero.

Per questa pratica, ho intenzione di utilizzare il Tre rami di PI, che è responsabile per adattare tutti i perni GPIO di Raspberry PI di 3.3V A 5V bi-direzionalmente e ci permetterà di lavorando con il secondo riservato per il bus PiCam I2C; Anche io uso piastra relè optoacoplados ho usato nel precedente articolo su Domotica.

Pi3Ramas

IP in tre gamme progettato da @JordiBinefa.

Tutto questo mette a nostra disposizione un totale di sedici Sockets domotica diviso tra due Lampone, e con espandibilità fino a 128 nel caso della Di PI 3 rami, Quanto ci permette di sfruttare i due bus I2C sacrificare la possibilità di utilizzare il connettore per il PiCam.

Per collegare tre rami di pi, Noi dobbiamo saldare sei pin corrispondente al secondo bus I2C che non sono soldati di fabbrica, al momento Jordi Si sta attivamente lavorando su una nuova versione del suo piatto per Raspberry PI B + e modelli di Raspberry PI 2.

OLYMPUS FOTOCAMERA DIGITALEPossiamo contribuire a saldare i perni che tengono le due strisce di tre con ponticelli, ma Dobbiamo fare in modo che sono più allineati ci possibile in ogni momento prima della loro saldatura.

Ora possiamo collegare la Tre rami di PI per la Lampone In precedenza ho modificato le due piastre di isolamento, Per cosa Jordi Utilizzare i separatori di tali materie plastiche.

Il pi di tre rami e plastica indice divisore connettore P3.

set05_08_v02_P2P3P4

Schema del connettore P3 fatto da @JordiBinefa.

Effettuare il collegamento con il Piastra adattatrice relè, Noi dobbiamo piegare i piedini del relè Board Vorrei collegare tre rami di pi, aiutandoci con una pinza; nella foto successiva si vede il risultato finale.

A seconda della posizione dei perni VCC e GND nel nostro relè, Mettiamo questo Ponticello relè in un modulo, o un'altra posizione per investirli; sempre tenendo a mente che Piastra di relè deve essere alimentata da USB.

IN1 IN2 IN3 IN4 VCC GND

IN1 IN2 IN3 IN4 GND VCC

Ora ci si connetterà il nostro relè di otto uscite per la piastra dell'adattatore di relè, ed è nella Tre rami di PI; dovrebbe essere notato che Questo modulo è compatibile con quattro e otto uscite a relè.

Allora possiamo vedere la tabella delle connessioni tra la Modulo relè, il Tre rami di PI, e Raspberry PI.

Modulo relè optoacoplados Connettore P3 Modello di lampone PI B
VCC + 5V + 5V
IN 7 Po ' 0 GPIO 29
IN 6 Po ' 1 GPIO 28
IN 5 Po ' 2 GPIO 18
IN 4 Po ' 3 GPIO 7
IN 3 Po ' 4 GPIO 8
IN 2 Po ' 5 GPIO 10
IN 1 Po ' 6 GPIO 9
IN 0 Po ' 7 GPIO 11
GND GND GND

Ora procedere per collegare il relè optoacoplados piastra direttamente alla GPIO di altro Lampone, nell'immagine sottostante potete vedere il risultato finale.

Le connessioni tra la GPIO del nostro Lampone Essi saranno lo stesso come in precedente articolo, Tuttavia in questo caso ho aggiunto tutti della tabella collegamenti.

Modulo relè optoacoplados Modello di lampone PI B
VCC + 5V
IN 1 GPIO 3
IN 2 GPIO 2
IN 3 GPIO 24
IN 4 GPIO 25
IN 5 GPIO 23
IN 6 GPIO 27
IN 7 GPIO 22
IN 8 GPIO 4
GND GND

Per eseguire la script in python del web che vedremo più avanti, Prima dobbiamo dare le autorizzazioni per l'utente www-data È l'utente assegnato al server web; Per cosa Prima si installa il server web apache come abbiamo visto nel precedente articolo e scriveremo sudo visudo nel terminale e alla fine del file Aggiungeremo al www-data come sudoer, essendo il risultato finale come di seguito.

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
pi ALL=(ALL) NOPASSWD: ALL
www-data ALL=(ALL) NOPASSWD: ALL

Per ognuno dei sedici pin GPIO impiegati in questa pratica, Abbiamo bisogno di creare una sottodirectory, e due script in Python; uno per accendere, e l'altro per attivare il relè, Ecco un esempio con il 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)

In ciascuna del Raspberry PI Metteremo il tuo Script di sedici per attivare i relè collegati o alla perni dipendenti in ogni, che puoi consultare nelle tabelle precedenti; il script corrispondente per la Lampone direttamente collegate con il GPIO per l'inoltro di piastra li posto nella directory /Home/pi/relè/gpio.

Per creare la gerarchia di directory e sottodirectory, e copiare i file programmati in Python Usiamo questi altri due script in Bash; il primo sarà che eseguire nella PI collegato per il Tre rami di 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/*

Gli altri Script di sedici corrispondente al controllo dei Lampone collegato per il Tre rami di PI Li teniamo nella directory /var/www/relè/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/*

In questo momento dobbiamo creare un coppia di chiavi modo che il Raspberry PI È la pagina per eseguire il script delle unità periferiche per il Tre rami di PI in modalità remota, come è l'utente che lo farà www-data deve assegnare una password al fine di effettuare il login e creare la coppia di chiavi per vostro conto.

#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.

Una volta creato il coppia di chiavi pubblica e privata, Noi verificheremo che possiamo per accedere a SSH senza immettere la password; per relè di lampone operati dal web stesso di diverse sulla stessa rete locale, In questo caso Li ho collegato grazie al piccolo router gratis WRTNode.

WRTNode_ETHPoi creeremo la nostra home page, che conterrà il tipo di ingresso pulsanti sarà necessario premere per eseguire la script in Python dall'interfaccia web utilizzando il metodo post; in questo esempio vi mostrerò il web con solo quattro inizia così che l'articolo non è troppo lungo.

<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
?>

Se voglio dargli tutto da una singola presa, deve bypass tutti negativi uscite 220V Relè di.

Le connessioni alla rete elettrica Faremo loro allo stesso modo come l'ultima voce, racchiuso tra i regimi di spina e interruttore interruttori miniaturizzati per facilitare il monitoraggio delle prassi.

Relè differenziale spina

Nella prossima puntata su automazione della casa a prezzi accessibili Impareremo a sfruttare i due bus I2C Grazie alla Tre rami di PI, e faremo un prova di concetto controllo 128 LED intercambiabili da apparecchi elettrici.

Se si desidera è possibile seguire su Twitter, Facebook, Google +, LinkedIn, o condividerlo con i pulsanti sotto questa pubblicazione, Se avete domande o suggerimenti, non esitate a commentare.

Aiutaci a raggiungere più lettori Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 Thoughts on"Raspberry PI - implementazione di un sistema di domotica a prezzi accessibili [Parte II]

  1. Ottimo post, continua!!
    Una domanda, Vorrei anche installare una domotica con facile sistema di lampone, ma non è come ad esempio per conoscere lo stato di una luce,cieco o un dispositivo, Se è stato attivato manualmente.
    Dico questo per esempio, Se ho voglia di accendere una luce dal telefono ma non essere in tale stato a quel tempo.

    Salu2

    • Ciao Igor, Grazie per il tuo commento.

      Mi viene in mente che si potrebbe usare qualche tipo di sensore che verifica la tensione che sta raggiungendo l'illuminazione che si desidera controllare, e notificare che il server web in tempo reale di sapere in qualsiasi momento se è o non è.

Lasciare una risposta