Управление светом ардуино: Arduino управление светом: как подключить, программа

Содержание

Датчик движения для Ардуино: как подключить датчик движения

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

Описание датчика движения

Создаваемые на базе Ардуино сенсоры перемещения устроены довольно просто. Они работают на принципе регистрации инфракрасных излучений. Помимо контроллера, основной компонент устройства — высокочувствительный пассивный пироэлектрический (PIR) элемент, регистрирующий присутствие определенного уровня инфракрасного спектра. Чем теплее появившийся в радиусе действия сенсора объект, тем сильнее излучение.

Типичный PIR-датчик снабжается полусферой с фокусирующими поступающую на сегменты сенсора тепловую энергию линзами. Обычно применяется линза Френеля: она хорошо концентрирует тепло и существенно увеличивает чувствительность. В качестве платформы нередко берут Arduino Uno, но возможно создание датчика и на других версиях контроллера.

Конструктивно PIR-сенсор делится на две части. Поскольку для устройства принципиально важно улавливание движения в зоне покрытия, а не уровень тепловой эмиссии, части устанавливаются так, чтобы при появлении на одной из них большего уровня излучения на выход гаджета подавался сигнал low или high. Далее он обрабатывается микроконтроллером.

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

Базовые технические характеристики

Большинство PIR-датчиков соответствуют следующим параметрам:

  • зона уверенной детекции движения — до 7 м;
  • угол слежения — до 110 градусов;
  • рабочее напряжение — от 4.5 до 6 В;
  • диапазон температур — от -20 до +50 градусов;
  • время задержки 0.3–18 сек.

Модуль ИК-датчика несет на себе также электрическую обвязку с необходимыми компонентами: конденсаторами, предохранителями и резисторами.

Основные принципы работы

Пироэлектрик представляет собою материал, при изменении своей температуры генерирующий электрическое поле. В простом PIR-сенсоре два таких элемента, подключенных с разными полярностями.

Предположим, что гаджет смонтирован в помещении.

  1. Если комната пуста, все элементы получают одинаковую порцию теплового излучения, напряжение на них также постоянно (на левой части рисунка ниже).
  2. Когда в комнате появляется человек, он оказывается в зоне действия элемента 1. Тот генерирует положительный электроимпульс (на центральной части картинки).
  3. Перемещение человека приводит и к движению его «теплового пятна», улавливаемого элементом 2. Второй элемент создает отрицательный импульс (правая часть).
  4. Схема датчика регистрирует оба импульса, делая вывод о наличии человека в «поле зрения». А логика контроллера по этому сигналу выполняет заложенное пользователем действие — включает свет, активирует сигнализацию и так далее.

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

Общая схема подключения

Большинство модулей снабжено тремя пинами для соединения с платой Ардуино. Распиновка может различаться в зависимости от производителя узла, но, как правило, выходы отмечаются поясняющими надписями.

Обычно выходов три: GND — заземление, второй — +5 В, он выдает сигнал с ИК-сенсоров. Третий — цифровой, для снятия данных

Принцип соединения с контроллером следующий:

  • GND — на любой доступный пин «земли» платы Arduino;
  • «цифра» — на любой свободный цифровой вход/выход;
  • коннектор питания следует подключить к выходу +5 В.

Пример работы

Рассмотрим ситуацию использования датчика на примере микроконтроллера Ардуино Уно и сенсора HC-SR501. Его характеристики:

  • рабочее напряжение постоянного тока — 4.5–20 В;
  • ток покоя —  ≈ 50 мкА;
  • выходное напряжение — 3.3 В;
  • диапазон температур — от −15 до +70 градусов Цельсия;
  • габариты — 32×24 мм;
  • угол детектирования — 110 градусов;
  • дистанция срабатывания — до 7 метров.

Важно: при температурах от +30 градусов эффективное расстояние детекции может снизиться.

В указанном сенсоре установлены два пироэлектрических датчика IRA-E700.

Сверху они прикрыты сегментированной полусферой. Каждый сегмент — фокусирующая тепло на определенный участок ПИР-датчика линза.

Внешний вид устройства:

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

Настройка

ИК-модуль HC-SR501 весьма прост в настройке и дешев. У него есть перемычка для конфигурирования режима и пара подстроечных резисторов. Общая чувствительность настраивается первым потенциометром: чем она выше, тем шире зона «видимости» гаджета».

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

Другой потенциометр управляет временем срабатывания устройства: если обнаружено перемещение, на выходе создается положительный электрический импульс определенной длины (от 5 до 300 секунд).

Следующий управляющий элемент — перемычка. От нее зависит режим работы.

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

Соединение датчика с контроллером

Подключение датчика движения к Ардуино следует выполнять по указанной схеме:

Пин OUT соединяется с пином 2 Уно, а VCC подсоединено к контакту +5 В. Принципиальная схема конструкции:

Программная часть

Помимо контроллера, для функционирования оборудования необходима управляющая аппаратным комплексом программа. Ниже приведен простой скетч:

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

Модифицируем устройство добавлением реле, которое станет включать свет. Принципиальная схема подключения:

Макет:

Программа для реализации данного функционала:

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

