Raspberry PI - υλοποίηση ενός συστήματος προσιτή εγχώρια αυτοματοποίηση [Μέρος ι]

Στις προηγούμενες θέσεις σε αυτήν την σειρά, Είδαμε Τι είναι οι καρφίτσες GPIO, και πώς μπορείτε να ελέγξετε ένα LED μαζί τους από μας Raspberry PI από Μπας και Python, o με ένα εφαρμογή Web.

portadarelele

Αυτή τη φορά θα μάθουμε να ελέγχουν την εξουσία μια ηλεκτρική συσκευή; πριν να ξεκινήσετε το διακομιστή που έχουμε εγκαταστήσει ΛΑΜΠΤΉΡΑΣ όπως είδαμε στο η προηγούμενη παράδοση.

Για την εφαρμογή του, είμαι πρόκειται να χρησιμοποιούν ένα αναμετάδοσης Διοικητικού Συμβουλίου του 5V και οκτώ καναλιών, Πρέπει να είναι optoacoplada para proteger la Raspberry PI; Δεδομένου ότι οι συσκευές που πρόκειται να ελέγξει με 220V, και καρφίτσες GPIO Βατόμουρο έργο με μέγιστο 3,3V.

placarele

Ηλεκτρονόμοι optoacoplados πλάκα.

Έχουμε να κάνουμε μεταξύ το ρελέ και το Raspberry PI Οι ακόλουθες συνδέσεις.

Modulo relés optoacoplados
Raspberry PI μοντέλο να, Β, A +, Β +
VCC
+ 5V
IN 8
GPIO 17
GND GND
ΨΗΦΙΑΚΉΣ ΦΩΤΟΓΡΑΦΙΚΉΣ ΜΗΧΑΝΉΣ OLYMPUS

Συνδέσεις μεταξύ των PI Raspberry και το ρελέ πλάκα.

Τώρα θα δοκιμάζουμε εάν οι συνδέσεις λειτουργούν, με ένα απλό τεστ σε Bash, ρύθμιση του pin GPIO 17 ως έξοδο, και δίνοντας ένα λογικό υψηλή τιμή.

#Exportamos el PIN deseado
usuario@maquina:~$ sudo echo 17 > /sys/class/gpio/export

#Establecemos la direccion (salida o entrada)
usuario@maquina:~$ sudo echo out > /sys/class/gpio/gpio17/direction

#Activamos la salida del rele dandole un valor de 1 al bit
usuario@maquina:~$ sudo echo 1 > /sys/class/gpio/gpio17/value

Όταν έχει ενεργοποιηθεί η ηγεσία του ρελέ ελέγχου, επειδή μπορούμε να την απενεργοποιήσετε και να απελευθερώσει το pin GPIO.

#Apagamos la salida del rele
usuario@maquina:~$ sudo echo 0 > /sys/class/gpio/gpio17/value

#Liberamos el PIN asociado
usuario@maquina:~$ sudo echo 17 > /sys/class/gpio/unexport

Έχουμε ήδη δοκιμάσει τη λειτουργία, Έτσι τώρα θα δείτε τη σελίδα web που θα πρέπει να προγραμματίσετε, Είναι αρκετά πιο απλή από ό, τι η δοκιμασία με το LED Είδαμε στην τελευταία παράδοση.

<html>
 <head>
                 <!--/var/www/rele/index.php-->
 </head>
 <body>
 <!--GPIO17--> 
 <form action="" method="post">
 Enchufe 0 [GPIO 17]&nbsp;<input type="submit" name="encender17" value="Encender">
 <input type="submit" name="apagar17" value="Apagar">
 <input type="submit" name="parpadear17" value="Parpadear">
 </form> 
 <br></br>
 </body>
</html>

<?php
// Funciones PHP del pin GPIO 17
 if ($_POST[encender17]) { 
 $a- exec("sudo sh /var/www/rele/gpio/17/enciende.sh");
 echo $a;
 }

 if ($_POST[apagar17]) { 
 $a- exec("sudo sh /var/www/rele/gpio/17/apaga.sh");
 echo $a;
 }

 if ($_POST[parpadear17]) { 
 $a- exec("sudo sh /var/www/rele/gpio/17/parpadea.sh");
 echo $a;
 }
// Fin de las funciónes del pin GPIO 17
?>

Πρέπει να δημιουργήσουμε αυτά τρεις δέσμες ενεργειών στο bash για να ενεργοποιήσετε την, Απενεργοποίηση και αναβοσβήνει; Αυτές οι δέσμες ενεργειών στεγάζονται σε /var/www/relay/gpio/17 /.

#!/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
#!/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
#!/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

