Сегодня мы поговорим об одном неприметном, но на самом деле довольно интересном устройстве — микроконтроллерной плате 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 проектов.

Возможно, захочется почитать и это:


Комментарии (9)


  1. 1CHer
    30.10.2023 11:18

    Если честно то не понимаю зачем плата без совместимых сразу датчиков с соответствующими разъёмами. А если паять то чем обычная дешёвая платка с ESP хуже? Во первых дешевле, во вторых компактнее ну все те же контакты уже выведены. Сразу набор был бы - было бы интереснее.


    1. smart_alex Автор
      30.10.2023 11:18

      Каждый контроллер несёт на себе отпечаток того, как мыслят его разработчики (это касается разъёмов и остального). В целом, CG Mini с его вачдогом, менеджментом питания и прочим однозначно лучше, чем «обычная дешёвая платка с ESP» (на мой взгляд).


      1. sav13
        30.10.2023 11:18

        Больше ESP всяких! Но лучше дешевых )))

        Тот же WDT довольно спорная вещь. Так как ESP32 обычно работает на FreeRTOS, ошибка в любой задаче приводит к перезагрузке контроллера. То есть BootLoop получить на порядок легче, чем зависание

        По разъемам согласен, очень спорное решение. Теперь нужно покупать сенсоры у производителя с дикой переплатой, либо заниматься пайкой/обжимкой проводов.

        Да и непонятен сам выбор разъемов. Проще было встроится в существующую экосистему типа Grove
        https://wiki.seeedstudio.com/Grove_System/

        Ну и самое главное, чтобы продавать ESP32 за дорого, нужна хорошая поддержка всего железа хотя бы в виде библиотек с примерами, особенно на таймер. Ведь любой новичок, написав код с мигающим светодиодом, получит постоянную перезагрузку раз в 60 сек )))

        Хотя теперь хоть появилаcь ESP специально заточенная на метеостанцию ))) А то раньше они случайно как то получались


        1. smart_alex Автор
          30.10.2023 11:18

          нужна хорошая поддержка всего железа хотя бы в виде библиотек с примерами

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

          Например, я по собственной инициативе написал гайд по железу (https://habr.com/ru/companies/timeweb/articles/708578/) и софту (https://habr.com/ru/companies/timeweb/articles/709238/) для платы OLIMEX ESP32-EVB через 6 лет после её выпуска.

          OLIMEX ответил: «ну, ок» (как они вообще что-то продают?).


          1. sav13
            30.10.2023 11:18

            Ну так и продают.

            Поэтому лично мне интереснее производители типа LILUGO, ELECROW, HELTEC и пр. у которых есть десятки репо на GITHUB включая исходники и схемы в которых очень интересно поковыряться

            И которые уже сделали несколько поколений плат с совместимой периферией. Давно пора уже выпускать ESP32 S3, C3 и C6. В них по крайне мере можно USB вывести по простому )))


            1. LAutour
              30.10.2023 11:18

              В них по крайне мере можно USB вывести по простому

              И JTAG отладку через этот USB использовать.


        1. LAutour
          30.10.2023 11:18

          Да и непонятен сам выбор разъемов. Проще было встроится в существующую экосистему типа Grove

          CHU проще и быстрее достать. Кримпер в любом случае желателен, как делать нужные шнурки, так и чинить.


  1. LAutour
    30.10.2023 11:18

    Площадка тантала не слишком близко к крепежному отверстию?


  1. Megobari
    30.10.2023 11:18

    "почему не 4,7 кОм смогут объяснить только разработчики платы"
    У меня два предположения:
    1) унификация элементной базы. Удобно при масштабном производстве (хотя скорость I2C чуть становится потенциально ниже)
    2) так ка девайс могут применять для возможности работы в малом потреблении, то просто немного сэкономили потребления.