Контроллер для гроубокса. Разработка аппаратной части.

Управление освещением и поливом гроубокса

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

Предыдущая статья     Список статей     Следующая статья

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

 

Выбор интерфейса пользователя и микроконтроллера.

Напрашивается стандартный вариант – плата Arduino Nano. К ней подключен дисплей, например, знакосинтезирующий LCD-дисплей. Еще энкодер или кнопки, для задания параметров и режимов.

  • Но информации для пользователя много, и в будущем ее количество будет увеличиваться при расширении проекта. Даже, если использовать 4х строчный дисплей, придется выводить данные на нескольких страницах в виде каких-то сокращений и чисел.
  • Управление кнопками или энкодером – не самый удобный вариант, требующий понимания последовательности вывода данных на экран. Все усугубляется тем, что с устройством будут работать не программисты, а люди далекие от информационных технологий.
  • У меня есть электронный будильник. Я до сих пор не могу понять, как в нем задавать время и режимы. Тыкаю кнопки, пока не получится. А после этого слушаю, если пикает в начале каждого часа,  то я будильник не включил и надо сменить значок на экране. Не хотелось бы сделать нечто подобное.
  • Также наличие дисплея и кнопок увеличивает цену устройства, усложняет конструкцию.

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

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

  • Контроллер гроубокса создает свою WiFi сеть (точку доступа).
  • Находите ее в списке WiFi сетей.

Окно управления гроубоксом

  • Подключаетесь, и автоматически на экране появляется страница управления контроллером.

Окно управления гроубоксом

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

Окно управления гроубоксом

Так как контроллер создает свою собственную сеть, система не требует чужой WiFi сети. Работает где угодно, хоть в чистом поле.

Контроллер создает в собственной сети WEB-сервер, по сути, свой сайт. Все, что выводится на экран смартфона, поступает из контроллера.

Например, вы набираете в адресной строке браузера на компьютере ”mypractic.ru” и попадаете на мой сайт. Все надписи, картинки, таблицы поступают с моего сервера. Точно так же создает свою страницу контроллер гроубокса. Необходимости устанавливать на смартфон какой-либо специализированной программы нет.

Достоинства такого способа очевидны.

  • Удобный интерфейс пользователя.
  • Нет необходимости устанавливать на смартфон специализированную программу.
  • Интерфейс пользователя не зависит от типа смартфона и операционной системы.
  • При изменении программного обеспечения контроллера нет необходимости менять что-либо на смартфоне.
  • Для управления контроллером можно использовать любые устройства с WiFi – компьютеры, ноутбуки, планшеты и т.п.
  • В контроллере отсутствуют дисплей, энкодер, кнопки. Упрощается конструкция, снижается цена устройства. Оно становится технологичнее в производстве.
  • Ну и для ленивых людей – управлять гроубоксом можно с дивана, а не согнувшись над контроллером.

Для реализации такого способа управления необходим микроконтроллер с WiFi. Выбор однозначен – это модуль на базе микроконтроллера ESP8266.

 

Модули на базе микроконтроллера ESP8266.

В Уроках Ардуино я остановился на передаче данных через WiFi. Дальше буду писать уроки о программировании микроконтроллеров ESP8266 в системе Ардуино . Сейчас коротко расскажу о тех модулях, которые интересуют нас в этом проекте.

ESP8266 – это достаточно мощный, 32х разрядный микроконтроллер с интерфейсом WiFi.

Сейчас для нас важно, что:

  • Питание микроконтроллера 3,3 В и такой же размах имеют его выходные и входные сигналы. Но у некоторых модулей есть встроенные стабилизаторы 3,3 В. Независимо от напряжения питания модулей уровни сигналов остаются 0-3,3 В.
  • Потребляемый ток в среднем 80 мА, максимальный 220 мА.
  • Программное обеспечение  для ESP8266 может разрабатываться в среде Arduino IDE.

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

Модуль ESP-01.

ESP-01

  • Документация - ESP-01.pdf
  • Самый маленький модуль, размерами всего 24 x 13 мм.
  • Питание 3,3 В, встроенного стабилизатора нет.
  • У ESP-01 выведено всего 4 дискретных сигнала, 2 из которых предназначены для загрузки программы (TxD и RxD), но могут быть использованы как сигналы ввода/вывода.
  • Цена от 100 руб. Наверное, можно найти и дешевле.

Модуль ESP-12E.

ESP-12E

  • Документация - ESP-12E.pdf
  • Размеры модуля 24 x 16 мм.
  • Питание 3,3 В, встроенного стабилизатора нет.
  • Число портов ввода/вывода – 18.
  • Недавно покупал по 110 руб.

Модуль Node MCU.

Node MCU    Node MCU

  • Документация - NodeMCU.pdf
  • Размеры 48 x 25 мм.
  • Есть встроенный стабилизатор 3,3 В с током до 600 мА.
  • Есть встроенный конвертер USB/UART.
  • Число портов ввода/вывода – 18.
  • Покупал такие модули за 270 руб. А варианты с CH340 – за 200 руб.

Это модуль, в котором установлен ESP-12E. Кроме того добавлен стабилизатор 3,3 В, конвертер USB/UART, подтягивающие резисторы, блокировочные конденсаторы. Node MCU очень удобен, как для разработки проекта, так и для установки в готовом изделии.

Главное то, что для загрузки FLASH и отладки программы достаточно соединить модуль с компьютером стандартным USB-кабелем. Как, например, плату Arduino Nano.

 

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

Структурную схему рисовать не буду. И так понятно, что к микроконтроллеру необходимо подключить:

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

Для подключения часов реального времени необходимо 2 вывода микроконтроллера, на остальные компоненты по одному. Всего 5.

Получается, что модуль ESP-01 может использоваться только в системе с одним освещением или с одним  поливом. Я не реализовывал вариант контроллера на этом модуле. Но модуль очень дешевый, популярный. Возможно, кому-то достаточно контроллера с усеченными функциями. При этом в программе необходимо отключить последовательный порт Serial, чтобы освободить выводы TX и RX.

Я считаю, что самый простой, дешевый, надежный вариант – это использовать в контроллере модуль Node MCU. Сам я реализовывал контроллер в двух вариантах: отладочный на Node MCU и рабочий на ESP-12E. Во втором случае хотел показать, как использовать ESP-12E в практических проектах. Прочитав о последовательности моих действий, вы поймете, почему я советую использовать Node MCU.

 

Аппаратная часть контроллера на базе Node MCU.

Контроллер гроубокса не имеет обратных связей. Поэтому резидентная программа может быть легко отлажена с помощью одной платы Node MCU.

Достаточно подключить к ней часы реального времени, светодиоды вместо реле освещения и полива. А светодиод состояния контроллера уже установлен на плате Node MCU.

Часы реального времени.

Самые распространенные часы реального времени это DS1307. Существует модуль, в котором кроме часов установлена микросхема EEPROM.

DS1307

Его можно использовать в системе.

  • Но, модуль достаточно большой (28 x28 мм), функционально избыточный. EEPROM нам не нужна.
  • Микросхема DS1307 рассчитана на питание 5 В. При напряжении 3,3 В нормально не работает.

Поэтому при использовании DS1307 необходимо запитать ее от 5 В. А в разрыв сигнала SDA вставить резистор сопротивлением 2-3 кОм. Он ограничит входной ток вывода ESP8266 при сигнале высокого уровня (5 В) на выходе DS1307.

Гораздо удобнее использовать модуль на базе часов DS3231.

DS3231

Эта микросхема полный функциональный аналог DS1307 с питанием 3,3 В. И еще в модуле нет ничего лишнего, только часы. Он гораздо меньших размеров (14 x 14 мм), и в нем уже установлена батарейка. Я покупал модули часов DS3231 по 93 руб.

Мы будем программировать Node MCU в среде Arduino IDE. Следующая схема связывает выводы, заданные в программе Ардуино (GPIO) с обозначениями выводов модуля(D). Можете использовать ее при подключении сигналов к Node MCU.

Распиновка Node MCU

Полная схема отладочного контроллера выглядит так.

Схема отладочного варианта

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

Я отлаживал программу на этом контроллере.

Отладочный вариант

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

 

Аппаратная часть контроллера на базе ESP-12E.

На разработку и изготовление рабочего варианта контроллера я потратил намного больше времени и сил.

Выписал на Али Экспресс плату адаптера для ESP-12.

Адаптер ESP-12

Припаял к ней модуль ESP-12E.

На обратной стороне платы есть место для стабилизатора 3,3 В. Но оно разведено для совсем маломощных стабилизаторов типа XC6206.

Впаял со сдвигом боле мощные AMS1117-3.3. У них другая разводка выводов. Добавил блокировочные конденсаторы и подтягивающие резисторы. На адаптере их только 2, а необходимо 5. Ниже я покажу резисторы на схеме.

 

Загрузка программы во FLASH модуля ESP-12.

Загрузка FLASH ESP-12E происходит следующим образом.

Для нормального запуска программы необходимо, чтобы при сбросе на выводе GPIO15 был низкий уровень, а на выводах GPIO0, GPIO2, EN и RST – высокие уровни. Эти уровни должны быть сформированы подтягивающими резисторами.

Схема загрузки FLASH ESP-12E

После сброса состояние выводов можно изменять, а GPIO0, GPIO2 и GPIO15 использовать для своих нужд.

Для программирования FLASH необходимо нажать кнопку ”ЗАГРУЗКА”, нажать и отпустить кнопку ”СБРОС”. После этого можно отпустить кнопку ”ЗАГРУЗКА” и запускать загрузчик Arduino IDE.

Можете реализовать эту схему. Я поступил несколько иначе.

У меня есть, купленный на Али Экспресс, программатор-адаптер для ESP-01.

Программатор-адаптер ESP-01

Он представляет собой конвертер USB/UART CH340 с разъемом для ESP-01. Почему-то китайцы включили его в режиме сигналов с уровнями 5 В, хотя на плате есть стабилизатор 3,3 В.  Пришлось запитать CH340 от напряжения 3,3 В и подать его на 4й вывод для перевода CH340 в режим 3,3 В.

Кроме того я подключил сигнал разъема RESET к выводу 14 (сигнал RTS) CH340, а сигнал разъема GPIO0 к выводу 13 (сигнал DTR) CH340. И подключил конвертер интерфейсов через разъем к модулю ESP-12E.

Схема загрузки программы ESP-12E

Такая схема не требует при загрузке нажимать какие-либо кнопки. Но она не работает в режиме передачи отладочных данных с модуля на компьютер. Для обеспечения этого требуется боле сложная логика, вырабатывающая импульсы по изменению сигналов RTS и DTR. Но отладку программы я производил на Node MCU.

 

Модули реле.

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

Реле

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

Модули собраны по следующей схеме.

Схема управления реле

Реле срабатывает на низкий уровень входного сигнала. Но беда не в этом. Отключается реле при высоком уровне 5 В. Если подать на вход IN 3,3 В, то реле не отключится. Напряжение на цепи база-эммитер и резистор 1 кОм будет 1,7 В, чего вполне достаточно, чтобы удерживать транзистор открытым. Т.е. при любом уровне на выходе микроконтроллера реле были включены.

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

Схема управления реле

Пришлось изменить схему модулей реле. Для этого я заменил транзистор S8550 на транзистор другой проводимости, а также изменил полярность светодиодов и защитного диода. Еще поменял местами обозначение сигналов GND и VCC на входном разъеме. Дорожки резать не пришлось.

В качестве блока питания использовал миниатюрный AC/DC преобразователь. Купил на Али Экспресс за 70 руб.

AC/DC преобразователь 5 В 700 мА

Замечательный модуль. На выходе 5 В, 700 мА. Размеры всего 24 x 18 x 12 мм.

Итоговая схема контроллера выглядит так.

Схема устройства

Собрал я ее в пластиковой коробке размерами 102 x 65 мм. Перегородки приклеил клеем “супер момент”.

Контроллер полива и освещения

Все отлично работает уже больше недели. Банан доволен, растет.

 

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

 

Предыдущая статья     Список статей     Следующая статья

 

0

Автор публикации

не в сети 2 часа

Эдуард

280
Комментарии: 1936Публикации: 197Регистрация: 13-12-2015

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".