PI framboesa - implementação de um sistema de automação residencial acessível [Parte II]

No post anterior sobre automação residencial acessível baseada no Raspberry PI, Aprendemos a verificar ligações de rede a casa de um painel de oito relés conectados a nossa PI de framboesa.

Screenshot do 2015-02-01 20:20:47Hoje vamos ver como controlar um total de dezesseis electrodomésticos Graças ao circuito que implementamos acima, e permitir que as placas tem-me dado Jordi de @electronics.cat e você já pode ver o resumo do Dia da liberdade de hardware; projetado pelo mesmo, e cem por cento hardware livre.

Para esta prática, eu vou usar o Três ramos do PI, que é responsável por adaptar todos os pinos GPIO de PI de framboesa de 3.3V Para 5V Bi-direcional e nos permitirá trabalhando com o segundo reservado para o barramento PiCam I2C; Também vou usar optoacoplados de relés de placa usei no artigo anterior sobre automação residencial.

Pi3Ramas

IP em três intervalos desenhado por @JordiBinefa.

Tudo isso põe à nossa disposição um total de dezesseis soquetes de domótica dividido entre dois Framboesa, e com capacidade de expansão de até 128 no caso do Do PI 3 Ramos, Desde que nos permite aproveitar-se dos dois ônibus I2C sacrificar a possibilidade de utilizar o conector para o PiCam.

Para conectar os três ramos do pi, Nós deve soldar os seis correspondentes aos pinos do segundo ônibus I2C que não são soldados de fábrica, no momento Jordi Ele está trabalhando ativamente em uma nova versão da sua placa para Raspberry PI B + e modelos Raspberry PI 2.

CÂMERA DIGITAL OLYMPUSPodemos ajudar a soldar os pinos segurando as duas tiras de três com jumpers, Mas Temos de assegurar que eles estão mais alinhados nos possível em todos os momentos antes de soldá-los.

Agora podemos conectar o Três ramos do PI para o Framboesa Eu anteriormente editado isolando as duas placas, Para quê Jordi Usar separadores tais plásticos.

O pi de três ramos e plástico índice divisor conector P3.

set05_08_v02_P2P3P4

Esquema do conector P3 feita pelo @JordiBinefa.

Realizar a conexão com o Placa de adaptador de retransmissão, Nós deve dobrar os pinos do relé bordo Eu quero ligar para três ramos do pi, ajudando-nos com um alicate; na próxima foto você pode ver o resultado final.

Dependendo da posição dos pinos VCC e GND no nosso revezamento, Vamos colocar isto jumper Relés em um módulo, ou outra posição para investi-los; tendo sempre em mente que Placa de relé deve ser alimentada por USB.

IN1 IN2 IN3 EM 4 VCC GND

IN1 IN2 IN3 EM 4 GND VCC

Agora que irá se conectar nosso relé de oito saídas para a placa de adaptador de relés, e é o Três ramos do PI; Note-se que Este módulo é compatível com quatro e oito saídas de relés.

Então podemos ver a tabela de conexões entre o Módulo de relé, o Três ramos do PI, e PI de framboesa.

Módulo de relés optoacoplados Conector P3 Modelo de framboesa PI B
VCC + 5V + 5V
EM 7 Pouco 0 GPIO 29
EM 6 Pouco 1 GPIO 28
EM 5 Pouco 2 GPIO 18
EM 4 Pouco 3 GPIO 7
EM 3 Pouco 4 GPIO 8
EM 2 Pouco 5 GPIO 10
EM 1 Pouco 6 GPIO 9
EM 0 Pouco 7 GPIO 11
GND GND GND

Agora proceder à conexão do optoacoplados placa de relés diretamente para o GPIO do outro Framboesa, na imagem abaixo você pode ver o resultado final.

As conexões entre o GPIO de nossa Framboesa Eles serão os mesmos como em o artigo anterior, No entanto, neste caso eu tenha adicionado todos os da tabela de conexões.

