ESP32: чипы, модули, платы.
Добрый день, уважаемый читатель! В данной статье мы поговорим про усы, лапы, и хвост ; ( тьфу, крылья, ноги, хвосты, опять не то ) чипы, модули и платы ESP32 .
- чип — собственно микроконтроллер (или core в документации espressif, он же
ЖораSoC < System On Crystal — система на одном кристалле >, он жеГогаMCU < MicroController Unit> ); то есть собственно микросхемка без антенны, кварцевого резонатора, микросхемы FLASH-памяти и прочей обвязки - модуль — готовый микромодуль с напаянными внутри чипом, памятью, антенной или разъемом; чаще всего закрыт экраном с маркировкой
- плата — как правило под этим термином я буду понимать различные отладочные платы с установленным модулем , USB-конвертором и стабилизатором
Линейки чипов Espressif
Если обратиться к сайту производителя , то можно увидеть, что компания сейчас выпускает четыре линейки продукции: ESP8266, ESP32, ESP32-S и ESP32-C.
- ESP8266 — предшественник ESP32 на базе 32-разрядного RISC-процессора Tensilica® L106 , с максимальной тактовой частотой 160 МГц. Я пользовался модулями этой линейки несколько лет, на мой взгляд, модуль получился не очень удачным, особенно в первое время (ESP-01 и т.д.). Производитель заявляет поддержку FreeRTOS, но поддержка эта «так себе». Хотя для опытов с Arduino и WiFi вполне сгодится. Мы не будем его рассматривать.
- ESP32 — » классический » ESP32. создан на базе двухъядерного процессора Xtensa® 32bit LX6 (или одноядерного в некоторых случаях) с максимальной тактовой частотой 240 МГц. Работает с использованием относительно старых протоколов WiFi 2.4 MHz. Самая популярная линейка среди самодельщиков, так как его возможностей хватает «с избытком», множество предложений на Aliexpress, а цена невелика (даже по сравнению с ESP8266).
- ESP32-S(2,3) — относительно новая линейка ESP32 базе процессора следующего поколения Xtensa® 32-bit LX7 с максимальной тактовой частотой 240 МГц. В качестве основных преимуществ по сравнению с предыдущей линейкой производитель отмечает улучшенную криптографию (шифрование FLASH памяти, безопасную загрузку прошивки, защиту от атак) и поддержку современных беспроводных протоколов связи. Имеет большее количество GPIO, чем классическая ESP32. Судя по платам, имеющимся в продаже на Aliexpress, модули имеют поддержку USB (ttyACM0) непосредственно в чипе.
- ESP32-C(2,3,6) — недорогая линейка на базе одноядерного RISC-V процессора, предназначенная в первую очередь для встраиваемых устройств типа «умных розеток» и «умных лампочек». Это скорее не «урезанный» ESP32, а «усовершенствованный» ESP8266. В отличие от ESP8266 новый SoC имеет поддержку безопасной загрузки, флэш-шифрования и современных беспроводных стандартов связи. Имеет меньшее количество GPIO, чем классическая ESP32, (но у нее и назначение другое). Судя по платам, имеющимся в продаже на Aliexpress, модули имеют поддержку USB (ttyACM0) непосредственно в чипе (но это не точно).
В данной статье я буду рассматривать в основном чипы и модули «базовой линейки» 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 и сейчас 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 выше, чем обычных, а единственная отладочная плата имеет совершенно «конский» ценник.
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 обозначает модули с печатной антенной. Буква D на конце маркировки модуля указывает на чип ESP32-D0WD, буква E указывает на новый чип ECO V3 ( ESP32-D0WD-V3 ). На первый взгляд, существенных отличий модулей с буквой Е по от предыдущих моделей нет. Но если взглянуть на контакты модуля, можно заметить, что часть контактов, задействованных в QSPI интерфейсе (через который может подключаться внешняя FLASH память), не подключена. Но для абсолютного большинства «любительских» применений эти контакты всё равно не имеют никакого значения, так что разницы вы не заметите.
- Буква U (для WROOM) или I (для WROWER) на конце маркировки модуля указывает на то, что вместо печатной антенны установлен разъем U.FL / IPEX для подключения внешней антенны . Модули с печатной антенной MIFA (Meandered Inverted-F Antenna) удобно применять, когда в точке размещения модуля сигнал WiFi достаточно сильный (или вообще не требуется подключение к сети). Модули с разъемом U.FL / IPEX (имеющие букву U в названии) подойдут, если вы хотите установить ESP32 в металлическом боксе или если уровень сигнала WiFi оставляет желать лучшего (во дворе, в гараже и т.д.). Но антенну придется прикупить отдельно.
Внимание! На модуле с внешней антенной нельзя активировать WiFi, если антенна не подключена — можно спалить передатчик. Я уже это проверил и убедился — это действительно так.
В качестве иллюстрации приведу картинки с одного известного сайта наших постоянных поставщиков: