Первые впечатления от знакомства с микроконтроллерами ESP32-C3 SuperMini
Я давно хотел ознакомиться с распространенными микроконтроллерами ESP32 и где-то с конца прошлого года по текущее время на Aliexpress назаказывал себе несколько дешевых ESP32-C3 SuperMini от различных производителей, а потом еще и купил ESP32-C6 и ESP32-S3 хотя их я пока еще не опробовал и поэтому в статье речь будет идти только о ESP32-C3 (в форм-факторе SuperMini).
Причины моего интереса к ESP32-C3
Вообще до недавнего времени мне вполне хватало Raspberry Pico и поэтому купленные микроконтроллеры ESP32 какое-то время лежали без дела. Более активно обратить внимание на ESP32-C3 меня вынудила необходимость работы с WiFi/Bluetooth вкупе с необходимостью реализовать более продолжительную автономную работу от аккумуляторов и всё это в недорогом исполнении.
Конечно есть Raspberry Pico W у которой тоже есть WiFi/Bluetooth и для многих задач это отличный микроконтроллер. Но версия с WiFi/Bluetooth не так массово продается, стоимость ее довольно ощутимая и имеет довольно высокое потребление даже в самом экономичном состоянии, а также мне нигде не встречалась в компактном исполнении.
ESP32-C3 и Micropython
Начал я знакомиться с ESP32-C3 используя MicroPython который на этих платах хорошо поддерживается. Прошивается Micropython на ESP32-C3 немного сложнее чем на Pico. Если в Pico процесс прошивки делался легко благодаря UF2 простым копированием на псевдофлешку файла, то в ESP32 это делается с помощью утилиты esptool. Весь процесс для ESP32-C3 подробно расписан на странице загрузки соответствующей прошивки Micropython.
Для работы esptool в системе должен быть установлен Python. С современными версиями Python в комплекте идет менеджер пакетов pip, с помощью которого ставится утилита esptool командой pip install esptool.
Сразу подскажу тем, кто с Python вообще не связывался. Бывает так что система не находит pip из-за того что путь до него не прописан в переменных окружения (а именно в PATH). В таком случае команду можно выполнить так (пример для Windows): c:\{путь до директории интерпретатора}\python.exe -m pip install esptool. А потом уже по той же аналогии вызывать установленный esptool, например: c:\{путь до директории интерпретатора}\python.exe -m esptool.
Разработка из под VSCode
Что касается IDE то программировать на Micropython под ESP32-C3 можно в VSCode используя плагин MicroPico который помимо Raspberry Pico поддерживает и некоторые ESP32 (в т.ч. и ESP32-C3). Поддержка плагином микроконтроллеров ESP32 экспериментальная но работает вполне неплохо, хотя иногда бывали глюки с повторным соединением при аппаратном сбросе микроконтроллера. Но подобные проблемы обычно пропадали после перезагрузки VSCode.
В остальных аспектах Micropython вполне прекрасно работает на ESP32-C3. Есть конечно определенная ограниченность в плане функциональности, но точно такая же ситуация есть и у других микроконтроллеров, в т.ч. и у Raspberry Pico. Всё-таки использование C/С++ и официальных SDK дает больше контроля и возможностей.
Впечатления от ESP32-C3 SuperMini
На первый взгляд ESP32-C3 SuperMini мне довольно быстро понравились. Чип идет сразу с поддержкой wifi (2.4 ГГц) и Bluetooth (5.0 Low Energy) и есть очень полезный и нужный мне режим DeepSleep с очень низким потребление энергии, а у Pico с этим были явные проблемы.
Памяти более чем достаточно (~400Kb SRAM, флеш на 4mb), процессор производительный (RISC-V на 160Mhz). Конечно как и у RP2040 нет аппаратного FPU для эффективных вычислений чисел с плавающей запятой, но это не всегда критично.
Платы ESP32-C3 очень компактные и с односторонним расположением компонентов и с 16 выведенными пинами по бокам. На фотографиях виден размер этих плат в сравнении с обычной пятирублевой монетой. Две платы у меня там лежат с уже припаянными пинами, а третьей платой, на которой присутствует разъем под антенну, пока еще не занимался. Все эксперименты с WiFi/Bluetooth делал только на самой левой плате, а на остальных особо не проверял.
Официальная документация по ESP32-C3 оказалась довольно хорошей. да и вообще в сети полно информации о нюансах этих микроконтроллеров вследствии их популярности. Платы широкодоступны в продаже и стоят около 150-200 рублей (на Aliexpress такие цены на момент написания статьи)!
Некоторые нюансы ESP32-C3 SuperMini
Не могу не упомянуть что качество этих плат ESP32-C3 SuperMini имеет определенную экземплярность. Я еще когда заказывал, узнал что у многих есть проблемы с работой WiFi/Bluetooth вроде бы из-за того что антенна слишком близко расположены к чипу и из-за этого помехи и очень плохой сигнал. Поскольку проблема нередкая я заказал несколько таких плат от разных производителей, среди которых одна имеет разъем под внешнюю антенну, если будут совсем уж сложности.
Я пока в основном пользовался только одной платой и с ней к счастью в процессе экспериментов проблем с WiFi не было. Сигнал был хороший, хотя допускаю что мне повезло с экземпляром. Остальные платы пока еще не проверял.
К сожалению на этих платах не стоит и мечтать о встроенных DC-DC (как это есть на обычных Raspberry Pico), ибо там стоит самый обычный LDO, хотя и у RP2040-Zero с которым я познакомился недавно тоже стоит LDO.
Ну и опять же большинство подобных дешевых плат часто комплектуются какими-то стальными штырями (отлично магнитятся) которые немного затруднительно паяются с помощью обычной спирто-канифоли (ФКСП) и желательно использовать более эффективный флюс.
Заключение
ESP32-C3 (и в частности SuperMini) за довольно низкую цену при своих возможностях являются отличными микроконтроллерами, поэтому я не удивлен что они всё чаще встречаются в недорогих бытовых устройствах, со всяким функционалом умного дома и беспроводной передачей. А ведь это еще самая младшая модель. Есть еще и ESP32-C6 у которого даже есть встроенная поддержка Zigbee для всяких умных домов. Но с ESP32-C6, как и с ESP32-S3 я пока еще не знаком и попробую позже.
Конечно это всё был очень поверхностный и ознакомительный опыт но в будущем надеюсь более глубоко познать эти микроконтроллеры. Также в дальнейшем планирую ознакомиться еще и с знаменитыми STM32 для расширения профессионального кругозора и понимания возможностей и ограничений каждого из этих микроконтроллеров. Да и просто это реально очень интересно.