Обычно контроллеры KinCony полностью открытые, как в части принципиальных схем, так и в части софта — на ESP32 можно установить любую совместимую прошивку или как угодно запрограммировать его для своих нужд (за что, собственно, мы их и любим).
Но не все контроллеры KinCony принадлежат к этой парадигме. Среди их изделий встречаются гибридные контроллеры, которые содержат несколько MCU, часть из которых имеют закрытую прошивку.
M30 как раз и принадлежит к такой категории — на нём установлены ESP32 и ARM и для обоих частей производитель предлагает готовые прошивки. Обо всём этом мы и поговорим далее...
Структурная схема
С M30 не всё так просто — контроллер гибридный, содержит два MCU, и сходу там трудно понять что к чему относится и что за что отвечает. Поэтому для начала я приведу структурную схему контроллера с указанием основных частей, их принадлежности и взаимосвязей.
Общий принцип такой: контроллер содержит два MCU, один из которых (ARM) отвечает за измерение электропараметров, а второй (ESP32) работает в связке с измерителем и имеет традиционную обвязку (Ethernet, USB/UART, GSM и т. д.).
ARM имеет закрытую прошивку, поставляемую вместе с контроллером, а ESP32 поставляется «голым», но производитель предлагает скачать для него специализированную версию KCS (прошивка KinCony для ESP32).
Структура несколько замороченная, у меня лично никак не укладывается в голове то, что каналы измерения подключены к ARM части, а индикаторные светодиоды — к ESP32. Логичнее было бы и светодиоды подключить к ARM. А ещё лучше — выкинуть всю ARM часть и повесить всё на ESP32 — мощности и быстродействием ESP32 должно вполне хватить для выполнения подобных задач.
Концепция работы
Теперь пара слов о концепции работы всей этой системы, которая совершенно неочевидна для неподготовленного пользователя.
Ядром (основной частью) является измерение электропараметров по 30 линиям. Эта функция выполняется ARM частью, которая имеет выходы для связи с внешним миром в виде интерфейсов RS485 и I2C на внешних колодках контроллера. По интерфейсу RS485 (Modbus) можно получать данные по всем 30 каналам измерения и осуществлять взаимодействие с контроллером обычным для Modbus образом.
То есть, другими словами, ARM часть является довольно обособленной и в каком-то смысле самодостаточной — она измеряет электропараметры и отдаёт эти данные по интерфейсу RS485. И для этого M30 имеет прошивку ARM части, установленную на заводе при производстве контроллера.
В этом смысле ESP32 часть является «нашлёпкой», обеспечивающей весь остальной функционал, в том числе связь по множеству дополнительных интерфейсов (Wi-Fi, Ethernet, GSM и т. д.).
Обмен данными между ESP32 и ARM частями осуществляется по Modbus интерфейсу поверх UART соединения (да, вот такие вот затейники работают в KinCony).
Характеристики M30
Теперь давайте познакомимся со списком формальных характеристик M30.
ESP32 часть
- ESP32 в модификации ESP32-WROOM-32UE
- Внешняя Wi-Fi антенна
- 30 светодиодов WS2812
- Разъём для подключения модуля GSM 4G
- Возможность подключения внешней GSM антенны
- Ethernet
- microSD картридер
- Разъём USB-B
- Кнопки «Reset» и «Download»
ARM часть
- ARM в модификации Artery AT32F413CBT7 (Cortex-M4, 200МГц, 128 кБ)
- 30 каналов измерения тока
- 3 канала измерения напряжения
- Внешний RS485 интерфейс
- Внешний I2C интерфейс
Прочее
- Внутренний интерфейс ESP32 – ARM
- Индикатор наличия питания
- Разъём питания 12/24 В
Даже не знаю что тут ещё добавить. Радует, что разгребать все эти векторы взаимодействия нам не придётся, всё это уже сделала компания KinCony в своих прошивках (об этом см. ниже).
Внешний вид
Внешний вид не вызывает никаких нареканий. Всё сделано строго и по делу. Некоторое оживление вносят две линейки светодиодов. Сама концепция этих светодиодов несколько спорная, но, с другой стороны, возможность одним взглядом оценить потребление тока по 30 линиям — это совсем неплохо.
Вид контроллера со снятой металлической крышкой. Всё выполнено аккуратно, в новом стиле контроллеров KinCony третьего поколения. Замечание можно сделать только по поводу расположения microSD картридера — он находится внутри корпуса и для доступа к нему нужно разбирать контроллер.
Схемотехника
Вид сверху на плату M30. Возможно, стоило расположить три колодки линий измерения напряжения не отдельно, а вместе, в один ряд.
В своих материалах KinCony упоминает измерение напряжений в трёхфазной системе 380 В и на плате даже сделаны небольшие пропилы возле силовых дорожек. Но я бы рекомендовал два раза подумать прежде, чем работать с таким напряжением на M30. Или по крайней мере принять все меры предосторожности (книжка «Юный электрик», резиновые перчатки и резиновый коврик вам в помощь).
Питание
Подсистема питания выполнена на DC/DC преобразователе XL1509 (3,3 В). Светодиод показывает наличие напряжения питания.
Ядро ESP32
По какой-то причине все последние официальные схемы контроллеров KinCony содержат ошибки в распиновке ESP32. Не буду далее вдаваться в этот вопрос, правильную распиновку ESP32 см. ниже в этой статье.
USB/UART
Переходник USB-UART на CH340C, USB-B разъёмом для самостоятельного программирования контроллера и двумя кнопками «Reset» и «Download».
microSD картридер
Я долго искал на схеме пин SS (CS) выбора устройства на шине. Оказывается его там вообще нет — картридер единственное устройство на ESP32 SPI.
Ethernet
Стандартная для контроллеров KinCony схема подсистемы Ethernet на LAN8720A.
GSM 4G
KinCony M30 предусматривает возможность подключения 4G GSM модуля SIM7600, что добавляет новое измерение как самому контроллеру, так реализуемым на нём проектам.
Внешний вид и распиновка модуля SIM7600.
30 светодиодов WS2812
Как ни крути, а 30 светодиодов WS2812 — это изюминка контроллера (ни у кого нет, а у M30 — есть). Вся гирлянда подключается к ESP32.
Ядро ARM
В качестве ARM ядра используется микроконтроллер AT32F413CBT7 компании Artery. Но на официальной схеме указан STM32F103CBT6.
С распиновкой AT32F413CBT7 всё понятно и никаких вопросов не возникает (см. схему ниже). SPI интерфейс используется для обслуживания микросхем получения данных о 30 токовых каналах и 3 каналах напряжения.
Каналы измерения
В качестве измерителей применяются три специализированные микросхемы BL0910 с SPI интерфейсом. Входные сигналы формируются соответствующей обвязкой. Для тех, кто будет самостоятельно программировать M30, формулы расчёта данных приведены на схеме.
BL0910 — это микросхема многоканального измерителя параметров электроэнергии, не требующая дополнительной калибровки и обеспечивающая точность измерения с погрешностью менее 1%. Может работать в разных конфигурациях входов. В контроллере M30 она работает в режиме 1U10I, то есть измеряет 10 линий тока и одну линию напряжения. Соответственно, для обслуживания трёх фаз напряжения и 30 каналов тока применены 3 микросхемы BL0910.
BL0910 может измерять RMS ток и напряжение, активную мощность, активную энергию и другие параметры, может измерять «быстрый ток» (используется для обнаружения неисправностей, таких как перегруза по току).
Микросхема имеет 11 высокоточных Sigma-Delta АЦП, которые могут измерять 11 сигналов (ток и напряжение) одновременно. Структурная схема BL0910 в режиме 1U10I приведена ниже.
Более подробно о BL0910 нужно писать отдельный материал, что явно выходит за рамки этой статьи, поэтому на этом мы пока остановимся.
RS485
Стандартная для KinCony схема подсистемы RS485. За тем только исключением, что подключена она не к ESP32, а к AT32F413CBT7.
Распиновка
Правильная распиновка модуля ESP32 контроллера KinCony M30.
Внешние соединения
Что и как подключать к M30 в интерпретации производителя. Стиль иллюстрации сохранён, только немного окультурен (на экзерсисы их дизайнера просто больно смотреть).
И подсказка производителя что, куда и как подключать (тоже окультуренная, насколько это было возможно).
Программное обеспечение
Как я уже отметил выше, программное обеспечение M30 состоит из двух частей — встроенной проприетарной прошивки для ARM микроконтроллера и загружаемой версии фирменной прошивки KCS для ESP32.
Поскольку версия KCS специализированная, то она «знает» об архитектуре ARM части M30 и протоколах общения с ней. Соответственно, после установки этой прошивки в ESP32, пользователю становятся доступны все возможности контроллера M30.
Кроме непосредственно поддержки специфических функций M30, прошивка KCS обеспечивает стандартный для таких систем функционал. Например, взаимодействие по протоколу MQTT и интеграцию с популярными системами автоматизации.
Компания KinCony питает пристрастие к системе Home Assistant, поэтому предлагает конфигурационные файлы и примеры интеграции с HA.
В общем, всё сделано в лучших традициях парадигмы «ничего программировать не надо, достаточно просто расставить галочки в веб-интерфейсе».
А как же DIY?
Для тех, кого не устраивает набор возможностей, предоставляемый фирменным софтом KinCony, остаётся возможность самостоятельного программирования M30. ESP32 часть программируется обычным образом, а для программирования ARM части на плате есть соответствующий разъём. Так что можно снести «родную» прошивку AT32F413CBT7 и сделать всё так, как хочется лично вам.
Заключение
У меня KinCony M30 вызывает противоречивые чувства: с одной стороны, немного странная архитектура и проприетарные прошивки, а с другой стороны, кто мешает всё запрограммировать самому? А с третьей стороны, зачем программировать самому, когда все функции уже реализованы в фирменных прошивках?
Соломоновым решением тут, видимо, будет следующее: кому нужно «ехать» — используют готовый софт от производителя, а кому нужны «шашечки» — самостоятельно программирует M30 (при этом повышает свою квалификацию и получает удовольствие от процесса и результата).