Módulo de relés optoacoplados Modelo de framboesa PI B
VCC + 5V
EM 1 GPIO 3
EM 2 GPIO 2
EM 3 GPIO 24
EM 4 GPIO 25
EM 5 GPIO 23
EM 6 GPIO 27
EM 7 GPIO 22
EM 8 GPIO 4
GND GND

Para executar o scripts em python da web que veremos abaixo, Primeiro temos que dar permissões para o usuário www-dados É o usuário atribuído ao servidor web; Para quê Primeiro vamos instalar o servidor de web apache como vimos neste artigo anterior e Nós escreveremos sudo visudo no terminal e no final do arquivo. Nós adicionaremos a www-dados como sudoer, sendo o resultado final como abaixo.

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

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

Para cada um dos dezesseis pinos GPIO empregados nesta prática, Precisamos criar um subdiretório, e dois scripts em Python; um para ligar, e o outro para ativar o relé, Aqui está um exemplo com o 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)

Em cada um do PI de framboesa Vamos colocar seu Scripts de dezesseis para ativar os relés conectados ou para o pinos trabalhadores em cada um, que você pode consultar nas tabelas anteriores; o scripts de correspondente para o Framboesa conectado diretamente a partir do GPIO para retransmitir a placa irá colocá-los no diretório /Casa/pi/relés/gpio.

Para criar a hierarquia de diretórios e subdiretórios, e copiar os arquivos programados em Python Usaremos estes outros dois scripts de em Brito; o primeiro será que executar no PI ligado para o Três ramos do 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/*

Os outros Scripts de dezesseis correspondente para o controle da Framboesa ligado para o Três ramos do PI Nós irá mantê-los no diretório /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/*

Neste momento temos de criar um par de chaves para que o PI de framboesa É a página para executar o scripts de o ligadas para o Três ramos do PI remotamente, como o usuário que irá fazê-lo é www-dados devem atribuir uma senha para iniciar sessão e criar o par de chaves em seu nome.

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

Uma vez criado o par de chaves pública e privada, Vamos verificar que podemos acessar pelo SSH sem digitar a senha; para operado da mesma web de diferentes relés de framboesa na mesma rede local, Neste caso Liguei-lhes graças o pequeno enciclopédia roteador WRTNode.

WRTNode_ETHEm seguida, vamos criar nossa página inicial, que conterá o tipo de entrada de botões Você terá que pressionar para executar o scripts de em Python através da interface web usando o método post; para este exemplo vou mostrar na web com apenas quatro começa assim que o artigo não é muito tempo.

<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 eu quero alimentá-lo tudo de uma única tomada, deve desvio negativo saídas 220V Relé.

As ligações à rede eléctrica Nós vamos fazê-los da mesma forma como a última entrada, incluído entre os regimes de plug e interruptor disjuntor miniatura para facilitar o acompanhamento da prática.

Relé diferencial de plug

Na próxima edição sobre automação residencial acessível Vamos aprender a tirar proveito dos dois ônibus I2C Graças ao Três ramos do PI, e faremos um prova de verificação de conceito 128 LEDs intercambiáveis pelos aparelhos electrodomésticos.

Se você gosta você pode me seguir no Twitter, Facebook, Google +, LinkedIn, ou compartilhá-lo com os botões sob esta publicação, Se você tiver dúvidas ou sugestões não hesite em comentar.

Ajude-na alcançar mais leitores Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 reflexões sobre"PI framboesa - implementação de um sistema de automação residencial acessível [Parte II]

  1. Mensagens muito boas, continua!!
    Uma pergunta, Eu quero instalar também uma automação residencial com fácil sistema de framboesa, Mas não é como por exemplo, para saber o status de uma luz,cegos ou algum dispositivo, Se tiver sido ativada manualmente.
    Digo isso por exemplo, Se eu quero acender a luz do telefone mas não ser nesse estado é naquela época.

    Salu2

    • Olá, Igor., Obrigado pelo seu comentário.

      Ocorre-me que você poderia usar algum tipo de sensor que verifica a tensão atinge a iluminação que pretende controlar, e notificar o servidor web em tempo real para saber a qualquer momento, se é ou não.

Deixar uma resposta