Скромное обаяние ClimateGuard CG Mini

i5wtm8lks6tmh7jddpr1ovfafys.jpeg

Сегодня мы поговорим об одном неприметном, но на самом деле довольно интересном устройстве — микроконтроллерной плате ClimateGuard CG Mini. Это специализированная плата на ESP32 для построения проектов «сенсорики», по определению самого производителя.

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

Ну и давайте посмотрим что там и как с CG Mini…

ClimateGuard CG Mini


Да, умеет ClimateGuard называть свои устройства (смайл). Название платы CG Mini как бы предполагает, что всем известно, что CG — это ClimateGuard, а Mini без каких-либо индексов предполагает такой уровень концептуальности, что других пояснений и не требуется и эта ниша навсегда закрыта платой CG Mini.

То есть, судя по названию, CG Mini — это концептуальный эталон минималистской платы для «сенсорики», что-то вроде Chanel № 5 в мире парфюмерии. Ну что ж, давайте посмотрим какие компоненты содержит этот концептуальный девайс.

Итак:

  • Микроконтроллер ESP32-WROOM-32E
  • 2 разъёма с UART интерфейсом (JST 2.54 и Molex 1.25)
  • 3 разъёма с I2C интерфейсом (2×3V3, 1×5V)
  • Разъём с SPI интерфейсом
  • Разъём с 1-Wire интерфейсом
  • Аналоговый вход
  • Управляющий выход DO (до 0.5 А)
  • Выход управления FAN (с ШИМ)
  • 2 светодиода WS2812B
  • Программируемая кнопка
  • Разъём для программирования 3V3, TX, RX, EN, IO0, GND
  • Подсистема управления питанием датчиков 3,3 В
  • Подсистема управления питанием датчиков 5 В
  • Watchdog на TPL5010
  • Выключатель питания
  • Разъём питания USB Type-C (5 В)
  • Круглый (Barrel) разъём питания (9–28 В)
  • Колодка питания (9–28 В)
  • Максимальный ток потребления: 2 А
  • Рабочая температура: от -40 до 70°C


Другими словами, мы имеем плату с интерфейсами UART, I2C, SPI и 1-Wire в разъёмах JST 2.54 к которым можно удобным способом (быстро и надёжно) подключить различные датчики (и/или актуаторы). То есть на CG Mini можно быстро и удобно сделать какое-то IoT устройство, например, метеостанцию или любой другой подобный девайс.

cf_ccqso6zmwm2do428tjnkgy7e.jpeg

На плате есть пара управляющих выходов и один аналоговый вход, но почему-то нет цифровых входов, хотя у микроконтроллера ESP32 есть несколько свободных незадействованных пинов.

Запитываться CG Mini может тремя разными способами: от разъёма USB Type-C (5 В), от круглого Barrel разъёма (9–28 В) или от колодки с двумя контактами (9–28 В). Причём разъём USB Type-C здесь предназначен исключительно для питания контроллера, программировать через него ESP32 не получится.

Но, так сказать, «изюминка» данной платы заключается в другом: здесь впервые на моей памяти в подобных контроллерах применён Watchdog на TPL5010, причём сделано это «добровольно» и без моих подсказок и уговоров (остальные производители контроллеров ни в какую не хотят снабжать свои изделия сторожевыми таймерами). Это очень интересная тема и подробнее о ней мы поговорим далее.

Но и это ещё не всё! В CG Mini применено очень интересное схемотехническое решение — управление шинами питания датчиков 3,3 и 5 В прямо с контроллера ESP32, причём сделано это «прозрачно», понятно и очень удобно — просто выставляем уровни на пинах ESP32 и управляем шинами питания и, соответственно, уровнем потребления контроллера (всей системы). Подробнее об этом тоже далее.

В схемотехнике CG Mini присутствуют ещё много интересных нюансов, но пока переходим к описанию внешнего вида устройства.

Внешний вид


Для начала вид сверху. Как на ладони видна вся анатомия платы. В целом всё понятно и ожидаемо, из интересных моментов можно отметить наличие не четырёх, а только двух крепёжных отверстий. Как это предполагается крепить в корпусе см. рендер выше.

muntmvmb-crhvl37kvqzsl1j1nm.jpeg

Обратная сторона платы — просто образец того, как надо подписывать контакты — всё сразу видно и понятно что куда нужно подключать. Плюс таблица с номерами и назначением GPIO ESP32 и таблица состояния выводов для управления линиями питания датчиков.

cjwinsa7_6crz0rxhp79jyveqqe.jpeg

Схемотехника


Теперь переходим рассмотрению схемотехники CG Mini. Здесь нас поджидает немного неоднозначная ситуация: с одной стороны доступна официальная схема устройства, с другой стороны, эта схема неполная и в основном содержит сведения о распиновке разъёмов и самого микроконтроллера ESP32. Поэтому иллюстрировать своё описание я буду только теми фрагментами принципиальной схемы CG Mini, которые есть в свободном доступе и моём распоряжении.

Ядро ESP32


В первую очередь здесь стоит отметить, что CG Mini лишен встроенного USB-UART переходника и запрограммировать его можно только с помощью внешнего USB-UART адаптера. Программирование производится через разъём prog1 (см. схему ниже), содержащий контакты 3V3, TX, RX, EN, IO0 и GND.

gxvzldzapdtqmy1iivvyg7gdfvu.jpeg


Расположение контактов в разъёме полностью соответствует «фирменному» переходнику CG Programmer (догадайтесь, что обозначают буквы CG). То есть распаяв соответствующий разъём на плате, можно программировать CG Mini, просто вставляя USB-UART переходник в него. Это касается «фирменного» USB-UART адаптера, но вместо него можно использовать и любой другой, только нужно будет правильно соединить выводы разъёма prog1 и вашего USB-UART переходника.

bct_o5e1xzy6jeewc9bxxi0t5ra.jpeg

Также стоит обратить внимание на то, что запитывается ESP32 не напрямую от напряжения 3,3 В, а от линии WD_VCC, то есть сторожевой таймер не просто перезагружает микроконтроллер по линии RESET, а полностью обесточивает его во время процедуры перезагрузки.

Watchdog TPL5010


Большинство производителей контроллеров, особенно контроллеров на ESP32, полностью игнорирует существование в природе сторожевых таймеров, мотивируя это тем, что в ESP32 есть встроенный Watchdog. Так то оно так… Но я считаю наличие внешнего «железного» сторожевого таймера абсолютно необходимой частью любого контроллера, особенно контроллера, который выполняет хоть сколько-нибудь ответственные функции.

Сторожевые таймеры могут быть построены на разной элементарной базе, в данном случае применена специализированная микросхема TPL5010DDCR «микро-потребляющего таймера с функцией Watchdog», что можно признать правильным и грамотным решением.

kopuwigddvy2j_g7raimgnypbgi.jpeg


Здесь время срабатывания таймера задаёт резистор R15 и по умолчанию оно составляет около 60 секунд. Сбрасывающие («DONE») импульсы нужно подавать на вход WD_UPDATE. Выход C_WD управляет двумя полевыми транзисторами, которые подают (или отключают) напряжение 3,3 В на линию WD_VCC.

В практическом плане можно не боясь перезагрузок программировать ESP32, поскольку напряжение 3,3 В поступает с USB-UART переходника. Как только переходник будет отключен от контроллера, Watchdog начнёт каждую минуту перезагружать контроллер. Для избежания перезагрузок нужно подавать импульсы с ESP32 (GPIO32) на вход WD_UPDATE сторожевого таймера.

Линии питания датчиков 3,3 и 5 В


Как я уже заметил выше, CG Mini имеет довольно продвинутую и оригинальную систему менеджмента линий питания датчиков 3,3 и 5 В. Можно простой манипуляцией уровнями на пинах C_3V3 и С_5V включать и выключать подачу питающего напряжения на линиях L3V3 и L5V.

yl4dcrehkgp0scjr06cpidiga7g.jpeg


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

UART интерфейс


Плата CG Mini имеет на своём борту множество интерфейсных разъёмов для подключения различных датчиков и прочей периферии. В частности, на плате находятся два разъёма UART интерфейсов. Причём один из них сделан в формате JST 2.54, а другой — в более миниатюрном варианте разъёма Molex 1.25. Зачем это нужно и почему нельзя было сделать два одинаковых разъёма JST 2.54 — не совсем понятно, видимо разработчики рассчитывали на подключение какого-то специализированного оборудования.

e-eok60yttywdcjo4qr9lwfqae8.jpeg


Но в любом случае два UART разъёма на плате — это хорошо для удобного подключения различной периферии с этим интерфейсом.

I2C интерфейс


Ещё лучше на плате CG Mini обстоят дела с I2C интерфейсом — здесь присутствуют аж три соответствующих разъёма JST 2.54, причём два из них с питающим напряжением 3,3 В, а один — с напряжением 5 В. Так что у вас будет свобода выбора для подключения различных I2C устройств. Плюс, как вы видите на схеме, на плате присутствует подтяжка линий SCL и SDA к напряжению 3,3 В при помощи резисторов 10 кОм (почему не 4,7 кОм смогут объяснить только разработчики платы).

q_5pnxovucyzwprw3urxorzb7yk.jpeg


SPI интерфейс


На плате также присутствует один разъём SPI интерфейса. Линия SS в котором подтянута к напряжению 3,3 В при помощи резистора 10 кОм. Одно устройство с SPI интерфейсом можно подключить к плате CG Mini напрямую, если понадобится подключить несколько SPI устройств, то это можно сделать при помощи паяльника и соответствующего переходника.

lx07qfldmnu7vg7xaet1kldmy6g.jpeg


1-Wire интерфейс


Вишенкой на торте множества интерфейсов CG Mini служит разъём для подключения 1-Wire устройств. На плате уже сделана подтяжка линии к напряжению 3,3 В при помощи резистора 4,7 кОм. Вы также можете использовать как двухпроводной вариант подключения с т. н. «паразитным» питанием, так и стандартный трёхпроводной вариант.

cki7htrzpkqcqetaupielusrkis.jpeg


Светодиоды WS2812B


Из разряда «пустячок, а приятно» на плате присутствуют два полноцветных адресных светодиода WS2812B — можно не отказывать себе в любой иллюминации как «по делу», так и просто «для красоты».

khx9xsqywkqdi4ttk-f7tis4qqq.jpeg


Управление вентилятором


Схема подсистемы управления вентилятором. Вывод C_FAN_D и линия питания 5 В выводятся в 2-пиновый разъём на плате CG Mini.

hlgw8tmt2fkzekjgo8qbimstmi4.jpeg


Аналоговый вход


На плате CG Mini присутствует разъём с аналоговым входом для подключения соответствующих датчиков. Схема аналогового входа представлена ниже:

59jiglakda5kyxwv8ta5u42qldo.jpeg


Универсальный выход


И разъём «универсального» 5-вольтового управляющего выхода (DO) до 0.5 А, выполненного на микросхеме LM358.

ldkw1p6vcuknkft3isz5iuot_38.jpeg


Распиновка


Распиновка здорового человека, из которой можно понять что и как подключено к микроконтроллеру ESP32 на плате CG Mini.

qcmp98vop87iwovfsufbjetbarm.png


Схема подключений


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

2mmgawdykci3qrz5bfejz08vnyy.jpeg


Заключение


Если бы я вдруг решил делать что-то вроде метеостанции (смайл), то пожалуй взял бы ClimateGuard CG Mini в качестве основы для такого проекта. Ну и довольно редко (никогда) встречающиеся решения вроде сторожевого таймера на TPL5010 и менеджмента шин питания 3,3 и 5 В очень располагают к себе и делают плату CG Mini интересным вариантом для реализации различных IoT проектов.

Возможно, захочется почитать и это:
b5pjofdoxth14ro-rjsrn7sbmiy.png

© Habrahabr.ru