Перейти к содержимому

Добрый день, уважаемый читатель!

В данной статье мы поговорим про усы, лапы, и хвост; (тьфу, крылья, ноги, хвосты, опять не то) чипы, модули и платы ESP32.

КдПВ: усы, лапы и хвост - все документы на месте

КдПВ: усы, лапы и хвост – все документы на месте

Разбираться в модулях Esspressif, которые поставляет компания, дело неблагодарное. В списке доступных к заказу их несколько сотен. На Ali, конечно, предлагают поменьше, но новичкам всё равно ничего не понятно. Это даже хуже, чем выбирать смартфон от Xiaomi. Но всё таки давайте попробуем разобраться.

 

Для начала определимся с терминологией. В этой статье (да и в других статьях цикла) я буду использовать следующие термины:

  • чип – собственно микроконтроллер (или core в документации espressif, он же Жора SoC {System On Crystal – система на одном кристалле}, он же Гога MCU {MicroController Unit}); то есть собственно микросхемка без антенны, кварцевого резонатора, микросхемы FLASH-памяти и прочей обвязки
  • модуль – готовый микромодуль с напаянными внутри чипом, памятью, антенной или разъемом; чаще всего закрыт экраном с маркировкой
  • плата – как правило под этим термином я буду понимать различные отладочные платы с установленным модулем, USB-конвертором и стабилизатором

Нажмите для увеличения


Серии (линейки) чипов Espressif

Если обратиться к сайту производителя, то можно увидеть, что компания сейчас выпускает в основном пять линеек продукции: ESP8266, ESP32, ESP32-S*, ESP32-C* и ESP32-H.

История чипов компании Espressif

Давайте рассмотрим самые популярные серии чуть-чуть поподробнее:

ESP8266

ESP8266 – предшественник ESP32 на базе 32-разрядного RISC-процессора Tensilica® L106, с максимальной тактовой частотой 160 МГц. Я пользовался модулями этой линейки несколько лет, на мой взгляд, модуль получился не очень удачным, особенно в первое время (ESP-01 и т.д.). Производитель заявляет поддержку FreeRTOS, но поддержка эта “так себе”. Хотя для опытов с Arduino и WiFi вполне сгодится. В данной статье мы не будем его рассматривать.

ESP32

ESP32 – “классическая” серия ESP32. выпущенная в 2016 году на базе двухъядерного процессора Xtensa® 32­bit LX6 (или одноядерного в некоторых вариантах) с максимальной тактовой частотой 240 МГц. Работает с использованием относительно старых протоколов WiFi 2.4 MHz. Самая популярная линейка среди самодельщиков, так как его возможностей хватает “с избытком”, множество предложений на Aliexpress, а цена невелика (даже по сравнению с ESP8266).

  • Два (или одно) ядра ​​ЦП с изменяемой тактовой частотой 80 / 160 / 240 МГц.
  • Выходная мощность WiFi +19,5 дБм обеспечивает достаточную дальность связи
  • Классический Bluetooth с поддержкой L2CAP, SDP, GAP, SMP, AVDTP, AVCTP, A2DP (SNK) и AVRCP (CT)
  • Поддержка Bluetooth Low Energy (Bluetooth LE), включая профили L2CAP, GAP, GATT, SMP и GATT, такие как BluFi, SPP-подобные и т. д.
  • Ток сна составляет менее 5 мкА, что делает его пригодным для приложений с батарейным питанием и носимой электроники.
  • Периферийные устройства включают емкостные сенсорные датчики, датчик Холла, интерфейс SD-карты, Ethernet, высокоскоростной SPI, UART, I2S и I2C.
  • Внешняя RAM и флэш-память может быть подключена только через относительно небольшое “окно” в адресном пространстве (без DMA)

ESP32-C

ESP32-C(2,3,5,6) – недорогая линейка на базе одноядерного RISC-V процессора, предназначенная в первую очередь для встраиваемых устройств типа “умных розеток” и “умных лампочек”. Это скорее не “урезанный” ESP32, а “усовершенствованный” ESP8266. В отличие от ESP8266 новый SoC имеет поддержку безопасной загрузки, флэш-шифрования и современных беспроводных стандартов связи. Имеет меньшее количество GPIO, чем классическая ESP32, но у нее и назначение другое.

  • 32-битный одноядерный процессор RISC-V с четырехступенчатым конвейером, работающий на частоте до 160 МГц (в зависимости от серии).
  • Поддержка современных протоколов беспроводной связи WiFi и Bluetooth
  • 400 КБ SRAM и 384 КБ ПЗУ на чипе, а также интерфейсы SPI, Dual SPI, Quad SPI и QPI, которые позволяют подключать внешнюю флэш-память.
  • Надежные функции безопасности, обеспечиваемые безопасной загрузкой на основе RSA-3072, флэш-шифрованием на основе AES-128-XTS, инновационной цифровой подписью и периферийным устройством HMAC, поддержкой аппаратного ускорения криптографических алгоритмов.
  • Богатый набор периферийных интерфейсов и GPIO, идеально подходящий для различных сценариев и сложных приложений.
  • ESP32-C5 — это первая двухдиапазонная SoC Wi-Fi 6 от Espressif с частотой 2,4 и 5 ГГц.

ESP32-S

ESP32-S(2,3) – относительно новая (2020 год) линейка ESP32 базе процессора следующего поколения Xtensa® 32-bit LX7 с максимальной тактовой частотой 240 МГц. В качестве основных преимуществ по сравнению с предыдущей линейкой производитель отмечает улучшенную криптографию (шифрование FLASH памяти, безопасную загрузку прошивки, защиту от атак) и поддержку современных беспроводных протоколов связи. Имеет большее количество GPIO, чем классическая ESP32. Но меньшее количество встроенной памяти (см. таблицу ниже). Зато у новых чипов имеется высокоскоростной интерфейс Quad SPI и Octal SPI,через которые можно подключать внешнюю память.

  • 32-битный одноядерный (-S2) или двухъядерный процессор Xtensa® LX7 (-S3), работающий на частоте до 240 МГц.
  • 512 КБ SRAM и 384 КБ ПЗУ на чипе, а также интерфейсы SPI, Dual SPI, Quad SPI, Octal SPI, QPI и OPI, которые позволяют подключать флэш-память и внешнюю RAM через DMA.
  • Дополнительная поддержка векторных инструкций в ESP32-S3, что обеспечивает ускорение вычислений нейронных сетей и рабочих нагрузок обработки сигналов.
  • Периферийные устройства включают до 45 программируемых GPIO, SPI, I2S, I2C, PWM, RMT, ADC и UART, хост SD/MMC и TWAI
  • Сверхнизкое энергопотребление: мелкозернистая синхронизация, динамическое масштабирование напряжения и частоты.
  • Функции безопасности: eFuse, флэш-шифрование, безопасная загрузка, проверка подписи, встроенные алгоритмы AES, SHA и RSA.

ESP32-H

ESP32-Н – SoC на базе  32-битного одноядерного процессор RISC-V, работающего на частоте до 96 МГц. Как и серия ESP32-C, данная серия предназначенна в первую очередь для встраиваемых устройств типа “умных розеток” и “умных лампочек” с небольшими требованиями. Но в отличие от чипов серии ESP32-C, данная серия не имеет поддержки WiFi, взамен предлагая ультранизкое электропотребление.

  • 32-битный одноядерный процессор RISC-V, работающий на частоте до 96 МГц.
  • 320 КБ SRAM, 128 КБ ROM, 4 КБ LP-памяти, работает с внешней флэш-памятью.
  • 19 программируемых GPIO с поддержкой UART, SPI, I2C, I2S, периферийных устройств дистанционного управления, светодиодной ШИМ, полноскоростного USB-контроллера Serial/JTAG, GDMA, MCPWM
  • Может использоваться для создания конечных устройств Thread, а также пограничного маршрутизатора Thread и моста Matter путем объединения его и ESP Wi-Fi SoC.

 

В таблице ниже вы можете сравнить характеристики серий более подробно.

Характ-ка Серия ESP32 Серия ESP32-S2 Серия ESP32-C3 Серия ESP32-S3
Год выпуска 2016 2020 2020 2020
Описание ESP32 Datasheet ESP32-S2 Datasheet ESP32-C3 Datasheet ESP32-S3 Datasheet
Процессор Xtensa® dual-/single core 32-bit LX6 Xtensa® single-core 32-bit LX7 32-bit single-core RISC-V Xtensa® dual-core 32-bit LX7
Wi-Fi 802.11 b/g/n, 2.4 GHz 802.11 b/g/n, 2.4 GHz 802.11 b/g/n, 2.4 GHz 802.11 b/g/n, 2.4 GHz
Bluetooth® Bluetooth v4.2 BR/EDR and Bluetooth LE ✖️ Bluetooth 5.0 Bluetooth 5.0
Частота ядра 240 MHz (160 MHz for ESP32-S0WD) 240 MHz 160 MHz 240 MHz
SRAM (в SoC) 520 KB 320 KB 400 KB 512 KB
ROM (в SoC) 448 KB для загрузчика и ядра 128 KB для загрузчика и ядра 384 KB для загрузчика и ядра 384 KB для загрузчика и ядра
Flash (модуль) 2 MB, 4 MB, или ничего 2 MB, 4 MB, или ничего 4 MB или ничего 8 MB или ничего
Flash (внешняя) До 16 MB, адресация 11 MB через буфер 248 KB До 1 GB, адресация одновременно 11.5 MB До 16 MB, адресация одновременно 8 MB До 1 GB, адресация одновременно 32 MB
RAM (внешняя или в модуле) До 8 MB, адресация 4 MB одновременно До 1 GB, адресация одновременно 11.5 MB ✖️ До 1 GB, адресация одновременно 32 MB
Кэш ✔️ Two-way set associative ✔️ Four-way set associative, independent instruction cache and data cache ✔️ Eight-way set associative, 32-bit data/instruction bus width ✔️ Four-way or eight-way set associative for instruction cache; four-way set associative for data cache, 32-bit data/instruction bus width
Периферия
ADC Два 12-bit, 18 каналов Два 12-bit, 20 каналов Два 12-bit SAR ADC, максимум 6 каналов Два 12-bit SAR ADCs, 20 каналов
DAC Два 8-bit канала Два 8-bit канала ✖️ ✖️
Таймеры Четыре 64-битных таймера общего назначения и три сторожевых таймера Четыре 64-битных таймера общего назначения и три сторожевых таймера Два 54-битных таймера общего назначения и три сторожевых таймера. Четыре 54-битных таймера общего назначения и три сторожевых таймера.
Датчик температуры ✖️ 1 1 1
Сенсоры касания 10 14 ✖️ 14
Датчик Холла 1 ✖️ ✖️ ✖️
GPIO 34 43 22 45
SPI 4 4 3 4
LCD interface 1 1 ✖️ 1
UART 3 2 1 2 1 3
I2C 2 2 1 2
I2S 2, могут быть настроены для работы с разрешением 8/16/32/40/48 бит в качестве входного или выходного канала 1, может быть настроен для работы с разрешением 8/16/32/40/48/64 бит в качестве входного или выходного канала 1, может быть настроен для работы с разрешением 8/16/24/32 бит в качестве входного или выходного канала 2, могут быть настроены для работы с разрешением 8/16/24/32 бит в качестве входного или выходного канала
Camera interface 1 1 ✖️ 1
DMA Выделенные DMA to UART, SPI, I2S, SDIO slave, SD/MMC host, EMAC, BT, и Wi-Fi Выделенные DMA to UART, SPI, AES, SHA, I2S, и ADC Controller Общего назначения: 3 канала TX, 3 канала RX Общего назначения: 5 каналов TX, 5 каналов RX
RMT 8 каналов 4 канала 4 канала: 2 RX + 2 TX 8 каналов: 4 RX + 4 TX
Счетчик импульсов 8 каналов 4 канала ✖️ 4 канала
LED PWM 16 каналов 8 каналов 6 каналов 8 каналов
MC PWM 2, шесть PWM выходов ✖️ ✖️ 2, шесть PWM выходов
USB OTG ✖️ 1 ✖️ 1
TWAI® контроллер (ISO 11898-1) 1 1 1 1
SD/SDIO/MMC host controller 1 ✖️ ✖️ 1
SDIO slave controller 1 ✖️ ✖️ ✖️
Ethernet MAC 1 ✖️ ✖️ ✖️
ULP сопроцессор ULP FSM PicoRV32 core with 8 KB SRAM, ULP FSM ✖️ PicoRV32 core with 8 KB SRAM, ULP FSM
Debug Assist ✖️ ✖️ 1 ✖️
Безопасность
Secure boot ✔️ ✔️ Быстрее и безопаснее по сравнению с классической ESP32 ✔️ Быстрее и безопаснее по сравнению с классической ESP32 ✔️ Быстрее и безопаснее по сравнению с классической ESP32
Flash шифрование ✔️ ✔️ Поддержка шифрования PSRAM. Безопаснее, по сравнению с ESP32 ✔️ Безопаснее, по сравнению с ESP32 ✔️ Поддержка шифрования PSRAM. Безопаснее, по сравнению с ESP32
OTP 1024-bit 4096-bit 4096-bit 4096-bit
AES ✔️ AES-128, AES-192, AES-256 (FIPS PUB 197) ✔️ AES-128, AES-192, AES-256 (FIPS PUB 197); DMA support ✔️ AES-128, AES-256 (FIPS PUB 197); DMA support ✔️ AES-128, AES-256 (FIPS PUB 197); DMA support
HASH SHA-1, SHA-256, SHA-384, SHA-512 (FIPS PUB 180-4) SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256, SHA-512/t (FIPS PUB 180-4); DMA support SHA-1, SHA-224, SHA-256 (FIPS PUB 180-4); DMA support SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256, SHA-512/t (FIPS PUB 180-4); DMA support
RSA Up to 4096 bits Up to 4096 bits Up to 3072 bits Up to 4096 bits
RNG ✔️ ✔️ ✔️ ✔️
HMAC ✖️ ✔️ ✔️ ✔️
Digital signature ✖️ ✔️ ✔️ ✔️
XTS ✖️ ✔️ XTS-AES-128, XTS-AES-256 ✔️ XTS-AES-128 ✔️ XTS-AES-128, XTS-AES-256
Другое
Deep-sleep (режим, контролируемый ULP) 100 μA (когда АЦП работают с рабочим циклом 1%) 22 μA (когда сенсорные датчики работают с рабочим циклом 1%) Не поддерживается TBD
Размеры чипа QFN48 5*5, 6*6, в зависимости от исполнения QFN56 7*7 QFN32 5*5 QFN56 7*7

 

В данной статье я буду рассматривать в основном чипы и модули “базовой линейки” ESP32, так как про ESP8266 – уже не интересно, а сериями ESP32-S и ESP32-С я лично ещё не пользовался (ну вот не было такой необходимости), поэтому поделиться опытом я не могу. А зачем писать про то, чего сам не знаешь? Если у Вас есть желание подробнее ознакомиться с новыми сериями, Вы можете сделать это самостоятельно на сайте производителя. Но судя по поиску на AliExpress, новые модули пока не сильно распространены.

 


Чипы классической линейки ESP32

В настоящее время Espressif производит модули ESP32 на базе следующих чипов (SoC):

  • ESP32-D0WDQ6 – исторически самый первый чип, выпущенный Espressif, сейчас не доступен для заказа. Модули на основе этого чипа я рассматривать так же не буду (а смысл?).
  • ESP32-D0WD – некоторое время основной SoC, на основе которого создавались модули ESP32-WROOM-32, ESP32-WROOM-32D, ESP32-WROOM-32U и серии ESP32-WROWER (не все модели! подробности ниже). Имел некоторые аппаратные проблемы, поэтому в конце концов был снят с производства и заменен на исправленную версию ESP32-D0WD-V3 и сейчас не доступен для заказа на сайте Espressif, но его вполне ещё можно купить на Aliexpress.
  • ESP32-D0WD-V3исправленная версия ESP32-D0WD с маркировкой ECO V3. Например исправлена ошибка кэша при работе с внешним ОЗУ (PSRAM), если таковое присутствует в модуле. Если есть желание, можете ознакомиться со списком изменений самостоятельно ( или на форуме ).
  • ESP32-D0WDR2-V3 – этот более продвинутый вариант ESP32-D0WD-V3, который имеет на борту 2 МБ встроенной PSRAM. Используется только в продвинутом модуле ESP32­-WROOM-­DA.
  • ESP32-S0WD – “урезанный” одноядерный вариант ESP32-D0WD. Собственно этим всё сказано. Не вижу смысла, но производителю виднее. На Aliexpress присутствует только в виде чипов и модулей, плат на основе этого чипа нет. Видимо, спроса нет.
  • ESP32-U4WDH – ещё один вариант ESP32, данные о нем весьма противоречивы: на сайте Espressif написано, что это одноядерный модуль с частотой 160 MHz и с 24 GPIO, а судя по datasheet- это вполне себе обычный ESP32 с 28 выводами GPIO. На Aliexpress отсутствует.
  • ESP32-PICO-V3-02 – в основе этого модуля лежит тот же самый чип ESP32 (ECO V3), но разработанный с использованием маломощной технологии TSMC 40 нм. На Aliexpress присутствует только в виде чипов и модулей.

Модули классической линейки ESP32

На первый взгляд, во всей этой “мешанине” модулей, выпускаемых Espressif, легко запутаться. Но если разобраться, то всё оказывается просто и логично довольно (на самом деле не всегда).

Во первых – название серии модулей (после ESP32-) определяет, есть ли в модуле дополнительная внешняя оперативная память или другие конструктивные особенности. На данный момент компания Espressif выпускает три “классических” серии модулей ESP32 (повторюсь, модули линеек ESP32-S и ESP32-С, я не буду рассматривать в рамках данной статьи):

  • Серия ESP32-WROOM – модули на базе чипа ESP32-D0WD и его модификаций со встроенной флэш-памятью. Эти модули поддерживают Wi-Fi и Bluetooth/Bluetooth LE и обеспечивают высокую двухъядерную производительность. Самая массовая и популярная серия, на Aliexpress присутствует в самых разных вариантах.
  • Серия ESP32-WROVER – по сути это тот же самый ESP32-D0WD, только дополнительно оснащенный “внешней” памятью SPIRAM (другое название PSRAM)*. То есть вне чипа, но внутри модуля. Из-за этого он имеет большие габариты. WROWER хорошо подходит для приложений, требующих больше памяти, например при обработке видео или ИИ.
  • Серия ESP32-MINI – основана на ESP32-U4WDH, что обеспечивает экономичное решение для простых приложений подключения на основе Wi-Fi и Bluetooth/Bluetooth LE. Стоимость модулей на Ali выше, чем обычных, а единственная отладочная плата имеет совершенно “конский” ценник.

* Примечания к ESP32-WROVER:
1. Из-за того, что выводы MCU IO16 и IO17 заняты в интерфейсе QSPI для подключения SPIRAM, их нельзя использовать (да они и не выведены на контакты).
2. SPIRAM это совсем НЕ то же самое, что интегрированная в чип SRAM! Доступ к SPIRAM осуществляется MCU не непосредственно, а постранично через буферизированное “окно” в адресном пространстве. Поэтому “внешняя” память SPIRAM работает существенно медленнее обычной. В некоторых приложениях (связанных с обработкой видео, например), это может быть критичным. По умолчанию SPIRAM не доступна для malloc() и calloc(), её нужно “подключать” через sdkconfig.
Кроме того, есть подозрения (лично видел issue на github), что SPIRAM гораздо быстрее фрагментируется, чем обычная. Впрочем это может быть чисто программной проблемой, которую можно устранить.

Буква на конце маркировки (D, U, E, I и т.д.) определяет конструктивные особенности модуля:

  • Если буква на конце маркировки отсутствует, то чип внутри такого модуля может стоять какой угодно – либо новый ESP32-D0WD-V3, либо ESP32-D0WD, либо вообще доисторический ESP32-D0WDQ6. Одно известно совершенно точно: такие модули имеют печатную антенну. На AliExpress модулей с обозначением ESP32-WROOM-32 сейчас “пруд пруди”, но сайт производителя уверяет нас, что без буквы маркированы только устаревшие модули (на базе ESP32-D0WDQ6), давно снятые с производства. Могу предположить, что это могут быть “не совсем оригинальные” модули, но это не точно. Как правило, встречаются на платах ESP32 DevKit V1 и подобных (на ESP32 DevKitС V4, имеющихся в моем распоряжении, стоят модули с буквами D или E).
  • Буква D или E (для WROOM) или B (для WROVER) обозначает модули с печатной антенной. Буква D на конце маркировки модуля указывает на чип ESP32-D0WD, буква E указывает на новый чип ECO V3 (ESP32-D0WD-V3). На первый взгляд, существенных отличий модулей с буквой Е по от предыдущих моделей нет. Но если взглянуть на контакты модуля, можно заметить, что часть контактов, задействованных в QSPI интерфейсе (через который может подключаться внешняя FLASH память), не подключена. Но для абсолютного большинства “любительских” применений эти контакты всё равно не имеют никакого значения, так что разницы вы не заметите.
  • Буква U (для WROOM) или I (для WROVER) на конце маркировки модуля указывает на то, что вместо печатной антенны установлен разъем U.FL / IPEX для подключения внешней антенны. Модули с печатной антенной MIFA (Meandered Inverted-F Antenna) удобно применять, когда в точке размещения модуля сигнал WiFi достаточно сильный (или вообще не требуется подключение к сети). Модули с разъемом U.FL / IPEX (имеющие букву U в названии) подойдут, если вы хотите установить ESP32 в металлическом боксе или если уровень сигнала WiFi оставляет желать лучшего (во дворе, в гараже и т.д.). Но антенну придется прикупить отдельно.
  • Буквы IB или IE (только для WROVER) на конце маркировки модуля указывают на то, что модуле можно использовать как печатную, так и внешнюю антенну. Жаль что такого варианта для серии WROOM не существует.

Внимание! На модуле с внешней антенной нельзя активировать WiFi, если антенна не подключена – можно спалить передатчик. Я уже это проверил и убедился – это действительно так.

Размер установленной FLASH-памяти может дополнительно обозначаться буквой N и цифрами. На сайте Expressif доступны модули c 4 MB или 8 MB или 16 MB FLASH памяти. На AliExpress так же есть в продаже модули WROOM с 8 или 16 MB, но только в виде собственно модулей (плат я не видел, но это не большая проблема). Больший размер FLASH может пригодится для накопления каких-либо данных без использования microSD карт. 

Запутались? Не пугайтесь – ниже будут примеры с “расшифровкой”.

В качестве иллюстрации приведу картинки с одного известного китайского сайта:

ESP32-WROOM-32E с печатной антенной. Источник: aliexpress.com

ESP32-WROOM-32E с печатной антенной. Источник: aliexpress.com

ESP32-WROOM-32U с разъемом для внешней антенны. Источник: espressif.com

ESP32-WROOM-32U с разъемом для внешней антенны. Источник: espressif.com

 

Характеристики

По большей части в “классической” линейке ESP32 все модули обладают сходными характеристиками, так как используются похожие чипы.

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

Ну надо же что-то написать:

  • Процессор: Xtensa® dual-/single-core 32-bit LX6 с тактовой частотой 80 / 160 / 240 MHz
  • ROM: 448 KB
  • SRAM: 520 KB
  • FLASH: 4 / 8 / 16 MB
  • WiFi: IEEE 802.11 b/g/n; 2.4 GHz; HT20/40; up to 150 Mbps
  • GPIO: WROOM 26 / WROWER 24
  • ADC: 12-bit до 18 каналов (на самом деле не совсем)
  • DAC: 2 × 8-bit
  • PWM: Motor PWM, LED PWM до 16
  • Интерфейсы: 4 × SPI | 2 × I2S | 2 × I2C | 3 × UART | 1 host (SD/eMMC/SDIO) | 1 slave (SDIO/SPI) и т.д.

Хочу обратить ваше внимание только на то, что, согласно спецификации, выводы GPIO допускают ток аж до 40 mA “высокого” уровня и до 28 mA “низкого” уровня. Это позволяет управлять различными слаботочными устройствами типа светодиодов напрямую, без применения коммутирующих транзисторов, нужно только учитывать напряжение на выводе не более 3.3В.

 


Модули ESP32

В списке ниже приведены основные модули, которые можно приобрести в настоящее время, в том числе и на AliExpress. Редкие модели я не буду рассматривать, но внизу есть ссылка на сайт espressif, где вы можете найти информацию по любым модулям. Сам я использую пока что только модули серий WROOM и WROWER. Кликните по названию модуля, чтобы открыть технический паспорт модуля.

Серия ESP32-WROOM (без дополнительной внешней памяти):

  • ESP32-WROOM-32 – модуль с печатной антенной, скорее всего на базе чипа ESP32-D0WD – вероятнее всего “левого” происхождения; но существует вероятность что внутри установлен чип ESP32-D0WDQ6
  • ESP32-WROOM-32D – несколько устаревший, но всё еще актуальный модуль с чипом ESP32-D0WD и печатной антенной, на текущий момент сняты с производства и не доступны к отгрузке на сайте Espressif. Но на складах AliExpress, их, видимо ещё достаточно, и их легко можно заказать.
  • ESP32-WROOM-32U – версия модуля на базе чипа ESP32-D0WD (то есть аналог …-D), но с разъемом для внешней антенны
  • ESP32-WROOM-32Eсовременная версия на основе “исправленных” чипов ESP32-D0WD-V3 и печатной антенной. Уже доступны к заказу на AliExpress, но стоят пока немного дороже.
  • ESP32-WROOM-32UE – современная версия с чипом ESP32-D0WD-V3 и с разъемом для внешней антенны

 

Серия ESP32-WROVER (c дополнительной внешней памятью SPIRAM):

  • ESP32-WROVER – модуль с печатной антенной и дополнительной внешней памятью SPIRAM, скорее всего на базе чипа ESP32-D0WD-V3 – вероятнее всего “левого” происхождения; но существует вероятность что внутри установлен чип ESP32-D0WD
  • ESP32-WROVER-B – несколько устаревший, но всё еще актуальный модуль с чипом ESP32-D0WD и печатной антенной
  • ESP32-WROVER-IB – несколько устаревший, но всё еще актуальный модуль с чипом ESP32-D0WD, печатной антенной плюс с разъемом для внешней антенны
  • ESP32-WROVER-E – современная версия на основе “исправленных” чипов ESP32-D0WD-V3 и печатной антенной
  • ESP32-WROVER-IE – современная версия на основе “исправленных” чипов ESP32-D0WD-V3, печатной антенной плюс с разъемом для внешней антенны

Дополнительно могут быть указаны размеры flash-памяти и внешней RAM, например:

  • N4R8 – 4 Mb flash и 8 Mb SPIRAM
  • N8R8 – 8 Mb flash и 8 Mb SPIRAM
  • N16R8 – 16 Mb flash и 8 Mb SPIRAM

 

Есть ещё несколько модулей в классической серии, но они пока редко распространены в дикой природе (aliexpress – прим.авт.). Информацию по другим модулям вы можете найти здесь.

 

В заключение хочу отметить, что если вы хотите разрабатывать устройства, используя “чистые” модули ESP32-WROOM, то можно попробовать приобрести вот такую плату с загадочным названием “тесты доска горелки“, с помощью которой теоретически можно прошить модуль, а уже потом впаять его в готовую плату:

Плата "тесты доска горелки". Источник: aliexpress.com

Плата “тесты доска горелки”. Источник: aliexpress.com

Не пугайтесь – это не приспособление для сжигания инструмента, как нам вещает сайт. Увы, но прошить модули с помощью этой платы я так и не смог  (а через адаптер USB – UART – легко).

 


Платы ESP32

На AliExpress можно найти платы разработчика на любой вкус и кошелек. Я редко использую собственно “чистые” модули, только когда требуется особая компактность. В большинстве случаев гораздо удобнее использовать готовые платы с уже напаянным модулем, стабилизатором питания и интерфейсом USB. Если использовать специальные разъемы, то можно легко снимать плату для перепрошивки или замены, а под ней можно разместить дополнительные компоненты в целях компактности. На рисунке ниже пример устройства под плату ESP32 DevKitС V4.

Пример платы, рассчитанной под ESP32 DevKit V4

Пример платы, рассчитанной под ESP32 DevKit V4

Однако, использование “плат разработчика” накладывает некоторые ограничения, которые следует учитывать. Рассмотрим их ниже на примере ESP32 DevKitC V4.

ESP32 DevKitС V4

“Официальная” (разработка Espressif) и самая популярная плата на основе “классической” линейки ESP32-WROOM или ESP32-WROVER. Кстати, продаются также “пустые” платы (без модуля), на который вы можете припаять любой выбранный модуль самостоятельно.

ESP DevKit V4. Источник: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/hw-reference/esp32/get-started-devkitc.html

ESP DevKit V4. Источник: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/hw-reference/esp32/get-started-devkitc.html

Если обратиться к документации, можно увидеть следующую схему выводов платы:

Распиновка ESP32-DevKitC

Распиновка ESP32-DevKitC

Что очень удобно, из под ESP-IDF для большинства интерфейсов можно использовать произвольные выводы, а не только заранее определенные. Но не всё так гладко, как кажется сначала.

Ограничения выводов ESP32 DevKitС

Согласно документации, модуль WROOM-32 имеет 34 GPIO. Но, не все контакты можно использовать в своих проектах.

  • Нельзя использовать GPIO 6-11 (D0, D1, D2, D3, SCK, CMD), так как эти выводы используются для доступа к FLASH памяти. Сразу исключайте их из своих проектов, причём это справедливо и при использовании “чистых” модулей. Кстати, на новых модулях ECO V3 (с индексами E) они просто не выведены. Профессиональные разработчики, которые используют эти контакты для подключения своих flash модулей, очень расстроены этим фактом.
  • Нельзя использовать порт SERIAL 0: GPIO 1 и GPIO 3 (RX, TX), так как он использован для подключения USB конвертора. Если вам очень необходим “основной” serial – используйте модуль вместо платы.
  • Не рекомендуется использовать GPIO 0, так как он используется для прошивки микроконтроллера через UART0. Это основной вывод из так называемых “Strapping Pins” / “Биты обвязки“. ESP32 войдет в режим прошивки, когда GPIO 0 удерживается на низком уровне при сбросе. Таким образом, внешняя подтяжка GPIO 0 нарушит работу системы прошивки через UART0. Но его вполне можно использовать для управления нагрузкой, если это крайне необходимо.
  • GPIO 2, 5, 12, 15, судя по схеме модуля, на платке никуда не задействованы, но так же помечены как “Strapping Pin Functions” / “Биты обвязки“. Это означает, что состояние этих выводов считывается процессором по время работы системы сброса микроконтроллера (в том числе сброс при включении питания, сброс по сторожевому таймеру RTC и сброс по BrownOut). Защелки на этих выводах удерживают логические уровни до тех пор, пока микропроцессор не будет перезапущен. Биты обвязки настраивают режим загрузки устройства, рабочее напряжение VDD_SDIO и другие начальные настройки системы. Использовать эти выводы можно, но очень осторожно. Возможно придется вытащить плату с модулем или сам модуль из панельки для перепрошивки через последовательный порт.
    GPIO 0 (повторюсь) должен иметь низкий уровень “0“, чтобы войти в режим загрузки микропрограммы через последовательный порт UART0. Иначе будет использован обычный режим запуска.
    GPIO 2 должен быть либо оставлен неподключенным/плавающим, либо иметь низкий уровень, чтобы войти в режим загрузки прошивки через UART0.
    GPIO 5 каким-то образом связан с внешней flash-памятью, хотя лично мне из документации сложно понять, как именно.
    GPIO 12 управляет напряжением питания внешней flash-памяти. Если установлено значение “1“, напряжение флэш-памяти (VDD_SDIO) составляет 1,8 В вместо 3,3 В по умолчанию. Это может препятствовать прошивке и загрузке, если используется флэш-память 3,3 В, а этот контакт вытянут на высокий уровень, что приводит к физическому отключению флэш-памяти по питанию. Имеет внутреннюю слабую подтяжку к земле, поэтому по умолчанию на данном выводе будет низкий уровень.
    GPIO 15 управляет отладочными сообщениями при запуске микроконтроллера. Если задано значение “0“, отключаются загрузочные сообщения, распечатываемые загрузчиком. Имеет внутреннюю слабую подтяжку к питанию, поэтому по умолчанию на данном выводе будет высокий уровень.
    * GPIO 4 так же включен в список GPIO_STRAP, но в настоящее время никак не используется. Поэтому вы можете использовать его по своему желанию абсолютно свободно.
  • Если вы используете плату с ESP32-WROWER или ESP32-SOLO-1 на борту, то вы не сможете использовать GPIO 16 и 17, так как они задействованы в QSPI интерфейсе, причём это справедливо и при использовании “чистых” модулей (о чем я писал выше).
  • GPIO 34,35,36,39 можно использовать только “на вход”, следовательно, нельзя подключать к ним светодиоды, зуммеры, датчики типа DHT22 и DS18B20 и управлять какой-либо нагрузкой.
  • Документация обещает нам 16 выводов, доступных как ADC в двух отдельных каналах. Мало того, что сам ADC реализован “чудесато”, так оказывается, что канал ADC 2 нельзя использовать, если вы подключены к WiFi. Более подробно о ADC поговорим в отдельной статье.

На данной плате установлен красный светодиод, который не подключен ни к одному из выводов, а просто и тупо отображает наличие питания 5В на плате. При использовании данной платы в каком-либо устройстве на постоянной основе светящийся светодиод может только мешать (подсвечивать корпус изнутри), да это ещё и лишний потребляемый ток впустую. Поэтому я просто сдуваю светодиод паяльным феном. Можно аккуратно “сковырнуть” его тонкой отверткой, но будьте очень аккуратны – можно легко повредить соседнюю дорожку к кнопке сброса.

Я использую примерно такой excel-файл для распределения выводов на те или иные функции в проекте:

Добрый день, уважаемый читатель! В данной статье мы поговорим про усы, лапы, и хвост; (тьфу, крылья, ноги, хвосты, опять не то) чипы, модули и платы ESP32.-12

В пустых ячейках “Назначение в проекте” записываю функции, которые будут назначены этим выводам. И только после распределения выводов переношу эти данные в код проекта. Это очень удобно и наглядно, не нужно постоянно держать в памяти номера выводов, которые не рекомендуется использовать и почему. Скачать пример такого файла можно по ссылке.

Есть и ещё платы разработки, выпускаемые Espressif, но в рамках данной статье я не буду их рассматривать. Не пробовал, не знаю…

 


Клоны и модификации

Существует просто огромное количество плат на основе ESP32, я просто “пробегусь” по некоторым из них, которые у меня есть или просто мне приглянулись.

ESP32 DevKit V1 38 pin

ESP32 38 Pin. Источник: aliexpress.com

ESP32 38 Pin. Источник: aliexpress.com

Очень похожая на ESP32 DevKitС V4 плата. Отличие состоит в том, что светодиод подключен не к питанию, а к одному из GPIO, поэтому может как использоваться как индикатор. Кроме того, данная плата не предусматривает установку модулей WROVER. Из-за того, что модуль напаян поверх платы, “дальнобойность” WiFi может быть немного ниже. В принципе нормальная платка, до сих пор где-то работает.

ESP32 DevKit V1 30 pin

ESP32 30 Pin. Источник: aliexpress.com

ESP32 30 Pin. Источник: aliexpress.com

Модификация предыдущей платы, из которой исключены контакты GPIO 6-11, которые всё равно нельзя использовать. Из-за этого платка получилась немного компактнее. Долго лежала в коробке, в прошлом году собрал на ней термостат. В термостате проработала всю зиму на улице, и ничего, жива…

NodeMCU-32 v1.3

ESP32 30 Pin. Источник: aliexpress.com

NodeMCU-32 v1.3. Источник: datasheet

Ещё одна похожая на ESP32 DevKitС плата. Расположение выводов совпадает полностью, но нумерация нанесена на обратную сторону, что несколько затрудняет отладку при подключении щупов и сборке прототипов на монтажных платах. Использован другой тип преобразователя USB-интерфейсов, так что, возможно, придется установить ещё один драйвер в систему. Ещё одно отличие – наличие дополнительного светодиода на GPIO2, который можно использовать для какой-либо индикации в тестовых проектах.

ESP32 CAM

ESP32-CAM. Источник: aliexpress.com

ESP32-CAM. Источник: aliexpress.com

Версия платы для работы с камерой. Но собрана она уже на ESP32-S. Позволяет достаточно дешево собрать самодельное видеонаблюдение. Я не испытывал, поэтому ничего конкретного сказать не могу.

ESP32 MINI

ESP32 MINI. Источник: aliexpress.com

ESP32 MINI. Источник: aliexpress.com

Миниатюрная версия для упрощенной сборки устройств в виде “этажерки”. Существуют подходящие по размерами и контактам платы с реле и различными сенсорами, что позволяет без пайки и проводов собрать необходимое устройство.

Некоторые из плат расширения с ESP32 MINI. Источник: aliexpress.com

Некоторые из плат расширения с ESP32 MINI. Источник: aliexpress.com

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

Wemos D1 R32: ESP32 в форм-факторе Arduino

Wemos D1 R32. Источник: aliexpress.com

Wemos D1 R32. Источник: aliexpress.com

Если вы привыкли работать с “большими” платами Arduino, то вам может понравиться данная плата. Но она больше подходит для опытов, чем для реальной эксплуатации.

 

WT32-SC01: ESP32 с 3,5′ LCD экраном

WT32-SC01. Источник: aliexpress.com

WT32-SC01. Источник: aliexpress.com

Если Вам нужен достаточно большой LCD экран, можно найти версию ESP32 с интегрированным экраном размером до 4 дюймов. Мне понадобилась панель управления умным домом, заказал вот такую, жду…

Релейный модуль с ESP32

Релейный модуль с ESP32. Источник: aliexpress.com

Релейный модуль с ESP32. Источник: aliexpress.com

Для удаленного управления нагрузкой можно заказать вот такую плату с реле. Реле может быть и больше, на плате может быть так же блок питания 220В или стабилизатор 12В. Иногда есть модели с корпусами. Но для меня такая плата не очень удобна – так как я предпочитаю взваливать на хрупкие плечи ESP множество задач и задействую выводы по максимуму. Здесь же без танцев с бубном и “колхоза” только ничего не подключить.

Kincony

В заключение хотелось бы отметить одного китайского производителя плат для “самоделкиных”, называется он Kincony. Меня очень заинтересовала их продукция, выбрать можно на любой вкус и кошелек. Можете считать это рекламой, хотя я с магазином никак не связан.

Одна из плат. Источник: aliexpress.com

Одна из плат. Источник: aliexpress.com

Надеюсь, статья помогла вам понять “что есть что” в мире ESP32.

 


Полезные ссылки

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

  1. ESP-IDF :: ESP32-DevKitC V4 Getting Started Guide
  2. Espressif.com

На этом пока всё, до встречи на сайте и на telegram-канале! 

Если Вам понравилась статья – кликните на любое рекламное объявление на данной странице, вам мелочь – а мне приятно. Благодарю за вашу поддержку.

💠 Полный архив статей вы найдете здесь


Пожалуйста, оцените статью:
[ 5 из 5, всего 12 оценок ]

16 комментариев для “ESP32: чипы, модули, платы…”

  1. Очень полезная статья, спасибо. После прочтения задумался о том какие недавно купил модули. На шильдике написано ESP32-WROOM-32 без каких либо дополнительных букв. Но тем не менее esptool.py выдает: Chip is ESP32-D0WD-V3 (revision 3)

    1. Спасибо за замечание. Подкорректировал статью.

      Да, кстати, тоже попадались такие. Но сайт espressif говорит, что без букв на конце это старый чип, снятый с производства. Так что кому верить – неизвестно. Я подозреваю, что это может быть не родной модуль. Просто собирают на другом заводе, используя родные чипы. Выяснить можно, прогрев модуль феном и сняв крышечку.
      У меня термостат в гараже уже год на таком работает, вроде бы все ок. Зиму пережил нормально.

      1. Дмитрий

        Судя по тому что подавляющее большинство модулей и плат продающихся на Ali имеют маркировку отличающуюся от той что описана на сайте Espressif, похоже что это все “не совсем оригинальные” модули на базе на базе чипов Espressiff и узнать что там внутри можно только считав chip revision.
        Существуют следующие chip revision (от этого зависит errata)
        0 – в последнее время не попадались
        1.0 (1.1) выпускались в двух вариантах D0WDQ6 (QFN48 6×6 mm) и D0WD (QFN48 5×5 mm) – отличаются только размером корпуса чипа. Сам чип один и тот же. Сам Espressif выпускал модули WROOM-32 (D0WDQ6) и WROOM-32D (D0WD). Модули отличаются тольк размером, если вы используете платы то никакой разницы нет (chip revison один и тот же)
        3.0 (3.1) – чип D0WD-V3, модуль от Espressif WROOM-32E
        Судя по последним заказам на Ali практически все модули “не совсем оригинальные”, если обозначение модуля WROOM-32, то будет revision 1. Что там внути D0WDQ6 или D0WD “без вскрытия” не узнаешь, да и это значения не имеет, если обозначение модуля WROOM-32E то скорее всего будет revision 3.

        1. “На Ali модули и платы “не совсем оригинальные”” – тут даже никто спорить не будет, так оно и есть. Китайцы у китайцев “тырят”…
          PlatformIO, насколько я помню, показывает версию чипа не только в виде версии, но в “расшифровке”. Хотя, может быть я и ошибаюсь, проверить не на чем

  2. Мне понравился обзор и я прикупил плату с модулем ESP32-WROOM-32E +4 реле и два источника питания. Изучил даташит и возникли вопросы прошивки.
    Собираюсь использовать программатор USB-UART CP2102. Но у него нет DTR. На периферийной схеме модуля указана перемычка JP2 и кнопка SW1 активации модуля. Может это можно использовать для прошивки?
    Еще вопрос по источникам питания. Использовать 3,3 для подачи на программатор ?

    1. Разобрался с релейной платой. там есть обе кнопки для ручного управления прошивкой EN и BOOT. Беспокоит только подача питания. Подключу релейную плату к внешнему источнику (12В) а пин 3,3в программатора с 3V3 на модуле. Правильно?

      1. Для подключения адаптера, на мой взгляд, по минимуму достаточно трех проводов – RX, TX и GND. Питание адаптер и от USИ прекрасно получит.

      2. Использую плату очень похожую на ESP32 DevKit V1 38 pin, указанную на сайте.
        Возникла проблема запуска платы от внешнего блока питания. Замечен не стабильный запуск МК, хотя от компьютера запускается без проблем.
        Решение найдено на просторах интернета, подключить Электролитический конденсатор на 10мкФ к ножке EN и GND(есть на самом чипе, не обязательно припаивать к пину платы).
        В итоге, плата ESP32 стабильно запускается, без зависания. и БОНУС автоматически переходит в режим прошивки, кнопку не надо нажимать.

        1. Ну так это просто значит, что китайцы запаяли дохлый конденсатор ?, либо на емкости сэкономили ?‍♂️, по схеме он там есть
          Я давно уже V1 не заказывал. V4 – полна коробка. С ними проблем вроде бы нет, если сам с выводами не начудишь.

          1. Нашел конденсатор, похоже реально на емкости сэкономили :D, выглядит крохотным. С выводами у меня получается чудить, 1.8 В подавал на вход. в итоге был дребезг. (не до конца понятно почему программно получилось дребезг убрать, лучше напряжение поднять.)

  3. Николай

    Почти все Ваши статьи прочитал. Очень интересно и полезно. Большое
    спасибо за этот труд. У меня есть два вопроса.
    Когда ожидается статья по ADC? мне надо измерять напряжение на аккумуляторах
    3.7В, 12В и 24В. Интересно как правильно обвязать вывод. И ещё, планируется ли
    статья по OTA?
    Мне очень интересны эти вопросы и реализация в ESP32-IDF.

    1. Добрый день!
      Сначала отвечу на второй вопрос: по OTA статья планируется, но для этого потребуется изучить TLS-соединения и разметку FLASH-памяти, без этого никак не получится, иначе не ясно будет “что к чему”. А времени особо нет. Да и интерес читателей к каналу на Дзене угас почти совсем.

      По поводу ADC – там все сложно. Дело в том, что статья уже была в черновиках, а с приходом IDF 5.0.0 все изменилось принципиально, весь API. Черновик уже не актуален. Желания переписывать уже нет.
      По поводу обвязки – я использую обычный резистивный делитель, чтобы вогнать диапазон 0-12 в заданный. Хорошо бы использовать “точные” резисторы с малым температурным коэффициентом, чтобы показания не плавали. Я использовал старые “советские”, они всяко лучше китайских резюков со стальными выводами.
      Про ADC я уже немного писал в статье https://kotyara12.ru/iot/esp32pinout/, и собственно по аппаратной части мне собственно добавить нечего.

  4. Всем доброго времени суток!Может кто-нибудь знает,что означают цифры на конце модели чипа esp32-pico-v3-02?.Буду признательна знатоку.

    1. Добрый день, Елена! Самое логичное – посмотреть у производителя. Ссылка в статье есть: https://products.espressif.com/#/product-selector?names=
      Там есть в таблице и pico-v3, и pico-v3-02. У 02 меньше GPIO, но больше Flash и есть встроенная PSRAM
      Flash (MB): 4 / 8
      PSRAM (MB): 0 / 2
      GPIO: 31 / 29
      Certification: BT Certification / BT SIG

  5. Здравствуйте! На официальном сайте esp32 появился новый чип esp32-h, возможно, стоит его упомянуть в статье. Спасибо.

  6. Кувалдыч

    Спасибо за обзор и другие полезные статьи. Очень помогло как новичку. А то мы сначала покупаем, а потом тока разбираемся, что купили 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *