Журнал РАДИОЛОЦМАН, февраль 2017
Вадим Колесник, г. Тирасполь
Общие сведения
В статье пойдет речь о простом устройстве, которое я сконструировал для автоматического управления дополнительной светодиодной подсветкой на кухне. Поводом для разработки послужил ремонт помещения и полная замена кухонной мебели. До этого на старой кухне у меня была подсветка рабочей зоны (рабочий стол и мойка) на светодиодной ленте (светодиоды типоразмера 5050) с отдельным выключателем. После полного обновления интерьера кухни (и демонтажа светодиодной подсветки) стала резко ощущаться нехватка этого локального освещения. С креплением и размещением светодиодной ленты на новой кухне вопросов не возникло, а вот именно из-за отсутствия места для незаметной установки выключателя я и решил собрать устройство автоматического управления, не требующего каких-либо действий от пользователя (Рисунок 1).
![]() |
||
Рисунок 1. | Подсветка рабочей зоны на кухне с автоматическим управлением. |
Мы рассмотрим два варианта устройства, выполняющих автоматическое управление локальным освещением рабочего стола (рабочей зоны) на кухне, но отличающихся элементной базой и дополнительным функционалом. Автоматическое управление освещением подразумевает плавное поэтапное включение и выключение подсветки на основе данных о текущей освещенности в помещении (и ее изменении) и наличии движения человека. Первый вариант устройства выполнен на Arduino Nano и после простой настройки работает полностью в автоматическом режиме (Рисунок 2). Второй вариант выполнен на Wi-Fi модуле типа NodeMCU (СнК ESP8266, ESP-12E) и, помимо выполнения основной функции, имеет дополнительные возможности онлайн контроля и управления. В последнем случае пользователь может со смартфона или из браузера включить/выключить подсветку, а также получать данные о текущем уровне освещенности и режиме работы контроллера.
![]() |
||
Рисунок 2. | Контроллер управления подсветкой рабочей зоны на кухне (версия на Arduino Nano). |
В текущих версиях программного обеспечения контроллеров реализованы два основных режима работы: ночной и дневной. Основные режимы состоят из нескольких фиксированных по времени этапов, последовательно выполняющихся в зависимости от активности, которую фиксирует датчик движения, и резкого увеличения уровня освещенности помещения. Более подробно режимы работы рассмотрим в разделе «Скетч Arduino».
В общем случае оба варианта устройства имеют одинаковую структурную схему: микроконтроллер, датчик освещенности (фоторезистор), датчик движения, схема питания, силовой транзистор для управления светодиодами или, как в моем случае, светодиодной лентой. Отличия в схемотехнике двух устройств обусловлены спецификацией СнК ESP8266 (напряжение питания 3.3 В), а также расширенным функционалом устройства на NodeMCU. Идея создания второго варианта контроллера пришла после того, как я узнал об облачном сервисе myDevices Cayenne и оценил его работу на платформе Arduino, принимая во внимание поддержку чипа ESP8266 в интегрированной среде разработки Arduino IDE.
Принципиальная схема контроллера на Arduino
Изображенная на Рисунке 3 принципиальная схема контроллера подсветки очень проста. Оригинал схемы (и проект в целом) доступен пользователям в онлайн сервисе для проектирования электроники EasyEDA, при этом вы можете перенести ее в свой проект, например с целью усовершенствования или модернизации, или экспортировать в графический формат. Интерфейс EasyEDA русифицирован, интуитивно понятен и обеспечивает все необходимые разработчику инструменты, поэтому рисование схемы не вызвало каких-либо затруднений (Рисунок 4). Замечу, что в схеме использованы элементы из основной базы EasyEDA, а также из доступных пользовательских библиотек.
![]() |
||
Рисунок 3. | Принципиальная схема контроллера подсветки на Arduino. |
В качестве датчика освещенности используется миниатюрный фоторезистор VT93N1 номиналом 12 кОм. Резистор R3 с фоторезистором образуют делитель напряжения, который подключается к аналоговому входу A7. Это самый простой способ подключения фоторезистора к Arduino.
Для обнаружения присутствия человека в помещении я использовал ИК датчик движения Фотон-9 от охранной сигнализации. (Важный момент, не путайте с датчиками движения для управления осветительными приборами). Без изменения схемы и прошивки возможно применение любого аналогичного датчика движения с нормально замкнутыми контактами реле и напряжением питания 12 В. Датчик подключается к контроллеру посредством совмещенного разъема TB1-TB2 (клеммники с винтовым зажимом). Сигнальная линия датчика движения (клемма С, см. описание датчика [1]) подключается к порту D2, который настроен как вход с внутренним подтягивающим резистором. К клемме NC датчика подключена «земля». В нормальном состоянии контакты реле датчика движения (NC и С) замкнуты, следовательно, на входе D2 присутствует низкий логический уровень. При обнаружении движения контакты реле датчика размыкаются и, благодаря подтягивающему резистору, на входе D2 появляется высокий логический уровень.
![]() |
||
Рисунок 4. | Разработка принципиальной схемы в онлайн редакторе EasyEDA. |
Отмечу, что ИК датчики движения различных производителей имеют разную чувствительность (которая в большинстве случаев регулируется) и разные диаграммы направленности, поэтому на выбор места установки датчика придется потратить определенное время. В моем случае датчик расположен в верхнем углу напротив входной двери кухни (Рисунок 5) и, благодаря хорошей чувствительности, срабатывает уже при приближении человека к входу в помещение, отчего подсветка включается заблаговременно.
![]() |
||
Рисунок 5. | Расположение контроллера подсветки, ИК датчика движения и источников основного освещения в помещении. |
Контакт 2 разъема TB2 подключен к свободному порту D3 Arduino и может использоваться для расширения функционала контроллера. Это же относится и к разъемам P2-P4.
Светодиоды или светодиодная лента с напряжением питания 12 В подключаются в разъем DC2. Микроконтроллер реализует ШИМ управление яркостью свечения светодиодов с помощью силового MOSFET NTD3055L (или аналогичного с логическим уровнем управления), затвор которого подключен к цифровому выходу Arduino D5.
Плата Arduino Nano содержит регулятор напряжения 5 В для питания микроконтроллера, поэтому необходимости в использовании дополнительной схемы питания нет, и напряжение 12 В с разъема DC1 поступает непосредственно на вход Vin платы Arduino. Напряжение 5 В с регулятора Arduino поступает на фоторезистор и на контакт 2 разъема P4.
Список использованных библиотечных компонентов, сформированный в редакторе EasyEDA, приведен в Таблице 1.
Таблица 1. | Список использованных компонентов. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
Скетч Arduino
Исходный код программы микроконтроллера (скетч) прост в понимании и снабжен комментариями. Скетч предоставляется «как есть»; не исключена возможность его дальнейшей оптимизации или внедрения дополнительных функций и режимов работы контроллера. Здесь все зависит от вашей фантазии и желания.
Данные о текущей освещенности и ее изменении микроконтроллер получает с фоторезистора. Интегрированный АЦП преобразует значение напряжения на входе A7 в цифровой код, который без каких-либо преобразований в неизменном виде используется в программе. В последующем описании цифровой код АЦП для простоты будем считать некими условными единицами.
Как отмечалось в начале статьи, контроллер работает в ночном и дневном режимах. Это основные режимы работы, которые выполняются поэтапно:
- Дневной режим работы активен при недостаточной освещенности помещения (15 – 110 единиц):
- Этап 1:
При обнаружении движения на 3 минуты плавно включается подсветка с яркостью 20%. Если по завершении этого этапа фиксируется движение, то происходит переход на этап 2. Если движение отсутствует, подсветка плавно выключается;
- Этап 2:
Яркость подсветки плавно увеличивается до 100%, начинается отсчет 7-минутного интервала. При каждой фиксации движения отсчет сбрасывается и вновь начинается с нуля;
- Этап 3:
По истечении 7-минутного интервала яркость плавно снижается до 20% и происходит переход на этап 1;
- Этап 1:
- Ночной режим работы активен при низкой освещенности (менее 15 единиц):
- Этап 1:
При обнаружении движения на 3 минуты плавно включается подсветка с яркостью 10%. Если по завершении этого этапа фиксируется движение, то происходит переход на этап 2. Если движение отсутствует, подсветка плавно выключается;
- Этап 2:
Яркость подсветки плавно увеличивается до 50%, начинается отсчет 7-минутного интервала. При каждой фиксации движения отсчет сбрасывается и вновь начинается с нуля;
- Этап 3:
По истечении 7-минутного интервала яркость плавно снижается до нуля.
- Этап 1:
Описание и выбор соответствующих режимов работы в программе микроконтроллера я пояснил комментариями.
Резкое изменение уровня освещенности (включили основной свет) контроллер определяет по разности двух последовательных измерений освещенности, выполняемых каждую секунду. Для этого используется функция LightingChange_Det(). Если выявлено резкое увеличение освещенности (разность более 40 в коде АЦП), то контроллер, в соответствии с текущим основным режимом работы, перейдет на следующий этап, включив подсветку или увеличив ее яркость (Листинг 1).
Листинг 1. Функция контроля освещенности.
void LightingChange_Det () {
current_luminosity = analogRead(Light_Sensor);
if ((current_luminosity - previus_luminosity > 40) && (Light_On == false)) {
mode = 1; //включили основной свет, подсветка была выключена;
Mode_Set(); //включаем подсветку (дневной режим, этап 1)
}
if ((current_luminosity - previus_luminosity > 40) && (Light_On == true) && (mode == 1)) {
mode = 2; //включили основной свет, подсветка активна (дневной режим);
Mode_Set(); //увеличиваем яркость (дневной режим, этап 2)
}
else if ((current_luminosity - previus_luminosity > 40) && (Light_On == true) && (mode == 4)) {
mode = 5; //включили основной свет, подсветка активна (ночной режим);
Mode_Set(); //увеличиваем яркость (ночной режим, этап 2)
}
previus_luminosity = current_luminosity;
if ((current_luminosity > 110) && (Light_On == true)) {
mode = 0; //уровень освещения стал достаточным
Mode_Set(); //выключаем подсветку
}
}
Этой же функцией контролируется уровень освещения в помещении, и, если он стал достаточным (более 110 единиц), подсветка не включается, или уровень яркости плавно снижается до нуля. Обратите внимание, что в моем случае контроллер расположен на верхних шкафах кухонной мебели, а основное освещение выполнено точечными светодиодными светильниками. Поэтому фоторезистор не засвечивается ни искусственным освещением, ни естественным из окна, ни самой подсветкой рабочей зоны. Замечу, что при таком размещении фоторезистор более выражено реагирует на естественное освещение, нежели на искусственное (светодиодные лампы).
В программе микроконтроллера все временные задержки формируются без использования функции delay(). Используется конструкция на основе функции millis() (Листинг 2).
Листинг 2. Формирование временных интервалов с помощью функции millis().
if (millis() - timeout_1 >= interval_1) { //формируем интервал 1 с
timeout_1 = millis(); //каждую секунду проверяем уровень освещенности
LightingChange_Det(); //и его изменение
}
Проверка всех условий и установка необходимого режима работы выполняется с помощью операторов «if…else», непосредственное управление ШИМ выходом с учетом установленного режима работы выполняется в отдельной функции Mode_Set(), в которой используется конструкция «switch… case».
Настроить режимы работы контроллера не составит труда – потребуется определить уровни освещенности для ночного и дневного режима работы, время работы этапов, а также определить изменение уровня светового фона при включении основного освещения. Для упрощения настройки можно в исходный код включить функции вывода отладочной информации.
Исходный код (скетч) доступен для скачивания в разделе загрузок.
Печатная плата
Печатная плата контроллера также проектировалась в онлайн редакторе EasyEDA по принципиальной схеме. Размещение корпусов элементов, указанных в схеме, и их группировка в пределах контура будущей платы осуществляются автоматически по нажатию одной кнопки в редакторе. Корпуса элементов размещаются последовательно и компактно, но не накладываются друг на друга. Также как и создание принципиальных схем, проектирование печатной платы в EasyEDA не вызвало затруднений (Рисунок 6).
![]() |
||
Рисунок 6. | Проектирование печатной платы в EasyEDA. |
После ручного размещения элементов на плате можно выполнить автоматическую трассировку, либо рисовать печатные проводники в ручном режиме. Автотрассировщик очень прост в настройке, работает достаточно быстро и эффективно. Все инструменты, необходимые для ручного рисования и редактирования элементов печатной платы, переключения режимов отображения слоев, доступны в панели управления.
Печатная плата двухсторонняя, без межслойных переходов, с заливкой на верхнем и нижнем слое (GND, земля) и шелкографией на верхнем слое (Рисунок 7). Заказ на производство плат оформил непосредственно из редактора, при этом автоматически были сгенерированы Gerber-файлы моего проекта (архив доступен для скачивания в секции загрузок). Кроме того, в EasyEDA встроен очень полезный инструмент для просмотра Gerber-файлов – GerberViewer. Минимальный заказ (5 штук) был выполнен в течение трех рабочих дней и отправлен почтой.
![]() |
||
Рисунок 7. | Фото-вид печатной платы в редакторе EasyEDA. |
Качество изготовления плат очень порадовало (Рисунок 8). Возможно, это не тот случай, чтобы судить о возможностях оборудования и производства ввиду достаточно широких печатных проводников и больших зазоров, но выглядят платы достойно. К качеству печатных проводников, шелкографии и металлизации отверстий претензий нет. Все размеры, в том числе диаметры отверстий, соответствуют проекту, выводы всех элементов устанавливались в отверстия без усилия.
![]() |
||
![]() |
||
Рисунок 8. | Комплект печатных плат, изготовленных в EasyEDA. |
Вид платы с установленными компонентами показан на Рисунке 9.
![]() |
||
Рисунок 9. | Плата контроллера подсветки с установленными компонентами. |