OLIMEX ESP32-EVB: красный квадрат (плата принята)
Сегодня мы рассмотрим один интересный контроллер из моей коллекции, это (широко известная в узких кругах) плата OLIMEX ESP32-EVB. Это одна из первых плат, построенных на основе ESP32, которая за прошедшие годы претерпела несколько ревизий и выпускается до сих пор, то есть при желании вы можете её заказать и использовать в своих проектах.
Плата производится компанией OLIMEX, которая обладает своим оригинальным «технологическим почерком» — на ESP32-EVB всё сделано немного не так, как у других производителей контроллеров — все эти особенности мы разберём в этой статье.
Кроме того, сама плата ESP32-EVB обладает довольно широкими возможностями: на фирменный красный квадрат текстолита размером всего 75×75 мм компания OLIMEX умудрилась поместить ESP32, LAN8710A, microSD картридер, IR приёмник и передатчик, CAN трансивер, 2 реле, разъёмы расширения, подсистему зарядки и обслуживания аккумулятора и прочие элементы — по плотности упаковки деталей на квадратный сантиметр платы ESP32-EVB находится на одном из первых мест среди рассмотренных мной контроллеров.
Программирование этого чуда тоже не совсем обычная задача — множество компонентов плотно «посажены» на нестандартные GPIO и имеют свои особенности работы, далее мы попробуем со всем этим разобраться — в результате вы сможете легко и просто использовать маленький технологический шедевр ESP32-EVB в своих проектах.
❯ Внешний вид
Начнём с внешнего вида и упаковки. ESP32-EVB поставляется в небольшой «брендированной» картонной коробке, сама плата находится в антистатическом пакете. Обратите внимание на «ножки» для платы — это простое, но полезное дополнение, которое позволяет плате не скользить по столу и не царапать его острыми выводами элементов с обратной стороны платы.
Казалось бы пустячок, а работать с таким контроллером гораздо приятнее, что положительным образом сказывается на отношении к самой компании-производителю, которая проявляет внимание к своим покупателям.
Крупным планом плата, уже установленная на комплектных ножках. Правда ножек (и крепёжных отверстий в плате) всего три, четвёртое должно было быть на месте установки микроконтроллера ESP32. Видимо это связано с плотной упаковкой элементов на плате — для четвёртого отверстия просто не хватило места.
Вид с обратной стороны платы. Силовые линии реле очень мощно и «объёмно» залужены, но защитных прорезей в плате нет. Также видна маркировка разъёмов и технологических перемычек. Окно для антенны ESP32 решили не просто освободить от проводников, но и вообще вырезать в текстолите.
❯ Технические характеристики
Теперь давайте разберёмся с тем, какие компоненты и подсистемы содержит в себе плата OLIMEX ESP32-EVB. Начнём с формального перечисления ТТХ.
- Микроконтроллер ESP-WROOM-32
- microSD картридер
- Ethernet интерфейс на LAN8710A
- 2 реле 10A
- IR приёмник
- IR передатчик
- Интерфейс CAN
- Разъём EXT (все GPIO)
- Разъём UEXT (стандартный разъём расширения OLIMEX)
- Интерфейс UART1
- Интерфейс I2C
- Интерфейс SPI
- Кнопка RST (Reset)
- Кнопка BUT1 (User)
- Подсистема заряда аккумулятора (схема и разъём)
- Разъём Micro-USB для питания и программирования
- Разъём Barrel Jack DC 5В
В общем, тут присутствует весь джентльменский набор, не хватает только интерфейса RS485. Но ESP32-EVB это можно простить, учитывая очень небольшие размеры платы. А свободная доступность в разъёмах интерфейсов UART, I2C и SPI, позволяет дополнить ESP32-EVB практически любым нужным вам оборудованием, включая, например, внешние I2C блоки Wiren Board.
Также обращает на себя внимание необычный подход разработчиков компании OLIMEX к проектированию разъёмов. Например, на плате присутствует разъём EXT, в который выведены все (!) GPIO микроконтроллера ESP32. То есть мы получаем доступ ко всем GPIO, несмотря на их использование (или неиспользование) внутренними элементами контроллера. Это абсолютно уникально и не встречается больше нигде, кроме плат OLIMEX.
Как я уже отметил, на этой плате встречается множество нестандартных решений, которые мы далее разберём подробно при описании схемотехники ESP32-EVB и работы его подсистем.
❯ Схемотехника
Компания OLIMEX относится к тем дальновидным производителям контроллеров, которые не делают секрета из схем своих изделий и свободно распространяют их. Мало того, OLIMEX, по примеру Arduino, открыто предоставляет все файлы, необходимые для самостоятельного изготовления печатных плат её контроллеров.
Всё это выгодно отличает эту компанию от прочих производителей контроллеров, которые неизвестно что скрывают, засекречивая схемы, тем самым только усложняя жизнь своих покупателей и снижая свою популярность (и, соответственно, доходы).
Рассмотрение схемотехники ESP32-EVB мы начнём с фотографии платы сверху.
Хорошо видна плотность упаковки элементов на плате. Видимо уменьшение размеров платы было одной из целей разработчиков, чтобы ESP32-EVB можно было встроить в какие-то небольшие устройства или малогабаритные корпуса.
На обратной стороне видна подробная маркировка, в том числе полная таблица GPIO выводов разъёма EXT. Видно также, что разработчики «не поленились» сделать разводку всех GPIO в этот разъём (что уникально).
❯ Внешние подключения
Ниже приведена схема расположений разъёмов и внешних подключений ESP32-EVB:
❯ Подсистема зарядки и питания
ESP32-EVB имеет довольно продвинутую подсистему питания с возможностью подключения литиевого аккумулятора, светодиодной индикации режимов его зарядки, запитки от круглого «Barrel» разъёма, отдельных контактов на плате или Micro-USB разъёма.
Размер и распиновка круглого разъёма совпадают со стандартом Ардуино, но подавать на этот разъём (и контакты TERM1) можно только напряжение 5 вольт. Здесь нужно быть внимательным, иначе можно повредить контроллер.
Обслуживанием аккумулятора занимается микросхема контроллера заряда MCP73833, а напряжение 3,3 В формирует понижающий DC-DC преобразователь SY8009AAAC. Компания OLIMEX была настолько любезной, что на схеме даже указала формулы расчёта номиналов резисторов для тока заряда и выходного напряжения 3,3 В.
❯ Ядро ESP32
На схеме дана довольно своеобразная и невероятно подробная распиновка микроконтроллера ESP32 на плате ESP32-EVB.
❯ USB-UART
Micro-USB разъём может использоваться как для питания контроллера, так и для его программирования. USB-UART переходник выполнен на микросхеме CH340T, а схема управляющих сигналов — на двух транзисторах BC817–40 и двух сборках диодов Шоттки BAT54C. И снова компания OLIMEX оказалась настолько любезной, что привела таблицу состояний входов и выходов схемы управления DTR/RTS.
❯ Реле
Схема подсистемы реле очень простая и выполнена в традиционном стиле. Тут даже нечего особо комментировать, можно только указать, что присутствует светодиодная индикация состояний реле, а выходные контакты доступны на переключение.
❯ IR приёмник и передатчик
В качестве инфракрасного (IR) передатчика используется светодиод IR333-A, управляемый транзистором BC817–40, а в качестве приёмника — модуль приёмника инфракрасных сигналов RPM7236-H8.
Всё это хозяйство заведено на соответствующие GPIO и может свободно управляться из скетчей на Ардуино (или из кода на на вашем любимом языке программирования).
❯ CAN
Подсистема CAN интерфейса выполнена на трансивере MCP2551-I/SN и может запитываться от 5 или 3,3 В при помощи замыкания соответствующей перемычки. По умолчанию выставлен режим питания от напряжения 5 В.
Также есть возможность подключения резистора 120 Ом при помощи ещё одной перемычки на плате CAN_T1.
❯ Ethernet
Контроллер OLIMEX ESP32-EVB интересен ещё и тем, что здесь применена продвинутая микросхема Ethernet физики LAN8710A (обычно производители используют более простую версию LAN8720A), правда для нас это особой роли не играет, обе микросхемы работают аналогичным образом.
Также важно отметить, что обе эти микросхемы совместимы на программном уровне и нам не придётся специально переделывать код под ESP32-EVB (что очень хорошо).
❯ Картридер microSD
Плата ESP32-EVB снабжена картридером для microSD карт памяти, что значительно расширяет её возможности — на этих картах можно хранить различные данные, конфигурационные файлы, их можно использовать для размещения страниц веб-сервера и т. д.
❯ Кнопки
ESP32-EVB имеет две кнопки: Reset (RST1) и свободно программируемую User (BUT1), подключённую к GPIO34.
❯ EXT
Как я уже заметил выше, ESP32-EVB содержит уникальный разъём EXT1, в который выведены все GPIO контроллера ESP32. Я такого не встречал ни на одном другом контроллере — здесь нам свободно доступны (вне зависимости от внутренних подключений) все GPIO микроконтроллера (я бы сказал, что это очень круто — не нужно ничего мудрить, если вы вдруг захотите использовать какой-то пин для своих нужд).
Маркировка разъёма EXT1 на обратной стороне платы:
❯ UEXT
UEXT — это разъём «фирменного» стандарта OLIMEX для подключения внешних модулей. В него выведены контакты «земли», питания 3,3 В и интерфейсов UART1, I2C, SPI.
Вот более наглядное представление распиновки UEXT разъёма компании OLIMEX:
Для подключения к этому разъёму существуют различные готовые модули, а также вы можете самостоятельно подключить нужное вам оборудование к пинам интерфейсов в этом разъёме.
❯ Технологическая информация
Ещё один пример необычного подхода OLIMEX к сопровождению своей продукции — компания предоставляет таблицы с подробной информацией о выводах GPIO и режимах их работы.
Это говорит о профессиональном подходе к своей работе и продукции. К сожалению, вынужден констатировать, что практически ни одна другая компания-производитель контроллеров не дотягивает до такого уровня.
❯ Распиновка
Более наглядный вариант распиновки ESP32 на плате ESP32-EVB. То, что OLIMEX на своих схемах маркирует как SPI и HS2 — это GPIO, которые переопределить как на HSPI, так и на VSPI.
❯ Заключение
В принципе, я хотел в этой статье разместить информацию и примеры кода для программирования ESP32-EVB, но это будет явно перебор — программированию этого чуда техники я посвящу следующую статью, тем более там много сложных и нетривиальных моментов и нам будет что обсудить в процессе разбора программирования ESP32-EVB.