Сегодня мы поговорим об одном неприметном, но на самом деле довольно интересном устройстве — микроконтроллерной плате 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 интерфейсом (2x3V3, 1x5V)
- Разъём с 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 устройство, например, метеостанцию или любой другой подобный девайс.
На плате есть пара управляющих выходов и один аналоговый вход, но почему-то нет цифровых входов, хотя у микроконтроллера 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 присутствуют ещё много интересных нюансов, но пока переходим к описанию внешнего вида устройства.
❯ Внешний вид
Для начала вид сверху. Как на ладони видна вся анатомия платы. В целом всё понятно и ожидаемо, из интересных моментов можно отметить наличие не четырёх, а только двух крепёжных отверстий. Как это предполагается крепить в корпусе см. рендер выше.
Обратная сторона платы — просто образец того, как надо подписывать контакты — всё сразу видно и понятно что куда нужно подключать. Плюс таблица с номерами и назначением GPIO ESP32 и таблица состояния выводов для управления линиями питания датчиков.
❯ Схемотехника
Теперь переходим рассмотрению схемотехники CG Mini. Здесь нас поджидает немного неоднозначная ситуация: с одной стороны доступна официальная схема устройства, с другой стороны, эта схема неполная и в основном содержит сведения о распиновке разъёмов и самого микроконтроллера ESP32. Поэтому иллюстрировать своё описание я буду только теми фрагментами принципиальной схемы CG Mini, которые есть в свободном доступе и моём распоряжении.
Ядро ESP32
В первую очередь здесь стоит отметить, что CG Mini лишен встроенного USB-UART переходника и запрограммировать его можно только с помощью внешнего USB-UART адаптера. Программирование производится через разъём prog1 (см. схему ниже), содержащий контакты 3V3, TX, RX, EN, IO0 и GND.
Расположение контактов в разъёме полностью соответствует «фирменному» переходнику CG Programmer (догадайтесь, что обозначают буквы CG). То есть распаяв соответствующий разъём на плате, можно программировать CG Mini, просто вставляя USB-UART переходник в него. Это касается «фирменного» USB-UART адаптера, но вместо него можно использовать и любой другой, только нужно будет правильно соединить выводы разъёма prog1 и вашего USB-UART переходника.
Также стоит обратить внимание на то, что запитывается ESP32 не напрямую от напряжения 3,3 В, а от линии WD_VCC, то есть сторожевой таймер не просто перезагружает микроконтроллер по линии RESET, а полностью обесточивает его во время процедуры перезагрузки.
Watchdog TPL5010
Большинство производителей контроллеров, особенно контроллеров на ESP32, полностью игнорирует существование в природе сторожевых таймеров, мотивируя это тем, что в ESP32 есть встроенный Watchdog. Так то оно так… Но я считаю наличие внешнего «железного» сторожевого таймера абсолютно необходимой частью любого контроллера, особенно контроллера, который выполняет хоть сколько-нибудь ответственные функции.
Сторожевые таймеры могут быть построены на разной элементарной базе, в данном случае применена специализированная микросхема TPL5010DDCR «микро-потребляющего таймера с функцией Watchdog», что можно признать правильным и грамотным решением.
Здесь время срабатывания таймера задаёт резистор 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.
Коммутация напряжения питания осуществляется при помощи драйвера ULN2803A и двух полевых транзисторов. То есть для экономии питания (потребляемой контроллером мощности) вы можете просто отключать не нужные в данный момент линии. Это просто отличная и тоже почти нигде не встречающаяся (по крайней мере в таком виде) возможность.
UART интерфейс
Плата CG Mini имеет на своём борту множество интерфейсных разъёмов для подключения различных датчиков и прочей периферии. В частности, на плате находятся два разъёма UART интерфейсов. Причём один из них сделан в формате JST 2.54, а другой — в более миниатюрном варианте разъёма Molex 1.25. Зачем это нужно и почему нельзя было сделать два одинаковых разъёма JST 2.54 — не совсем понятно, видимо разработчики рассчитывали на подключение какого-то специализированного оборудования.
Но в любом случае два UART разъёма на плате — это хорошо для удобного подключения различной периферии с этим интерфейсом.
I2C интерфейс
Ещё лучше на плате CG Mini обстоят дела с I2C интерфейсом — здесь присутствуют аж три соответствующих разъёма JST 2.54, причём два из них с питающим напряжением 3,3 В, а один — с напряжением 5 В. Так что у вас будет свобода выбора для подключения различных I2C устройств. Плюс, как вы видите на схеме, на плате присутствует подтяжка линий SCL и SDA к напряжению 3,3 В при помощи резисторов 10 кОм (почему не 4,7 кОм смогут объяснить только разработчики платы).
SPI интерфейс
На плате также присутствует один разъём SPI интерфейса. Линия SS в котором подтянута к напряжению 3,3 В при помощи резистора 10 кОм. Одно устройство с SPI интерфейсом можно подключить к плате CG Mini напрямую, если понадобится подключить несколько SPI устройств, то это можно сделать при помощи паяльника и соответствующего переходника.
1-Wire интерфейс
Вишенкой на торте множества интерфейсов CG Mini служит разъём для подключения 1-Wire устройств. На плате уже сделана подтяжка линии к напряжению 3,3 В при помощи резистора 4,7 кОм. Вы также можете использовать как двухпроводной вариант подключения с т. н. «паразитным» питанием, так и стандартный трёхпроводной вариант.
Светодиоды WS2812B
Из разряда «пустячок, а приятно» на плате присутствуют два полноцветных адресных светодиода WS2812B — можно не отказывать себе в любой иллюминации как «по делу», так и просто «для красоты».
Управление вентилятором
Схема подсистемы управления вентилятором. Вывод C_FAN_D и линия питания 5 В выводятся в 2-пиновый разъём на плате CG Mini.
Аналоговый вход
На плате CG Mini присутствует разъём с аналоговым входом для подключения соответствующих датчиков. Схема аналогового входа представлена ниже:
Универсальный выход
И разъём «универсального» 5-вольтового управляющего выхода (DO) до 0.5 А, выполненного на микросхеме LM358.
❯ Распиновка
Распиновка здорового человека, из которой можно понять что и как подключено к микроконтроллеру ESP32 на плате CG Mini.
❯ Схема подключений
По традиции, немного окультуренная схема подключений CG Mini от производителя. Плюс, как всегда, исправлены мелкие неточности и ошибки.
❯ Заключение
Если бы я вдруг решил делать что-то вроде метеостанции (смайл), то пожалуй взял бы ClimateGuard CG Mini в качестве основы для такого проекта. Ну и довольно редко (никогда) встречающиеся решения вроде сторожевого таймера на TPL5010 и менеджмента шин питания 3,3 и 5 В очень располагают к себе и делают плату CG Mini интересным вариантом для реализации различных IoT проектов.