Как сделать умное освещение ардуино

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Два вида моделей освещённости.

При покупке модуля освещённости, нужно определиться с вашей задачей. Что вы планируете собрать, и как должен работать модуль освещённости. Это связано с тем, что модули освещённости бывают разные. На фото ниже приведены 2 модуля освещённости.

Два вида моделей освещённости.

Аналоговый модуль освещённости KY-018.

Arduino модуль освещённости KY-018 черного цвета. Этот модуль состоит из фоторезистора и линейного резистора 10 кОм. Сопротивление фоторезистора будет уменьшаться при наличии света, и увеличиваться при его отсутствии. Выход аналоговый, и он определяет интенсивность света.

Аналоговый модуль освещённости KY-018.

Схема подключения модуля освещённости KY-018 к Arduino.

Схема подключения модуля освещённости KY-018 к Arduino.

На модуль подается питание 5 Вольт, а в зависимости от освещенности в помещении, на выходе модуля (S) меняется напряжение от 0 до 5 Вольт. При подаче этого сигнала на аналоговый вход микроконтроллера, Arduino преобразует сигнал, при помощи АЦП, в диапазоне значений от 0 до 1023.

Скетч для модуля освещённости KY-018.

Скетч для модуля освещённости KY-018.

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

Цифровой датчик освещённости на LM393.

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

Цифровой датчик освещённости на LM393.

Модуль освещенности на LM393.

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

Технические параметры

  • Напряжение питания: 3.3 В. - 5.5 В.
  • Потребляемый ток: 10 мА.
  • Цифровой выход: TTL (лог 1 или лог 0)
  • Аналоговый выход: 0 В. … Vcc
  • Диаметр монтажного отверстия: 2.5 мм.
  • Выходной ток: 15 мА.
  • Габариты: 42мм. х 15мм. х 8мм.

Общие сведения датчик освещённости на LM393.

Существуют два модуля на базе LM393, их визуальное отличие только в количестве выводов (3 pin и 4 pin), дополнительный вывод добавлен для снятия прямых показаний с фоторезистора (аналоговый выход), по аналогии работы модуля KY-018. Рассмотрим четырех контактный вариант модуля. У этих двух модулей измерение осуществляется с помощью фоторезистора, который изменяет напряжение в цепи, в зависимости от количества света, попадающего на него. Чтобы представить, как свет будет влиять на фоторезистор, приведу краткую таблицу.

Общие сведения датчик освещённости на LM393.

Принципиальная схема модуля освещенности на LM393 с 4 pin.

Принципиальная схема модуля освещенности на LM393 с 4 pin

Принципиальная схема модуля освещенности на LM393 с 3 pin.

Принципиальная схема модуля освещенности на LM393 с 3 pin

Цифровой датчик освещённости на LM393.

Назначение J1 (в исполнении 4 pin)

Назначение J1 (в исполнении 3 pin)

Подключение модуля освещенности к Arduino UNO.

Подключение модуля освещенности к Arduino UNO.

Подключение модуля освещенности к Arduino NANO

Подключение модуля освещенности к Arduino UNO

  • Arduino UNO или Arduino NANO
  • Модуль освещенности, LM393
  • Провод DuPont, 2,54 мм.
  • Кабель USB 2.0

Подключение:

Запускаем среду разработки и загружаем данный скетч, затем открываем мониторинг порта.

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

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

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

Как видим, датчиков освещенности для Arduino проектов существует несколько.

В этом уроке мы рассмотрели, как подключить модуля освещенности к Arduino , в предыдущем уроке мы подключили фоторезистор к Arduino.

Появились вопросы или предложения, не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

— Для питания платы и LED ленты используется блок питания на 12 Вольт с выходным напряжением 1 Ампер. При этом общее потребление электроэнергии, если включить все освещение сразу, не превышает 15 Ватт, что сравнимо с одной энергосберегающей лампочкой. Но при этом освещение на Arduino работает в санузле (туалет совмещен с ванной), в прихожей, в коридоре на 2 этаже, в гостиной (зона отдыха и зона кухни).
Для управления освещением на Arduino используется пульт от телевизора. Кроме того, что автоматическое включение подсветки в ванной и коридоре — это очень удобно, можно еще и сэкономить на оплате за электроэнергию. Также в скетче прописан цикл для создания эффекта присутствия, когда вы уезжаете из дома на несколько дней. Освещение включается и выключается в разных комнатах по заданному алгоритму.











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

Рассматриваемый нами проект цифрового счетчика посетителей основан на использовании таких компонентов как датчики, двигатели, плата Arduino Uno и т.д. Этот счетчик будет способен подсчитывать количество посетителей в двух (обоих) направлениях. То есть он будет увеличивать счетчик посетителей когда человек проходит в центр/офис/стадион через входные ворота и уменьшать счетчик посетителей когда человек выходит из центра/офиса/стадиона через выходные ворота. Кроме указанных применений подобный счетчик можно также использовать на автопарковках и других общественных местах.

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

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

Как сделать управление освещением на Ардуино

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • IR приемник Ардуино;
  • пульт ДУ;
  • источник питания DC 12В;
  • светодиодная лента;
  • транзисторы и резисторы;
  • PIR датчики движения;
  • паяльник, термопистолет, провода и изолента.

Схема. Освещение в комнате на Arduino Nano


Схема. Освещение в комнате на Arduino Nano
Для включения LED ленты используются транзисторы 2N2222, заказанные за 60 рублей за штуку на Алиэкспресс. Характеристика 2N2222 транзисторов: макcимальное напряжение коллектор-база — 60 Вольт, макcимальное напряжение коллектор-эмиттер — 30 Вольт, макcимальное напряжение эмиттер-база — 5 В, макcимальный постоянный ток коллектора — 0.8 Ампер, максимальная рассеиваемая мощность — 0,5 Ватт.

В схеме два светильника, подключены через транзистор к Pin7 и Pin8, установлены в коридоре на 1 и 2 этаже, включаются автоматически только в темноте и при срабатывании датчиков движения. Светильник, подключенный к Pin6, установлен в ванной и включается автоматически от Pir датчика движения при любом освещении. Три светильника на Pin10, Pin11 и Pin12 управляются от пульта через ИК приемник.

Скетч. Управление освещением на Ардуино

При длительном включении 2-х метровой LED ленты, транзисторы греются, поэтому используйте радиаторы для их охлаждения или используйте для управления освещением полевой MOSFET транзистор IRF530. У транзистора максимальное напряжение коллектор-база — 100 В, макcимальный ток коллектора 3 Ампера (при напряжении на затворе 5 В), максимальная рассеиваемая мощность — 88 Ватт.

Автоматическое освещение на базе Arduino



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

Автоматическое освещение на базе Arduino


Материалы и инструменты для самоделки: — контроллер Arduino Nano; — текстолитовые макетки; — датчики движения; — источник питания 5В; — реле; — паяльник с припоем; — провода; — материалы для изготовления корпуса электроники (оргстекло); — напильник.



Процесс изготовления:

Шаг первый. Доработка и установка реле

Сперва вся схема собирается и тестируется на бредборде. Все отлично заработало, для регулировки чувствительности к свету был добавлен потенциометр. Но при установке всех элементов на плату возникла небольшая проблема. Реле оказалось слишком большим и не влезало на макетку. В связи с этим нужно было немного доработать его напильником. Так как ни контактов ни дорожек там не было, то с этим проблем не возникло.
Еще возникла проблема с пайкой контактов реле, их пришлось перенести на другую сторону. Что же в итоге получилось можно увидеть на фото. Самым сложным, по словам автора, было сделать дорожки на плате. Для этих целей используется тоненькая проволока, флюс и олово. Получилось все довольно грубо, но в качестве эксперимента все сделано отлично. В итоге все прекрасно поместилось на плате размером 5х7 см. Плюсом платы стало то, что на ней есть отверстия, которые можно использовать при креплении корпуса из оргстекла.

Чтобы проверить пороговые значения фоторезистора он был закрыт пальцем и затем автор направил на него фонарик мощностью в 2000 люмен.



В общей сложности с учетом праздников и помощи надежного коллеги — кота, на всю сборку было затрачено порядка 12-15 часов. Для работы системы достаточно источника питания в 4 Ватта, автору он обошелся в 200 рублей.

Подключается система тоже очень просто. Достаточно подключить освещение через реле и подать на электронику через источник питание в 5В.

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

avtomaticheskoe-osveschenie.rar [583 b] (скачиваний: 644)

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Работа схемы

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

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



Модуль управления построен на основе платы Arduino UNO, которая используется для управления всем устройством. Выходы компараторов подсоединены к цифровым контактам 14 и 19 Arduino. Плата Arduino считывает сигналы с этих цифровых контактов и на их основе выдает соответствующие управляющие сигналы на реле, которое управляет включением и выключением цепи электрической лампочки (bulb).

Модуль отображения состоит из ЖК дисплея 16×2, на котором будет отображаться число людей, находящихся в комнате и статус света (включен/выключен) когда никого нет в комнате.

Модуль реле состоит из транзистора BC547 и реле на 5 В, управляющим включением/выключением электрической лампочки. Транзистор необходим для управления реле поскольку плата Arduino не обеспечивает необходимые значения токов и напряжений для этого. Плата Arduino будет подавать управляющие команды на транзистор, а он с помощью реле будет включать и выключать электрическую лампочку.

Полная схема устройства представлена на следующем рисунке.



Выходы инфракрасных датчиков непосредственно подключены к цифровым контактам Arduino 14(A0) и 19(A5). База транзистора через резистор подключена к контакту 2 Arduino. ЖК дисплей подсоединен к Arduino в 4-битном режиме. Контакты RS и EN ЖК дисплея подключены к контактам 13 и 12 Arduino. Контакты данных ЖК дисплея D4-D7 подключены к контактам 11-8 Arduino.

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

У меня в коридоре смонтировано 7 светильников.


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


Саму плату я спрятал в пространстве между гипсокартоном и потолком, благо места там больше чем достаточно.


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


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


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


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


Основой всего устройства является контроллер arduino Nano V.3, но можно так же использовать любые другие платы, с микроконтроллером Atmega328


ИК светодиод с фототранзистором можно взять от датчика препятствий, но не обязательно их выпаивать, достаточно перерезать лишние дорожки и припаять к ним 3 провода. Если у Вас есть откуда нибудь эти ранее выпаянные детали, то перед использованием, лучше сначала проверить их на работоспособность. Инфракрасный светодиод подключите к напряжению 5 В, через токоограничивающий резистор 120 Ом и посмотрите на него через камеру телефона, он должен светиться фиолетовым светом. Для проверки фототранзистора понадобится любой тестер с функцией прозвонки проводников. Переводим тестер в режим прозвонки, а выводы фототранзистора подключаем к щупам тестера. После чего нужно к нему в плотную поднести любой пульт от бытовой техники и нажать любую кнопку. В ответ раздастся прерывистый пищащий звук.


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


Работает выключатель следующим образом
Arduino с выхода D5 постоянно выдает ШИМ сигнал с частотой примерно 977 Гц. К этому выходу через токоограничивающий резистор 82 Ом подключен светодиод, излучающий сигнал в инфракрасном диапазоне. Фототранзистор подключенный к входу D2 детектирует отраженный от руки ИК сигнал и проверяет его на достоверность и если сигнал из 20-ти или больше идущих подряд импульсов соответствует частоте 977 Гц, то тогда контроллер включает по очереди все 7 светильников и начинает воспроизводить звуковой эффект через ШИМ выход D11. Все тоже самое происходит и при выключении.


Воспроизведение звуков
Для воспроизведения звуковых эффектов используется формат WAV без сжатия, с частотой 16000 Гц и глубиной 8 бит , но при воспроизведении данного формата с использованием ШИМ, в аудио тракте наблюдается неприятный свист и шипение. По этому для для улучшения качества воспроизведения, я в коде использовал линейную интерполяцию. При которой, выборка семплов происходит на частоте 62.5 кГц и между оригинальными выборками вставляются еще 3 дополнительных семпла рассчитанных методом линейной интерполяции. Таким образом на выходе снижается шум квантования, пропадает свист, улучшается качество звука и для воспроизведения не обязательно использовать дополнительные RC фильтры.


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


Для конвертирования Wave файлов в Си код, можно воспользоваться онлайн конвертером

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



Код для Arduino развернуть

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

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

Контроллер управления подсветкой рабочей зоны на кухне
Рисунок 1. Подсветка рабочей зоны на кухне с автоматическим управлением.

Мы рассмотрим два варианта устройства, выполняющих автоматическое управление локальным освещением рабочего стола (рабочей зоны) на кухне, но отличающихся элементной базой и дополнительным функционалом. Автоматическое управление освещением подразумевает плавное поэтапное включение и выключение подсветки на основе данных о текущей освещенности в помещении (и ее изменении) и наличии движения человека. Первый вариант устройства выполнен на Arduino Nano и после простой настройки работает полностью в автоматическом режиме (Рисунок 2). Второй вариант выполнен на Wi-Fi модуле типа NodeMCU (СнК ESP8266, ESP-12E) и, помимо выполнения основной функции, имеет дополнительные возможности онлайн контроля и управления. В последнем случае пользователь может со смартфона или из браузера включить/выключить подсветку, а также получать данные о текущем уровне освещенности и режиме работы контроллера.

Контроллер управления подсветкой рабочей зоны на кухне
Рисунок 2. Контроллер управления подсветкой рабочей зоны на кухне
(версия на Arduino Nano).

В общем случае оба варианта устройства имеют одинаковую структурную схему: микроконтроллер, датчик освещенности (фоторезистор), датчик движения, схема питания, силовой транзистор для управления светодиодами или, как в моем случае, светодиодной лентой. Отличия в схемотехнике двух устройств обусловлены спецификацией СнК ESP8266 (напряжение питания 3.3 В), а также расширенным функционалом устройства на NodeMCU. Идея создания второго варианта контроллера пришла после того, как я узнал об облачном сервисе myDevices Cayenne и оценил его работу на платформе Arduino, принимая во внимание поддержку чипа ESP8266 в интегрированной среде разработки Arduino IDE.

Принципиальная схема контроллера на Arduino

Изображенная на Рисунке 3 принципиальная схема контроллера подсветки очень проста. Оригинал схемы (и проект в целом) доступен пользователям в онлайн сервисе для проектирования электроники EasyEDA, при этом вы можете перенести ее в свой проект, например с целью усовершенствования или модернизации, или экспортировать в графический формат. Интерфейс EasyEDA русифицирован, интуитивно понятен и обеспечивает все необходимые разработчику инструменты, поэтому рисование схемы не вызвало каких-либо затруднений (Рисунок 4). Замечу, что в схеме использованы элементы из основной базы EasyEDA, а также из доступных пользовательских библиотек.

Рисунок 3. Принципиальная схема контроллера подсветки на Arduino.

В качестве датчика освещенности используется миниатюрный фоторезистор VT93N1 номиналом 12 кОм. Резистор R3 с фоторезистором образуют делитель напряжения, который подключается к аналоговому входу A7. Это самый простой способ подключения фоторезистора к Arduino.

Контроллер управления подсветкой рабочей зоны на кухне
Рисунок 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.

Скетч Arduino

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

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

  • Дневной режим работы активен при недостаточной освещенности помещения (15 – 110 единиц):
    • Этап 1:
      При обнаружении движения на 3 минуты плавно включается подсветка с яркостью 20%. Если по завершении этого этапа фиксируется движение, то происходит переход на этап 2. Если движение отсутствует, подсветка плавно выключается;
    • Этап 2:
      Яркость подсветки плавно увеличивается до 100%, начинается отсчет 7-минутного интервала. При каждой фиксации движения отсчет сбрасывается и вновь начинается с нуля;
    • Этап 3:
      По истечении 7-минутного интервала яркость плавно снижается до 20% и происходит переход на этап 1;
    • Этап 1:
      При обнаружении движения на 3 минуты плавно включается подсветка с яркостью 10%. Если по завершении этого этапа фиксируется движение, то происходит переход на этап 2. Если движение отсутствует, подсветка плавно выключается;
    • Этап 2:
      Яркость подсветки плавно увеличивается до 50%, начинается отсчет 7-минутного интервала. При каждой фиксации движения отсчет сбрасывается и вновь начинается с нуля;
    • Этап 3:
      По истечении 7-минутного интервала яркость плавно снижается до нуля.

    Описание и выбор соответствующих режимов работы в программе микроконтроллера я пояснил комментариями.

    Резкое изменение уровня освещенности (включили основной свет) контроллер определяет по разности двух последовательных измерений освещенности, выполняемых каждую секунду. Для этого используется функция 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(); //и его изменение
    >

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

    Исходный код (скетч) доступен для скачивания в разделе загрузок.

    Печатная плата

    Печатная плата контроллера также проектировалась в онлайн редакторе EasyEDA по принципиальной схеме. Размещение корпусов элементов, указанных в схеме, и их группировка в пределах контура будущей платы осуществляются автоматически по нажатию одной кнопки в редакторе. Корпуса элементов размещаются последовательно и компактно, но не накладываются друг на друга. Также как и создание принципиальных схем, проектирование печатной платы в EasyEDA не вызвало затруднений (Рисунок 6).

    Проектирование печатной платы в EasyEDA.
    Рисунок 6. Проектирование печатной платы в EasyEDA.

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

    Печатная плата двухсторонняя, без межслойных переходов, с заливкой на верхнем и нижнем слое (GND, земля) и шелкографией на верхнем слое (Рисунок 7). Заказ на производство плат оформил непосредственно из редактора, при этом автоматически были сгенерированы Gerber-файлы моего проекта (архив доступен для скачивания в секции загрузок). Кроме того, в EasyEDA встроен очень полезный инструмент для просмотра Gerber-файлов – GerberViewer. Минимальный заказ (5 штук) был выполнен в течение трех рабочих дней и отправлен почтой.

    Фото-вид печатной платы в редакторе EasyEDA.
    Рисунок 7. Фото-вид печатной платы в редакторе EasyEDA.

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

    Читайте также: