OLIMEX ESP32-EVB: красный квадрат (плата принята)

pcioi6vxmqm5eaatrvfqjxeufri.jpeg

Сегодня мы рассмотрим один интересный контроллер из моей коллекции, это (широко известная в узких кругах) плата 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 поставляется в небольшой «брендированной» картонной коробке, сама плата находится в антистатическом пакете. Обратите внимание на «ножки» для платы — это простое, но полезное дополнение, которое позволяет плате не скользить по столу и не царапать его острыми выводами элементов с обратной стороны платы.

1tasrgf2eq8_gafxtui03cfdx3w.jpeg

Казалось бы пустячок, а работать с таким контроллером гораздо приятнее, что положительным образом сказывается на отношении к самой компании-производителю, которая проявляет внимание к своим покупателям.

q9ymhiiybw1ma1-hxh7pzrdf6ww.jpeg

Крупным планом плата, уже установленная на комплектных ножках. Правда ножек (и крепёжных отверстий в плате) всего три, четвёртое должно было быть на месте установки микроконтроллера ESP32. Видимо это связано с плотной упаковкой элементов на плате — для четвёртого отверстия просто не хватило места.

jr7he17yxpwcpao0-vyy9vbsef0.jpeg

Вид с обратной стороны платы. Силовые линии реле очень мощно и «объёмно» залужены, но защитных прорезей в плате нет. Также видна маркировка разъёмов и технологических перемычек. Окно для антенны 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 мы начнём с фотографии платы сверху.

01siyatlc9djwhon6mqil5_j0x8.jpeg

Хорошо видна плотность упаковки элементов на плате. Видимо уменьшение размеров платы было одной из целей разработчиков, чтобы ESP32-EVB можно было встроить в какие-то небольшие устройства или малогабаритные корпуса.

8haz_d0ownhdeytmm6vd_-sa2-y.jpeg

На обратной стороне видна подробная маркировка, в том числе полная таблица GPIO выводов разъёма EXT. Видно также, что разработчики «не поленились» сделать разводку всех GPIO в этот разъём (что уникально).

Внешние подключения


Ниже приведена схема расположений разъёмов и внешних подключений ESP32-EVB:

byq8ihwmrei_yp0jmoh4xeqvklm.jpeg

Подсистема зарядки и питания


ESP32-EVB имеет довольно продвинутую подсистему питания с возможностью подключения литиевого аккумулятора, светодиодной индикации режимов его зарядки, запитки от круглого «Barrel» разъёма, отдельных контактов на плате или Micro-USB разъёма.

lvbrehrncb6ky2rcagxdz18fqp0.jpeg

Размер и распиновка круглого разъёма совпадают со стандартом Ардуино, но подавать на этот разъём (и контакты TERM1) можно только напряжение 5 вольт. Здесь нужно быть внимательным, иначе можно повредить контроллер.

Обслуживанием аккумулятора занимается микросхема контроллера заряда MCP73833, а напряжение 3,3 В формирует понижающий DC-DC преобразователь SY8009AAAC. Компания OLIMEX была настолько любезной, что на схеме даже указала формулы расчёта номиналов резисторов для тока заряда и выходного напряжения 3,3 В.

Ядро ESP32


На схеме дана довольно своеобразная и невероятно подробная распиновка микроконтроллера ESP32 на плате ESP32-EVB.

-yuol_jf_jgrb3bna66sb5i6vvu.jpeg

USB-UART


Micro-USB разъём может использоваться как для питания контроллера, так и для его программирования. USB-UART переходник выполнен на микросхеме CH340T, а схема управляющих сигналов — на двух транзисторах BC817–40 и двух сборках диодов Шоттки BAT54C. И снова компания OLIMEX оказалась настолько любезной, что привела таблицу состояний входов и выходов схемы управления DTR/RTS.

vffmpjznsdxcgs6wg_8nqrgrj54.jpeg

Реле


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

ys_cmseq-enkhbnfuc0geu77qxw.jpeg

IR приёмник и передатчик


В качестве инфракрасного (IR) передатчика используется светодиод IR333-A, управляемый транзистором BC817–40, а в качестве приёмника — модуль приёмника инфракрасных сигналов RPM7236-H8.

khwbpudmkv9bopo2lhdejfi_sti.jpeg

Всё это хозяйство заведено на соответствующие GPIO и может свободно управляться из скетчей на Ардуино (или из кода на на вашем любимом языке программирования).

CAN


Подсистема CAN интерфейса выполнена на трансивере MCP2551-I/SN и может запитываться от 5 или 3,3 В при помощи замыкания соответствующей перемычки. По умолчанию выставлен режим питания от напряжения 5 В.

-jh6l__enqmxtlehhayxmsky4yu.jpeg

Также есть возможность подключения резистора 120 Ом при помощи ещё одной перемычки на плате CAN_T1.

Ethernet


Контроллер OLIMEX ESP32-EVB интересен ещё и тем, что здесь применена продвинутая микросхема Ethernet физики LAN8710A (обычно производители используют более простую версию LAN8720A), правда для нас это особой роли не играет, обе микросхемы работают аналогичным образом.

tc5og8xkvchckk2ujdexveyuajq.jpeg

Также важно отметить, что обе эти микросхемы совместимы на программном уровне и нам не придётся специально переделывать код под ESP32-EVB (что очень хорошо).

Картридер microSD


Плата ESP32-EVB снабжена картридером для microSD карт памяти, что значительно расширяет её возможности — на этих картах можно хранить различные данные, конфигурационные файлы, их можно использовать для размещения страниц веб-сервера и т. д.

ujsrjmuu1zj2l4kdir_bokyyki0.jpeg

Кнопки


ESP32-EVB имеет две кнопки: Reset (RST1) и свободно программируемую User (BUT1), подключённую к GPIO34.

uexuibv-ifxt4krfc_spqej6jm8.jpeg

EXT


Как я уже заметил выше, ESP32-EVB содержит уникальный разъём EXT1, в который выведены все GPIO контроллера ESP32. Я такого не встречал ни на одном другом контроллере — здесь нам свободно доступны (вне зависимости от внутренних подключений) все GPIO микроконтроллера (я бы сказал, что это очень круто — не нужно ничего мудрить, если вы вдруг захотите использовать какой-то пин для своих нужд).

kh3p289zvphrtnsnd7yy9j-ttec.jpeg

Маркировка разъёма EXT1 на обратной стороне платы:

3d5eqitl8vxuyqbvwrhdzwgknps.jpeg

UEXT


UEXT — это разъём «фирменного» стандарта OLIMEX для подключения внешних модулей. В него выведены контакты «земли», питания 3,3 В и интерфейсов UART1, I2C, SPI.

xhdpm5pamctz7cugv0djwfyhq-8.jpeg

Вот более наглядное представление распиновки UEXT разъёма компании OLIMEX:

bknwzcngv4fofdarujs6fo9c6bw.png

Для подключения к этому разъёму существуют различные готовые модули, а также вы можете самостоятельно подключить нужное вам оборудование к пинам интерфейсов в этом разъёме.

Технологическая информация


Ещё один пример необычного подхода OLIMEX к сопровождению своей продукции — компания предоставляет таблицы с подробной информацией о выводах GPIO и режимах их работы.

dc_pg7ithxyvmfhni1m0l2ffg9u.jpeg

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

Распиновка


Более наглядный вариант распиновки ESP32 на плате ESP32-EVB. То, что OLIMEX на своих схемах маркирует как SPI и HS2 — это GPIO, которые переопределить как на HSPI, так и на VSPI.

asvguiegyq-olbug9z7asewmu6o.png

Заключение


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

p-u9l27ynelxi92bcmdxhu76ma8.png

© Habrahabr.ru