Интересно: существует возможность соединения сенсора с реле напрямую, без контроллера. Но внедрение в схему Arduino делает ее более гибкой, функциональной и конфигурируемой.

Где можно применить

Выше мы рассмотрели простой сценарий управления светом. Кроме него, такие PIR-датчики в связке с микроконтроллером находят применение в системах сигнализации, автоматического включения видеонаблюдения, открывания/закрывания дверей и других случаях, когда необходимо выполнять некоторые автоматизированные действия при движении в контролируемой зоне.

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

Недостатки

В силу отработанности аппаратной платформы, хорошо документированных схем, простоты разработки ПО и дешевизны PIR-датчики на Ардуино не обладают особыми недостатками в рамках возлагаемых на них задач. Возможности их применения ограничиваются естественными пределами ИК-технологии, периферийным оборудованием и заложенными в прошивку контроллера функциями.

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

Заключение

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

Находят они применение и в системах сигнализации и видеонаблюдения: по сигналу включается оповещение или запись события. Гибкость Arduino позволяет реализовать даже очень сложные проекты, например, включения сенсора в экосистему «умного дома». Хотя существуют и более продвинутые лазерные, ультразвуковые и тепловизионные варианты, ИК-детекторы в данной сфере остаются самым доступным и простым решением.

Видео по теме

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Pinterest

Умная теплица на Ардуино своими руками: подробное описание

Автоматизация вездесуща. Различные механизмы создают комфортные температурные условия, помогают при готовке пищи, ухаживают за одеждой, включают и гасят свет, а также поддерживают чистоту помещения. Но использование их не ограничивается бытом человека. Вообще во всем окружении, на улице или производстве, при перевозках чего-либо, в магазинах или сельском хозяйстве — везде работают незримые помощники.

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

Кроме уже описанного, в нашу жизнь вошли «умные» дома, города, кварталы или улицы. Главное отличие их от обычных — присутствие взаимосвязанных между собой систем управления. Каждая из которых контролирует одно устройство из присутствующих в комплексе. Но, работу всех их определяет общая система, отправляя сведения необходимые для функционирования или указывающие команды.

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

Общие сведения об управляющих системах

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

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

Основой многих из подобных комплексов составляют контроллеры серии Arduino, STM, Ti MSP430, Netduino, Teensy, Particle Photon, ESP8266 или иных распространенных плат такого типа в мире. Кроме того, некоторые специалисты создают свои варианты микро — компьютеров, управляющих оборудованием — на основе устаревших ПК или каких-либо 8 разрядных процессоров, к примеру, Z80.

Чего бы хотелось

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

Мониторинг и настройка

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

Управление

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

Реализация в «железе»

Ничего сложного в реализации проекта нет. Достаточно применить плату Arduino, в комплексе с несколькими датчиками (влажности, температуры, освещенности, наполнения бака полива и концевых контактов окон проветривания), а также парой двигателей для вентиляции и смонтировать систему «теплый пол».

Но сначала требуется сделать саму теплицу. Для основы была создана такая модель:

Вот ее перенос в реальность:

Мониторинг и настройка

Визуализация информации, а также пункты меню настройки выводятся на LCD1602 дисплей, с конвертором в IIC/I2C UC-146 для подключения его к Arduino.

Для выбора параметров используются 4 клавиши. Все это вместе желательно разместить в общем контрольном ящике.

Кроме визуального, для удаленного контроля будет использоваться модуль WIFI связи ESP8266 LoLin NodeMCU2, с помощью которого информация с использованием UDP протокола будет передаваться на домашний компьютер с настроенным web-сервером и базой данных. Которые впоследствии, можно будет получить на любом устройстве в общей сети — смартфоне, цифровом телевизоре или планшете.

Подключаться модуль к ардуино уно будет через серийный порт (RX/TX). Причем электрический контакт производится напрямую TX(модема)-TX(Arduino) и RX аналогично. Почему это важно — зачастую рекомендуют делать соединение перекрестным RX-TX. В прилагаемой схеме это не нужно.

Полив

Система полива работает на основе физических принципов и насоса, который функционирует определенное время. Периодом и началом которого управляет Ардуино. С утра бак наполняется водой, что ограничивается временем в управляющем скетче и датчиком на прилагаемом чертеже. В течение дня она прогревается воздухом в теплице. Вечером происходит кратковременное включение насоса, который слегка переполнив емкость запускает полив самотеком.

Так он выглядит в реальности (вместе с системой подачи воды на грядки):

Его схема работы:

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

Отопление

Подогрев земли сделан предварительной укладкой «теплого» пола под будущие грядки. Включение происходит через специальное реле на 30 А, так как мощности выдаваемой ардуино никогда в жизни бы не хватило для питания такого потребителя.

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

Вентиляция

Для обеспечения движения воздуха предусмотрены два поворотных окна, процесс открытия и закрытия которых выполняется двигателями от автомобильных дворников. В свою очередь, подключённых к Arduino.

Освещение

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

На приведенной ниже схеме оно подключается к выводам резерв (освещение).

Управляющая электрическая схема

Ну и конечно самая главная часть — принципиальная схема «мозгов» всей этой конструкции.

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

Программная часть

С оборудованием все понятно. Осталось разобраться с программами, которые им управляют и контролируют состояние всей системы. Так как в комплексе есть два высокоинтеллектуальных устройства — ESS8266 и сам Arduino. Соответственно для обоих нужны свои программы. Помещение их в память устройств, в обоих случаях производится через Arduino IDE.

Мониторинг

Скетч, который необходимо выгрузить в ESP8266 LoLin NodeMCU, для обеспечения его связи с Arduino и WIFI роутером.

Скачать скетч

Управление

Ну и в финале, большой скетч управления самой теплицей, который выгружается в Arduino.

Скачать скетч

Замечания по конструкции

Датчик DN11 желательно заменить на DN22, который хоть и стоит дороже, но более точен и функционирует без проблем свойственных своему младшему тезке. Для питания контуров управления можно использовать компьютерный блок питания, желательно форм-фактора AT.

Заключение

Как видно из всего выше сказанного создать у себя на участке умную теплицу не так уж и сложно. Какие-то элементы можно убрать, что-то можно добавить, но после проделанной работы важно одно — вы получите у себя на участке функциональную теплицу, которая будет вас радовать урожаем и сама за собой следить, вам останется только провести посадку и ждать урожая.

Видео по теме

Facebook

Twitter

Мой мир

Вконтакте

Одноклассники

Pinterest

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

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

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

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

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

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

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

  • 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 хорошо, все контакты соединялись.

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

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

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

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

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

Arduino и управление светом. Схема подключения.

Итак в первой части я описал своё видение минимального функционала «умного освещения» на базе Arduino UNO и сетевого модуля с чипом w5100. В этой части расскажу, как все элементы, указанные в первой части, собрать в одну схему.
На всякий случай, сообщу, что все действия, указанные, как в этой статье, так и во всех публикациях этого сайта, вы выполняете на свой страх и риск. Если решили попробовать, то будьте осторожны.
Вся схема для наглядности выведена на изображение (кликабельно):

Полная схема подключения всех элементов.

  • R1 — резистор с номиналом 1 кОм
  • R2 — резистор с номиналом 220 Ом
  • R3 — резистор с номиналом 100 Ом
  • C1 — конденсатор электролитический 10 мкф 50v (полярность важна)
  • C2 — конденсатор керамический S104 (полярность НЕ важна)

Итак первым подключим светодиод. У светодиода есть полярность и она важна при подключении, то есть нам надо знать, где у светодиода плюс, а где минус. Длинная ножка на светодиоде — это плюс, короткая, соответственно, минус. Но если попался светодиод с одинаковыми ножками, или отпаян откуда-то, то чтобы определить полярность, понадобятся батарейка и сам светодиод. Я использовал литиевую батарейку CR2025 с номиналом 3V, такие есть на материанских платах ПК. Можно использовать и обычную батарейку, как в пультах дистанционного управления. Соединяем контакты светодиода и батарейки.
a) Если светодиод НЕ загорелся

Светодиод не «горит» из-за не правильного подключения его к батарейке

то меняем контакты местами.

b) Если светодиод загорелся, то тот контакт, который прилегает к плюсу батарейки и будет плюсом светодиода. Это показано на изображении ниже.

Теперь плюс светодиода через резистор на 220 Ом подключаем к пину №6 Arduino, минус светодиода к пину gnd Arduino. Со светодиодом это все нюансы, которые стоило пояснить.
Остальное собираем внимательно по схеме, изображенной выше.

Несколько маленьких пояснений.
Конденсатор керамический S104, необходимый для ИК-приёмника, полярности не имеет, так же как и резисторы, поэтому каким контактом и куда вы его подключите не важно.
Но вот конденсатор электролитический с номиналом 10 мкф 50v имеет плюс и минус. Минус — это опять же более короткая «ножка» конденсатора, к тому же на бочёнке есть обозначение в виде белой полосы, в которой изображены прерывистые линии — это минус. С стальным, пожалуй, сложно ошибиться, просто смотрим на схему и так же соединяем. Если для ИК-приёмника развязку вам делать не надо, то есть вы купили уже готовый модуль, то просто подключаем этот модуль к Arduino. Там так же 3-и контакта, один для питания (контакт VCC), другой(data) — на пин№7 Arduino и третий (gnd) — на gnd Arduino.
Кому интересно посмотреть пошаговое видео по сборке схемы, то приятного просмотра:

Следующая часть будет посвящена написанию кода в Arduino IDE для нашей сборки.

Arduino и управление светом. Пишем код.

Итак заключительная статья, в которой заканчиваем реализацию основного функционала по управлению светом. В первой статье были описаны мои требования к управлению светом и перечислены все необходимые комплектующие. Во второй публикации описана схема подключения всех элементов. Настало время «подружить» эти компоненты.
Статью будет состоять из двух частей.

  1. Надо определить какие сигналы, какой код передаёт пульт дистанционного управления на ИК-приёмник в момент нажатия на кнопку.
  2. Код кнопки пульта будет известен из первой части. Будем считать, что дома (или не дома) у вас уже развёрнута локальная сеть и вы определились с тем, какой IP-адрес назначите Arduino. Пишем финальный код с комментариями.