Όταν έχουμε τη δέσμες ενεργειών και το index.php στις αντίστοιχες διαδρομές τους, Πρέπει να είμαστε σε θέση να προβάλετε ακολουθεί την ακόλουθη ιεράρχηση κατάλογο του διακομιστή web.

Screenshot του 2014-11-08 16:27:54Στην προκειμένη περίπτωση πρέπει επίσης να sudoer στο χρήστη www-δεδομένα; Γι ' αυτό, εκτελέστε sudo visudo στο τερματικό, και θα το προσθέσουμε pi κάτω από το χρήστη έτσι ώστε ο χρήστης www-δεδομένα Μπορείτε να ελέγξετε τις καρφίτσες GPIO.

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

Τώρα θα δοκιμάζουμε τα τρία κουμπιά για Βεβαιωθείτε ότι όλα λειτουργούν σωστά. Κάποτε εργαστεί, και ενεργοποιήστε το ρελέ πλάκα leds, Θα ακούσουμε την “Κάντε κλικ/clack” ότι σας εκπέμπουν όταν ανοίγει και κλείνει το κύκλωμα.

Screenshot του 2014-11-08 13:30:46

Εφαρμογή Web για τον έλεγχο του ρελέ.

Θα δούμε πώς να το συνδέσετε με έναν λαμπτήρα ή οποιαδήποτε άλλη συσκευή ελέγχου από οποιαδήποτε συσκευή με ένα πρόγραμμα περιήγησης web.

Τη διάταξη για Συνδέστε το ρελέ μεταξύ μαγνητο-θερμικό διακόπτη και ένα βύσμα ο τοίχος του σπιτιού μας θα είναι ως εξής; για συστήματα έχω χρησιμοποιήσει την εικόνα του ένα ρελέ μονού καναλιού, σε αυτό το παράδειγμα είναι το στο κανάλι 8 πλάκα οκτώ καναλιών.

rele5vmagnetotermico

Σχέδιο σύνδεσης ο ηλεκτρικός πίνακας ενός σπιτιού.

Για την απόδειξη της έννοιας, Θα χρησιμοποιήσω την ακόλουθη διάταξη με ένα βύσμα που αναγκάστηκα να αλλάξω σε ένα δωμάτιο του σπιτιού, και μια λάμπα. Παρακάτω είναι ο τοίχος, και παραπάνω που έχω κλυδωνίζονται σε αυτήν τη δοκιμή σύνδεσης στο φανό; el relé actúa como interruptor.

rele5venchufe1

Σχήμα που χρησιμοποιείται σε αυτή τη δοκιμή.

Υπάρχουν τρία λιμάνια της ηλεκτρικής σύνδεσης για κάθε έξοδο στον ηλεκτρονόμο: COM, ανοικτή επαφή No και κανονικά κλειστές. Σε COM Θα πρέπει να συνδεθεί τα θετικά ηλεκτρικά Τρέφεται η συσκευή, και σε ένα μόνο τα άλλα δύο το καλώδιο επέκτασης στα θετικά της συσκευής. Το αρνητική συνδέει απευθείας από το καλώδιο ρεύματος της συσκευής.

PB080196

Ένα ρελέ συνδέσεις.

Αυτό θα εξαρτηθεί εάν συνδέετε στο ανοικτή επαφή No, ή ένα κανονικά κλειστές Εάν η συσκευή είναι ενεργοποιημένη, ή αν μπορείτε να απενεργοποιήσετε το σμέουρο.

Σε αυτό το παράδειγμα, το ρελέ είναι συνδεδεμένο στο κανονικά κλειστές, Έτσι, αν απενεργοποιήσετε το σμέουρο, Βύσματα εργασία; Αν conectásemos σε ανοικτή επαφή No, Όταν δεν αποσύνδεση σμέουρων λαμπτήρα μπορεί να αναφλεγούν επειδή το κύκλωμα θα άνοιγαν; Εμείς θα το καταλάβετε καλύτερα με ένα βίντεο.

Εάν θέλετε, μπορείτε να με ακολουθήσουν σε Πειραχτήρι, Facebook, Google +, LinkedIn, ή να μοιραστείτε με τα κουμπιά κάτω από την παρούσα δημοσίευση, Εάν έχετε οποιεσδήποτε ερωτήσεις ή προτάσεις μην διστάσετε να σχολιάσει.

Βοηθήστε μας να προσεγγίσουν περισσότερους αναγνώστες Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

33 σκέψεις για"Raspberry PI - υλοποίηση ενός συστήματος προσιτή εγχώρια αυτοματοποίηση [Μέρος ι]

  1. Encender y apager LEDS desde internet

    Buenos días, Πριν από οτιδήποτε, lo menos que puedo decir, es gracias, estupendo
    el tutorial, otra ves, bravo y gracias.

    Una pregunta, no entiendo exactamente como y donde debo instalar los sripts,
    mi intención es disponer de una pagina WEB, en realidad, no se como llego a
    trabajar con PHP y WEB, como la del ejemplo, vía un PC, conectado a Internet
    en cualquier sitio poder activar los diferentes LEDs o relays, no se como hacerlo,
    de antemano y por supuesto, mil gracias por la ayuda eventual.

    Amigablemente Ignacio desde Bélgica

  2. Los scripts y el index.php solo tienes que copiarlos en /var/www/rele como se indica el tutorial, cada uno tiene su ruta.

    index.php en /var/www/rele/index.php
    apaga.sh, enciende.sh y parpadea.sh en /var/www/rele/gpio/17/

    De momento como está funciona para un relé conectado al GPIO 17, en unos días terminaré con la segunda parte para hacer funcionar las ocho salidas.

    Para acceder desde internet deberías configurar tu router para que redireccione las peticiones entrantes por el puerto 80 hacia tu Raspberry PI. Desde la opción NAT o Virtual Server del router puedes configurarlo.

    Finalmente para acceder mas fácilmente puedes registrarte en NoIP y obtener un dominio gratuito asociado a tu ip pública del tipo casa.no-ip.biz.

    Π.Δ.: Asegúrate de proteger muy bien esa página para solo tu tener acceso a ella.

    Muchas gracias por comentar.

  3. Καλό απόγευμα,

    Todo funciona perfectamente, aunque solo por lan o con Xming por ssh, no logre conectarme a distancia, ‘con otro PC vía Internet, tengo noip y también dyndns, y no lo logro hacer funcionar, si tienes alguna idea te la agradezco de antemano,

    Un fuerte saludo y una ves mas, Ευχαριστούμε

    Ignacio

    • Me alegro de que finalmente funcione, pero para conectarte desde Internet que protocolos estás utilizando?

      Tienes que abrir los puertos de los servicios que vayas a utilizar en el router que te da acceso a Internet (HTTP puerto 80, HTTPS puerto 443, SSH puerto 22, κλπ) y hacer Port Forwarding hacia la IP privada de Raspberry PI en el router que te da acceso a Internet.

      Finalmente ya solo tendrás que iniciar la conexión desde otra red apuntando hacia la IP pública de tu router, puedes probar desde el 3G de tu móvil.

      Si esto funciona, ya puedes proceder a configurar NoIP o Dyn para acceder desde un nombre fácil de recordar en lugar de una IP pública; además si instalas NoIP en Raspberry, en la web de NoIP se cambiará automáticamente tu IP pública cada vez que esta cambie para tu router.

      Para mayor seguridad, sería mejor si configuras una VPN para realizar las conexiones hacia la red de tu casa, y canalizas a través de ella todo tu trafico.

  4. Γεια σου, tengo una pregunta tengo un led en el gpio4, sudo echo 1 > /sys/class/gpio/gpio4/value este me apaga el led, y con sudo echo 0 > /sys/class/gpio/gpio4/value, me prende el led, deberia de ser al revez, sera que realice algo mal?.
    coloque los archivo me conecto via web, cuando presiono cualquier boton (encender, Απενεργοποίηση, o parpadeo) solo apaga el led, pero no enciende, ni tampoco el de parpadeo.
    agradezco la ayuda que me puedan brindar.

    • Γεια σου, en primer lugar muchas gracias peor tu pregunta 🙂

      Puedes seguir el tutorial paso a paso, el relé tiene 3 tipos de pins:

      VCC -> Alimentación (PIN 5V RPI)
      GND -> Pin GND RPI
      IN -> Son las entradas, y dependiendo de si su estado es HIGH o LOW el relé se encenderá o apagará.

      En el ejemplo uso IN8, solo debes cambiarlo por IN0 o IN1 de tu relé y como comenté antes seguir el tutorial 🙂

      Π.Δ.: Asegurate de que sean optoacoplados, los de la foto lo son.

      Με εκτίμηση, espero haberte ayudado.

  5. Antes que nada, muchas gracias por tus explicaciones, muy buenas.

    He seguido tus indicaciones y puedo prender la bomba de aire de una pecera a distancia.

    El problema que tengo es que me falta poder corroborar el status del pin (True o False)

    ¿Como puedo hacer para que me aparezca este dato en la misma página que hice?

    Está armada siguiendo tus indicaciones, prende y apaga el relay correctamente.

    • Hola Teodoro,

      Esto que comentas es algo que muchos lectores preguntan, por lo que estoy preparando una siguiente parte del tutorial en el que programaremos un indicador de estado de los pins GPIO en mis ratos libres.

      En cuanto esté terminado lo publicaré en el Blog.

      Τα λέμε σύντομα.

  6. Antes que nada muchisimas gracias por tu blog.. es espectacular. Yo por mi parte me he comprado todo lo necesario, he seguido todos tus tutoriales, pero a la hora de hacer funcionar la placa de 8 reles, algo me falla.

    La pregunta es como se si tengo la placa octoacoplada?? es que parece que no le llega la corriente suficiente para activarla. Mis conexione son:

    5v -> VCC (de la placa)
    GND (p3) -> GND (de la Placa)
    GPIO4 -> IN4 (de la placa)

    Cuando activo el gpio con el script, se enciende por un momoento el diodo led de control, pero no se queda encendido. Entiendo que es porque el gpio se activa a 3,3 voltios y los reles son de 5v. Sin embargo juraria que tenemos la misma placa así que tiene que ahber una forma de hacerlo funcionar no?

    Apreciaria cualquier tipo de comentario, la placa de los reles es la siguiente
    (8 relays Module srd-05VDC-SL-C)

    Muchas gracias por todo

  7. Hola Loty,

    La mayoría de las placas de relés compatibles que se comercializan para microcontroladores vienen ya optoacopladas, puedes comprobar si lo es en las especificaciones o buscando los optoacopladores en la placa; el que hace referencia al numero de serie que has comentado si que lo és.

    Efectivamente estas placas se alimentan con 5V, pero la salida puede ser activada también mediante actuadores de 3,3V como los GPIO de la Raspberry PI.

    De todos modos el problema parece ser falta de alimentación, por lo que cambiar el transformador de la Raspberry por uno de 2A o alimentar de forma externa el relé podría ayudar.

    Saludos y hasta pronto.

    • Γεια σου!
      Muchisimas gracias por tu pronta respuesta. He hecho las pruebas directamente sobre la placa de reles (quitando la RASPBERRY PI), para ver si era que la placa la tenia mal. He conseguido un alimentador externo de 5V a 2A.

      Conecto el GND a menos del alimentador el VCC al + del alimentador y el IN4 tambien al +. y ahi.. FUNCIONA!! el rele hace click y el LED indicador se queda encendido, he hecho al prueba con una lampara de 220v y todo sigue funcionando. El problema surge con la RASPBERRY PI.

      He conectado la placa al alimentador externo “+” al VCC “-” al GND y al IN4 le he conectado el gpio4 de la RASPBERRY, y ahi cuando activo el GPIO, nada pasa. He medido el GPIO y da 3,3 v. He leido en otros sitios y se dice que es porque debo conectar el jumper VCC-JCC de otra forma. No se que hago mal. Puede ser que yo active los gpio a traves de BASH?? Es necesario para que funcione sobre la placa de reles usar la libreria de python de GPIO??

      Muchas gracias por cualquier aporte

  8. Olá, estava com um problema para apagar a luz com relé, utilizando o código deste tutorial, conseguia acender normal, mas pra apagar não apagava e o relé ficava armado, só desarmando quando eu desconectava o cabo entre o relé o raspberry. Depois de várias tentativas consegui fazer apagar juntando os codigos deste tutorial com o codigo do tutorial de led para apagar. ficando desta formam uma parte do código: Αν ($_POST[apagar17]) {
    $να- exec(“sudo python /var/www/AcenderWebRele/apaga3.py”);
    $να- exec(“sudo echo 17 > /sys/class/gpio/export”);
    $να- exec(“sudo echo 0 > /sys/class/gpio/gpio17/value”);
    $να- exec(“sudo echo 17 > /sys/class/gpio/unexport”);
    echo $a;
    }

  9. Buenas tardes desde México, mi nombre es Enrique, estoy interesado en la parte de implementar domotica con raspberry esto derivado de un proyecto escolar, en los tutoriales mencionas que debemos de tener linux para lo cual no conozco mucho, es posible desarrollar el proyecto, tanto la página web como la programación necesaria en el raspberry con windows?, el servidor web que mencionas debe instalarse en la misma raspberry o donde?, si la cantidad de dispositivos que quiero controlar sobrepasan la capacidad de una raspberry 3 normal que ocuparia hacer, otra raspberry o existe algo que me aumente la capacidad?, en caso de ocupar otra raspberry como controlaria ambas con la misma aplicación web?.

    Espero y puedas ayudarme con esto.

    Με εκτίμηση.

Αφήνω μια απάντηση