Сегодня мы поговорим об ещё одном изобретении сумрачного китайского гения — устройстве под кодовым номером KC868-ASR. Судя по самоназванию «Sensor Record Extension», компания Kincony предполагает использование этого устройства в качестве беспроводного сенсора с возможностью записи данных на microSD карту памяти, но наличие на борту часов реального времени (RTC), двух реле, microSD карты памяти, свободных GPIO, да и самого микроконтроллера ESP32 как бы намекает нам, что использование его в этом качестве — это что-то вроде стрельбы из пушки по воробьям.
Я бы сказал, что это скорее ESP32 нода с настолько широким диапазоном ролей использования, насколько хватит вашей фантазии, креатива и квалификации в программировании. Тонким местом тут, как всегда, является фантазия (смайл), поскольку возможностей для интеграции в вашу IoT инфраструктуру (у вас ведь есть своя IoT инфраструктура?) у KC868-ASR предостаточно.
Обо всём этом мы и поговорим далее.
❯ Что под капотом
Для начала давайте познакомимся с формальными ТТХ KC868-ASR и расставим всё по полочкам, чтобы потом хорошо представлять о чём идёт речь и какой набор функций мы имеем в своём распоряжении.
Плата KC868- ASR содержит:
- Микроконтроллер ESP32 (ESP-WROOM-32E)
- Колодка для подключения датчиков (или сетей 1-Wire) T1, T2, 3V3, GND
- 2 свободно программируемых светодиода
- 2 реле 10А 250В (NO, COM)
- Разъём для microSD карты
- RTC DS3231
- Разъём для батарейки CR1220
- Пьезокерамическая пищалка (Buzzer)
- Разъём Free GPIO (2 GPIO)
- USB разъём Type-C
- Кнопки «Reset» и «Download»
- Разъём питания 12 (9-18) В
- Светодиод наличия питания
Всё это хозяйство можно разделить на четыре основные функциональные части:
Ядро:
- Микроконтроллер ESP32 (ESP-WROOM-32E)
- Разъём для microSD карты памяти
- RTC DS3231
Ввод/вывод:
- Колодка для подключения датчиков (или сетей 1-Wire) T1, T2, 3V3, GND
- Разъём Free GPIO (2 GPIO)
Управление:
- 2 реле 10А 250В (NO, COM)
Индикация:
- 2 свободно программируемых светодиода
- Пьезокерамическая пищалка (Buzzer)
Так всё становится значительно понятнее, теперь перейдём к «функциональному анализу» возможных ролей KC868-ASR как с точки зрения производителя, так и с нашей (скромной) точки зрения.
❯ Sensor Record Extension
Зная номенклатурный ряд продукции компании Kincony, можно реконструировать ход мысли их инженеров: когда речь зашла о создании беспроводного сенсора — они просто урезали функционал (и печатную плату) своих типовых контроллеров на ESP32 и добавили пару «фишек», которые по их мнению должны присутствовать в таком сенсоре.
И в целом это сработало: на KC868-ASR можно создать беспроводной Wi-Fi сенсор с 1-2 датчиками или 1-2 1-Wire сетями датчиков, например температуры на популярном DS18B20.
Можно также снабдить этот сенсор возможностью создания логов сбора показаний датчиков и сделать его автономным в плане работы с реальным временем.
Другое дело, что возникают вопросы: зачем точное автономное время и microSD карта памяти на борту сенсора, когда он подключается по Wi-Fi и может спокойно сбрасывать любые данные и синхронизировать время с базовым контроллером? Получается, что тут расчёт на какой-то (странный) случай нестабильной работы Wi-Fi (чтобы иметь возможность сохранить большой массив данных на карте) или на то, что KC868-ASR будет являться «сам себе» базой и самостоятельно обрабатывать получаемые данные.
❯ Мой взгляд на проблему
Что касается беспроводных IoT сенсоров, например, температуры, влажности и т. п., то лично я уже давно перешёл на использование батарейных долгоживущих решений (nRF24, LoRa и т. п.) и подобный монстр на ESP32 в качестве беспроводного сенсора для меня выглядит немного диковато — что-то вроде стрельбы из пушки по воробьям (тем более, что к нему нужно проводить стационарное питание).
Для справки: связка ATmega328 (aka доработанная Arduino Pro Mini) + nRF24 (LoRa) в спящем режиме потребляет 4-10 мкА, что позволяет делать на ней любые (по функционалу) долгоживущие батарейные сенсоры (температура, влажность, контакт, расход воды и т. д. и т. п. ).
Для меня KC868-ASR скорее похож на базу для беспроводных батарейных сенсоров — у него на борту есть всё необходимое для этого — мощный микроконтроллер для анализа и визуализации данных, автономное время, возможность хранить на карте памяти не только данные, но и множество страниц развитого веб-интерфейса и т. д.
Простой ход — подключение к KC868-ASR модуля nRF24L01 или типового SPI LoRa модуля могло бы сразу расширить количество подключаемых датчиков с двух до нескольких десятков и это была бы уже совсем другая история.
Почему этого не сделала компания Kincony? Потому, что этот сценарий вообще не входит в круг понятий их инженеров и потому, что это требует довольно изощрённого программирования как на стороне базы, так и на стороне беспроводных сенсоров, а готового решения «включил и забыл» на рынке не существует.
Поэтому by default мы будем рассматривать «унылый» сценарий использования KC868-ASR как Wi-Fi сенсора на два датчика, а для себя (когда мне это понадобится) я бы сделал из KC868-ASR самодостаточную IoT базу на несколько десятков беспроводных nRF24 или LoRa сенсоров.
(Или это можете сделать вы для своих проектов, если обладаете достаточной квалификацией.)
❯ Немного актуатор
Пока мы разбирались с функциональным назначением KC868-ASR, мы немного упустили ещё одну его ипостась: он имеет на борту два реле и может «немножечко чем-нибудь поуправлять». С двумя реле далеко не разбежишься, но подобная возможность «здесь и сейчас» может оказаться весьма полезной.
Кстати, беспроводные nRF24 или LoRa мини-контроллеры не обязаны быть именно сенсорами, никто не мешает сделать их беспроводными актуаторами (реле, серво, RS485 и т. д. и т. п. и вообще всё, что угодно) и создать небольшое IoT облако с KC868-ASR в центре и несколькими десятками беспроводных сенсоров и актуаторов «на объекте» (почувствуйте, как говорится, разницу с его дефолтным предназначением).
❯ Вишенка на торте
Всю эту благостную картину в качестве вишенки на торте венчают 2 свободно программируемых светодиода и пьезокерамическая пищалка (Buzzer), которыми можно весело помигать и попищать (в нужные, разумеется, моменты) и значительно оживить суровый на вид KC868-ASR.
❯ Корпус на DIN-рейку
Корпус KC868-ASR можно оценить на 10 из 10 по шкале брутальности, как говориться, брутальнее некуда — видимо используется какой-то недорогой типовой корпус на DIN-рейку. С другой стороны, если сделать приличную с точки зрения дизайна наклейку-шильдик, то выглядеть всё будет более-менее пристойно и не испортит вид типового щита автоматики.
❯ Вскрываем пациента
Поскольку корпус типовой, без дизайнерских излишеств, то разбирается всё просто и без особых усилий. В поддоне мы видим примерно то, что и ожидалось увидеть — плату а-ля Wi-Fi реле Sonoff, только в несколько более продвинутом варианте.
Вид платы сверху, на котором хорошо видно расположение всех частей контроллера (сенсора, по версии самого производителя). Все детали на месте, не припаян только разъём J4 с двумя «Free GPIO». Если возникнет желание имплантировать сюда nRF24 или LoRa модуль, то придётся немного поработать паяльником и скальпелем (ну и перед этим ещё и головой конечно же).
По традиции компании Kincony, на обратной стороне платы ничего нет (только разъём для батарейки питания часов реального времени).
❯ Схемотехника
Теперь переходим к рассмотрению схемотехники KC868-ASR и разберём что и как там устройство с точки зрения электроники.
Питание
Питание контроллера KC868-ASR подаётся на совмещённую колодку J2 (контакты 1-2), далее следует Step-Down конвертер BL8032CB6TR (на ток до 2 А), который преобразует входное напряжение до 5 вольт. 3,3-вольтовое питание обеспечивает линейный стабилизатор AMS1117-3.3. В его выходной цепи присутствует светодиод-индикатор подачи питания.
Ядро ESP32
Распиновка ядра ESP32 по версии производителя. Ниже будет представлена моя, несколько более читабельная и информативная версия.
USB-UART
Подсистема USB-UART в контроллере KC868-ASR сделана в традиционном для Kincony стиле на чипе CH340, правда схема распайки транзисторов Q1, Q2, Q3 и линий EN, IO0, IO2, DTR, RTS выглядит несколько более хитрозакрученной, чем ожидалось — начинающие схемотехники могут поупражняться в разборе принципов работы этого узла.
Реле и Buzzer
Управление двумя реле и пьезокерамической пищалкой (OUT0, OUT1, BEEP) заведено на матрицу транзисторов Дарлингтона ULN2001. К сожалению, у реле доступны только два выхода COM и NO.
Картридер microSD
Схема подключения картридера для microSD карт памяти. Обратите внимание на то, что линия DAT0 (IO2) дополнительно завязана на транзистор Q3, а линия WP не подключена к ESP32 и фактически является ещё одним свободным GPIO.
RTC DS3231
Чип RTC DS3231 не испортит ни один контроллер. Ранее компания Kincony пыталась ставить в свои изделия более простые и дешёвые чипы DS1307 (а ещё раньше вообще игнорировало подсистему RTC в контроллерах), но нам с вами совместными усилиями удалось убедить её сначала в том, что RTC в контроллере никак не помешает, а затем в том, что DS3231 — это более правильное решение, чем DS1307.
Индикаторные светодиоды
Вообще, два светодиода для индикации режимов работы контроллера и происходящих в системе событий — это хорошо. Но, в случае необходимости подключения к KC868-ASR дополнительных компонентов, светодиодами можно пожертвовать и получить в своё распоряжение ещё два свободных GPIO.
Разъём Free GPIO
Два свободных GPIO и можно себе ни в чём не отказывать (смайл).
❯ Распиновка
Несколько более информативная распиновка KC868-ASR (его ядра ESP32) с указанием того что, куда и зачем подключено.
❯ Схема внешних подключений
Немного окультуренная схема внешних подключений контроллера KC868-ASR от производителя:
Указан диапазон входного питающего напряжения 9-24 вольт, но в даташите на BL8032CB6TR написано «9-18V», так что я бы поостерёгся подавать на KC868-ASR больше 18 вольт.
❯ Заключение
Роль KC868-ASR by default: Wi-Fi (Bluetooth) сенсор со стационарным питанием на два датчика и возможностью хранения данных на microSD карте памяти.
Роль KC868-ASR как «базы»: самодостаточная Wi-Fi база с подсистемами получения, хранения, анализа и визуализации данных с десятков беспроводных nRF24 (LoRa) сенсоров/актуаторов. Пример: раскидали по теплице беспроводные сенсоры/актуаторы, установили «базу» KC868-ASR в теплице или в здании рядом и получили полную автоматизацию этой теплицы. Правда для реализации этого сценария нужна «железная» доработка KC868-ASR и соответствующий софт — поэтому этот сценарий доступен только для DIY-щиков с достаточной квалификацией (и с достаточно креативным мышлением).