Raspberry PI - menerapkan sistem terjangkau rumah otomatisasi [Bagian II]

Dalam posting sebelumnya tentang terjangkau rumah otomatisasi berdasarkan Raspberry PI, Kita belajar untuk Periksa koneksi listrik rumah dari panel relay delapan terhubung ke kami Raspberry PI.

Screenshot dari 2015-02-01 20:20:47Hari ini kita akan melihat bagaimana mengontrol total enam belas peralatan listrik Terima kasih kepada sirkuit yang kami dilaksanakan di atas, dan memungkinkan papan telah memberi saya Jordi dari @electronics.cat dan Anda sudah bisa Anda lihat di ringkasan Hardware kebebasan hari; dirancang oleh sama, dan seratus persen hardware gratis.

Untuk praktek ini, aku akan menggunakan The PI tiga cabang, itu bertanggung jawab untuk mengadaptasi semua pin GPIO dari Raspberry PI dari 3.3V untuk 5V BI-directionally dan akan memungkinkan kita untuk bekerja dengan kedua disediakan untuk PiCam I2C bus; Saya juga akan menggunakan piring relay optoacoplados dulu dalam artikel sebelumnya tentang rumah otomatisasi.

Pi3Ramas

IP dalam rentang tiga yang dirancang oleh @JordiBinefa.

Semua ini menempatkan di pembuangan kami total enam belas soket domotic dibagi antara dua Raspberry, dan dengan upgrade dari hingga 128 Jika PI 3 cabang, Karena memungkinkan kita untuk mengambil keuntungan dari dua bus I2C mengorbankan kemungkinan menggunakan konektor untuk PiCam.

Untuk menghubungkan pi tiga cabang, Kita harus mengelas enam sesuai dengan kedua bus pin I2C yang tidak prajurit pabrik, pada saat Jordi Secara aktif bekerja pada versi baru dari piring untuk Raspberry PI B + dan Raspberry PI model 2.

KAMERA DIGITAL OLYMPUSKami dapat membantu untuk mengelas pin memegang dua strip tiga dengan Jumper, Tapi Kami harus memastikan bahwa mereka lebih diselaraskan kita sebanyak mungkin sepanjang waktu sebelum solder mereka.

Kita sekarang dapat menghubungkan PI tiga cabang untuk Raspberry Saya sebelumnya telah diedit mengisolasi kedua-dua lempeng, Untuk apa Jordi Gunakan pemisah seperti plastik.

Pi tiga cabang dan plastik Indeks Pembagi konektor P3.

set05_08_v02_P2P3P4

Skema konektor P3 dibuat oleh @JordiBinefa.

Melaksanakan sambungan dengan Relay adaptor piring, Kita harus tikungan pin relay papan Saya ingin terhubung ke pi tiga cabang, membantu kami dengan beberapa Tang; di gambar berikutnya Anda dapat melihat hasil akhir.

Tergantung pada posisi pin VCC dan GND di relay kami, Kami akan menempatkan ini Jumper Relay dalam satu modul, atau posisi lain untuk investasi mereka; selalu mengingat diingat bahwa Relay piring harus didukung oleh USB.

IN1 IN2-JACKY IN3 4 VCC GND

IN1 IN2-JACKY IN3 4 GND VCC

Sekarang kita akan menghubungkan kami Relay delapan output ke piring adaptor relay, dan dalam PI tiga cabang; perlu dicatat bahwa Modul ini kompatibel dengan empat dan delapan output relay.

Kemudian kita dapat melihat daftar koneksi antara Relay modul, The PI tiga cabang, dan Raspberry PI.

Modul relay optoacoplados P3 konektor PI Raspberry model B
VCC + 5V + 5V
DALAM 7 Bit 0 GPIO 29
DALAM 6 Bit 1 GPIO 28
DALAM 5 Bit 2 GPIO 18
DALAM 4 Bit 3 GPIO 7
DALAM 3 Bit 4 GPIO 8
DALAM 2 Bit 5 GPIO 10
DALAM 1 Bit 6 GPIO 9
DALAM 0 Bit 7 GPIO 11
GND GND GND

Sekarang lanjutkan untuk menghubungkan Relay optoacoplados piring langsung ke GPIO yang lain Raspberry, dalam gambar di bawah Anda dapat melihat hasil akhir.

Hubungan antara GPIO dari kami Raspberry mereka akan sama seperti dalam artikel sebelumnya, Namun dalam hal ini saya telah menambahkan semua tabel koneksi.

Modul relay optoacoplados PI Raspberry model B
VCC + 5V
DALAM 1 GPIO 3
DALAM 2 GPIO 2
DALAM 3 GPIO 24
DALAM 4 GPIO 25
DALAM 5 GPIO 23
DALAM 6 GPIO 27
DALAM 7 GPIO 22
DALAM 8 GPIO 4
GND GND

Untuk menjalankan skrip di python web yang kita akan lihat di bawah, Pertama kita harus memberikan izin kepada pengguna www-data Pengguna ditetapkan ke web server; Untuk apa Pertama kita akan menginstal apache web server seperti yang kita lihat dalam artikel sebelumnya dan kita akan menulis sudo visudo di terminal dan pada akhir file Kami akan menambahkan www-data sebagai sudoer, menjadi hasil akhir sebagai berikut.

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

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

Untuk masing-masing dari enam belas pin GPIO karyawan dalam praktek ini, Kita perlu membuat sebuah subdirektori, dan dua skrip dengan Python; satu untuk menghidupkan, dan yang lain untuk mengubah relay, Berikut adalah contoh dengan 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)

Masing-masing Raspberry PI Kami akan menempatkan Anda Enam belas skrip untuk mengaktifkan relay terhubung atau untuk PIN karyawan di masing-masing, Anda dapat berkonsultasi dalam tabel sebelumnya; The script sesuai dengan Raspberry terhubung langsung dari GPIO Relay piring akan menempatkan mereka dalam direktori /Rumah/pi/relay/gpio.

Untuk menciptakan hirarki direktori dan subdirektori, dan menyalin file diprogram dalam Python Kita akan menggunakan ini dua lainnya script dalam Bash; pertama akan yang mengeksekusi dalam PI terhubung ke PI tiga cabang.

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

Yang lain Enam belas skrip sesuai dengan kontrol Raspberry terhubung ke PI tiga cabang Kami akan menjaga mereka dalam direktori /var/www/relay/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/*

Saat ini kita harus menciptakan Pasangan kunci sehingga Raspberry PI Ini adalah halaman untuk menjalankan script dari terhubung ke PI tiga cabang jarak jauh, sebagai pengguna yang akan melakukannya www-data harus menetapkan sandi untuk masuk dan membuat pasangan kunci atas nama Anda.

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

Sekali dibuat Pasangan kunci publik dan Pribadi, Kami akan memeriksa bahwa kita dapat mengakses SSH tanpa memasukkan sandi; untuk dioperasikan dari web sama berbeda Raspberry relay pada jaringan lokal yang sama, dalam hal ini Saya telah terhubung mereka berkat router gratis kecil WRTNode.

WRTNode_ETHKemudian kita akan membuat halaman rumah kami yang akan berisi jenis input tombol Anda akan memiliki untuk tekan untuk mengeksekusi script dalam Python dari antarmuka web dengan menggunakan metode post; untuk contoh ini saya akan menunjukkan web dengan hanya empat dimulai sehingga artikel tidak terlalu lama.

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

Jika saya ingin memberinya segalanya dari stopkontak tunggal, harus Bypass semua negatif output 220V Relay.

Sambungan listrik Kami akan membuat mereka dengan cara yang sama seperti dalam entri terakhir, tertutup antara skema steker dan switch miniatur pemutus sirkuit untuk memudahkan pelacakan praktek.

Plug differential relay

Dalam angsuran berikutnya pada terjangkau rumah otomatisasi Kita akan belajar untuk mengambil keuntungan dari dua bus I2C Terima kasih kepada PI tiga cabang, dan kami akan membuat bukti konsep memeriksa 128 dipertukarkan LED oleh peralatan listrik.

Jika Anda suka, Anda dapat mengikuti saya di Twitter, Facebook, Google +, LinkedIn, atau berbagi dengan tombol di bawah ini publikasi, Jika Anda memiliki pertanyaan atau saran jangan ragu untuk komentar.

Membantu kami untuk menjangkau lebih banyak pembaca Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 Thoughts on"Raspberry PI - menerapkan sistem terjangkau rumah otomatisasi [Bagian II]

  1. Posting sangat baik, terus!!
    Pertanyaan, Saya ingin juga menginstal rumah otomatisasi dengan mudah sistem raspberry, tetapi tidak adalah bagaimana misalnya untuk mengetahui status dari cahaya,buta atau beberapa perangkat, Jika telah diaktifkan secara manual.
    Saya mengatakan ini sebagai contoh, Jika saya ingin menghidupkan cahaya dari telepon tetapi tidak dalam keadaan ini pada saat itu.

    Salu2

    • Halo Igor, Terima kasih atas komentar Anda.

      Itu terjadi kepada saya bahwa Anda bisa menggunakan beberapa jenis sensor yang memverifikasi ketegangan yang mencapai pencahayaan Anda ingin kontrol, dan memberitahukan hal ini server web Anda secara real time untuk tahu kapan saja jika pada atau tidak.

Tinggalkan balasan