Для ленивых уже готово видео по этой статье:

Первая часть.

Скачиваем среду разработки Arduino IDE для вашей версии операционной системы с оффициального сайта Arduino и устанавливаем (на этом я останавливаться не буду).
Все элементы, кроме блока питания, соединили и только после этого подключаем Arduino к usb-разъёму ПК или ноутбука.
Скачиваем библиотеку «IRremote» и кладём распакованное в C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\Documents\Arduino\libraries. Так как эта библиотека конфликтовала со стандартной библиотекой расположенной в «C:\Program Files (x86)\Arduino\libraries\RobotIRremote», поэтому я удалил из директории «C:\Program Files (x86)\Arduino\libraries\RobotIRremote» папки Robot_Control, Robot_Motor и RobotIRremote, хотя по идее достаточно было бы удалить только папку «RobotIRremote». После того как конфликтующие библиотеки удалены, можно залить скетч для проверки, иными словами загрузить нашу программу в микроконтроллер. Для этого запускаем Arduino IDE, удаляем всё, что там уже написано и вставляем код (скетч №1 ) отсюда, или скачиваем скетч. Если надо лишь знать коды нажатия кнопок(а нам этого достаточно), то будет достаточно кода отсюда или отсюда.

После этого, надо указать порт, к которому подключена наша плата Arduino и модель самой платы. В моём случае это Arduino UNO. Для этого в Arduino IDE жмём «Инструменты» -> «Плата Arduino/Genuino UNO» -> «Arduino/Genuino UNO»:

А номер COM-порта указываем через «Инструменты» -> «Порт» -> Выбираем порт с платой:

И вот теперь можно нажать кнопку «Загрузка» в Arduino IDE. Немного ждём, когда успешно закончится загрузка скетча в микроконтроллер (несколько секунд), в это время на плате Arduino будут моргать светодиоды. После чего открываем в Arduino IDE «Инструменты» -> «Монитор порта». Сначала там будет пусто, но возьмём пульт, направим на ИК-приёмник и нажмём на кнопку пульта и увидим появляющиеся символы — это коды кнопок пульта.

Здесь на изображении видно, что я нажал всего 2-е кнопки на пульте. символы FFFFFFFF обозначают, что после нажатия кнопки, я продолжаю её держать. Таким образом, нажав на все кнопки пульта, можно узнать все их коды. Для наглядности я вывел их в таблицу, но Вам она будет бесполезна, так как значения кнопок будут другие. Эти значения нам будут нужны во второй части, запишите их, потому что совсем рядом

вторая часть.

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

Поступаем с ним так же, как со скетчем из первой части этой статьи, то есть заливаем в Arduino UNO. После этого можно пробовать переключать реле кнопкой или пультом или через веб-интерфейс. В скетче я указал, что IP адрес у Arduino будет 10.36.1.52. Весь новый функционал для управления освещением в квартире я буду считать дополнительным и выносить в отдельные статьи, если будет время. А придумать можно много чего, например, управление звуком-хлопками, с помощью датчика движения или расстояния, использовать сенсорный в качестве кнопок и т.д.
Если есть полезная информация по модернизации схемы или кода, то добро пожаловать.
Интересует, реализовывал ли кто-то подобную схему на ESP8266 c GET-запросами?

Эксперимент 11. Светильник с кнопочным управлением [Амперка / Вики]

Список деталей для эксперимента

Принципиальная схема

Схема на макетке

Обратите внимание

  • Если вы переделываете схему из схемы предыдущего эксперимента, обратите внимание, что на этот раз нам нужно подключить светодиод к порту, поддерживающему ШИМ.

Скетч

p110_plus_minus_light.ino
#define PLUS_BUTTON_PIN     2
#define MINUS_BUTTON_PIN    3
#define LED_PIN             9
 
int brightness = 100;
boolean plusUp = true;
boolean minusUp = true;
 
void setup()
{
  pinMode(LED_PIN, OUTPUT);
  pinMode(PLUS_BUTTON_PIN, INPUT_PULLUP);
  pinMode(MINUS_BUTTON_PIN, INPUT_PULLUP);
}
 
void loop()
{
  analogWrite(LED_PIN, brightness);
  // реагируем на нажатия с помощью функции, написанной нами
  plusUp = handleClick(PLUS_BUTTON_PIN, plusUp, +35);
  minusUp = handleClick(MINUS_BUTTON_PIN, minusUp, -35);
}
// Собственная функция с 3 параметрами: номером пина с кнопкой
// (buttonPin), состоянием до проверки (wasUp) и градацией
// яркости при клике на кнопку (delta). Функция возвращает
// (англ. return) обратно новое, текущее состояние кнопки
boolean handleClick(int buttonPin, boolean wasUp, int delta)
{
  boolean isUp = digitalRead(buttonPin);
  if (wasUp && !isUp) {
    delay(10);
    isUp = digitalRead(buttonPin);
    // если был клик, меняем яркость в пределах от 0 до 255
    if (!isUp)    
      brightness = constrain(brightness + delta, 0, 255);
  }
  return isUp; // возвращаем значение обратно, в вызывающий код
}

