Контроллер управления подсветкой рабочей зоны на кухне Часть 1. Вариант на Arduino

Содержание

Контроллер управления подсветкой рабочей зоны на кухне
Часть 1. Вариант на Arduino

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

Скетч 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(); //и его изменение
    >

    Проверка всех условий и установка необходимого режима работы выполняется с помощью операторов «if…else» , непосредственное управление ШИМ выходом с учетом установленного режима работы выполняется в отдельной функции Mode_Set() , в которой используется конструкция «switch… case» .

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

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

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

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

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

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

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

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

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

    Умный дом на Arduino своими руками

    Сегодня наблюдается рост интереса пользователей к внедрению в домах и квартирах если не полноценных систем «умного дома», то некоторых элементов Home Automation (домашней автоматизации).

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

    blank

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

    Что такое Arduino

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

    blank

    Аппаратные средства Arduino позволяют получить сигналы от сенсоров (например, уровень температуры, наличие света, нажатие на кнопку) или более сложных систем, таких как html-страницы.

    Программный код обрабатывает их и выдает сигналы на исполнительные механизмы, например, включает сервопривод, замыкает контакты реле или сервисы, способные выполнять весьма сложные операции – от отправки сообщений на e-mail до размещения контента на страницах.

    Основными преимуществами платформы являются:

    • Полная открытость. Это касается как аппаратных модулей (приводятся схемы и для большинства – печатные платы), так и программного обеспечения. В результате сторонние разработчики имеют возможность создавать полностью совместимые устройства. Сообществом создано множество программных проектов и модулей для решения различных задач автоматизации. Все они находятся в свободном доступе, так что подобрать нужный софт и адаптировать его под собственные потребности труда не составляет. Существует достаточно большое число и российских проектов, которые упоминаются на страницах официального сайта.
    • Широкий выбор. В ассортименте предлагаемых продуктов – решения для любого уровня, от плат на 8-битных контроллерах с минимумом функциональных возможностей для начальных шагов и простых проектов, до мощных контроллеров на 32-битных чипах. Возможности подбора нужной конфигурации расширяет богатый ассортимент собственных модулей расширения и аппаратных продуктов сторонних разработчиков. Кроме того, приобрести продукты Arduino можно практически в любом виде – от печатной платы с набором компонентов для сборки своими руками, до готовых контроллеров и Starter Kits – специализированных наборов.
    • Кроссплатформенность. Софт Arduino работает под всеми ОС для ПК – Windows, Linux, MacOS, сохраняя полную функциональность, а готовые программные наработки вообще являются платформенно независимыми.
    • Гибкость подхода. На платах Arduino реализован весь необходимый функционал, – от стабилизатора питания и программатора для контроллера, до набора портов ввода/вывода и конкретных интерфейсов, например BlueTooth, Wi-Fi, управления двигателями и пр. Однако представленная система не ограничивает разработчика в выборе, например, прошивку микроконтроллера можно выполнить не только при помощи штатных средств, но также и с помощью совместимости программаторов других производителей, а набор портов и интерфейсов легко расширить.
    • Простота освоения. Прозрачные схемотехнические решения, качественная документация позволяют работать с модулями платформами без серьезного опыта и знаний электроники. Этому способствует и программная среда, требующая лишь базовых знаний C++. Более того, проект предлагает и средства графического проектирования, освоить которые могут даже дети и подростки.
    • Стоимость. Микроконтроллеры Arduino на сегодняшний день являются одним из самых более доступных в ценовой среде вариантов среди множественных более модифицированных аналогов – даже самый мощный микроконтроллер обойдется покупателю не дороже 50 долларов. На рынке можно найти множество разнообразных расширений и компонентов, которые выпускаются различными производителями, в том числе и азиатскими, которые при достаточно достойном качестве изготовления стоят весьма недорого.

    alt

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

    blank

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

    Разработка эскизного проекта

    blank

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

    Формулировка задания

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

    blank

    blank

    1. Основные условия для срабатывания автоматики – триггеры (triggers) в терминах home automation. В рассматриваемой задаче такой триггер один – приближение человека к крыльцу.
    2. Дополнительные условия (conditions). Они задают разрешения на срабатывание триггера и, в большинстве случаев, определяют длительность их действия. Для данной задачи дополнительное условие – темное время. Действительно, включать свет на крыльце днем смысла не имеет. Нет необходимости делать это и когда крыльцо освещено – свет уже включен или задействованы другие источники. Соответственно, дополнительные условия можно задать в нескольких вариантах: наступило темное время суток, и свет на крыльце не включен. Практически полное описание условий, но не учитывает возможность освещения от других источников, освещенность на крыльце ниже порогового значения. Хотя условие и выглядит проще, но учитывает практически все случаи.
    3. Действия (actions). Описывает реакцию системы на триггеры и дополнительные условия. Для текущего примера система должна выполнить единственное действие – включить свет.
    4. Действия в случае отсутствия триггеров и/или невыполнения условий. Здесь необходимо рассматривать 2 случая: ни основные, ни дополнительные условия не были выполнены. Наиболее логичное поведение – бездействие, триггер и условия были выполнены, произошло срабатывание, затем ситуация изменилась (т.н. post-action действия). Поведение проектируемой системы должно выглядеть следующим образом – не включать свет до срабатывания триггера и выполнения условий, выключить после того, как он перестал быть нужен.

    Таким образом, результат – подробное описание задания:

    1. Проверять, есть ли у крыльца человек.
    2. Бездействовать, пока его нет.
    3. Если человек подошел – проверить освещенность.
    4. Если она ниже заданной – включить свет.
    5. Проверять, остается ли нужен свет.
    6. Если да – оставаться в текущем состоянии, если нет – выключить свет.

    Выбор способов реализации алгоритма

    На этом этапе определяется набор сенсоров для получения данных (триггеров и условий) и исполнительных механизмов для выполнения действий.

    blank

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

    • по сигналу стандартного инфракрасного датчика;
    • разместив под площадкой у крыльца датчики, реагирующие на давление (например, тензодатчики на основе пьезоффекта);
    • получая с работающего в квартире Wi-Fi-роутера сигнал о подключении нового/конкретного абонента к домашней беспроводной сети и т.д.

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

    alt

    Завершает этап запись алгоритма с учетом принятых решений, например:

    1. Опрашивать проводной ИК-датчик.
    2. Если сигнала нет – ничего не делать.
    3. При появлении сигнала, проверить состояние проводного датчика освещенности.
    4. При наличии сигнала – ничего не делать.
    5. При отсутствии сигнала – выдать на ZigBee хаб команду на включение выключателя по соответствующему адресу (отвечающему за освещение на крыльце).
    6. Опрашивать ИК датчик.
    7. Пока есть сигнал (человек на крыльце) – ничего не делать.
    8. Если сигнала нет – отключить свет, т.е. выдать на ZigBee выключатель команду на отключение.
    9. Вернуться к началу цикла.

    Еще один результат этого этапа – перечень необходимого оборудования и материалов. Для сборки системы потребуются:

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

    Выбор оборудования

    blank

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

    Выбор контроллера Arduino

    blank

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

    В список оборудования входят:

    12 аналоговых входов (с АЦП)

    2 аналоговых входа

    6 аналоговых входов с АЦП

    Разъемы для модулей расширения

    12 аналоговых входов (могут работать как цифровые)

    Функционально и конструктивно аналогичен Uno

    6 аналоговых входов с АЦП

    Компактное решение для макетирования

    16 аналоговых входов с АЦП

    ATmega168, 8МГц (5В)

    6 аналоговых входов с АЦП

    Разъемы для модулей расширения

    alt

    blank

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

    • Yun – устройство по возможностям (чип, выводы) аналогичное Leonardo, но со встроенным Wi-Fi модулем на базе Atheros AR9331.
    • BT – платформа со встроенным BlueTooth интерфейсом.
    • Fio – контроллер, аналогичный Uno по функциональности, но без установленных разъемов на портах ввода/вывода. Предназначен для работы в беспроводной сети ZigBee.
    • Serial – функционально аналогична базовой Uno с интегрированным стандартным последовательным интерфейсом RS232.

    Кроме того, для работы с различными стандартами связи и устройствами можно использовать стандартные платы расширения:

    • Wi-Fi с поддержкой протокола 802.11 b/g;
    • Xbee Shield, с интегрированным модулем Maxstream Xbee Zigbee, поддерживающим до 32 устройств ZigBee (35/90 м в помещении и на открытом пространстве соответственно);
    • Ethernet Shield – с установленным портом стандарта Ethernet 10/100 Base-T для проводного сетевого соединения;
    • Motor Shield – с портами для управления двигателями постоянного тока и получения сигналов обратной связи от датчиков положения.

    При необходимости можно найти и другие конфигурации полностью совместимых контроллеров, выпускаемые сторонними разработчиками. Полный список одобренного оборудования размещен на странице https://playground.arduino.cc/Main/SimilarBoards/ официального сайта.

    При выборе контроллера необходимо учитывать:

    1. Производительность;
    2. Наличие необходимого количества портов ввода/вывода, цифровых и аналоговых;
    3. Объем памяти для хранения программ и данных (все платы Arduino используют небогатые ресурсы микроконтроллера и не предполагают расширений);
    4. Удобство работы – программирования, отладки программ, установки готового устройства в корпус.

    blank

    alt

    Выбор периферии

    blank

    При выборе датчиков и исполнительных механизмов нет значительных ограничений. Единственное требование – обеспечить совместимость с портами Arduino по уровням сигналов и нагрузке.

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

    Разработка принципиальной схемы

    blank

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

    alt

    Работа с программным обеспечением

    blank

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

    Загрузка, установка, проверка ПО

    blank

    Программное обеспечение скачивают со страницы официального сайта https://www.arduino.cc/en/software.

    Стабильная версия – Arduino IDE 1.8.13 поддерживает:

    • Windows 7 и более новые версии ОС, х86 и х64;
    • MacOS 10.10 и новее;
    • 32- и 64-битные версии Linux и Linux ARM.

    Для работы под Windows можно скачать установщик или ZIP-архив софта. Использовать установщик для неопытных пользователей предпочтительнее – установка драйверов будет произведена автоматически вместе с установкой программы.

    blank

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

    alt

    Возможности среды разработки Arduino IDE:

    • Создание проектов (скетчей, от англ.sketch – набросок).
    • Их проверка и компиляция для загрузки в контроллер;
    • «Заливка» готового машинного кода в контроллеры;
    • Поддержка всех версий плат;
    • Подключение библиотек, не входящих в комплект поставки.

    alt

    Для этого достаточно выполнить входящий в комплект поставки простейший скетч с управлением светоиодом.

    blank

    Пошагово процесс выглядит следующим образом:

    1. Подключить плату Arduino Uno (именно на ней остановился выбор для реализации предложенной задачи) кабелем к USB-порту компьютера.
    2. Запустить Arduino IDE.
    3. В среде разработки открыть готовый скетч – в меню File выбрать папку Examples-1.Basic, в ней файл Blink.
    4. Выбрать плату контроллера для работы – меню Tools-Board.
    5. Указать порт для связи с платой (как правило COM3 или другой COM с бОльшим номером). Если этих портов нет, следует проверить, подключена ли плата или установить вручную драйверы.
    6. Откомпилировать скетч через меню Sketch-Verify/Compile или нажатием на соответствующую кнопку в панели инструментов под строкой меню.
    7. Загрузить готовый скетч в контроллер (Sketch-Upload) или нажатием кнопки панели инструментов. На этом этапе можно наблюдать мигание светодиодов Rx и Tx , которое свидетельствует об обмене с ПК.
    8. После окончания загрузки через несколько секунд начнет мигать светодиод на плате Uno. Это говорит о том, что и контроллер и среда разработки полностью работоспособны.

    alt

    blank

    После проверки можно приступать к разработке собственной программы.

    Программирование скетчей

    blank

    Программирование скетча можно выполнить непосредственно в редакторе среды разработки или в любом другом удобном текстовом редакторе (в последнем случае не забыть сохранить работу в файле .ino). Встроенный язык программирования Arduino является клоном языка C++ с некоторыми упрощениями и дополнительными функциями и библиотеками для обращения к функционалу контроллера.

    Для работы с программой в IDE необходимо:

    1. Создать новый скетч (File-New).
    2. Подключить необходимые библиотеки. Стандартные библиотеки функций входят в комплект поставки, нестандартные нужно разместить в соответствующих папках папки Libraries. После этого их имена станут доступны разработчику в меню Sketch-Import Library. Достаточно выбрать нужные имена, и они будут включены для обработки препроцессором.
    3. В функции setup() прописать все необходимые действия для инициализации системы. Эта функция выполняется один раз перед стартом. Как правило, в ее тексте достаточно ограничиться назначением функций пинам ввода/вывода.
    4. В функции loop() прописать код, реализующий алгоритм автоматизации – опрос сенсоров, анализ условий, выдачу сигналов на исполнительные механизмы. Функция выполняется в бесконечном цикле, операторы прерывания этого цикла не предусмотрены.
    5. Откомпилировать написанный скетч.
    6. Загрузить его в контроллер.

    Отличия языка Arduino от стандарта C++

    • Не требуется включения заголовочных файлов (хидеров, файлов с расширением .h)в текст программы, препроцессор добавит их автоматически в соответствии с импортированными для скетча библиотеками.
    • Добавлены предопределенные константы для уровней (HIGH и LOW) и функций выводов портов ввода/вывода (INPUT и OUTPUT).
    • Добавлены функции для работы:
      • c цифровыми портами ввода/вывода pinMode(), digitalWrite(), digitalRead();
      • с аналоговыми пинами analogReference(), analogRead(), analogWrite();
      • дополнительными IO функциями, например, побитного вывода со сдвигом shiftOut();
      • временем mills() – время в мс, micros() время в мкс, delay() – задержка в мс, delayMicroseconds – задержка в мкс;
      • внешними прерываниями attachInterrupt() и detachInterrupt();
      • последовательным портом.

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

      blank

      Со всеми платами контролеров и расширений поставляются необходимые библиотеки для работы со всем аппаратным обеспечением. Кроме того, в сети доступны тысячи готовых библиотек разработанных сообществом. Подобрать нужную (с документацией) можно по ссылкам на официальном сайте https://playground.arduino.cc/Main/LibraryList/ и https://www.arduinolibraries.info/ или на GitHub.

      Соответственно, для реализации поставленной задачи разработчику нужно:

      1. Создать скетч.
      2. Скачать и подключить библиотеку для работы с Xbee (ZigBee).
      3. Выполнить назначение портов для опроса датчиков в функции setup();
      4. Инициализировать работу с интерфейсом ZigBee в setup();
      5. Прописать опрос датчиков и выдачу команды управления по условиям в loop().

      Работать с Arduino можно и без установки IDE. Для этого удобно использовать:

      • Web-редактор на официальном сайте. Полностью поддерживает синтаксис (с подсветкой), включает все необходимые для работы библиотеки. Альтернативный вариант – любой тестовый редактор.
      • Компилятор avr-gcc.
      • Программатор, поддерживающий чипы микроконтроллеров, используемых на платах Arduino,

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

      • Scratch (http://s4a.cat);
      • Snap (http://snap4arduino.rocks/);
      • Ardublock (http://ardublock.com);
      • XOD (https://xod.io/).

      Таким образом, умный дом на Arduino своими руками – решение, доступное практически каждому. Ассортимент аппаратных средств позволяет решать задачи от простейших до максимально сложных (в том числе, за счет взаимодействия нескольких контролеров).

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

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

      Умная квартира

      Задача

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

      Пояснение. Это не какой-то особый концептуальный проект, а один из множества возможных вариантов «умного дома», построенного на основе технологий AMS. Весь его функционал определяется потребностями конкретного хозяина квартиры и в другом случае мог бы быть совершенно иным.

      Проект

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

      Оборудование

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

      • Arduino Mega 2560
      • Плата сетевого интерфейса Ethernet Shield
      • 7 контроллеров Arduino Pro Mini
      • 8 беспроводных модулей nRF24L01
      • 6 цифровых температурных датчиков DS18B20
      • 3 датчика влажности и температуры DHT22
      • 2 датчика протечки
      • 2 PIR датчика
      • 16 реле для коммутации нагрузок
      • и прочее оборудование

      Топология сети «Умная квартира»

      Сеть «Умной квартиры» использует тот же структурный подход для построения системы что и «Умная дача». Вся сеть делится на т. н. контроллеры объектов и инфраструктурные контроллеры. Первые предназначены для управления какими-либо объектами, вторые — для обеспечения инфраструктурных сервисов для других контроллеров сети.

      Топология сети «Умная квартира»

      СМС сервер

      СМС сервер, входящий в состав «Умной квартиры», это пример инфраструктурного контроллера. Он обеспечивает сервис посылки (и приёма) СМС сообщений для всех контроллеров сети. Кроме СМС сервера в систему могут быть добавлены и другие инфраструктурные контроллеры, например, контроллер визуализации, контроллер оповещения и т. п.

      SMS-сервер

      Беспроводные технологии

      На схеме сети «Умной квартиры» видно, что в системе широко используются беспроводные технологии, а именно, технология связи на частоте 2,4 ГГц при помощи популярных модулей nRF24L01. Таким образом с базовым контроллером AMS связаны беспроводные батарейные nRF24 датчики температуры и беспроводные nRF24 контроллеры управления санузлами и балконным оборудованием.

      Arduino Pro Mini nrf24l01

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

      Использование технологии nRF24 это не догма, вместо неё можно использовать любую другую беспроводную технологию, например, популярные сенсоры и актуаторы и марки nooLite.

      Управление квартирой

      Базовой сущностью в управлении квартирой является режим присутствия/отсутствия людей в доме. От этого режима зависит логика работы многих подсистем «Умной квартиры», например таких, как отопление комнат, работа освещения, охраны и т. д.

      Режим присутствия/отсутствия людей в доме

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

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

      Отопление

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

      Настройки отопления

      В веб-интерфейсе выбираются нужные параметры и после нажатия кнопки «Сохранить» система берёт на себя все дальнейшие заботы по поддержанию комфортной температуры в помещениях.

      Точная регулировка отопления

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

      Точная регулировка отопления

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

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

      Установки интервалов времени суток

      Состояние отопления

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

      Состояние отопления

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

      Контроль отклонений температуры

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

      Контроль отклонений температуры

      Лимиты допустимых отклонений задаются не жёстко, а с некоторым допуском как вверх, так и вниз от заданного значения, причём величину этого допуска можно задать отдельно для каждого помещения. Это позволяет гибко контролировать температуры — где-то можно задать жёсткие (± 1 градус) ограничения на качество поддержания температуры, а где-то более мягкие, например, 5 градусов вверх от установленного значения и 3 градуса вниз.

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

      Беспроводные датчики

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

      Беспроводные AMS nRF24 Sensors

      На скриншоте видно, что в данный момент три датчика выключены и работает только один датчик температуры в спальне. Датчик сообщает системе, что заряд его батареи составляет 69 %, ресурс (интегральное время работы) составляет 3770 секунд или 62,8 минуты, последний раз его показания обновлялись 93 секунды назад и что ошибок связи с ним 0, т. е. качество связи отличное.

      Электроэнергия

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

      Установка предельной мощности потребления квартирой

      Контроль электроэнергии осуществляется при помощи специализированного модуля PZEM-004T, который обеспечивает хорошую точность измерения параметров электропитания (напряжение, ток, потребляемая мощность). Чуть больше возможностей модуля PZEM-004T реализовано в проекте «Котельная», части проекта «Умная дача» (сохранение статистики электропотребления, вывод графиков и т. д.).

      Модуль PZEM-004T

      Управление санузлами

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

      Управление санузлами

      Сами санузлы являются довольно сложными подсистемами с подогревом полов в ванных, «умным» (управляемым) полотенцесушителем и многорежимными вентиляцией и освещением. Управление всем этим оборудованием осуществляется из веб-интерфейса системы.

      Управление полами в ваннах

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

      Управление полами в ваннах

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

      Полотенцесушитель

      Для полотенцесушителя задаётся количество включений в сутки (от 0 до 24) и время работы (от 0 до 10 минут). После установки настройки запоминаются в энергонезависимой памяти и полотенцесушитель работает в автоматическом режиме с заданными параметрами.

      Управление полотенцесушителем

      Вентиляция в ванных

      Вентиляция в ванных имеет два режима работы — «Ручной» и «Авто». В ручном режиме управление вентиляцией осуществляется нажатием кнопки «Вкл/Выкл» в веб интерфейсе.

      Вентиляция в ванных

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

      Освещение в санузлах

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

      Освещение в санузлах

      Прочее оборудование

      В разделе «Прочее оборудование» находятся установки для тёплого пола сушилки для обуви. Здесь управление также осуществляется ручным включением и выключением из веб-интерфейса (с возможностью установки задержек срабатывания) и двумя независимыми суточными таймерами.

      Установки для тёплого пола сушилки для обуви

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

      Панель управления системы

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

      Панель управления

      СМС сервер

      Индикатор доступности СМС сервера. В данном случае сервер выключен и посылка СМС сообщений невозможна. Как только сервер включится, изменится цвет индикатора и станет доступной посылка (и приём) СМС системой.

      СМС сервер

      Восход и заход солнца

      Индикатор системы определения времени восхода и захода солнца (тёмного и светлого времени суток). Используется для автоматического гашения освещения в светлое время суток и включения его в тёмное.

      Индикатор восхода и захода солнца

      Контроль электроэнергии

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

      Контроль электроэнергии

      Отопление комнат

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

      Контроль отопления комнат

      Реле, в свою очередь, управляют сервоприводами подачи горячей воды в радиаторы отопления, тем самым регулируя температуру в помещениях.

      Контроллеры санузлов

      Два ряда индикаторов — это данные о текущем состоянии двух контроллеров санузлов. Первые индикаторы в каждом ряду содержат названия самих контроллеров (SU1 и SU2) и их свечение говорит об активном состоянии контроллеров в данный момент.

      Контроллеры санузлов

      Индикаторы контроллера первого санузла по порядку:

      • LK1 — состояние датчика протечки
      • 21% — текущая влажность в санузле
      • 25,2° — текущая температура в санузле
      • BD1 — состояние реле обогрева пола
      • DR1 — состояние реле полотенцесушителя
      • WT1 — состояние реле крана защиты от протечек
      • VT1 — состояние реле вентиляции
      • LT1 — состояние реле освещения

      Контроллер балкона

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

      Контроллер балкона Контроллер балкона:

      • 25,3° — текущая температура зимнего сада
      • 21% — текущая влажность на улице
      • 25,2° — текущая температура на улице
      • GAR — состояние реле зимнего сада

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

      Прочее оборудование

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

      Прочее оборудование

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

      Заключение

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

      Источник https://www.rlocman.ru/shem/schematics.html?di=278027

      Источник https://smarthomegadget.ru/umnyj-dom-na-arduino-svoimi-rukami/

      Источник https://hi-lab.ru/arduino-mega-server/ams-pro/projects/smart-flat