Сегодня научимся управлять включением и выключением реле с помощью raspberry pi 2, для примера будем включать и выключать розетку, управлять светильником или других электроприбором. Я использовал реле SRD-05VDC-SL-C.
1) Подключаем его к raspberry pi и к линии 220В. Я подключал только одно реле, но на плате у меня их два.
№ пина | номер GPIO | in/out | пины на реле |
14 | ground | gnd на реле | |
11 | 17 | out | in1 на реле |
22 | 25 | out | in2 на реле |
2 | 5v power | vcc на реле |
Перенесу сюда изображение разъемов GPIO raspberry pi 2
На изображении ниже схема подключения реле к raspberry pi 2 и линии 220 В.
Ещё раз поясню.
По схема реле соединяется с одной стороны с GPIO портами raspberry pi 2, а с другой с розеткой 220 В. На плате с реле есть 4-е пина — GND, IN1, IN2, VCC.
a) GND на реле надо соединить с GND на raspberry pi.
b) IN1 и IN2 — это как раз два реле. IN1 я подключил к GPIO17(пин 11), а IN2 к GPIO25(пин 22). Они у меня просто свободны, у вас могут быть свободны другие GPIO разъемы.
с) к пину VCC на реле подключаем 5v на raspberry pi 2. Я решил использовать пин №2 на raspberry.
Так же на плате есть контакты по три штуки возле каждого реле. От линии 220В я подвёл провод к контакту NO1 на реле 1. Контакт COM1 на реле 1 соединяю с одним из разъемов розетки. На второй контакт розетки я сразу подаю 220 B, то есть он идёт напрямую, минуя реле и raspberry. Если подключить не к NO1, а к NC1 то питание будет подаваться постоянно, розетка будет давать ток и без raspberry, поэтому NC1 я просто не использую.
С физическим подключением думаю понятно. Будьте аккуратны. Вы всё выполняете на свой страх и риск.
Перейдём к программной части.
2) пишем 2-а простейших скрипта:
sudo nano /script/gpio/relay01-01-down.sh
содержимое должно быть таким:
#!/bin/bash
echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
echo 1 > /sys/class/gpio/gpio17/value
и второй скриптик:
sudo nano /script/gpio/relay01-01-up.sh
содержимое должно быть таким:
#!/bin/bash
echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
echo 0 > /sys/class/gpio/gpio17/value
3) делаем их исполняемыми:
sudo chmod +x /script/gpio/relay01-01-down.sh
sudo chmod +x /script/gpio/relay01-01-up.sh
В целом можно уже поиграться, подсоединив к розетке лампу поочерёдно запуская каждый скрипт, будет то включать лампу, то выключать
sudo /script/gpio/relay01-01-up.sh
sudo /script/gpio/relay01-01-down.sh
4) Но интересней сделать кнопки управления реле в веб-интерфейсе. Веб-сервер уже поднят по этой статье, поэтому в его корне(по умолчанию это директория /var/www/ ) пишем в файл index.php код с кнопками. Код можно скопировать отсюда.
Там же в корне веб-сервера создаём файл style.css с содержимым, которое можно взять здесь.
Заходим на веб-сервер http://ip-адрес-raspberru-pi/ и должны увидеть две кнопки(они ещё не работают).
5) добавляем права для www-data следующим образом:
sudo visudo
там дописываем:
www-data ALL=(ALL) NOPASSWD: ALL
6) пробуем понажимать кнопки в веб-интерфейсе. Они уже должны работать и щёлкать релюшкой.
Результат сборки:
Доброго времени! воспользовался вашей инструкцией, всё получилось спасибо за статью!
И хочу поинтересоваться: у меня релюшка включается и выключается, но при этом терминал указывает на некую ошибку:
root@raspberrypi:/home/pi# sudo /script/gpio/relay01-01-up.sh
/script/gpio/relay01-01-up.sh: line 3: echo: ошибка записи: Устройство или ресурс занято
Вам неизвестно, как избавиться от этой ошибки?
А у вас небыло проблем с реле? Оно включается но не выключается, хотя диод на реле мигает.
Подобное поведение я наблюдал на твердотельном реле, но не с таким реле, которое использовалось в этой статье.
Получилось только включить реле. Выключается оно если отсоединить IN, на скрипт не реагирует. Почему?