Пояснения к коду

  • Мы можем пользоваться не только встроенными функциями, но и создавать собственные. Это обоснованно, когда нам нужно повторять одни и те же действия в разных местах кода или, например, нужно выполнять одни и те же действия над разными данными, как в данном случае: обработать сигнал с цифровых портов 2 и 3.

  • Определять собственные функции можно в любом месте кода вне кода других функций. В нашем примере, мы определили функцию после loop.

  • Чтобы определить собственную функцию, нам нужно:

    • Объявить, какой тип данных она будет возвращать. В нашем случае это boolean. Если функция только выполняет какие-то действия и не возвращает никакого значения, используйте ключевое слово void

    • Назначить функции имя — идентификатор. Здесь действуют те же правила, что при именовании переменных и констант. Называть функции принято в том же стиле какПеременные.

    • В круглых скобках перечислить передаваемые в функцию параметры, указав тип каждого. Это является объявлением переменных, видимых внутри вновь создаваемой функции, и только внутри нее. Например, если в данном эксперименте мы попробуем обратиться к wasUp или isUp из loop() получим от компилятора сообщение об ошибке. Точно так же, переменные, объявленные в loop, другим функциям не видны, но их значения можно передать в качестве параметров.

    • Между парой фигурных скобой написать код, выполняемый функцией

    • Если функция должна вернуть какое-то значение, с помощью ключевого слова return указать, какое значение возвращать. Это значение должно быть того типа, который мы объявили

  • Так называемые глобальные переменные, т.е. переменные, к которым можно обратиться из любой функции, обычно объявляются в начале программы. В нашем случае — это brightness.

  • Поскольку при шаге прироста яркости 35 не более чем через восемь нажатий подряд на одну из кнопок значение выражения brightness + delta выйдет за пределы интервала [0, 255]. С помощью функции constrain мы ограничиваем допустимые значения для переменной brightness указанными границами интервала.

  • В выражении plusUp = handleClick(PLUS_BUTTON_PIN, plusUp, +35) мы обращаемся к переменной plusUp дважды. Поскольку = помещает значение правого операнда в левый, сначала вычисляется, что вернет handleClick. Поэтому когда мы передаем ей plusUp в качестве параметра, она имеет еще старое значение, вычисленное при прошлом вызове handleClick.

  • Внутри handleClick мы вычисляем новое значение яркости светодиода и записываем его в глобальную переменную brightness, которая на каждой итерации loop просто передается в analogWrite.

Вопросы для проверки себя

  1. Что необходимо для определения собственной функции?

  2. Что означает ключевое слово void?

  3. Как ведет себя программа при упоминании одной переменной с разных сторон от оператора присваивания =?

Задания для самостоятельного решения

  1. Доработайте код таким образом, чтобы шаг изменения яркости настраивался в одном месте.

  2. Создайте еще одну функцию и переделайте код так, чтобы одна функция отвечала за отслеживание нажатий, а другая — за вычисление яркости светодиода и возвращала его в analogWrite.


← Кнопочный переключатель | Оглавление | Кнопочные ковбои →

Управляйте своим светом, как компьютерщик, с помощью этих проектов Arduino

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

Большинство светодиодных лент поставляются с инфракрасным пультом дистанционного управления.Они полезны по очевидным причинам, но использование Arduino может добавить функциональности. (Если вы только начинаете работать с Arduino, сначала ознакомьтесь с нашим руководством для начинающих).

Начало работы с Arduino: руководство для начинающих

Arduino — это платформа для прототипирования электроники с открытым исходным кодом, основанная на гибком, простом в использовании аппаратном и программном обеспечении.Он предназначен для художников, дизайнеров, любителей и всех, кто интересуется созданием интерактивных объектов или сред.

Как насчет управления освещением с помощью голоса? А как насчет света, который включается автоматически, когда вы приходите домой ночью? Освещение настроения контролируется чужим настроением? Как звучит медленное наступление дня с искусственным восходом солнца?

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

Протяни руку

Начнем со старого фаворита — трещотки.Пользователь Instructables, MertArduino, создал переключатель с хлопушкой, который крепится к любой лампе с помощью модуля реле вместе с модулем звукового датчика, и все это управляется Arduino Uno.

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

Идеально, чтобы выглядеть круто, входя в комнату, менее идеально, если вы, вероятно, получите аплодисменты, когда войдете в комнату.

Поймай волну

В научной фантастике много интересных вещей, которые происходят всякий раз, когда герой щелкает пальцем.Будь то футуристические экраны с ручным управлением из Minority Report или возможность снимать медиафайлы с портативных устройств на большие экраны в The Expanse , кажется, что жесты говорят громче, чем слова.

Франциско Кастро сделал стильный светильник из простых материалов — сам абажур — это красивый простой дизайн, сделанный из бумаги.Вы можете ознакомиться с руководством по этому проекту на веб-сайте Make здесь.

https: // vimeo.com / 34435437

Пользователь Instructables admarschoonen пошел еще дальше, создав обновленную версию лампы Франциско.Он встроил емкостную сенсорную панель в каждый угол, чтобы изменить цвет лампы. На этот раз схема размещена внутри старой стеклянной лампы от IKEA. Вы можете найти подробное описание этого проекта здесь.

Кредит изображения: admarschoonen через Instructables

Придайте цвету

Как упоминалось во вступлении к этой статье, многие светодиодные ленты поставляются с дешевым пультом дистанционного управления для управления их цветом и яркостью, но для работы они зависят от линии прямой видимости.Намного более удобный способ управления светодиодными лентами — через Wi-Fi. Это, конечно, означает, что вашему светодиодному контроллеру также потребуется связь по Wi-Fi. Хотя для плат Arduino доступны экраны, почему бы не получить что-нибудь дешевое, совместимое с Arduino, с уже встроенной возможностью Wi-Fi? Мы уже рассказывали о плате NodeMCU (ESP8266), и она является фаворитом для многих наших проектов.

Руи Сантос создал лампу настроения, которой можно управлять из любого браузера, подключенного к его домашнему Wi-Fi, менее чем за 10 долларов.Ознакомьтесь с инструкциями на веб-сайте Random Nerd Tutorial.

Развивая идею освещения настроения еще на один шаг вперед, пользователь Instructables fjordcarver создал «лампу-хамелеон», которая меняет цвет в зависимости от того, что он видит на поверхности ниже.В конструкции используется светочувствительный резистор, а также красные, синие и зеленые светодиоды для обнаружения и воспроизведения цвета. См. Полное руководство — не менее, с нарисованными от руки диаграммами — для получения подробной информации о проекте.

Кредит изображения: fjordcarver через Instructables

Придайте ему ритм

Еще одна альтернатива усилению освещения — сделать его реактивным на то, что вы слушаете.Каким бы ностальгическим ни был светодиодный индикатор на стереосистеме моего детства, перескакивающий с желтого на красный, сейчас мы можем добиться большего.

Вышеупомянутое видео принадлежит Miska Karvonen , и вы можете увидеть, как он разработал это реактивное светодиодное освещение для работы практически с любой звуковой установкой на странице Instructables о проекте.Он использовал полоски Neopixels с индивидуальной адресацией (также известные как WS2812B).

Управляйте им с телефона

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

К счастью, есть компании, которые предоставляют облачный сервис, который позволяет нам обойти эту проблему.Недавно я написал вводную статью о Blynk — сервисе, призванном упростить подключение к устройствам с доступом в Интернет из любого места. С момента написания этой статьи они улучшили сервис, и для простой настройки облачной службы автоматизации это отличная отправная точка.

Дайте ему время и место

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

Стоит отметить, что если вы собираетесь создать этот проект, вы должны использовать МОП-транзисторы логического уровня (например, IRL540N или что-то подобное), чтобы не столкнуться с теми же проблемами, что и он!

Чтобы развить идею синхронизированного освещения еще дальше, мы можем использовать IFTTT (If This Then That).IFTTT позволяет автоматизировать технологии, позволяя связать практически все, от умного дома и систем безопасности до социальных сетей и смартфонов. Вы уже найдете тысячи «рецептов» для автоматизированных решений, с поддержкой многих готовых продуктов для умного дома.

Канал IFTTT Maker позволяет запускать и собственные проекты DIY.Отправив веб-запрос в облачный сервис, такой как Blynk [Broken URL Removed] и thinger.io (или ваш собственный веб-сервер, если он у вас есть), вы можете инициировать изменения в своей домашней системе различными способами.

Например, изменив этот учебник Alvaro Luis Bustamante по использованию IFTTT с thinger.io, вы можете добавить управление освещением на основе местоположения. Вместо Twitter, являющегося действием If , используйте канал Android, чтобы определять, когда ваш телефон подключен к вашей домашней сети Wi-Fi.

В комментариях к тому же руководству Альваро описывает, как изменить веб-запрос, чтобы ваш NodeMCU выполнял ваши ставки.

Кредит изображения: alvarolb через Thinger.io

Поговори с ним!

Вершина изощренных методов управления — голосовое управление.Несмотря на то, что существуют более сложные методы (контроль мозга, кто-нибудь?), Общение с аппаратными средствами — это основной продукт научной фантастики и лучший способ направить своего внутреннего Жан-Люка Пикара.

В предыдущей статье мы рассказали, как использовать Siri вместе с Raspberry Pi и платой NodeMCU для полного голосового управления светом.

После этого руководства был выпущен Amazon Echo, который превращает голосовые команды в гораздо более доступный и мощный метод управления.В статье на hackster.io Карлос Мартин создал для своей кухни RGB светодиодную установку с голосовым управлением, управляемую с помощью Alexa.

Эта установка довольно элегантна, поскольку в ней используется дешевая светодиодная лента с инфракрасным управлением и плата Particle Photon для генерации ИК-кодов для изменения яркости и оттенка освещения, поэтому вы все равно можете использовать оригинальный пульт и обходить нужен для любого аппаратного взлома.Вы можете сделать то же самое с NodeMCU, что будет еще дешевле.

Пусть свет говорит с вами вместо этого

