Дата публикации: Jun 12, 2013 7:35:35 PM
Не так давно, в рамках наших курсов робототехники я занялся составлением серии занятий по созданию элементов "умного дома". Для начала решено было разобраться с самым важным элементом системы - классическим электромеханическим реле. С помощью этого простого устройства, микроконтроллер может управлять большой нагрузкой, подключенной к бытовой электросети. Что это за нагрузка? Например, утюг, забытый на рубашке. Имея доступ к серверу дома из сети интернет, вы может запросто обесточить розетку, к которой подключен злосчастный прибор.
По моему скромному мнению, почти идеальным сервером для умного дома является микрокомпьютер 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 другой важный элемент - видеокамеру, в качестве которой будет выступать обычная веб-камера.