В 2020 году компания Espressif представила три новых чипа: ESP32-S2, ESP32-S3 и ESP32-S3.
Если S3 это новый топовый контроллер ESP32, а C3 представляет новую архитектуру RISC-V, то S2 — это явный «CELERON» в мире ESP — с низкой ценой и обрезанным функционалом.
ESP32-S2 построен на одноядерном микропроцессоре Xtensa LX7 нового поколения, имеет интегрированную поддержку USB и некоторые дополнительные интерфейсы (камера, жидкокристаллический дисплей). Зато он кроме одного ядра лишился поддержки Bluetooth, Ethernet и некоторых других (видимо мало востребованных по мнению производителя) функций.
На рынке сейчас доступны собственно микросхемы ESP32-S2, несколько SOC модулей и отладочных плат. Из производителей, кроме Espressif отметилась известная компания AI-Thinker, которая выпустила модуль со странным название ESP-12K (видимо как замену ESP8266 ESP12-E и ESP12-S) и E103-W07 от EBYTE.
ESP-12K есть в двух трудноразличимых вариантах вариантах. ESP-12K(00) — полный аналог ESP32-S2-WROOM и ESP12K(08) — аналог ESP32-S2-WROVER с установленными 8Мб PSRAM. Все модули имеют полностью совместимые корпуса и распиновку, что позволяет распаивать их на одни и те же печатные платы.
Для экспериментов я на всякий случай заказал одну готовую плату от AI-Thinker, ,
модуль AI-Thinker ESP-12K (что скромно затерялся у продавца среди ESP8266 плат)
и ESP32-S2-WROOM от Espressif.
E103-W07 мне во время не попался, может быть при следующей закупке посмотрю ни эти модули.
Что интересно, но на всех отладочных платах ESP32-S2 установлена микросхема USB/UART CH340 или что-то подобное на UART0б что при наличии аппаратного USB наводит на размышления.
На данный момент занимаюсь шлюзом LoRa/WiFi и под это дело вместе с другими платками заказал и для ESP32-S2. Заодно решил проверить подключение по USB напрямую к ESP.
Схема обвязки ESP32-S2 минимальна. USB разъем с защитной сборкой диодов, две кнопки на EN и GPIO0 и стабилизатор на 3.3В
У меня на плате живет еще RFM95 модуль с PCB антенной от TI DN024 и три светодиода. Ширину платы определила PCB антенна
Итак, приступаю к тестированию. Подключаю через внешний переходник USB-UART
в порт идет отладочная информация. Все работает. Для поддержки USB нужен специальный загрузчик TINYUF2 от Adafruit. Захожу на страничку готовых сборок загрузчика и скачиваю файл tinyuf2-muselab_nanoesp32-s2_wroom-0.7.0.zip
Распаковываю архив и буду работать с полным файлом прошивки combibde.bin. Для загрузки я буду использовать esptool.py от Arduino core for ESP32, который установлен у меня на компьютере. Перевожу ESP в режим загрузчика, для этого жму кнопку BOOT(GPIO) и RESET(EN).
Ввожу c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 chip_id и получаю информацию о чипе
Ввожу c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 flash_id
Ну и наконец набираю команду прошивки загрузчика: c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 write_flash 0x0 combined.bin
Нажимаю RESET и о чудо, в системе появляется USB диск на котором лежит файл с прошивкой, а после нажатия BOOT/RESET в системе появляется новый ком порт
Теперь можно попробовать залить скетч через USB. В последней версии Arduino core for ESP32 включена поддержка чипов S2 и C3. Выбираю плату ESP32S2 Dev Module И вижу интересные пункты меню в настройке платы:
USB CDC (Communications Device Class)- включает виртуальный COM-порт, в который можно производить загрузку без нажатия BOOT/RESET, а также обмениваться информацией через интерфейс Serial в скетче. При этом в системе появляется последовательно два порта, один для прошивки (какой появлялся при нажатии BOOT/RESET), второй для ввода/вывода Serial интерфейса при работе. Данный режим похож на работу с платой Arduino Leonardo на Atmega32U4.
USB Firmware MSC (Mass Storage Class) — создает в системе USB диск, через который мы получаем прямой доступ к прошивке файла. То есть для загрузки прошивки мне достаточно скомпилировать файл (Экспорт бинарного файла в Arduino IDE), переименовать этот файл в FIRMWARE.BIN и переписать его на этот USB диск
USB DFU (Device Firmware Update) — загрузка прошивки через DFU утилиты. Этот метод загрузки широко практикуется в микропроцессорах STM32
Работа через USB порт имеет некоторые особенности. После каждой перезагрузки контроллера в системе передергиваются USB устройства и если в этот момент устройства заняты (открыт COM порт или USB диск), до система без зазрения совести создает последовательный порт с новым номером или диск с новой буквой
Ну и нужно учитывать, что сам загрузчик находится в Flash и может быть затерт, и для его восстановления опять потребуются манипуляции с esptool
А что у нас с ESP32-S в мире LINUX? Подключаю свою плату с ESP32-S2 по USB к своему старенькому нетбуку с Debian 10, на котором крутится у меня «умный дом» и вижу два устройства /dev/ttyACM0 и /dev/sdb соответствующие ком порту и USB-диску
Осталось проверить, насколько богат внутренний мир USB ESP32-S2. В новой версии ESP32 core for Arduino IDE есть целый каталог примеров USB, которые работают только с ESP32-S2
В этих примерах, как создавать эмулятор USB-мыши, USB-клавиатуры, джойстика, записывать своего вендора в USB-устройствах, создавать доступ к USB Serial порту и USB MSC диску. В общем, получается этакий мега-леонардо с WiFi
В довершении проверяю работоспособность своей платы: модуль RFM95 завелся на библиотеке LoRa от сандипа.
В общем первое знакомство с ESP32-S2 прошло вполне успешно. В целом, чип мне понравился, каких то особых глюков я не нашел и думаю, что в дальнейшем буду его использовать там где нужна невысокая цена и работа с USB.
Планирую в ближайшее время провести тестирование ACD 13бит, и прочих фич нового чипа ESP. «Но это уже другая история» (C)
Спасибо. Очень интересно и познавательно. Проект шлюза LoRa/WiFi надо предполагать коммерческий?
Да. Коммерческий. Привязанный к системе Thigsboard
Подскажите, как настроить сенсорный вход. Функция Touch Interrupt, как на обычном esp32, здесь не работает
Плата wemos s2 mini