До сих пор мы рассматривали способы, которыми вы можете управлять своим светом напрямую, но как насчет передачи этого управления кому-то другому.Звучит безумно, правда? У вас могут быть изображения мигающих огней в любое время дня и ночи в сценарии какого-то дома с привидениями, напоминающего сцену из Мистер Робот .

Нет, то, что я предлагаю, немного более контролируемое. Kaustubh Agarwal разработал простую лампу с изменением цвета, оттенок которой определяется поиском IFTTT по тегам Twitter. Цвет меняется в зависимости от общего настроения пользователей Twitter.

Кредит изображения: Каустуб Агарвал через Arduino Create

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

Сделайте свой диммер умным

Большинство из них пока сконцентрировано на светодиодном освещении, но вы можете использовать Arduino и для управления диммером переменного тока.Пользователь Instructables Jestin_Cubetech создал проект с использованием Arduino и Raspberry Pi для управления яркостью лампы с помощью широтно-импульсной модуляции (PWM).

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

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

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

Что такое Windows Core OS?

Windows Core OS — это урезанная версия Windows, но заменит ли она WIndows 10?

Об авторе Ян Бакли (Опубликовано 197 статей)

Ян Бакли, журналист-фрилансер, музыкант, исполнитель и видеопродюсер, живет в Берлине, Германия.Когда он не пишет или на сцене, он возится с электроникой или кодом своими руками в надежде стать безумным ученым.

Ещё от Ian Buckley
Подпишитесь на нашу рассылку новостей

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Еще один шаг…!

Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.

Диммер с дистанционным управлением и Arduino

В последнем проекте я сделал простой диммер с использованием Arduino, в котором интенсивность света (яркость лампы) регулируется с помощью потенциометра, теперь в этом проекте я собираюсь показать, как добавить пульт дистанционного управления в схему, чтобы Яркость лампы регулируется не с помощью потенциометра, а с ИК-пульта ДУ.

ИК-пульт дистанционного управления, используемый в этом проекте, использует протокол связи RC-5.Связанный проект ниже показывает, как декодировать пульты дистанционного управления RC-5. Обратите внимание, что нам нужно декодировать наш ИК-пульт дистанционного управления, чтобы узнать ИК-код кнопок, которые мы собираемся использовать в коде Arduino.

Связанные проекты:
Диммер 220 В с Arduino — Регулировка яркости лампы
Декодер ИК-пульта ДУ Arduino RC5

Требуемое оборудование:
Ниже приведен список основных компонентов, необходимых для этого проекта.

  • Плата Arduino
  • BT136 Симистор — лист данных
  • Лампа 220V AC
  • ИК-приемник
  • Компаратор LM393 (или LM339)
  • Оптопара (MOC3020, MOC3021, MOC3022, MOC3023) — лист данных
  • 2 диода 1N4007 (или 1N4001)
  • Резистор 2 x 220 кОм
  • резистор 10 кОм
  • Резистор 470 Ом
  • Резистор 120 Ом
  • Резистор 100 Ом
  • Конденсатор 47 мкФ
  • 0.Конденсатор 01 мкФ
  • Макет
  • Перемычки

Схема регулятора яркости с дистанционным управлением на Arduino:
Принципиальная электрическая схема показана ниже.

Все заземленные клеммы соединены вместе.

Обычно ИК-приемник имеет 3 контакта: GND, VCC и выход, в этом примере выходной контакт подключен к контакту 2 Arduino, который является контактом внешнего прерывания (INT0). ИК-датчик, а также микросхема компаратора LM393 питаются напряжением 5 В (поступает от платы Arduino).

Компаратор LM393 используется для обнаружения пересечения нуля.

Диммер с дистанционным управлением Arduino Код:
Как показано на принципиальной схеме, выходной контакт ИК-приемника подключен к внешнему контакту прерывания Arduino (контакт номер 2), это означает, что при нажатии кнопки (с пульта дистанционного управления) запускается Arduino. немедленное считывание ИК-сигнала.

Пульт дистанционного управления, используемый в этом примере, использует протокол RC-5, кодовое сообщение RC-5 имеет длину 14 бит:
2 стартовых бита, 1 бит переключения, 5 бит адреса и 6 бит команд.Два бита (стартовые биты) всегда равны 1, а бит переключения может быть 1 или 0.

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

Осталась важная часть сообщения кода RC-5 — номер команды. Я использовал две кнопки. первая с кодом = 0x10 увеличивает интенсивность света, а вторая кнопка с кодом = 0x11 уменьшает интенсивность света.Остальные кнопки пульта дистанционного управления не влияют на схему.

Частота моего источника переменного тока составляет 50 Гц, что означает период 20 мс, поэтому период полуволны составляет 10 мс = 10000 мкс.

Полный код Arduino:

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

14

18

19

20

21

22

23

24

25

26

27

28

29

30

000

34

35

36

37

38

39

40

41

42

43

44

45

46

49

0002 47

00030002 47

0003

51

52

53

54

55

56

57

58

59

60

61

62

63

9 0002 64

65

66

67

68

69

70

71

72

73

74

75

76

77 9000

81

82

83

84

85

86

87

88

89

90

91

92

93

000

93

000

97

98

99

100

101

102

103

104

105

106

107

108

109

1102

109

1102

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

138

137

138

// Диммер Arduino с ИК-пультом дистанционного управления

// Определение количества тактов Timer1 (с предварительным делителем 1/8)

#define short_time 1400 // Используется как минимальное время для короткого импульса или короткого промежутка (==> 700 мкс)

#define med_time 2400 // Используется как максимальное время для короткого импульса или короткого промежутка (==> 1200 мкс)

#define long_time 4000 // Используется как максимальное время для длинного импульса или long space (==> 2000 us)

// определение кодов кнопок пульта ДУ

#define Button_up 0x10

#define Button_dn 0x11

#define ZC_input 3

#define 9_gate2 8 bool ZC_previous = 0;

байт rc5_state = 0, j, alpha = 100;

беззнаковое int rc5_code;

настройка void (void) {

pinMode (triac_gate, OUTPUT);

digitalWrite (triac_gate, LOW);

// Конфигурация модуля Timer1

TCCR1A = 0;

TCCR1B = 0; // Отключить модуль Timer1

TCNT1 = 0; // Установить значение предварительной нагрузки Timer1 на 0 (сброс)

TIMSK1 = 1; // разрешить прерывание переполнения Timer1

attachInterrupt (0, RC5_Read, CHANGE); // Разрешить внешнее прерывание (INT0)

}

void RC5_Read () {

unsigned int timer_value;

if (rc5_state! = 0) {

timer_value = TCNT1; // Сохраняем значение Timer1

TCNT1 = 0; // Таймер сброса1

}

220V Диммер света с Arduino

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

Связанные проекты:
Следующие два проекта могут содержать некоторую полезную информацию.
SCR control with Arduino — Полуволновой управляемый выпрямитель
Управляемый мостовой выпрямитель с Arduino

Необходимые компоненты:
Это список основных компонентов, необходимых для сборки этого проекта.

  • Плата Arduino
  • BT136 Симистор — лист данных
  • Лампа 220V AC
  • Компаратор LM393 (или LM339)
  • Оптопара (MOC3020, MOC3021, MOC3022, MOC3023) — лист данных
  • 2 диода 1N4007 (или 1N4001)
  • Резистор 2 x 220 кОм
  • Потенциометр 10 кОм
  • резистор 10 кОм
  • Резистор 470 Ом
  • Резистор 120 Ом
  • Резистор 100 Ом
  • Конденсатор 0,01 мкФ
  • Макет
  • Перемычки

Схема регулятора освещенности Arduino: Принципиальная схема
Project приведена ниже.

Все заземленные клеммы соединены вместе.

В этом проекте я использовал LM393 (двойной компаратор IC) для обнаружения пересечения нуля, также можно использовать микросхему четырехканального компаратора LM339. Для той же цели можно использовать оптопару (обнаружение перехода через ноль), но я думаю, что компаратор намного лучше. Два диода, подключенные между неинвертирующим входом (+) и инвертирующим входом (-) компаратора, используются для ограничения напряжения на 2 выводах.Выход LM393 (или LM339) представляет собой открытый коллектор, поэтому я добавил туда резистор 10 кОм (между + 5 В и выводом 2 Arduino). Также на микросхему компаратора подается напряжение +5 В, которое поступает от платы Arduino.

Оптопара (MOC302x) используется для запуска симистора BT136, его светодиод подключен к выводу 8 Arduino через резистор 120 Ом. Я выбрал значение 120 Ом, чтобы получить ток около 30 мА (ток проходит через светодиод оптопары).

Потенциометр 10k используется для управления углом зажигания и, следовательно, яркостью лампы.

Код регулятора освещенности Arduino:
Частота моего источника переменного тока составляет 50 Гц, что означает период 20 мс, поэтому период полуволны составляет 10 мс = 10000 мкс.
Разрешение модуля АЦП Arduino составляет 10 бит, что означает, что цифровое значение может варьироваться от 0 до 1023.

Я использовал прерывание Arduino (INT0 на выводе 2) для обнаружения событий пересечения нуля, поэтому, когда есть событие пересечения нуля (падение или рост), Arduino прерывается и после некоторой задержки (угол альфа) запускает симистор.

1

2

3

4

5

6

7

8

9

10

11

12

13

140002

14

18

19

20

21

22

23

24

25

26

27

28

29

30

000

000 34

35

// Регулировка яркости света Arduino (диммер) код

#define triac_gate 8

#define pot A0

bool ZC = 0;

uint16_t alpha;

настройка void (void) {

pinMode (triac_gate, OUTPUT);

digitalWrite (triac_gate, LOW);

attachInterrupt (0, ZC_detect, CHANGE); // Разрешить внешнее прерывание (INT0)

}

void ZC_detect () {

ZC = 1;

}

void loop () {

if (ZC) {

if (alpha <9500) {

delayMicroseconds (alpha);

digitalWrite (triac_gate, HIGH);

delayMicroseconds (200);

digitalWrite (triac_gate, LOW);

}

ZC = 0;

альфа = (1023 — analogRead (pot)) * 10;

, если (альфа> 9500)

альфа = 9500;

}

}

Видео с диммером Arduino: