PI Raspberi - melaksanakan sistem automasi rumah dengan harga yang berpatutan [Bahagian II]

Dalam jawatan sebelumnya tentang automasi rumah dengan harga yang berpatutan berdasarkan PI Raspberi, Kita belajar untuk menyemak sambungan sesalur kuasa rumah dari panel dari lapan relays disambungkan kepada kami PI Raspberi.

Screenshot dari 2015-02-01 20:20:47Hari ini kita akan lihat bagaimana untuk mengawal sejumlah enam belas peralatan elektrik Terima kasih kepada litar yang kita dilaksanakan ke atas, dan membolehkan Lembaga Pengarah telah memberi saya Jordi daripada @electronics.cat dan anda sudah boleh anda lihat di dalam ringkasan yang Hari kebebasan perkakasan; direka oleh sama, dan seratus peratus perkakasan percuma.

Untuk amalan ini, saya akan menggunakan dalam PI di ketiga-tiga cabang, yang bertanggungjawab untuk menyesuaikan semua PIN GPIO daripada PI Raspberi daripada 3.3V untuk 5V bi-directionally dan akan membolehkan kami untuk bekerja dengan yang kedua yang dikhaskan untuk bas PiCam I2C; Saya juga akan menggunakan plat relays optoacoplados aku dulu dalam artikel sebelumnya mengenai automasi rumah.

Pi3Ramas

IP dalam tiga julat yang direka oleh @JordiBinefa.

Semua ini meletakkan kami hantar sebanyak enam belas soket domotic dibahagikan antara dua Raspberi, dan dengan expandability daripada selewat-lewatnya 128 Sekiranya dalam Di PI 3 Cawangan-cawangan, Kerana hal itu memungkinkan kita untuk mengambil kesempatan daripada dua bas I2C mengorbankan kemungkinan menggunakan penyambung kepada PiCam yang.

Untuk menyambung pi dalam ketiga-tiga cabang, Kita mesti weld enam bersamaan PIN bas yang kedua I2C yang tidak askar kilang, pada masa ini Jordi Ia aktif bekerja pada versi baru dengan plat bagi Raspberi PI B + dan model PI Raspberi 2.

KAMERA DIGITAL OLYMPUSKita boleh membantu untuk weld PIN yang memegang jalur dua daripada tiga dengan penerjun, tetapi Kita mesti pastikan mereka lebih sejajar kita sebanyak mungkin pada setiap masa sebelum pematerian mereka.

Kita kini boleh sambung ke PI di ketiga-tiga cabang untuk itu Raspberi Sebelum ini saya telah diedit mengasingkan dua plat, untuk apa Jordi Menggunakan pemisah plastik tersebut.

Pi ketiga-tiga cabang dan Indeks plastik pembahagi penyambung P3.

set05_08_v02_P2P3P4

Skim penyambung P3 yang dibuat oleh @JordiBinefa.

Menjalankan hubungan dengan pihak Penyampai penyesuai plat, Kita mesti membengkokkan PIN penyampai Lembaga Saya ingin sambung ke pi dalam ketiga-tiga cabang, membantu kita dengan Tang beberapa; dalam gambar seterusnya anda boleh melihat keputusan akhir.

Bergantung kepada kedudukan PIN VCC dan GND dalam penyampaian kami, Kami akan meletakkan ini pelompat Relays dalam satu modul, atau kedudukan lain untuk melabur mereka; sentiasa mengingati kisah yang Plat penyampai perlu digerakkan oleh USB.

IN1 IN2 IN3 IN4 VCC GND

IN1 IN2 IN3 IN4 GND VCC

Sekarang kita akan menghubungkan kami penyampaian output lapan untuk plat penyesuai relays, dan di dalam PI di ketiga-tiga cabang; harus diperhatikan bahawa Modul ini adalah serasi dengan empat dan lapan output relays.

Maka kita boleh lihat Jadual sambungan antara yang Modul penyampaian, dalam PI di ketiga-tiga cabang, dan PI Raspberi.

Modul menyampaikan optoacoplados P3 penyambung Raspberi PI 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 teruskan untuk menyambung ke menyampaikan plat optoacoplados terus ke dalam GPIO yang lain Raspberi, dalam gambar di bawah, anda boleh melihat keputusan akhir.

Sambungan antara yang GPIO daripada kami Raspberi mereka akan sama seperti dalam Artikel sebelumnya, Walau bagaimanapun dalam kes ini saya telah menambah semua sambungan Jadual.

Modul menyampaikan optoacoplados Raspberi PI 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 bertanding di skrip dalam python web yang kita akan lihat di bawah, Pertama sekali kita perlu memberikan keizinan kepada pengguna www-data Ia adalah pengguna yang diperuntukkan kepada pelayan web; untuk apa Mula-mula kita akan memasang pelayan web apache seperti yang kita lihat dalam artikel sebelum ini dan kita akan menulis sudo visudo di terminal dan penghujung fail Kami akan menambah www-data sebagai sudoer, sebagai keputusan akhir seperti 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

Bagi setiap PIN GPIO enam belas kakitangan dalam amalan ini, Kita perlu mewujudkan subdirektori, dan dua skrip dalam Python; satu untuk menghidupkan, dan yang lain untuk menjadikan penyampaian yang, Berikut adalah contoh dengan yang 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)

Setiap satu daripada yang PI Raspberi Kami akan meletakkan anda Enam belas skrip untuk menghidupkan relays yang disambung atau ke dalam PIN pekerja dalam setiap, anda boleh rujuk di dalam jadual sebelumnya; dalam skrip bersamaan dengan Raspberi bersambung secara langsung daripada pihak GPIO kepada penyampai plat akan meletakkan mereka dalam direktori /Rumah/pi/relays/gpio.

Untuk mewujudkan hierarki direktori dan subdirektori, dan menyalin fail-fail program di Python Kami akan menggunakan dua skrip dalam Bash; yang pertama akan menjadi yang melaksanakan di dalam PI kaitan yang PI di ketiga-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 sepadan dengan kawalan yang Raspberi kaitan yang PI di ketiga-tiga cabang Kami akan simpan dalam direktori /VAR/www/penyampai/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/*

Pada masa ini, kita perlu mencipta satu utama pasangan supaya di PI Raspberi Ia adalah laman untuk jalankan di skrip daripada yang bersambung ke dalam PI di ketiga-tiga cabang dari jauh, sebagai pengguna yang akan melakukannya www-data mesti menguntukkan kata laluan untuk log masuk dan membuat pasangan utama bagi pihak 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 dicipta dalam Pasang Kekunci awam dan swasta, Kami akan menyemak yang kita boleh oleh SSH tanpa memasukkan kata laluan yang; bagi dikendalikan dari web sama kawan berbeza Raspberi menyampaikan pada rangkaian tempatan yang sama, dalam kes ini Saya telah menyambung mereka terima-kasih kepada penghala percuma kecil WRTNode.

WRTNode_ETHKemudian kita akan mencipta Laman web kami yang akan mengandungi dalam butang jenis input anda perlu tekan butang untuk melaksanakan di skrip dalam Python dari antara muka web dengan menggunakan kaedah pos; untuk contoh ini saya akan menunjukkan web dengan hanya empat unit mula dibina supaya artikel bukanlah terlalu panjang.

<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 berteduh segala-galanya dari sebuah kedai tunggal, mesti bypass semua negatif output 220V Penyampai.

Sambungan pada punca kuasa utama Kami akan menjadikan mereka dengan cara yang sama seperti entri lepas, tertutup antara pasang dan Tukar skim pemutus litar kecil untuk memudahkan pengesanan amalan.

Penyampaian berbeza plag

Dalam ansuran berikutnya pada automasi rumah dengan harga yang berpatutan Kita akan belajar untuk mengambil kesempatan daripada dua bas I2C Ucapan terima kasih kepada yang PI di ketiga-tiga cabang, dan kami akan membuat satu bukti semakan konsep 128 LED boleh ditukar ganti dengan barangan elektrik.

Jika anda mahu anda boleh Ikuti saya di Twitter, Facebook, Google +, LinkedIn, atau berkongsi dengan butang di bawah penerbitan ini, Jika anda mempunyai sebarang pertanyaan atau cadangan sila tidak teragak-agak untuk memberi komen.

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

4 tinjuan"PI Raspberi - melaksanakan sistem automasi rumah dengan harga yang berpatutan [Bahagian II]

  1. Posting yang sangat baik, terus!!
    Soalan, Saya ingin juga memasang automasi sebuah rumah dengan mudah sistem Raspberi, tapi tidak berapa contohnya untuk mengetahui status cahaya,buta atau peranti beberapa, Jika ia telah secara manual diaktifkan.
    Saya katakan ini sebagai contoh, Jika saya ingin menghidupkan cahaya dari telefon tetapi tidak di negeri itu yang ketika itu.

    Salu2

    • Hello Igor, Terima kasih untuk komen anda.

      Ia berlaku kepada saya yang anda boleh gunakan beberapa jenis penderia yang mengesahkan ketegangan yang sampai hendak kawalan lampu, dan memberitahu ianya pelayan web anda dalam masa sebenar untuk mengetahui pada bila-bila masa jika ia dihidupkan atau tidak.

Tinggalkan Jawapan