Ir al contenido principal

Sistema domótico de 4 relés



1) Crear un servidor Apache de páginas web
sudo apt-get update && sudo apt-get upgrade
sudo apt-get install apache2
sudo apt-get install php5 libapache2-mod-php5
sudo service apache2 restart

2) Dar permisos de acceso
6) Asignaremos como propietarios mediante ssh al usuario y grupo www-data; lo añadiremos al grupo gpio, y acto seguido reiniciaremos para aplicar los cambios.
ssh pi@192.168.1.* -C sudo chown www-data:www-data /var/www/html/index.php
ssh pi@192.168.1.* -C sudo usermod -a -G gpio www-data
ssh pi@192.168.1.* -C sudo reboot

3) Hacer las conexiones entre el sistema de relés y la Pi

Raspberry PI Modelo B+/2/3

Modulo relés de cuatro canales
   + 5V + 5V
   GPIO 4
IN 1
   GPIO 17
IN 2
   GPIO 27
IN 3
   GPIO 22
IN 4
GND GND

4) Generar un archivo index.php, en el directorio de la pi: /var/www/html/


Código para guardar como index.php



<html>

<!--Panel de control - Sistema domotico libre para un relé de 4 salidas-->
<!--Escrito para un relé de 4 canales IN1 al IN4 y acoplarlo con la Raspberry Pi A+/B+ -->

<!--IDEA ORIGINAL DE: Peatonet http://www.peatonet.com/raspberry-pi-implementando-un-sistema-domotico-asequible-parte-iii/ -->
<!--MODIFICADO POR: Carlos Ávalos. https://chitoraspberrypi.blogspot.com.es/ -->

<head>
<title>Panel de control - Sistema domotico libre para un relé de 4 salidas</title>
</head>


<!--VISUALIZACIÓN DE LOS BOTONES EN LA WEB Y CREACIÓN DE LAS VARIABLES  TABLA 2X2-->
<body>
<div align="center">
<br></br>

          <!--GPIO4/IN1-->
 <form action="" method="post">
 Interruptor 01 &nbsp;<input type="submit" name="encender4" value="Encender">
 <input type="submit" name="apagar4" value="Apagar">


         <!--GPIO17/IN2-->
 <form action="" method="post">
 &nbsp; Interruptor 02 &nbsp;<input type="submit" name="encender17" value="Encender">
 <input type="submit" name="apagar17" value="Apagar">
<br></br>

        <!--GPIO27/IN3-->

 <form action="" method="post">
 Interruptor 03 &nbsp;<input type="submit" name="encender27" value="Encender">
 <input type="submit" name="apagar27" value="Apagar">


         <!--GPIO22/IN4-->
 <form action="" method="post">
 &nbsp; Interruptor 04 &nbsp;<input type="submit" name="encender22" value="Encender">
 <input type="submit" name="apagar22" value="Apagar">


</div>
</body>
</html>



<!--FUNCIONES EN PHP DE LOS BOTONES-->
<?php

// Funciones PHP del pin GPIO 4
 if ($_POST[encender4]) {
 $a- exec("echo 4 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio4/direction");
 $a- exec("echo 0 > /sys/class/gpio/gpio4/value");
 echo $a;
 }

 if ($_POST[apagar4]) {
 $a- exec("sudo echo 1 > /sys/class/gpio/gpio4/value");
 $a- exec("echo 4 > /sys/class/gpio/unexport");
 echo $a;
 }


// Funciones PHP del pin GPIO 17
 if ($_POST[encender17]) {
 $a- exec("echo 17 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio17/direction");
 $a- exec("echo 0 > /sys/class/gpio/gpio17/value");
 echo $a;
 }

 if ($_POST[apagar17]) {
 $a- exec("sudo echo 1 > /sys/class/gpio/gpio17/value");
 $a- exec("echo 17 > /sys/class/gpio/unexport");
 echo $a;
 }


// Funciones PHP del pin GPIO 27
 if ($_POST[encender27]) {
 $a- exec("echo 27 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio27/direction");
 $a- exec("echo 0 > /sys/class/gpio/gpio27/value");
 echo $a;
 }

 if ($_POST[apagar27]) {
 $a- exec("sudo echo 1 > /sys/class/gpio/gpio27/value");
 $a- exec("echo 27 > /sys/class/gpio/unexport");
 echo $a;
 }



// Funciones PHP del pin GPIO 22
 if ($_POST[encender22]) {
 $a- exec("echo 22 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio22/direction");
 $a- exec("echo 0 > /sys/class/gpio/gpio22/value");
 echo $a;
 }

 if ($_POST[apagar22]) {
 $a- exec("sudo echo 1 > /sys/class/gpio/gpio22/value");
 $a- exec("echo 22 > /sys/class/gpio/unexport");
 echo $a;
 }

?>



5) Trasladarlo desde su ubicación actual al escritorio de la Pi
Moverlo del directorio Pi al directorio apache
scp index.php pi@192.168.1.*:/home/pi/
ssh pi@192.168.1.* -C sudo mv /home/pi/index.php /var/www/html/


Programación en bash

Encender
#!/bin/bash
#enciende.sh


#Exportamos el PIN deseado
echo 17 > /sys/class/gpio/export

#Establecemos la direccion (salida o entrada)
echo out > /sys/class/gpio/gpio17/direction

#Activamos la salida del rele dandole un valor de 1 al bit
echo 1 > /sys/class/gpio/gpio17/value


Apagar
#!/bin/bash
#apaga.sh


#Apagamos la salida del rele
echo 0 > /sys/class/gpio/gpio17/value

#Liberamos el PIN asociado
echo 17 > /sys/class/gpio/unexport




Parpadear
#!/bin/bash
#parpadea.sh

#Exportamos el PIN deseado
echo 17 > /sys/class/gpio/export

#Establecemos la direccion (salida o entrada)
echo out > /sys/class/gpio/gpio17/direction

#Activamos la salida del rele dandole un valor de 1 al bit, y lo desactivamos 5 veces
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
echo 0 > /sys/class/gpio/gpio17/value
sleep 1
echo 1 > /sys/class/gpio/gpio17/value
sleep 1
echo 0 > /sys/class/gpio/gpio17/value

#Liberamos el PIN asociado
echo 17 > /sys/class/gpio/unexport


Fuentes:
  • Peatonet. Fuente :http://www.peatonet.com/raspberry-pi-y-los-pines-gpio-implementando-domotica-asequible-parte-i/

Comentarios