Ahududu PI – Bir uygun fiyatlı ev otomasyon sisteminin uygulanması [Kısım III]

Birkaç ay sonra geri dönmek karar verdik Bu proje hangi oluşturmak niyetinde ile bir Ücretsiz ev otomasyon sistemi, ve ekonomik olarak uygun fiyatlı; Bu düşük tüketimi mikroişlemci tabanlı, Ama çarpı işareti-peron ve taşınabilir işletim sistemi ile herhangi bir cihaza GNU/Linux edinilebilir bağlantı noktası GPIO.İçinde önceki yazılar Modülden kontrol etmeyi öğrendik Röleler optoacoplados ile Ahududu PI tarafından Bash, PHP, ve Python; Bu vesileyle Otomasyon sistemi optimize, ve bu arada için göç ettik Ahududu PI 3 imha Kablosuz bağlantı, Ama eğer sen dilek sen-ebilmek kullanma herhangi bir önceki modeli.

, donanım Sekiz geçişlerinin iki modülden oluşmaktadır Her, Bu kadar toplam yapmak On altı çıkışları kontrol etmek için aletleri, Vale elektrik, aydınlatma; ve bir sonu olmadan aygıtları Bu küçük ve dönüştürülmesi Ahududu PI 3, için ihtiyacınız olan herşeyi içinde domotic evi u ofis geleneksel.

Esquema edificio domotica

Devre kesici anahtarı diyagram domotic DIY.

Denetim Masası içinde programlanmıştır PHP, ve kodunu bir optimizasyonu önceki sürüm Ama yönetmek amacıyla GPIO doğrudan Bash hangi büyük ölçüde sürecini hızlandırır; bir gerekir, Beri bu sayfası üzerinden görev yapacak WiFi.

FremooticsPI

Otomasyon sistemi web kontrol paneli.

Aslında ek dosyalar bağlantı noktası çıkışlarını yönetmek için GPIO in Ahududu tarafından Python; Bu basit dönüştürür Web sayfası, tek bir dosya, başlangıç noktası gerçek içinde hangi bir gün içinde haline gelmiştir, bir tam ev otomasyon sistemi Ben geliştirmek olacaktır birlikte.

<html>
<head>
<title>Panel de control - Sistema domotico libre</title>
</head>

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

<br></br>

 <!--GPIO18/IN5-->
 <form action="" method="post">
 Interruptor 05 &nbsp;<input type="submit" name="encender18" value="Encender">
 <input type="submit" name="apagar18" value="Apagar">

 <!--GPIO23/IN6-->
 <form action="" method="post">
 &nbsp; Interruptor 06 &nbsp;<input type="submit" name="encender23" value="Encender">
 <input type="submit" name="apagar23" value="Apagar">

<br></br>

 <!--GPIO24/IN7-->
 <form action="" method="post">
 Interruptor 07 &nbsp;<input type="submit" name="encender24" value="Encender">
 <input type="submit" name="apagar24" value="Apagar">

 <!--GPIO25/IN8-->
 <form action="" method="post">
 &nbsp; Interruptor 08 &nbsp;<input type="submit" name="encender25" value="Encender">
 <input type="submit" name="apagar25" value="Apagar">

<br></br>

 <!--GPIO5/IN1-->
 <form action="" method="post">
 Interruptor 09 &nbsp;<input type="submit" name="encender5" value="Encender">
 <input type="submit" name="apagar5" value="Apagar">

 <!--GPIO6/IN2-->
 <form action="" method="post">
 &nbsp; Interruptor 10 &nbsp;<input type="submit" name="encender6" value="Encender">
 <input type="submit" name="apagar6" value="Apagar">

<br></br>

 <!--GPIO13/IN3-->
 <form action="" method="post">
 Interruptor 11&nbsp;<input type="submit" name="encender13" value="Encender">
 <input type="submit" name="apagar13" value="Apagar">

 <!--GPIO12/IN4-->
 <form action="" method="post">
 &nbsp; Interruptor 12 &nbsp;<input type="submit" name="encender12" value="Encender">
 <input type="submit" name="apagar12" value="Apagar">

<br></br>

 <!--GPIO19/IN5-->
 <form action="" method="post">
 Interruptor 13 &nbsp;<input type="submit" name="encender19" value="Encender">
 <input type="submit" name="apagar19" value="Apagar">

 <!--GPIO16/IN6-->
 <form action="" method="post">
 &nbsp; Interruptor 14 &nbsp;<input type="submit" name="encender16" value="Encender">
 <input type="submit" name="apagar16" value="Apagar">

<br></br>

 <!--GPIO20/IN7-->
 <form action="" method="post">
 Interruptor 15 &nbsp;<input type="submit" name="encender20" value="Encender">
 <input type="submit" name="apagar20" value="Apagar">

 <!--GPIO21/IN8-->
 <form action="" method="post">
 &nbsp; Interruptor 16 &nbsp;<input type="submit" name="encender21" value="Encender">
 <input type="submit" name="apagar21" value="Apagar">

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

<?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 1 > /sys/class/gpio/gpio4/value");
 echo $a;
 }

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

// Fin de las funciónes del pin GPIO 4

// 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 1 > /sys/class/gpio/gpio17/value");
 echo $a;
 }

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

// Fin de las funciónes del pin GPIO 17

// 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 1 > /sys/class/gpio/gpio27/value");
 echo $a;
 }

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

// Fin de las funciónes del pin GPIO 27

// 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 1 > /sys/class/gpio/gpio22/value");
 echo $a;
 }

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

// Fin de las funciónes del pin GPIO 22

// Funciones PHP del pin GPIO 18

 if ($_POST[encender18]) {
 $a- exec("echo 18 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio18/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio18/value");
 echo $a;
 }

 if ($_POST[apagar18]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio18/value");
 $a- exec("echo 18 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 18

// Funciones PHP del pin GPIO 23

 if ($_POST[encender23]) {
 $a- exec("echo 23 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio23/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio23/value");
 echo $a;
 }

 if ($_POST[apagar23]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio23/value");
 $a- exec("echo 23 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 23

// Funciones PHP del pin GPIO 24

 if ($_POST[encender24]) {
 $a- exec("echo 24 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio24/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio24/value");
 echo $a;
 }

 if ($_POST[apagar24]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio24/value");
 $a- exec("echo 24 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 24

// Funciones PHP del pin GPIO 25

 if ($_POST[encender25]) {
 $a- exec("echo 25 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio25/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio25/value");
 echo $a;
 }

 if ($_POST[apagar25]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio25/value");
 $a- exec("echo 25 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 25

// Funciones PHP del pin GPIO 5

 if ($_POST[encender5]) {
 $a- exec("echo 5 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio5/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio5/value");
 echo $a;
 }

 if ($_POST[apagar5]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio5/value");
 $a- exec("echo 5 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 5

// Funciones PHP del pin GPIO 6

 if ($_POST[encender6]) {
 $a- exec("echo 6 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio6/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio6/value");
 echo $a;
 }

 if ($_POST[apagar6]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio6/value");
 $a- exec("echo 6 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 6

// Funciones PHP del pin GPIO 13

 if ($_POST[encender13]) {
 $a- exec("echo 13 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio13/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio13/value");
 echo $a;
 }

 if ($_POST[apagar13]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio13/value");
 $a- exec("echo 13 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 13

// Funciones PHP del pin GPIO 12

 if ($_POST[encender12]) {
 $a- exec("echo 12 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio12/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio12/value");
 echo $a;
 }

 if ($_POST[apagar12]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio12/value");
 $a- exec("echo 12 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 12

// Funciones PHP del pin GPIO 19

 if ($_POST[encender19]) {
 $a- exec("echo 19 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio19/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio19/value");
 echo $a;
 }

 if ($_POST[apagar19]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio19/value");
 $a- exec("echo 19 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 19

// Funciones PHP del pin GPIO 16

 if ($_POST[encender16]) {
 $a- exec("echo 16 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio16/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio16/value");
 echo $a;
 }

 if ($_POST[apagar16]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio16/value");
 $a- exec("echo 16 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 16

// Funciones PHP del pin GPIO 20

 if ($_POST[encender20]) {
 $a- exec("echo 20 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio20/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio20/value");
 echo $a;
 }

 if ($_POST[apagar20]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio20/value");
 $a- exec("echo 20 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 20

// Funciones PHP del pin GPIO 21

 if ($_POST[encender21]) {
 $a- exec("echo 21 > /sys/class/gpio/export");
 $a- exec("echo out > /sys/class/gpio/gpio21/direction");
 $a- exec("echo 1 > /sys/class/gpio/gpio21/value");
 echo $a;
 }

 if ($_POST[apagar21]) {
 $a- exec("sudo echo 0 > /sys/class/gpio/gpio21/value");
 $a- exec("echo 21 > /sys/class/gpio/unexport");
 echo $a;
 }

// Fin de las funciónes del pin GPIO 21

?>

Gerçekleştirmek için Ahududu ve geçiş arasındaki bağlantıları, Sen-meli mektup ayak için aşağıdaki tablolar gitmek Şemayı temel alan GPIO BCM; Çünkü aksi takdirde dosyadaki satır değiştirmek gerekecek PHP, ve Değiştir kodu numaralarını PIN Çalışanlar.

Ahududu PI modeli B + / 2/3 Röle modülü 1
+ 5V + 5V
GPIO 4
İNÇ 1
GPIO 17
İNÇ 2
GPIO 27 İNÇ 3
GPIO 22
İNÇ 4
GPIO 18 İNÇ 15
GPIO 23
IN1 6
GPIO 24
IN1 7
GPIO 25
IN1 8
GND GND
Ahududu PI modeli B + / 2/3 Röle modülü 2
+ 5V + 5V
GPIO 5
İNÇ 1
GPIO 6
İNÇ 2
GPIO 13
İNÇ 3
GPIO 12
İNÇ 4
GPIO 19
IN1 5
GPIO 16
IN1 6
GPIO 20
IN1 7
GPIO 21
IN1 8
GND GND

Bir kez tüm bağlı iğne in Ahududu ilgili için VCC, GND, e girişleri in Röle; sadece kalır PHP dosya kopyalama için Ahududu PI, Ne kullanmak için SCP Bu bize bunu sağlayacak Uzaktan.

usuario@maquina:~ $ scp index.php pi@192.168.1.*:/home/pi/
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo mv /home/pi/index.php /var/www/html/

Ayrıca Uzaktan Biz web sunucusu dizinine dosya hareket edecek, y asignaremos como propietarios mediante SSH için kullanıcı ve grup www-data; ekler Grup GPIO, ve sonra Değişiklikleri uygulamak için yeniden.

usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo chown www-data:www-data /var/www/html/index.php
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo usermod -a -G gpio www-data
usuario@maquina:~ $ ssh pi@192.168.1.* -C sudo reboot

Sonunda Biz 230V aktarma ile besleme içinde gördüğümüz gibi Önceki Makaleler yapma bir giriş ve pozitif kutuplar arasında köprü, tek bir kullanmak için Tak, ya da şalter minyatür devre kesici; Ama biz bağlamak istiyorsanız On altı aygıtları yüksek tüketim iki kullanmak için önerilen, ya da daha fazla fiş.

relespuenteados

Röle modülü pozitif kutupları arasında köprü düzeninin.

Kalan teller, için hangi karşılık Negatif kutup ve alır Dünya, Biz onları bağlanır aygıtına doğrudan aracılığıyla kontrol etmek istiyorum Röle modülü, Benim durumumda bir Tak domotic DIY; también debemos tener en cuenta que por seguridad nuestro relé debería disponer de 1A por salida, por lo que para 16 salidas necesitaremos un relé de 16Hedef.

Relé esquema enchufe

Diyagram tak domotic DIY.

Aşağıda video Bu performansını görebilirsiniz On altı çıkış sistemi Onları kontrol ederek, bir gösteri ile düşük enerji lamba ile; Eğer sen beğenmek unutmayın Beni takip edin YouTube hiçbirini kaçırmayın için yayınlanmamış videoları Yayımlamak için gidiyorum.

Senin gibi beni takip edebilirsiniz Eğer Twitter, Facebook, Google +, LinkedIn, Feedly, ya da bu yayın altında düğmeleri ile paylaşın, Eğer herhangi bir sorunuz veya öneriniz lütfen yorum çekinmeyin..

Bize daha fazla okuyucu ulaşmak için yardım Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 üzerine düşünceler"Ahududu PI – Bir uygun fiyatlı ev otomasyon sisteminin uygulanması [Kısım III]

  1. Peatonet una duda, he copiado el codigo tal cual y funciona todo correctamente, a excepción que van los botones al revés, encender apaga y viceversa.

    Muchas gracias por todo un blog genial.

    • Hola XuFLeS, Yorumunuz için teşekkür ederiz.

      Seguramente tenga que ver con las conexiones del relé a la red eléctrica; convendría que revises si lo has conectado en normalmente abierto (NO) en lugar de normalmente cerrado (NC).

      Görüşmek üzere.

      • Estoy probando antes de conectar los contactos a 230 V y el led rojo del relé se enciende cuando pulso en apagar. He modificado algo el codigo para invertirlo y quede bien, pero me había surgido la duda la verdad. Gracias x tu respuesta.

  2. Buen aporte. Estoy necesitando algo similar para un control de riego pero con una condición: si una de las n salidas están en 1 entonces GPIOx estará en 1. Osea GPIO=0 si solo si todas las salidas = 0. Herhangi bir fikir?? Donde n salidas son electrovalvulas y GPIOx la bomba. Desde ya muchas gracias.

Cevap bırak