ราสเบอร์รี่ PI - ดำเนินการระบบอัตโนมัติหน้าแรกที่ราคาไม่แพง [ส่วนที่สอง]

ในการโพสต์ก่อนหน้านี้เกี่ยวกับ ระบบอัตโนมัติในบ้านราคาไม่แพงตามราสเบอร์รี่, เราได้เรียนรู้การตรวจสอบบ้านเชื่อมต่อไฟจากแผงของ 8 รีเลย์เชื่อมต่อกับเรา ราสเบอร์รี่ PI.

ภาพหน้าจอ 2015-02-01 20:20:47วันนี้เราจะได้เห็นวิธีการควบคุมจำนวนเครื่องใช้ไฟฟ้าที่สิบหก จากวงจรที่เราดำเนินการข้างต้น, และเปิดใช้งานบอร์ดได้ให้ฉัน Jordi ของ @electronics.cat และคุณอยู่แล้วคุณสามารถดูสรุปของการ วันอิสระฮาร์ดแวร์; ออกแบบ โดยตรง, และร้อยเปอร์เซ็นต์ ฮาร์ดแวร์ฟรี.

สำหรับแบบฝึกหัดนี้ ผมจะใช้ การ สาขา 3 ของ PI, ที่รับผิดชอบการปรับหมุด GPIO ของ ราสเบอร์รี่ PI ของ 3.3V ถึง 5V สืบสอง และสามารถ งานที่สองสำหรับบัส PiCam I2C; ผมจะใช้แผ่น optoacoplados รีเลย์ที่ใช้ ในบทความก่อนหน้านี้เกี่ยวกับระบบอัตโนมัติในบ้าน.

Pi3Ramas

IP ในช่วงที่ 3 ออกแบบ โดย @JordiBinefa.

ทั้งหมดนี้ทำให้เรากำจัด จำนวนสิบหก Sockets domotic ซิสเต็ม แบ่งสอง ราสเบอร์รี่, และด้วย ขยายความถึง 128 ในกรณีของการ ของ PI 3 สาขา, เพราะมันทำให้เราใช้ประโยชน์จากรถสอง I2C ใช้ตัวเชื่อมต่อใน PiCam การเสียสละ.

การเชื่อมต่อของพี่สามสาขา, เราต้องเชื่อมหกตรงกับสลักรถสอง I2C ที่ไม่ใช่ทหารของโรงงาน, ในขณะนี้ Jordi มันกำลังทำงานบนแผ่นมันรุ่นใหม่สำหรับราสเบอร์รี่ PI B + และราสเบอร์รี่ 2.

กล้องดิจิตอล OLYMPUSการเชื่อมหมุดถือแถบสองสามด้วย จัมเปอร์, แต่ เราต้องทำให้แน่ใจว่า พวกเขามีมากขึ้นจัดเราได้ตลอดเวลา ก่อนที่จะบัดกรีได้.

เราสามารถเชื่อมต่อการ สาขา 3 ของ PI การ ราสเบอร์รี่ ก่อนหน้านี้มีแก้ไข แยกแผ่นสอง, เพื่ออะไร Jordi ใช้ตัวแยกพลาสติกดังกล่าว.

ปี่ 3 และดัชนีพลาสติกแบ่งช่องต่อ P3.

set05_08_v02_P2P3P4

โครงร่างของตัว P3 ทำ โดย @JordiBinefa.

ดำเนินการเชื่อมต่อกับการ รีเลย์การ์ดแผ่น, เราต้องงอขาของรีเลย์บอร์ด ต้องการเชื่อมต่อของพี่สามสาขา, ช่วยเรา ด้วยคีมบาง; ในภาพถัดไป คุณสามารถดูผลสุดท้าย.

ขึ้นอยู่กับตำแหน่งของหมุด VCC และ บริจาคให้ ในรีเลย์ของเรา, เราจะวางนี้ จัมเปอร์ รีเลย์ในหนึ่งโมดูล, หรือตำแหน่งอื่นในการลงทุนเหล่านั้น; แบริ่งเสมอในใจว่า แผ่นรีเลย์ต้องขับเคลื่อน ด้วย USB.

IN1 IN2 IN3 IN4 VCC บริจาคให้

IN1 IN2 IN3 IN4 บริจาคให้ VCC

