Arduino и управление светом

Думаю, первое о чём задумывается человек, желающий добавить элементы «умного дома» себе в квартиру — это управление освещением. В идеале минимальный набор функций, которыми должен быть наделён «умный свет» должен состоять из возможности включать и выключать свет как с выключателя, расположенного на стене, так и с любого устройства в домашней локальной сети, имеющего на борту браузер. Ещё есть большое желание управлять освещением с пульта дистанционного управления.
Итого минимальный функционал:

  • Включение/выключение света с кнопки
  • Включение/выключение света в браузере (а значит любым смартфоном/планшетом/компьютером/ноутбуком и т.д. в сети)
  • Включение/выключение света с ПДУ

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

Если кому-то лень читать, то можно посмотреть видео:

Остальные читаем дальше.
Для реализации функционала мне понадобились следующие элементы.

команды, freebsd, убунту, настройка, установка, сервер, server, ubuntu, сервер, arduino, умный дом

Необходимые элементы для управления освещением

  • Arduino — Плата с микроконтроллером. Я использовал версию Arduino UNO, в которой заменил разъём usb на mini usb, потому что при старом разъёме, контакты прилегали не плотно друг к другу.
  • Arduino Ethernet Shield W5100. Это плата расширения для Arduino, необходимая для подключения UNO к локальной сети. На чип W5100 одел радиатор, ниже по тексту про нагрев этого чипа будет несколько слов. Ещё подправил разъём под ICSP, чтобы шилд ложился плотнее на Arduino.
  • Реле, для управления нагрузкой. Почитав публикации, заметил, что обыкновенные реле служат не долго из-за наличия подвижных элементов в нём. Я использовал твердотельное реле Fotek SSR-40 DA. Оно дороже, но надёжнее
  • ИК-приемник. Я использовал приёмник VS1838B с частотой 38 кгц. В теории хотелось бы располагать приёмник возле самого выключателя в комнате, по аналогии с управлением телевизором. Чтобы включить телевизор, надо на него направить пульт, но вот как их расположить в выключателе, чтобы это было эстетически не противно, я пока не придумал. Подумываю о том, чтобы располагать ИК-приёмники в центре комнаты на потолке. Ещё, пока только теоретический вариант — это использовать дополнительную плату Arduino, которая и будет с помощью GET запросов по локальной сети включать или выключать свет в любой из комнат. Но это пока теория и я остановился на том, чтобы расположить ИК-приёмник возле самого выключателя. В случае каких-то модификаций, ИК-приёмники можно будет убрать в чашку с выключателем, благо занимает он мало места.
    Чтобы подключить ИК-приёмник, желательно будет спаять небольшую обвязку, состоящую из:
    1 резистора на 100 Ом (не перепутайте с 100 кОМ. При 100 кОМ работать не будет)
    1 Конденсатора электролитического с номиналом 10мкф 50в , вотльтаж можно и меньше взять.
    1 Конденсатора керамического с номиналом 0.1мкф (взял с маркировкой S104).
    Либо божно взять уже готовый модуль на плате с напаянными элементами, включая сам ИК-приёмник.
  • Пульт дистанционного управления. Я использовал от телевизора LG, исходя из тех соображений, что телевизор или любое другое устройство LG я не куплю, то есть нажимая на кнопку пульта, я не буду думать о том, чтобы сработало именно выключение света, а не телевизор или другое устройство LG. Да, пульт выбран довольно большой, но в перспективе многие кнопки будут задействованы, ведь управлять будем не только светом. Сильно специфического производителя пультов, я тоже решил не брать.
  • Светодиод. Для одного блока я использую всего 1 светодиод и объясню почему. Он мне нужен лишь для индикации состояния реле, а как следствие и состояния света, включен или выключен. Этот элемент блока управления светом будет располагаться в коридоре, то есть в коридоре, стоя в обуви я смогу перед выходом увидеть в какой комнате свет был по забывчивости не выключен. Можно конечно для индикации и «красивостей» использовать дисплей, на котором выводить текст о состоянии света, но это физически занимает больше места. А так будет красным горит светодиод — значит свет включен, не горит — не включен.
  • Кнопка без фиксации настенная. Визуально она похожа на обычный выключатель, который стоит в большинстве квартир нашей родины, но работает она несколько иначе. Она всегда физически находится в одном положении, при нажатии на неё, она отщёлкивается обратно, по типу тактовой кнопки.
  • Тактовая кнопка. Примерно такая, как используется в кнопках reset или power на системном блоке ПК. Эта кнопка тоже нужна будет для выключения света, но в коридоре, чтобы не проходить в комнату, где забыли выключить свет.
  • Блок питания Arduino. «Запитать» Arduino можно как по USB, так и подав напряжение в выведенный для этого на плате разъём. Заметил такую особенность модуля локальной сети Ethernet Shield W5100. При питании от usb, чип w5100 начинает сильно греться. При этом перебоев в его работе я не наблюдал, даже при высокой его температуре и длительном испльзовании. Но при питании Arduino через отдельный разъём, чип w5100 грелся значительно меньше. Поэтому решено было питать Arduino НЕ через USB. Я использовал зарядку для телефона на 5v 2A с элементом для понижения с 5V до 3.3V
  • Сервер управления всеми элементами умного дома. На данном этапе сервер не нужен, НО надо заложить фундамент для дальнейшего централизованного управления автономными модулями умного дома. Это, конечно же отдельная история, то как интерфейс управления должен выглядеть. На первое время я, наверно, напишу простейшую самописку для управления через браузер с «резиновым» интерфейсом, несколькими вкладками и кнопками. Но произойдёт это уже по окончании установки всех модулей на своё место и ввода их в эксплуатацию.
  • ПК или ноутбук с USB разъёмом для загрузки кода в Arduino.
  • Arduino IDE — среда разработки для Arduino, которую можно бесплатно скачать с офф. сайта Arduino.
  • Резисторы для подключения кнопок(настенной и тактовой). Я использовал 1 кОм. И ещё резистор для подключения светодиода. Я использовал 220 Ом.
  • Провода, само собой.
  • Breadboard мне нужен был на момент разработки прототипа, очень удобно без пайки собрать схемку.

Таких модулей я соберу столько, сколько зон освещения предполагается в квартире, если не плюну на всю задумку по середине пути. То есть, если на потолке в одной комнате 2-е зоны освещения, значит надо 2-а выключателя, значит надо собрать 2-а модуля на базе Arduino. Решение использовать модульную конструкцию было исходным и обязательным, так как при неожиданной проблеме с одним модулем, жизнь в квартире не остановится и можно спокойно заменить один запасной элемент, не затрагивая работающее освещение.

Модуль локальной сети Ethernet Shield W5100 по задумке производителя, думаю, должен одеваться поверх Arduino, но в моём случаем мешал разъём USB самой Arduino и контакты прилегали не плотно. До сих пор не понимаю, почему не использовать более маленький форм фактор разъёма, например mini usb. Я пробовал перепаять разъёмы и скажу, что с mini usb работает так же хорошо, тем более этот разъём, в моём случае, нужен только для заливки скетча (скетч = прошивка микроконтроллера у Arduino), питание буду подавать через другой разъём. Итого решил отпаять «родной» разъём USB от Arduino и припаивать кабель с разъёмом на конце, чтобы Ethernet Shield W5100 ложился на Arduino хорошо, все контакты соединялись.

Этот блок управления одной зоной освещения в квартире будет располагаться в щитке и только настенная кнопка будет находиться в комнате. К сожалению к минусам можно отнести громоздкость конструкции и необходимость большого щитка, для хранения всех блоков. Даже прикинув в голове на двух комнатную квартиру, где в каждой комнате, включая кухню по две зоны освещения, получаем:

комнаты кол-во зон
освещения
комната 1 2
комната 2 2
кухня 2
туалет+ванная 2
балкон 1
коридор/прихожая 1
итого надо блоков 10

Идея управления освещением проста и исходя из функционала, расписанного в первых абзацах статьи, логика такова:

    • Вариант управления №1. Нажимаем кнопку на стене -> Arduino обрабатывает это нажатие -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.
    • Вариант управления №2. Отправляем в браузере GET запрос -> Arduino обрабатывает запрос -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.
  • Вариант управления №3. Нажимаем кнопку на ПДУ, таким образом отправляем команду на ИК приёмник -> Arduino обрабатывает команду -> срабатывает реле, замыкающее/размыкающее контакты. Свет включается или выключается.

Это всё кратко, что касается теории и необходимых комплектующих.
В следующих статьях расскажу, как эти элементы соединить вместе, покажу свою схему подключения и перейдём к написанию кода в Arduino IDE для нашего микроконтроллера, после чего получим полностью работоспособное устройство.

Arduino и управление светом: Один комментарий

  1. Уведомление: Arduino и управление светом. Схема подключения. | Media UniX

Добавить комментарий