События‎ > ‎

Умный дом на Raspberry PI - Реле

Отправлено 12 июн. 2013 г., 12:35 пользователем Олег Евсегнеев   [ обновлено 12 июн. 2013 г., 12:40 ]
Не так давно, в рамках наших курсов робототехники я занялся составлением серии занятий по созданию элементов "умного дома". Для начала решено было разобраться с самым важным элементом системы - классическим электромеханическим реле. С помощью этого простого устройства, микроконтроллер может управлять большой нагрузкой, подключенной к бытовой электросети. Что это за нагрузка? Например, утюг, забытый на рубашке. Имея доступ к серверу дома из сети интернет, вы может запросто обесточить розетку, к которой подключен злосчастный прибор.

По моему скромному мнению, почти идеальным сервером для умного дома является микрокомпьютер Raspberry PI. Я уже не раз рассказывал про эту замечательную штуку. Для экспериментов по управлению обычной лампой накаливания нам понадобится:

  • реле - TRC-5VDC-FB-CD (5А, 240В);
  • транзистор NPN - BC546B;
  • диод - КД243Б;
  • лампа на 60Вт.

Транзистор нужен для того, чтобы обойти ограничение по току и напряжению GPIO выводов контроллера. Будь то Arduino или Raspberry PI, ток свыше 20мА на GPIO может вывести контроллер из строя. Учитывая, что для включения выбранного реле требуется аж 91мА - без транзистора в нашем эксперименте не обойтись.


Схема работает чрезвычайно просто. Контроллер создает положительный уровень на ноге 25, который открывает транзистор. Открытый транзистор замыкает цепь катушки в реле, тем самым замыкая силовые контакты.

На схеме выводы J1 разрывают цепь лампы накаливания. То есть от патрона лампы один провод идет напрямую в розетку, а другой идет на J1, и уже затем в розетку. Конечно, с помощью этой схемы можно рвать и просто один из выводов самой розетки, главное чтобы подключенная к ней нагрузка не превышала мощность 1кВт.

   

Что касается управляющей программы, то для эксперимента можно использовать ту же программу, что и для зажигания обычного светодиода.

Включение реле на Raspberry PI

from RPi import GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT) # переключение 25-го контакта в режим вывода
GPIO.output(25, False) # вывод логического нуля (по-умолчанию)

sleep(3) # пауза 3 секунды
GPIO.output(25, True) # вывод логической единицы - включаем реле

sleep(3) # пауза 3 секунды
GPIO.output(25, False) # вывод логического нуля - выключаем реле

GPIO.cleanup() # сброс всех выводов

Конечно, этот код совсем не годится для организации "умного дома" - это просто тест реле. Учебная версия более или менее работоспособной системы скоро появится в моем git-репозитарии.

В следующий раз я напишу о том как правильно подключить к Raspberry PI другой важный элемент - видеокамеру, в качестве которой будет выступать обычная веб-камера.
Comments