KC868-Uair: пролетая над гнездом кукушки. Часть 1. Гнездо

dkzkd2pekacr8lcf69iixclx3jm.jpeg

Сегодня мы немного отвлечёмся от исследования серьёзных контроллеров серии 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.

fsr3mqdsrqrdimtvoerdewhtfsc.jpeg

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

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

efa88xfjnkx17hclmx8i_hvsd0g.jpeg

Правда, инженеры компании Kincony умудрились допустить косяк космических масштабов, сделав разъём для подключения внешних датчиков в виде стандартного Mini-USB разъёма, да ещё и расположив эти разъёмы рядом, да ещё и никак не промаркировав их — рано или поздно ошибка подключения с соответствующими последствиями гарантирована.

fkzara-jeyf0gvhvbztycoraz6a.jpegKC868-Uair задумался о чём-то своём

Подробнее о корпусе


Корпус KC868-Uair, кроме того, что красивый, ещё и достаточно функциональный. Ниже представлено фото корпуса в разобранном состоянии. Обратите внимание на 3 пары направляющих образующих 3 «этажа» для установки печатных плат. Один этаж занят платой KC868-Uair, а 2 остальных остаются полностью в нашем распоряжении — вы можете дополнить вашу Smart-станцию ещё двумя платами с необходимыми вам компонентами.

drhnxrh8pdjhsdoxig65lpo4lk4.jpeg

Тут нужно сказать об одной «засаде», которая ожидает каждого владельца KC868-Uair — внешне корпус выглядит очень хорошо, но разобрать его не так просто, на первый взгляд кажется, что это вообще невозможно. На самом деле это не так — корпус скрепляют по 3 защёлки с каждого края (их видно на фото). Мне удалось вскрыть и разобрать корпус KC868-Uair только при помощи специального волшебного китайского инструмента.

w2zrdjscawoxmpx6ssjl-zgvjg0.jpeg

Сама плата


Для начала, фото установленной внутри корпуса платы KC868-Uair. Это вид снизу, со снятой нижней крышкой и полоской световода для четырёх WS2812. Видны крепёжные штанги для шурупов, направляющие для крепления печатной платы и просветы для циркуляции воздуха внутри корпуса.

0ziqekl9-kgeikyjvscbrbrt8os.jpeg

Ну и извлечённая из корпуса плата со стороны ESP32 и большей части установленных электронных компонентов.

7h4dukz6dnkfitk9ujak2cxl0js.jpeg

И вид платы с обратной стороны, где установлены беспроводные модули 433 МГц, пищалка, датчик температуры, светодиод WS2812 и IR приёмник. Производитель любезно снабдил беспроводные модули антеннами.

x4dtif-vyq5zfcrpgxvzbcqrf9e.jpeg

Схемотехника платы Kincony KC868-Uair


Теперь переходим к разбору схемотехники платы Kincony KC868-Uair. Вид сверху и крупный план установленных компонентов.

p6bvw7elvzzfejkeopqqptnygve.jpeg

Вид снизу. За антенной виден разъём со свободными для подключения контактами GPIO. Как вы видите, в изначальном состоянии пины разъёма не припаяны и, если вы хотите серьёзно работать с этим контроллером, вам придётся вспомнить свои навыки пайки и распаять их.

Тут мы встречаемся с ещё одним косяком инженеров Kincony — модуль передатчика запаян так, что без его демонтажа невозможно распаять разъём со свободными GPIO. Мне пришлось выпаять модуль передатчика и только после этого я смог запаять недостающие пины.

Пока я занимался пайкой, у меня возник вопрос:, а зачем вообще запаивать этот модуль, когда вместо него можно впаять 3-контактный разъём и вставлять в него беспроводной модуль, когда он реально нужен? Я так и поступил и в теперь в моём распоряжении появился ещё один свободный GPIO.

Также можно и модуль приёмника 433 МГц вместо пайки посадить на 4-контактный разъём.

elq62gnhrhojgbwne5jmqrzjma4.jpeg

▍ Питание


Подсистема питания Kincony KC868-Uair экстремально проста, в ней используется только линейный регулятор LM117–3V3 с соответствующей обвязкой для формирования напряжения 3,3 В.

yjwjpf16x8olvn8dqmtnamhttf8.jpeg

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

njknxl1pcfrolbpuahcrm6ep92q.png

▍ Ядро ESP32


В качестве ядра контроллера Kincony KC868-Uair использован модуль ESP-WROOM-32, о котором мы уже говорили ранее. В состав этого функционального блока входят ещё 2 фильтрующих конденсатора, расположенных в непосредственной близости от ESP32.

pja_a-ir5stydculrhkg_i51tru.jpeg

Принципиальная схема и распиновка ядра (ESP32) контроллера:

b6bamocbbpsaqm0xcini5sfq1pa.png

▍ USB/CH340


Для подключения к компьютеру, программирования и заливки прошивок в ESP32 на плате присутствует Mini-USB разъём и микросхема USB/Serial преобразователя CH340C, а также соответствующая обвязка для автоматизации загрузки скетчей. Кнопки «RESET» и «USER» отсутствуют, но при необходимости их можно добавить (расчехлив паяльник).

69b1gbwswf6r8sgknyw45aw2ali.jpeg

Принципиальная схема подсистемы USB/CH340 контроллера:

zpr1oc4abopb9mbblz6ffc7q8yk.png

▍ Датчик температуры


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

ro4j32jzrosqasblwmiki1jifzs.jpeg

Принципиальная схема подсистемы подключения датчиков температуры и влажности:

hhliijfixrp94q8yefqbohrslac.png

▍ Buzzer


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

t8nt3yqe4bqjsqyuygwqdrzrwk0.jpeg

Принципиальная схема подключения пьезоэлектрического излучателя:

2xfjqooopfcwim4kie5k2xqpihc.png

▍ Инфракрасный приёмо/передатчик


Плата Kincony KC868-Uair оснащена инфракрасным приёмником и излучателем. В качестве IR приёмника используется датчик VS1838B с обвязкой. А в качестве излучателей применяются 4 излучающих IR диода.

Схема установки диодов вызывает сомнение — они направлены вниз и, видимо, рассчитаны на работу через нижние вентиляционные отверстия (с отражением от плоскости установки KC868-Uair) и/или через световод (опоясывающий полупрозрачный контур) — насколько эффективно подобное решение ещё только предстоит выяснить, поставив соответствующие эксперименты.

Также на схеме видно, что есть выход для внешнего излучающего IR диода на соответствующем Mini-USB разъёме.

x8mm7t3zhf0agb33rn-nn35kj9s.jpeg

Принципиальная схема подсистемы инфракрасного приёмника и передатчика:

8z8zt9rbz0q88-gzuweuypjo-wo.png

▍ Модули 433 МГц


Для формирования и подачи на контроллер входного сигнала с приёмника 433 МГц используется буферный элемент 74LVC1G125, а выходной сигнал на передатчик 433 МГц подаётся напрямую.

Тут нужно сказать, что беспроводная связь на 433 МГц нужна далеко не всем и далеко не всегда, поэтому можно просто «посадить» эти модули на разъёмы (я об этом уже упоминал выше) и использовать освободившиеся GPIO для подключения нужного вам оборудования.

ftb0p1hbabwjmk4sd4egqzcxjqm.jpeg

Принципиальная схема подсистемы подключения беспроводных модулей на 433 МГц:

of8hq33vedjspflunazop-3dja4.png

▍ Индикаторы на WS2812


Как вы помните, Kincony KC868-Uair снабжён двумя индикаторными линейками на «умных» светодиодах WS2812. Расположение линеек и их устройство хорошо видно на представленных ниже иллюстрациях. На одной стороне платы расположены 4 «опоясывающих» светодиода, а на другой — 1 для подсветки вертикальной полосы.

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

hc5xoexbcbzpfdadbgsyvw6pdw0.jpeg

Принципиальная схема подсистемы индикации на WS2812:

8xvmlhtgfjatfhwmge5bvuwem4e.png

▍ Интерфейсы


У Kincony KC868-Uair интерфейс I2C выведен на внешний Mini-USB разъём, но при желании можно немного поработать паяльником и получить к нему доступ внутри контроллера.

Также на фото и принципиальной схеме видна распиновка разъёма с 12-ю свободными GPIO, «землёй» и напряжением 3,3 В к которому вы можете подключать своё дополнительное оборудование и компоненты.

5xdtjbsecp_mt3yedfyoaajudy4.jpeg

Принципиальная схема разъёмов:

rzazkrg9oh6dlh7_v3r5xjnq8qo.png

Заключение


В целом, можно сказать, что Kincony KC868-Uair — это очень интересное устройство, особенно если у вас есть фантазия, вы владеете паяльником и обладаете навыками программирования микроконтроллеров. В этом случае вы сможете потратить некоторое время и получить море удовольствия, делая из этого «гнезда кукушки» — вашу версию «кольца всевластия».

А в следующей статье мы разберёмся с подключением к KC868-Uair модулей беспроводной nRF24/LoRa связи и научимся их программировать — и тогда в нашем уютном гнезде поселится IoT кукушка.

oug5kh6sjydt9llengsiebnp40w.png

© Habrahabr.ru