ตอนนี้เราจะเชื่อมต่อของเรา รีเลย์เอาต์พุต 8 ไปกับอะแด็ปเตอร์ของรีเลย์, และในการ สาขา 3 ของ PI; ควรสังเกตที่ นี้เข้ากันได้กับสี่ และแปดเอาท์พุทรีเลย์.

แล้วเราสามารถดูตารางของการเชื่อมต่อระหว่างการ รีเลย์, การ สาขา 3 ของ PI, และ ราสเบอร์รี่ PI.

Optoacoplados รีเลย์โมดูล ต่อ P3 ราสเบอร์รี่ PI รุ่น B
VCC + 5V + 5V
ใน 7 บิต 0 GPIO 29
ใน 6 บิต 1 GPIO 28
ใน 5 บิต 2 GPIO 18
ใน 4 บิต 3 GPIO 7
ใน 3 บิต 4 GPIO 8
ใน 2 บิต 5 GPIO 10
ใน 1 บิต 6 GPIO 9
ใน 0 บิต 7 GPIO 11
บริจาคให้ บริจาคให้ บริจาคให้

ดำเนินการเชื่อมต่อ รีเลย์ optoacoplados แผ่น โดยตรงไป GPIO ของคนอื่น ราสเบอร์รี่, ในภาพด้านล่าง คุณสามารถดูผลสุดท้าย.

การเชื่อมต่อระหว่างการ GPIO ของของเรา ราสเบอร์รี่ พวกเขาจะเหมือนกับใน บทความก่อนหน้านี้, อย่างไรก็ตาม ในกรณีนี้ผมได้เพิ่มตารางเชื่อมต่อทั้งหมด.

Optoacoplados รีเลย์โมดูล ราสเบอร์รี่ PI รุ่น B
VCC + 5V
ใน 1 GPIO 3
ใน 2 GPIO 2
ใน 3 GPIO 24
ใน 4 GPIO 25
ใน 5 GPIO 23
ใน 6 GPIO 27
ใน 7 GPIO 22
ใน 8 GPIO 4
บริจาคให้ บริจาคให้

การเรียกใช้การ สคริปต์ในหลาม เว็บที่เราจะเห็นด้านล่าง, เราต้องให้สิทธิ์แก่ผู้ใช้ ข้อมูล www เป็นผู้ใช้ที่กำหนดให้กับเว็บเซิร์ฟเวอร์; เพื่ออะไร ก่อน เราจะติดตั้งเซิร์ฟเวอร์เว็บ apache เราได้เห็นในบทความก่อนหน้านี้ และเราจะเขียน sudo visudo ในสถานี และ ในตอนท้ายของแฟ้ม เราจะเพิ่มข้อมูล www เป็น sudoer, มีผลดังนี้.

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

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

แต่ละขา GPIO สิบหก พนักงานในแบบฝึกหัดนี้, เราต้องสร้างไดเรกทอรีย่อย, และ สองสคริปต์ใน Python; การเปิดใช้งาน, และอื่น ๆ การเปิดรีเลย์, นี่เป็นตัวอย่างด้วยการ ปักหมุด 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)

ในแต่ละ ราสเบอร์รี่ PI เราจะวางของคุณ สคริปต์ที่สิบหก เปิดรีเลย์เชื่อมต่อ หรือการ พิน พนักงานในแต่ละ, คุณสามารถให้คำปรึกษาในตาราง; การ สคริปต์ สอดคล้องกับการ ราสเบอร์รี่ เชื่อมต่อโดยตรงจากการ GPIO การจัดเรียงแผ่นจะวางไว้ในไดเรกทอรี /บ้าน/ปี่/รี เลย์/gpio.

การสร้างลำดับชั้นของไดเรกทอรีและไดเรกทอรีย่อย, คัดลอกแฟ้มโปรแกรมใน งูเหลือม เราจะใช้เหล่านี้อีกสอง สคริปต์ ใน ทุบตี; มีที่ใช้ในการ PI เชื่อมต่อกับการ สาขา 3 ของ PI.

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

คนอื่น ๆ สคริปต์ที่สิบหก สอดคล้องกับการควบคุมการ ราสเบอร์รี่ เชื่อมต่อกับการ สาขา 3 ของ PI เราจะเก็บไว้ในไดเรกทอรี /var/www/รี เลย์/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/*

เวลานี้ เราต้องสร้างความ คู่ของคีย์ เพื่อให้การ ราสเบอร์รี่ PI มันเป็นหน้าที่ทำการ สคริปต์ ของการเชื่อมต่อเพื่อการ สาขา 3 ของ PI จากระยะไกล, เป็นผู้ใช้ที่จะทำมัน ข้อมูล www ต้องกำหนดรหัสผ่าน เพื่อเข้าสู่ระบบ และสร้างคู่คีย์ในนามของคุณ.

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

เมื่อสร้างการ คู่ของคีย์สาธารณะ และส่วนตัว, เราจะตรวจสอบว่า เข้าถึงโดย SSH โดยไม่ต้องใส่รหัสผ่าน; สำหรับ ดำเนินการจากเว็บเดียวกันที่แตกต่างถ่ายทอดราสเบอร์รี่ บนเครือข่ายท้องถิ่นเดียวกัน, ในกรณีนี้ ฉันได้เชื่อมต่อพวกเขา ด้วยเราเตอร์ฟรีขนาดเล็ก WRTNode.

WRTNode_ETHแล้วเราจะสร้างหน้าแรกของเราซึ่งจะประกอบด้วยการ ชนิดค่านำเข้าปุ่ม คุณจะต้องกดเพื่อดำเนินการ สคริปต์ ใน งูเหลือม จากเว็บอินเตอร์เฟสโดยใช้วิธีการ post; ตัวอย่างนี้ ผมจะแสดงเว็บ โดยเริ่มต้นที่สี่เท่านั้นเพื่อให้บทความไม่ยาวเกินไป.

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

ถ้าต้องการเลี้ยงเขาจากเต้ารับเดียว, ต้อง ลบทั้งหมดข้ามผล 220V รีเลย์.

การเชื่อมต่อกับไฟ เราจะทำให้พวกเขาเหมือนกับในรายการสุดท้าย, อยู่ระหว่างรูปแบบปลั๊กและสวิตช์ เบรกเกอร์ขนาดเล็ก เพื่อความสะดวกในการติดตามการปฏิบัติ.

ปลั๊กส่วนรีเลย์

ในงวดถัดไปบน ระบบอัตโนมัติในบ้านราคาไม่แพง เราจะเรียนรู้การใช้ประโยชน์จากรถสอง I2C ประโยชน์ของการ สาขา 3 ของ PI, และเราจะให้การ หลักฐานการตรวจสอบแนวคิด 128 ไฟ Led ดิจิตอล โดยเครื่องใช้ไฟฟ้า.

ถ้าคุณชอบคุณสามารถทำตามฉันบน ทวิตเตอร์, Facebook, Google +, LinkedIn, หรือใช้ร่วมกับปุ่มภายใต้ประกาศนี้, ถ้าคุณมีคำถาม หรือข้อเสนอแนะโปรดอย่าลังเลที่จะแสดงความคิดเห็น.

บทความที่เกี่ยวข้อง

ช่วยให้เราเข้าถึงผู้อ่านเพิ่มเติม Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

4 ความคิดเกี่ยวกับ"ราสเบอร์รี่ PI - ดำเนินการระบบอัตโนมัติหน้าแรกที่ราคาไม่แพง [ส่วนที่สอง]

  1. โพสต์ดีมาก, อย่างต่อเนื่อง!!
    คำถาม, ต้องการติดตั้งเป็นระบบอัตโนมัติในบ้าน ด้วยระบบราสเบอร์รี่ง่าย, แต่ไม่เป็นไรเช่นการรู้สถานะของไฟ,ตาบอดหรืออุปกรณ์, ถ้ามันมีการเรียกใช้ด้วยตนเอง.
    ผมพูดแบบนี้เช่น, ถ้าต้องการเปิดไฟจากโทรศัพท์ แต่ไม่ได้อยู่ใน สถานะที่เป็นที่.

    Salu2

    • สวัสดี Igor, ขอบคุณสำหรับความคิดเห็น.

      มันเกิดขึ้นกับฉันที่คุณสามารถใช้บางชนิดของเซนเซอร์ที่สามารถตรวจสอบเข้าถึงแสงสว่างที่คุณต้องการควบคุม, และแจ้งให้ทราบเป็นเว็บเซิร์ฟเวอร์ในเวลาจริงให้ทราบตลอดเวลาว่าอยู่ หรือไม่.

ใส่ความเห็น