Пока мы с вами разбирались с универсальным контроллером начального уровня на ESP32 для DIY автоматизации Kincony KC868-A4 1, 2, 3 «подъехал» его старший брат Kincony KC868-A8 — значительно более серьёзное устройство с 8-ю оптоизолированными цифровыми входами, 8-ю реле на борту для управления различным оборудованием, выведенным на плату I2C разъёмом, встроенным Ethernet-интерфейсом на LAN8270A и прочими интересными возможностями.
В этой статье мы подробно разберём устройство этого контроллера, но сразу хочется отметить, что одновременное наличие и сочетание двух интерфейсов — беспроводного Wi-Fi и проводного Ethernet делает KC868-A8 очень интересным решением — контроллер может работать по Wi-Fi или Ethernet и использовать альтернативный интерфейс как резервный или работать одновременно по двум интерфейсам (проводному и беспроводному) и взаимодействовать с разными сетями и т. д.
В общем, устраивайтесь поудобнее — вас ожидает очередное увлекательное путешествие в удивительный мир микроконтроллеров и DIY автоматизации…
В предыдущих сериях
В этой статье разбирается один из контроллеров ESP32-семейства компании Kincony, поэтому перед прочтением этой статьи рекомендуется ознакомиться с циклом о «младшем брате» KC868-A4. Этот обзор контроллера KC868-A8 во многом является продолжением предыдущей серии и на многих, уже рассмотренных в ней аспектах, мы здесь останавливаться не будем — предполагается, что вы уже знакомы с циклом о KC868-A4.
Почитать о тонкостях работы ESP32 с чипом Ethernet-интерфейса LAN8270A можно в статье Через тернии к звёздам или LILYGO TTGO T-Internet-POE ESP32 LAN8270A, в которой я подробно разобрал эту проблематику.
В этой статье я дам общий обзор контроллера KC868-A8 и подробно разберу его схемотехнику, в последующих статьях цикла о KC868-A8 мы будем говорить о его программировании и использовании в реальных проектах.
Kincony KC868-A8
Прежде всего познакомимся со списком установленных на плате компонентов и набором функциональных блоков, которые предоставляет в наше распоряжение Kincony KC868-A8. В первую очередь это модуль ESP32 в модификации ESP-WROOM-32 со всеми присущими ему возможностями (Wi-Fi, Bluetooth, два ядра MCU, 4 МБ EEPROM памяти и т. д.).
Кроме ESP32 модуля, плата Kincony KC868-A8 содержит:
- 8 цифровых опторазвязанных входов («сухой контакт»);
- 2 аналоговых входа 0–5 В;
- 8 реле 10А 220В;
- 4 контакта для подключения температурных и прочих датчиков;
- Модули приёмника/передатчика 433 МГц;
- Разъём I2C;
- Ethernet LAN8270A.
Что мы потеряли по сравнению с KC868-A4:
- 2 аналоговых входа 4–20 мА;
- 2 аналоговых выхода (DAC) 0–10 В;
- DB9 разъём RS232;
- Инфракрасные (IR) приёмник и передатчик;
- Пьезокерамическая пищалка (Buzzer).
На первый взгляд, список потерь выглядит внушительно, но на самом деле всё не так страшно. Лично мне из этого списка жалко только Buzzer, хотя, конечно, лишних возможностей у контроллеров не бывает и лучше было бы ничего не терять.
Что мы приобрели (по сравнению с Kincony KC868-A4):
- 4 цифровых опторазвязанных входа («сухой контакт»);
- 4 реле 10А 220В;
- 2 контакта для подключения датчиков;
- Разъём I2C;
- Ethernet LAN8270A.
Здесь ситуация прямо противоположная: казалось бы, приобретений не так много, но на самом деле они добавляют «мощи» контроллеру и выводят его на более высокий уровень и значительно расширяют круг его возможностей. Хотя всё, конечно, зависит от потребностей конкретного проекта — в каких-то проектах A4 будет даже предпочтительнее, чем A8.
A4 и A8: два представителя славного семейства ESP32-контроллеров
Кстати, A8 — это ещё не венец креативной инженерной мысли компании Kincony, у него есть пара «кузенов из Ханчжоу» — A16 и A32. Так что нам с вами будет чем заняться длинными зимними (а также весенними, летними и осенними) вечерами, сначала изучая спецификации KC868-A серии, а затем программируя и инсталлируя проекты на этих контроллерах.
Портрет в интерьере
Kincony KC868-A8 комплектуется таким же корпусом, как и контроллер KC868-A4 (см. подробное описание корпуса в предыдущих статьях). Привожу несколько фотографий «в интерьере», чтобы вы представляли себе, как контроллер будет выглядеть «в сборе». Вид на разъёмы реле:
Вид на разъёмы входов, питания контроллера и подключения к Ethernet сети. Также видны кнопки «Reset» и «User» и Mini-USB разъём для подключения к компьютеру и программирования. Учитывая наличие разъёма I2C интерфейса на плате Kincony KC868-A8, у этого корпуса появляется реальный шанс обзавестись каким-нибудь дисплеем. Согласитесь, что контроллер с дисплеем — это гораздо интереснее, чем такой же контроллер, но без дисплея.
И ещё несколько фотографий контроллера. Со снятой верхней крышкой корпуса:
Сама плата без корпуса. Кстати, никто не заставляет использовать комплектный корпус и DIN-рейку, вы можете закрепить плату так, как вам больше нравится и в соответствии с требованиями вашего проекта.
Плата KC868-A8
На этом заканчиваем общий обзор контроллера и переходим к анатомированию платы Kincony KC868-A8 (детей и слабонервных просим удалиться). Вид сверху на установленные компоненты. Как эстет, могу сказать, что инженеры компании Kincony не лишены чувства прекрасного и дизайн платы (по крайней мере, внешне) смотрится вполне гармонично.
Вид снизу. Тут особо комментировать нечего, как всегда, ожидаем мнения профессиональных железячников (как показывает практика, им всегда есть что сказать).
Схемотехника
Рассматривать схемотехнику KC868-A8 мы будем по тому же принципу, который использовали для описания KC868-A4: фото компонентов на плате контроллера, принципиальная схема подсистемы и мои комментарии в вольном стиле об этой подсистеме.
Поскольку контроллеры KC868-A8 и KC868-A4 являются представителями одного семейства, то, естественно, их схемотехника очень похожа и в процессе разбора устройства KC868-A8 я буду сравнивать его с его «младшим братом» KC868-A4.
▍ Питание
Ядро подсистемы — система питания контроллера KC868-A8 не претерпело каких-либо серьёзных изменений по сравнению с подсистемой питания KC868-A4 — это всё та же микросхема понижающего DC-DC преобразователя XL1509-5 для формирования напряжений 12 В и 5 В и линейный регулятор LM117-3V3 для формирования напряжения 3,3 В (с соответствующей обвязкой).
Принципиальная схема подсистемы питания KC868-A8:
▍ Ядро ESP32
В Kincony KC868-A8 установлен модуль ESP32 в модификации ESP-WROOM-32, но в документации на принципиальной схеме указана модификация ESP32-S. Поскольку это практически одно и то же, то, видимо, производитель впаивает в платы те ESP32 модули, которые в данный момент имеются на его складе. Это только моё предположение, но, скорее всего, это так и есть. Это косвенно подтверждается тем, что в A4 установлен ESP32-S.
Принципиальная схема и распиновка ядра (ESP32) контроллера. Обратите внимание, что в различных ревизиях платы есть отличия в распиновке контактов ESP32: серым цветом отдельно отмечены изменения в версии 1.4.
О распиновке, распределении GPIO и программировании мы поговорим в следующей статье этого цикла.
▍ USB/CH340
Дизайн подсистемы подключения к компьютеру и программирования KC868-A8 практически полностью повторяет соответствующую подсистему KC868-A4 (за мелкими исключениями). Здесь тот же Mini-USB разъём, чип CH340C и две кнопки — «RESET» и «USER».
Принципиальная схема подсистемы USB/CH340 контроллера:
▍ Цифровые входы
Плата Kincony KC868-A8 имеет 8 цифровых оптоизолированных входов на оптронах EL357. Светодиоды, которые были на KC868-A4, видимо пропали из-за отсутствия свободного места на плате. Это жалко, потому что было очень удобно визуально контролировать состояние входов.
Также в KC868-A8 применён расширитель цифровых входов/выходов c I2C интерфейсом PCF8574P, что на плате с ESP32 с его (драматически) ограниченным количеством GPIO можно только приветствовать.
Принципиальная схема подсистемы цифровых входов:
▍ Аналоговые входы
На аналоговом фронте плата KC868-A8 понесла значительные потери и лишилась двух из четырёх аналоговых входов, остались только 2 входа для сигналов 0–5 B. Это, конечно, печально, но в большинстве случаев не смертельно. Формирование сигналов доверено входным каскадам, сдвоенному операционному усилителю LM258D и диодам Шоттки BAT54S.
Тут же формируется напряжение VCC_12V_1.
Принципиальная схема подсистемы аналоговых входов:
▍ Реле
На фотографии хорошо видно, что подсистема реле занимает больше половины контроллера Kincony KC868-A8. Обслуживанием работы 8-и реле занимаются микросхемы 74HCT14 с инвертирующими триггерами Шмитта и ULN2003A с матрицами транзисторов Дарлингтона. По обоим краям платы расположены группы индикаторных светодиодов.
Само взаимодействие с микроконтроллером ESP32 осуществляется при помощи pасширителя цифровых входов/выходов c I2C интерфейсом PCF8574P (так же, как и в случае с цифровыми входами).
Принципиальная схема подсистемы реле:
▍ Датчики температуры/влажности
Здесь мы имеем 6-контактную колодку с 4-я разъёмами для подключения температурных и прочих датчиков. Это большой шаг вперёд по сравнению с аналогичным одним контактом контроллера KC868-A4. Тут у нас полная свобода действий — можно подключать любые подходящие датчики или сети из нескольких датчиков.
Нужно только помнить, что все контакты подтянуты на плате к напряжению 3 В. В крайнем случае можно удалить с платы подтягивающие резисторы и получить «чистые» GPIO, к которым можно подключить нужное вам оборудование.
Принципиальная схема подсистемы подключения датчиков:
▍ Модули 433 МГц
Здесь мы видим нераспаянные разъёмы для подключения модулей на 433 МГц (см. подробности в цикле о KC868-A4). Можно подключить модули и получить связь на 433 МГц, но далеко не всем нужны такие беспроводные соединения — можно к этим контактам вместо модулей на 433 МГц подключить что-то другое, что нужно вам в конкретном проекте.
Принципиальная схема подсистемы подключения беспроводных модулей на 433 МГц:
▍ Ethernet
И вот, наконец, главная «фишка» контроллера Kincony KC868-A8 — Ethernet на чипе LAN8270A. Это прекрасно работающая на ESP32 технология и в данном случае мы получаем возможность подключать контроллер по Wi-Fi, или Ethernet, или одновременно по двум интерфейсам, или использовать второй интерфейс как резервный и т. д. Здесь возможности ограничены только вашим воображением (воображением программиста прошивки для KC868-A8).
Из недостатков использования LAN8270A в составе контроллера на ESP32 можно назвать то, что Ethernet чип занимает аж 9 GPIO из и без того крайне скудного количества свободных контактов этого микроконтроллера. В данном случае положение спасают расширители портов для входов и реле.
Принципиальная схема подсистемы Ethernet:
▍ I2C
Большим подарком от разработчиков контроллера Kincony KC868-A8 стал разъём для подключения I2C оборудования. Благодаря этому, вы можете подключить к контроллеру какие-то свои I2C-совместимые компоненты, как минимум дисплей, что положительно скажется как на внешнем виде, так и на удобстве использования вашего контроллера.
Заключение
Чем больше я работаю с контроллерами компании Kincony серии KC868, тем больше они мне нравятся. В них, конечно, можно было бы много чего исправить, но даже в том виде, как они есть — это уже отличные решения для малой автоматизации и DIY проектов.
А в следующей статье мы разберём по косточкам распиновку KC868-A8 и научимся программировать его составные части (функциональные блоки).
Комментарии (31)
Ivanii
22.02.2022 17:04Питание не фонтан - 300 мА через линейный стаб, куча электролитов, входной стаб хоть и с ШИМ но убогий.
Да и остальная схемотехника странная, аналоговые входы ESP "защищены" резисторами...
smart_alex Автор
22.02.2022 17:10Почему 300? вроде всегда 800 было.
Ivanii
23.02.2022 13:54Потребление от 1117 примерно 300 мА, но и это очень много для конкретных условий.
shadson
22.02.2022 17:06PCF8574P - DIP.
Здесь PCF8574Т или PCF8574AT.
Уважаемые знатоки, подскажите "ненастоящему сварщику" - тут вообще норм схемотехника (по питанию, по входам, реализация аналоговых) ? Стоит "списывать" для домашних поделок ?
smart_alex Автор
22.02.2022 17:20Здесь PCF8574Т или PCF8574AT.
Да, вы правы. PCF8574P у них в документации указан (ошибочно).
Уважаемые знатоки, подскажите "ненастоящему сварщику" - тут вообще норм схемотехника (по питанию, по входам, реализация аналоговых) ? Стоит "списывать" для домашних поделок ?
Хороший вопрос — предлагаю высказаться всем у кого есть мысли по этому поводу.
RTFM13
23.02.2022 00:03Гальванической развязки нет, сигнальной земли нет. За то дёшево. Только не совсем понятно поведение при напряжении на входе >5В (см ниже).
Повторитель на операционнике это очевидное решение после RC фильра.
Между выходом операционника и ограничительными диодами просится токоограничительный резистор 1-10K или RC фильтр. Т.к. диоды есть в составе GPIO микроконтроллера, а ток будет ограничен, то во внешних диодах не вижу смысла. А в текущей конфигурации при подаче более 5В на вход, операционник будет питать микроконтроллер своими выходами. Это больше похоже на ошибку в схеме.
Операционник я бы взял низковольтный rail-to-rail и запитал его от 3,3В
На вход можно поставить какой-нибудь супрессор на 5В (можно найти в цепях защиты USB). Входной резистор можно разделить на 2 последовательных и супрессор поставить между ними, это сделает схему толерантной к повышенному постоянному напряжению на входе до нескольких десятков вольт, в т.ч. обратной полярности.
4chemist
23.02.2022 08:48По входам/выходам посмотрите Application Note AN_SC1X3_IO.pdf (легко гуглится) Там предлагается схемотехника входа и выхода для ПЛК. Если ваша поделка связана длинными проводами с датчиками, то я бы рекомендовал делать именно такие входы/выходы.
smart_pic
22.02.2022 18:55+2Порадовало то что поставили нормалные реле и сделали правильно разводку коммутируемой реле нагрузки,есть защитные интервалы и фрезерование. Такое исполнение выдержит 220В.
Цифровые входы - для оптронов желательно ограничение по току на случай если подадут больше 27В.
По питанию схема слабовата и на пределе . Если навешать доп модули - то проблемы появятся.
Аналоговые входы - лучше бы использовали ОУ из серии Rail-to-Rail , а ограничение сделали бы на входе ОУ . То что на выходе ОУ защита - это хорошо.
Отсутствие памяти под ВЕБ интерфейс пользователя и ограничения ESP, скорее всего не позволит сделать красивый пользовательский интерфейс.
Работа с реле через PCF8574 - не совсем хорошее решение. Лучше сдвиговые регистры. Но видимо пошли по пути Ардуино , где полно библиотек для I2C. И поэтому построили систему на внутренней I2C шине и оставили место под разъемы для внешнего подключения устройств по I2C.
Места на плате достаточно, а часы не поставили, тем более при внутренней шине I2C. Например PCF8563, позволяет иметь часы и одновременно энергонезависимое(относительно) ОЗУ для хранения разных счетчиков , чтоб не расходовать ресурс EEPROM.
Устройство на DIN-рейку , с реле на 220В и внешними девайсами в этом шкафу с неизолированной I2C - ну совсем не очень.
-
Использование нестандартного корпуса на DIN-рейку - не особо приветствую.
Wi-Fi в такой конструкции не особо и нужен, считаю что здесь просто дань моде на ESP. Ограниченность ESP по входам-выходам и привело к такой схемотехнике.
А так устройство на 8 реле , 8 входов , несколько аналоговых входов в стандартном корпусе на дин рейку типа http://www.gainta.com/d12mg.html, с проводным LAN, лично я бы делал по другому.
Посмотрим какие возможности по программированию у этого девайса.
smart_alex Автор
22.02.2022 21:00Интересные замечания, со многим согласен. Единственное, по пункту №5 — у меня на этой плате тестовая версия AMS работает на ура и имеет полноценный веб-интерфейс и сайтовый движок.
alexzeed
22.02.2022 23:29По пункту 5 — если там типичный ESP32 модуль, у него как правило внутри флешка на 4 мегабайта. Не знаю, можно ли ужать веб-сервер+SDK в мегабайт, но в два точно можно, я делал шлюз Web-UART на ESP32, 2 метра занимает прошивка и 2 — файловая система, где лежат всякие html-css-js. Так что, как раз веб интерфейс, если не увлекаться большими картинками, вполне поместится. Хотя, если честно, могли бы заложить внешнюю флешку побольше.
PR200SD
23.02.2022 10:44Я сделал себе шлюз на picod4 и 7820A, web у меня простой но внутри и модбас и много других задач, поэтому сделал вариант включения точки доступа только когда связь через ethernet не подключена, у меня борьба больше за оперативную память, а так без проблем можно вместить web и на полтора мегабайта, был такой еще на esp8266 при этом еще и OTA работала.
sav13
22.02.2022 19:47Есть ли где-то библиотека для ESP32, поддерживающая Ethernet на SPI1 ?
На SPI0 у меня висит LoRa модем и не хотелось бы разделять этот интерфейс с Ethernet во избежание потерь пакетов
smart_alex Автор
22.02.2022 21:03Переопределение пинов на ESP32 и (пере)определение пинов SPI интерфейса — это интересный (и важный) вопрос, я бы сам почитал компетентную статью на эту тему.
RTFM13
23.02.2022 00:13В данном случае эзернет используется внутренний и к SPI не имеет совершенно никакого отоношения. На сколько я знаю он без проблем переопределяется, но я пока не пробовал.
sav13
23.02.2022 06:10Внутренний для чего?
Из недостатков использования LAN8270A в составе контроллера на ESP32 можно назвать то, что Ethernet чип занимает аж 9 GPIO из и без того крайне скудного количества свободных контактов этого микроконтроллера.
PR200SD
23.02.2022 10:39Имеется ввиду что чип Ethernet подключается не по SPI, а через RMII при этом снаружи к чипу необходимо подключить внешнее устройство со встроенным PHY, в качестве чего и выступает 7820A.
FGV
22.02.2022 20:55блин, что это за ужас с реле?
i2cgpio->74***->uln2003->обмотка реле.
зачем 74*** буфер? зачем в двойном размере все? можно воткнуть uln2003 и один отдельный транзистор, итого минус три корпуса.
реле без снабберов, обмотки диодами не шунтированы.
smart_alex Автор
22.02.2022 21:12зачем 74*** буфер? зачем в двойном размере все? можно воткнуть uln2003 и один отдельный транзистор, итого минус три корпуса.
Мне этот момент тоже не совсем понятен, но очевидно, что разработчики руководствовались какими-то своими соображениями — к сожалению мы об этом можем только догадываться.
alexzeed
23.02.2022 09:50Даже доп. транзистор не нужен, есть же uln2803a. Ну и назначение буферов правда непонятно, uln требуется 2.4 вольта и менее 1 мА для нагрузки в 200 мА, явно выходы pcf8574 должны тянуть напрямую.
RTFM13
23.02.2022 13:39Есть готовые ключи для релюшек с последовательным интерфейсом, на память не скажу марку. Но на рассыпухе может выйти на 1 цент дешевле.
vagon333
22.02.2022 20:59Заинтересовался темой, сначала хотел купить для пробы, а затем нашел для себя Dingtian DT: 2/4/8-канальное реле с управлением по http.
Из полезного для меня:поддерживает интерфейсы wifi, ethernet, can
не нужно ардуинить web-ui, все уже готов
не нужно делать корпус, есть как опция при покупке
синхронизация времени с сервером времени
простая настройка режима работы, или управление снаружи, по http запросам.
https://www.dingtian-tech.com/en_us/relay8.html
У меня это устройство (купил на 8 и на 4 реле) пойдет на управление подсветкой дома снаружи.
smart_alex Автор
22.02.2022 21:06не нужно ардуинить
Для меня «ардуинство» — это одно из главных свойств платы — можно сделать всё как я хочу и как мне нужно.
smart_pic
22.02.2022 21:18«ардуинство» и сделать всё как я хочу и как мне нужно
они противорячат друг другу. Ардуинщик зависит от платформы, библиотек, схемных решений и сформированного в обществе мнения
smart_alex Автор
22.02.2022 21:22Ну не знаю... Я софт для своих проектов всегда сам пишу, включая веб-интерфейс, беспроводные стеки и т. д.
smart_pic
22.02.2022 21:34Покажите хоть один ВЕБ интерфейс для ESP с хорошей проработкой интерфейса, SVG, шкалами и т.д. и количеством вводимых параметров больше 100. Мне пока попадаются только примитивные кноки и лампочки.
smart_alex Автор
22.02.2022 21:39Будьте любезны:
https://habr.com/ru/post/547044/
В этой статье я подробно описываю работу AMS на подобном контроллере (ESP32+Ethernet).
alexzeed
23.02.2022 10:04Ну потому что эмбеддеры не фронтендеры :) На самом деле веб интерфейс на платформу ни разу не завязан, на ESP у вас может крутиться простейший mongoose web server, который будет отдавать красивые html+js+css+картинки пользователю, и вся логика типа обновления свойств svg-шек будет именно в браузере у пользователя, а на esp она будет только ходить забирать значения из REST API. И будет не важно, что там — ESP8266, ESP32 или даже какой-нибудь не очень дохлый STM32.
Я кстати предпочитаю писать под ESP на C++ — ESP-IDF конечно монстрообразненький, но позволяет положить в прошивку только то, что нужно, а побольше флешки отдать веб-серверу под файлы. Или даже под логи отладочные, если SD-карты нет.
vagon333
22.02.2022 21:37Не против где это еще не сделано, но управление реле по http - тривиальная задача.
Собирать команды, анализировать и формировать очередь задач на включение/выключение из своего софта/железа я сделаю сам, но отработку коммутации вполне нормально передать другой железке.
clawham
За 50 уе у меня получилось развести свою плату на 16 входов опторазвязанных, 16 релейных портов из которых 4 - мощные, все удобно развести повыводить все разьемы пины, все это вышло компактнее т.к. я использовал меньшие реле, esp32 у меня в виде модуля wemos - очень компактная - в случае запарывания - просто вынул из кроватки и вставил новую. ещё и на пластик для 3д принтера хватило денег. мде...молодцы...
smart_alex Автор
К сожалению, не все такие молодцы и могут сами сделать нужную плату...
smart_pic
50уе можно уложиться. Заказать ПП в Резоните, 8 реле , 16 входов, модем SIM800C, часы , SPI память на 4М для ВЕБа и настроек, RS232, RS485, PIC32+Ethernet, блок питания на DIN-рейку, стандартный корпус на DIN-рейку.