Raspberry PI – Thực hiện một hệ thống tự động hóa nhà giá cả phải chăng [Phần III]

Sau vài tháng, tôi đã quyết định quay trở lại Dự án này với mà tôi dự định sẽ tạo ra một Hệ thống tự động hóa nhà miễn phí, và giá cả phải chăng kinh tế; Này ít vi máy tính dựa trên tiêu thụ, Nhưng nền tảng chéo di động đến bất kỳ thiết bị nào với hệ điều hành GNU/Linux có sẵn từ Port GPIO.trước bài viết Chúng tôi đã học được để kiểm soát các mô-đun Rơ le optoacoplados với Quả mâm xôi PI bởi bash, PHP, và Python; nhân dịp này Tôi đã tối ưu hóa hệ thống tự động hóa, và bất ngờ tôi đã di chuyển nó để Raspberry PI 3 để xử lý kết nối không dây, Nhưng nếu bạn muốn bạn có thể sử dụng bất kỳ mô hình trước đó.

Các phần cứng Nó bao gồm hai mô-đun của tám rơ le mỗi, tạo nên một tổng cộng Mười sáu outs để điều khiển Máy móc gia dụng, Ròng rọc điện, chiếu sáng; và một mà không có kết thúc thiết bị nó được chuyển đổi sang này nhỏ Raspberry PI 3, trong tất cả mọi thứ bạn cần cho domotic nhà u office thông thường.

Xây dựng tự động hóa lược đồ

Circuit breaker chuyển sơ đồ domotic DIY.

Bảng điều khiển được lập trình trong PHP, và là một tối ưu hóa các mã số Các phiên bản trước nhưng dự định để quản lý các GPIO trực tiếp thông qua bash mà rất nhiều làm tăng tốc quá trình; một phải, Kể từ khi chúng tôi sẽ phục vụ này qua trang WiFi.

FremooticsPI

Bảng điều khiển web hệ thống tự động hóa.

Một thực tế của không có tệp bổ sung để quản lý các kết quả đầu ra cổng GPIO của Quả mâm xôi bởi Python; Chuyển đổi này đơn giản Trang web, một file duy nhất, trong sự thật điểm khởi đầu của mà đã trở thành một ngày nào đó tại một Hệ thống tự động hóa nhà đầy đủ Tôi sẽ phát triển cùng nhau.

<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

?>

Để thực hiện Các kết nối giữa mâm xôi và chuyển tiếp, Bạn phải đi đến chân chữ bảng dưới đây Dựa trên lược đồ GPIO BCM; bởi vì nếu không bạn sẽ phải sửa đổi các dòng trong tập tin PHP, và thay thế trong các Mã số những con số MÃ PIN nhân viên.

Raspberry PI model B + / 2/3 Relay module 1
+ 5V + 5V
GPIO 4
IN 1
GPIO 17
IN 2
GPIO 27 IN 3
GPIO 22
IN 4
GPIO 18 IN 15
GPIO 23
IN1 6
GPIO 24
IN1 7
GPIO 25
IN1 8
GND GND
Raspberry PI model B + / 2/3 Relay module 2
+ 5V + 5V
GPIO 5
IN 1
GPIO 6
IN 2
GPIO 13
IN 3
GPIO 12
IN 4
GPIO 19
IN1 5
GPIO 16
IN1 6
GPIO 20
IN1 7
GPIO 21
IN1 8
GND GND

Sau khi kết nối tất cả các Pins của Quả mâm xôi để các tương ứng VCC, GND, e đầu vào của các Chuyển tiếp; chỉ còn lại sao chép các tập tin PHP để các Quả mâm xôi PI, để sử dụng những gì SCP điều đó sẽ cho phép chúng tôi để làm như vậy điều khiển từ xa.

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/

Cũng điều khiển từ xa Chúng tôi sẽ di chuyển tập tin vào thư mục của các máy chủ web, và chúng ta sẽ gán cho là do chủ sở hữu SSH để các người dùng và nhóm www-data; sẽ thêm nó vào các Nhóm gpio, và sau đó Chúng tôi khởi động lại để áp dụng những thay đổi.

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

Cuối cùng Chúng tôi nguồn cấp dữ liệu với chuyển tiếp tại 230V như chúng ta đã thấy trong các Bài viết trước đó làm cho một cầu nối giữa lối vào và cực tích cực khác, để sử dụng một Phích cắm, hoặc chuyển đổi thu nhỏ circuit breaker; Nhưng nếu chúng ta muốn kết nối Mười sáu thiết bị tiêu thụ cao là khuyến cáo sử dụng hai, hoặc thêm ổ cắm.

relespuenteados

Chương trình cầu nối giữa cực tích cực của các module relay.

Dây còn lại, mà tương ứng với các âm cực và để các mất của Trái đất, Chúng tôi sẽ kết nối họ trực tiếp đến điện thoại muốn kiểm soát thông qua các Relay module, trong trường hợp của một Cắm domotic DIY; Chúng ta cũng nên ghi nhớ mà cho sự an toàn của chúng tôi chuyển tiếp nên có 1A thoát, Vì vậy cho 16 kết quả đầu ra sẽ cần một rơ le 16ĐỂ.

Relay sơ đồ cắm

Sơ đồ cắm domotic DIY.

Năm sau video Bạn có thể xem các hoạt động này Mười sáu đầu ra hệ thống bằng cách kiểm tra chúng, thông qua một cuộc biểu tình với một đèn ít năng lượng; Nếu bạn thích Đừng quên Theo tôi trên YouTube để không bỏ lỡ bất kỳ của các video chưa được công bố Tôi sẽ xuất bản.

Nếu bạn muốn bạn có thể theo tôi trên Twitter, Facebook, Google +, LinkedIn, Feedly, hoặc chia sẻ nó với các nút trong ấn phẩm này, Nếu bạn có bất kỳ câu hỏi hoặc góp ý xin vui lòng đừng ngần ngại để bình luận.

Giúp chúng tôi để tiếp cận với nhiều người đọc Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

7 suy nghĩ về"Raspberry PI – Thực hiện một hệ thống tự động hóa nhà giá cả phải chăng [Phần III]

  1. Peatonet câu hỏi, Tôi đã sao chép mã như là và tất cả mọi thứ hoạt động một cách chính xác, Ngoại trừ rằng nút lùi lại đi, bật tắt xuống và ngược lại.

    Cảm ơn bạn cho tất cả các blog rực rỡ.

    • Xin chào XuFLeS, Cảm ơn bạn đã bình luận của bạn.

      Có thể có để làm với chuyển tiếp đến các đường ống kết nối; Nó sẽ là hữu ích để kiểm tra xem nếu bạn đã kết nối nó trong mở cửa bình thường (KHÔNG) thay vì bình thường đóng cửa (NC).

      Gặp lại bạn sớm.

      • Tôi đang thử nghiệm trước khi kết nối các số liên lạc 230 V và màu đỏ đã dẫn của các relay được bật trên khi tắt xung. Tôi đã sửa đổi một chút mã để đảo ngược nó và nhìn tốt, Nhưng nghi ngờ sự thật đã nổi lên tôi. Cảm ơn bạn x câu trả lời của bạn.

  2. Đóng góp tốt. Tôi cần một cái gì đó tương tự để kiểm soát thủy lợi, nhưng một điều kiện: Nếu một trong n kết quả đầu ra là trong 1 sau đó GPIOx sẽ trong 1. Xương GPIO = 0 nếu chỉ nếu tất cả các kết quả đầu ra = 0. Bất cứ ý tưởng?? Kết quả đầu ra ở đâu vì van và máy bơm GPIOx. Từ đã cảm ơn bạn.

    • Xin chào Edu,

      Tùy thuộc vào số lượng các kết quả đầu ra cuối cùng, sử dụng một hoặc nhiều raspberry PI; một sẽ là đơn giản, với một vài người nên đánh giá đó là tối ưu đường nhất thông tin giữa các thiết bị.

      Cảm ơn bạn đã cho ý kiến.

  3. Xin chào, Tôi quan tâm đến điều này bởi vì tôi muốn kiểm soát đèn chiếu sáng ngoài trời từ điện thoại.
    Nó sẽ là lần đầu tiên các bạn thử một cái gì đó với quả mâm xôi.
    Nhưng nghi ngờ phát sinh tôi khi gọi bài đăng này “một phần ba”.
    PHP mã với chỉ rằng, cũng như không thiếu sẽ sử dụng bất cứ điều gì từ phần một và hai?
    Tôi hiểu rằng đoạn mã này sẽ là index.php, nơi đặt iria?
    Cảm ơn nhiều!

    • Hi Paul,

      Chỉ với đoạn mã này PHP có thể thực hiện các phiên bản đặt ' hiện nay’ Hệ thống.

      Trong hướng dẫn trước đây và nhận xét của họ giải thích các tập tin ở đâu (index.php), giống như cho các quyền chính xác, vv…

      Cảm ơn bạn đã bình luận.

Gửi phản hồi