KC868-Uair: пролетая над гнездом кукушки. Часть 1. Гнездо
Сегодня мы немного отвлечёмся от исследования серьёзных контроллеров серии KC868 (KC868-A4, KC868-A8) и займёмся совершенно несерьёзным (на первый взгляд) контроллером Kincony KC868-Uair. KC868-Uair — это эдакая «неведома зверушка с лампочками», с которой непонятно что вообще нужно делать — то ли это погодная станция, то ли устройство инфракрасного (IR) управления бытовой аппаратурой, то ли хаб умного дома, то ли ещё что.
В результате разбора и хирургического исследования KC868-Uair с применением паяльника выяснилось, что это больше всего напоминает универсальную беспроводную (Wi-Fi, Bluetooth) базу для «лёгкой» домашней автоматизации с возможностью добавления поддержки nRF24, LoRa и прочих беспроводных интерфейсов, что делает устройство крайне интересным и потенциально весьма полезным в домашнем хозяйстве.
А симпатичный внешний вид, наличие полноцветной индикации событий, встроенной пьезоэлектрической пищалки, поддержки беспроводной связи 433 МГц, возможности подключения дисплея и наличие свободного места в корпусе для добавления собственных плат-расширений делает KC868-Uair устройством мимо которого мы, как креативные гики, никак не можем пройти.
Kincony KC868-Uair
Начнём мы, по традиции, с выяснения того, из чего состоит KC868-Uair и какие функциональные блоки имеет на борту. Это, конечно же, ядро на ESP32 (ESP-WROOM-32) со всеми присущими ему возможностями (Wi-Fi, Bluetooth, два ядра, 4 МБ встроенной EEPROM памяти и т. д.), а также:
- Встроенный датчик температуры DS18B20.
- Инфракрасные (IR) приёмник и передатчик.
- Модули приёмника/передатчика 433 МГц.
- Пьезокерамическая пищалка (Buzzer).
- 2 блока (¼ шт.) индикаторных светодиодов WS2812.
- Разъём для подключения внешних I2C датчиков и IR светодиода.
- Внутренний разъём с 12-ю свободными GPIO.
- Mini-USB разъём для питания/связи с компьютером.
Как видно из представленного выше списка, KC868-Uair уже из коробки является довольно функциональным устройством и позволяет измерять температуру как в месте установки Uair, так и на расстоянии при помощи выносного датчика, управлять бытовой аппаратурой по IR каналу, получать данные и отправлять команды беспроводным устройствам 433 МГц, озвучивать происходящие события при помощи Buzzer-а, индицировать различные состояния системы при помощи двух (независимых) линеек полноцветных светодиодов WS2812, подключать к устройству выносные датчики и т. д. А если учесть, что всё это работает под управлением довольно мощного микроконтроллера ESP32 c Wi-Fi и Bluetooth на борту, то, очевидно, что тут «узким местом» будут не возможности устройства, а ваша фантазия и квалификация в программировании.
Но это ещё не всё, KC868-Uair имеет внутренний разъём с 12-ю свободными пинами ESP32 (наконец-то!) и 70% свободного места в корпусе, что позволяет оснастить вашу Smart-станцию (назовём её так) любыми нужными вам дополнительными компонентами. А поскольку список дополнительных компонентов, которые можно таким способом подключить к KC868-Uair, практически бесконечен, то практически бесконечны и ваши возможности по модернизации KC868-Uair.
Забегая немного вперёд, скажу, что немного поработав паяльником (а в некоторых случаях и без паяльника), можно получить доступ к пинам интерфейсов SPI и I2C на плате контроллера, что позволяет оснастить KC868-Uair дисплеем, беспроводными nRF24 или LoRa интерфейсами и создать поистине могучее IoT устройство в компактном и симпатичном корпусе KC868-Uair.
Веб-интерфейс
Отдельно хочется сказать о веб-интерфейсе. ESP32 это довольно мощный микроконтроллер, который позволяет обслуживать полноценный (в смысле использования «взрослых» HTML, CSS, Ajax, Websocket и т. д.) веб-интерфейс. Поэтому наша Smart-станция на KC868-Uair может обладать роскошным интерфейсом с десятками веб-страниц, интерактивным интерфейсом управления подключённым оборудованием и настройками, может выдавать красочную аналитику и графики и т. д.
То есть быть самодостаточным устройством, которому не нужны никакие управляющие Linux-компьютеры на Raspberry Pi и (во многих случаях) брокеры MQTT (сравните цену и энергопотребление ESP32 и Raspberry Pi). KC868-Uair может быть сам управляющим контроллером со своим user-friendly веб-интерфейсом.
NRF24 и LoRa
Теперь давайте представим: в лице KC868-Uair мы уже имеем довольно функциональное устройство само по себе, которое может ещё и получать данные и посылать команды беспроводным устройствам на 433 МГц (Уже неплохо). Но что будет, если мы добавим нашей Smart-станции возможность работы ещё и по nRF24 и/или LoRa? — возможности нашей станции возрастут в геометрической прогрессии и наше скромное на вид «гнездо кукушки» превратится просто в «кольцо всевластия» с десятками, если не сотнями, подключёнными беспроводными датчиками и актуаторами.
Круто? Мне кажется, что очень, особенно для такого скромного на вид устройства, как KC868-Uair.
Что и как нужно делать, чтобы оснастить KC868-Uair поддержкой беспроводной nRF24 и/или LoRa связи я расскажу в следующей статье, там же я дам подробные распиновки, инструкции по перепайке, ссылки на необходимые библиотеки, примеры кода и т. д.
Питание
Питание и связь с компьютером KC868-Uair осуществляется при помощи Mini-USB разъёма. Соответственно, это 5 вольт от любого качественного USB разъёма компьютера или мини-блока питания. На мой взгляд, это простое и удобное решение — подключить KC868-Uair не составляет никаких проблем. Правда, проблемы могут возникнуть, если вы захотите оснастить KC868-Uair каким-то «прожорливым» дополнительным оборудованием —, но это специфический вопрос и мы здесь не будем на нём останавливаться.
Особый шарм этому решению придаёт возможность запитать KC868-Uair от любого пауэрбанка и включить вашу Smart-станцию прямо в поле. А что? Включили станцию от пауэрбанка и раскидали по «полю» десяток нужных вам датчиков — получили мобильный «умный дом».
Внешний вид и корпус
Как я уже отмечал выше, Kincony KC868-Uair имеет простой, но в то же время достаточно симпатичный корпус, не вызывающий отторжения каким-нибудь убогим или «колхозным» дизайном — всё сделано по принципу «скромненько, но со вкусом». Такое устройство не стыдно поставить на полку в любом интерьере.
Индикация сделана тоже грамотно и функционально — есть горизонтальная опоясывающая полоса (4 независимых полноцветных светодиода WS2812) и вертикальная полоса (1 светодиод WS2812) — эта комбинация позволяет наглядно (и красиво) отображать любые события в системе.
Ниже представлено фото KC868-Uair в сравнении с уже известным вам контроллером KC868-A8.
Вид снизу: видны два отверстия для крепёжных шурупов и вентиляционные отверстия для забора окружающего воздуха. Всё сделано достаточно грамотно — воздух может свободно проходить через отверстия в нижней и верхней части корпуса. Сам корпус стоит на небольшом возвышении в виде «ножки» (что и позволяет воздуху свободно проходить через отверстия).
При необходимости в корпусе можно сделать дополнительные отверстия для лучшей циркуляции воздуха.
Правда, инженеры компании Kincony умудрились допустить косяк космических масштабов, сделав разъём для подключения внешних датчиков в виде стандартного Mini-USB разъёма, да ещё и расположив эти разъёмы рядом, да ещё и никак не промаркировав их — рано или поздно ошибка подключения с соответствующими последствиями гарантирована.
KC868-Uair задумался о чём-то своём
Подробнее о корпусе
Корпус KC868-Uair, кроме того, что красивый, ещё и достаточно функциональный. Ниже представлено фото корпуса в разобранном состоянии. Обратите внимание на 3 пары направляющих образующих 3 «этажа» для установки печатных плат. Один этаж занят платой KC868-Uair, а 2 остальных остаются полностью в нашем распоряжении — вы можете дополнить вашу Smart-станцию ещё двумя платами с необходимыми вам компонентами.
Тут нужно сказать об одной «засаде», которая ожидает каждого владельца KC868-Uair — внешне корпус выглядит очень хорошо, но разобрать его не так просто, на первый взгляд кажется, что это вообще невозможно. На самом деле это не так — корпус скрепляют по 3 защёлки с каждого края (их видно на фото). Мне удалось вскрыть и разобрать корпус KC868-Uair только при помощи специального волшебного китайского инструмента.
Сама плата
Для начала, фото установленной внутри корпуса платы KC868-Uair. Это вид снизу, со снятой нижней крышкой и полоской световода для четырёх WS2812. Видны крепёжные штанги для шурупов, направляющие для крепления печатной платы и просветы для циркуляции воздуха внутри корпуса.
Ну и извлечённая из корпуса плата со стороны ESP32 и большей части установленных электронных компонентов.
И вид платы с обратной стороны, где установлены беспроводные модули 433 МГц, пищалка, датчик температуры, светодиод WS2812 и IR приёмник. Производитель любезно снабдил беспроводные модули антеннами.
Схемотехника платы Kincony KC868-Uair
Теперь переходим к разбору схемотехники платы Kincony KC868-Uair. Вид сверху и крупный план установленных компонентов.
Вид снизу. За антенной виден разъём со свободными для подключения контактами GPIO. Как вы видите, в изначальном состоянии пины разъёма не припаяны и, если вы хотите серьёзно работать с этим контроллером, вам придётся вспомнить свои навыки пайки и распаять их.
Тут мы встречаемся с ещё одним косяком инженеров Kincony — модуль передатчика запаян так, что без его демонтажа невозможно распаять разъём со свободными GPIO. Мне пришлось выпаять модуль передатчика и только после этого я смог запаять недостающие пины.
Пока я занимался пайкой, у меня возник вопрос:, а зачем вообще запаивать этот модуль, когда вместо него можно впаять 3-контактный разъём и вставлять в него беспроводной модуль, когда он реально нужен? Я так и поступил и в теперь в моём распоряжении появился ещё один свободный GPIO.
Также можно и модуль приёмника 433 МГц вместо пайки посадить на 4-контактный разъём.
▍ Питание
Подсистема питания Kincony KC868-Uair экстремально проста, в ней используется только линейный регулятор LM117–3V3 с соответствующей обвязкой для формирования напряжения 3,3 В.
Принципиальная схема подсистемы питания контроллера:
▍ Ядро ESP32
В качестве ядра контроллера Kincony KC868-Uair использован модуль ESP-WROOM-32, о котором мы уже говорили ранее. В состав этого функционального блока входят ещё 2 фильтрующих конденсатора, расположенных в непосредственной близости от ESP32.
Принципиальная схема и распиновка ядра (ESP32) контроллера:
▍ USB/CH340
Для подключения к компьютеру, программирования и заливки прошивок в ESP32 на плате присутствует Mini-USB разъём и микросхема USB/Serial преобразователя CH340C, а также соответствующая обвязка для автоматизации загрузки скетчей. Кнопки «RESET» и «USER» отсутствуют, но при необходимости их можно добавить (расчехлив паяльник).
Принципиальная схема подсистемы USB/CH340 контроллера:
▍ Датчик температуры
Датчик температуры DS18B20 впаян в плату и будет, скорее всего, измерять температуру в корпусе, а не температуру окружающего воздуха. Тут нужно заниматься калибровкой и введением соответствующего поправочного коэффициента или пользоваться внешним (выносным) датчиком температуры. Также возможны различные креативные варианты, типа выпаивания датчика и впаивания вместо него сети из нескольких датчиков и прочие подобные изыски.
Принципиальная схема подсистемы подключения датчиков температуры и влажности:
▍ Buzzer
Схема пьезоэлектрического излучателя предельно проста и не нуждается в комментариях, замечу только, что само присутствие пищалки очень полезно, поскольку можно без труда и штатными средствами контроллера оповещать пользователей о различных событиях.
Принципиальная схема подключения пьезоэлектрического излучателя:
▍ Инфракрасный приёмо/передатчик
Плата Kincony KC868-Uair оснащена инфракрасным приёмником и излучателем. В качестве IR приёмника используется датчик VS1838B с обвязкой. А в качестве излучателей применяются 4 излучающих IR диода.
Схема установки диодов вызывает сомнение — они направлены вниз и, видимо, рассчитаны на работу через нижние вентиляционные отверстия (с отражением от плоскости установки KC868-Uair) и/или через световод (опоясывающий полупрозрачный контур) — насколько эффективно подобное решение ещё только предстоит выяснить, поставив соответствующие эксперименты.
Также на схеме видно, что есть выход для внешнего излучающего IR диода на соответствующем Mini-USB разъёме.
Принципиальная схема подсистемы инфракрасного приёмника и передатчика:
▍ Модули 433 МГц
Для формирования и подачи на контроллер входного сигнала с приёмника 433 МГц используется буферный элемент 74LVC1G125, а выходной сигнал на передатчик 433 МГц подаётся напрямую.
Тут нужно сказать, что беспроводная связь на 433 МГц нужна далеко не всем и далеко не всегда, поэтому можно просто «посадить» эти модули на разъёмы (я об этом уже упоминал выше) и использовать освободившиеся GPIO для подключения нужного вам оборудования.
Принципиальная схема подсистемы подключения беспроводных модулей на 433 МГц:
▍ Индикаторы на WS2812
Как вы помните, Kincony KC868-Uair снабжён двумя индикаторными линейками на «умных» светодиодах WS2812. Расположение линеек и их устройство хорошо видно на представленных ниже иллюстрациях. На одной стороне платы расположены 4 «опоясывающих» светодиода, а на другой — 1 для подсветки вертикальной полосы.
К каждому светодиоду можно обращаться индивидуально и устанавливать любой цвет свечения, доступна также динамическая индикация с различными эффектами. Из косяков замечено, что отдельный «вертикальный» светодиод работает некорректно — у него перепутана распайка красного и зелёного канала, но это можно легко компенсировать в коде.
Принципиальная схема подсистемы индикации на WS2812:
▍ Интерфейсы
У Kincony KC868-Uair интерфейс I2C выведен на внешний Mini-USB разъём, но при желании можно немного поработать паяльником и получить к нему доступ внутри контроллера.
Также на фото и принципиальной схеме видна распиновка разъёма с 12-ю свободными GPIO, «землёй» и напряжением 3,3 В к которому вы можете подключать своё дополнительное оборудование и компоненты.
Принципиальная схема разъёмов:
Заключение
В целом, можно сказать, что Kincony KC868-Uair — это очень интересное устройство, особенно если у вас есть фантазия, вы владеете паяльником и обладаете навыками программирования микроконтроллеров. В этом случае вы сможете потратить некоторое время и получить море удовольствия, делая из этого «гнезда кукушки» — вашу версию «кольца всевластия».
А в следующей статье мы разберёмся с подключением к KC868-Uair модулей беспроводной nRF24/LoRa связи и научимся их программировать — и тогда в нашем уютном гнезде поселится IoT кукушка.