ESP32, Arduino, Raspberry Pi или STM32: что выбрать под задачу
Вопрос «что мощнее» здесь почти всегда неправильный. Raspberry Pi обгоняет ESP32 по частоте в десять раз, но проигрывает ему в задаче, где надо надёжно дёргать ножкой каждые сто микросекунд. Выбирать стоит не по цифрам в характеристиках, а по тому, нужна ли устройству операционная система и насколько предсказуемым должно быть время реакции.
Главное разделение: микроконтроллер или компьютер
Все кандидаты делятся на две принципиально разные группы.
Микроконтроллеры — Arduino, ESP32, STM32, Raspberry Pi Pico. Ваш код — единственная программа на чипе, он стартует за миллисекунды и выполняется ровно так, как написан. Питание можно снять в любой момент: портить нечего.
Одноплатные компьютеры — Raspberry Pi и подобные. Внутри полноценный Linux с файловой системой, планировщиком и сотней фоновых процессов. Загрузка занимает десятки секунд, а выдёргивание питания рано или поздно испортит карту памяти.
Из этого следует почти всё остальное.
Сравнение
| Arduino UNO | ESP32 | Raspberry Pi Pico | STM32 (F1/F4) | Raspberry Pi 5 | |
|---|---|---|---|---|---|
| Ядро | 8-бит AVR | 2 × Xtensa LX6 | 2 × Cortex-M0+ | Cortex-M3 / M4 | 4 × Cortex-A76 |
| Частота | 16 МГц | 240 МГц | 133 МГц | 72–180 МГц | 2,4 ГГц |
| ОЗУ | 2 КБ | 520 КБ | 264 КБ | 20–192 КБ | 4–16 ГБ |
| Флеш | 32 КБ | 4 МБ и больше | 2 МБ | 64 КБ – 1 МБ | Карта microSD |
| Операционная система | Нет | Нет (есть FreeRTOS) | Нет | Нет | Linux |
| Wi-Fi и Bluetooth | Нет | Есть | Только у Pico W | Нет | Есть |
| Время старта | Мгновенно | Мгновенно | Мгновенно | Мгновенно | Десятки секунд |
| Потребление в работе | ~20 мА | 80–260 мА | ~20 мА | ~30 мА | 3–5 Вт |
Цифры по ОЗУ и флешу у STM32 сильно зависят от конкретной модели — семейство очень широкое, от копеечных F0 до F7 с сотнями килобайт.
Реальное время
Это то, ради чего микроконтроллеры существуют. Когда ваш код на ESP32 говорит «установить высокий уровень», задержка составляет считанные микросекунды, и главное — она предсказуема и ограничена сверху. Разброс есть и здесь: под скетчем работает FreeRTOS, срабатывают прерывания, на втором ядре крутится Wi-Fi. Но всё это вы контролируете приоритетами задач, а для по-настоящему жёстких требований работу вообще снимают с процессора и отдают аппаратному таймеру или ШИМ-контроллеру.
На Raspberry Pi под Linux между вашей программой и выводом стоит планировщик задач. Обычно задержка микроскопическая, но раз в несколько секунд система решит заняться чем-то своим, и ваш импульс уедет на десятки миллисекунд. Для мигания светодиодом неважно, для шагового двигателя или адресной светодиодной ленты — фатально.
Практический вывод: всё, что связано с точным временем и управлением моторами, — задача микроконтроллера. Робот-манипулятор, ЧПУ, полётный контроллер, генератор импульсов делают на ESP32 или STM32, а не на Pi.
Когда нужен Raspberry Pi
Одноплатный компьютер оправдан там, где нужны вещи, которых у микроконтроллера нет принципиально:
- Обработка видео и компьютерное зрение. Распознавание лиц или объектов требует гигабайтов памяти и библиотек вроде OpenCV.
- Полноценная сеть и веб. Не «отдать страничку», а база данных, HTTPS с сертификатами, несколько сервисов сразу.
- Файлы и большие данные. Логи за год, фотоархив, медиасервер.
- Язык и экосистема. Python со всеми пакетами, Node.js, Docker.
Частая и удачная схема — связка: Raspberry Pi считает и общается с внешним миром, а подключённый к нему по USB или UART микроконтроллер отвечает за моторы и датчики в реальном времени. Каждый занят тем, что умеет.
ESP32 против Arduino
Строго говоря, сравнение некорректное: Arduino — это марка плат и среда разработки, а ESP32 — чип, который в этой же среде программируется. Но на практике под «Arduino» понимают классические платы на AVR — UNO, Nano, Mega.
Разница между ними колоссальная. ESP32 быстрее в пятнадцать раз, памяти у него в двести шестьдесят раз больше, и он умеет Wi-Fi и Bluetooth из коробки. При этом стоит он обычно дешевле Arduino UNO.
Причины всё-таки взять AVR остаются:
- Питание 5 вольт. ESP32 работает от 3,3 В, и множество готовых модулей и щитов рассчитаны на пятивольтовую логику. Согласование уровней — лишняя деталь и лишняя ошибка.
- Обилие учебных материалов. Почти любой урок для новичка написан под UNO.
- Простота. Один поток, никакого Wi-Fi-стека в фоне, ничего не мешает.
- Совместимость со щитами. Плат расширения под форм-фактор UNO выпущено огромное количество.
Если проекту не нужна сеть и хватает двух килобайт ОЗУ — AVR отлично работает. Как только появляется Wi-Fi, дисплей или обработка данных, выбор очевиден.
ESP32 против STM32
Здесь конкуренция настоящая, и выбор зависит от приоритетов.
STM32 сильнее в периферии и предсказуемости. Богатый набор таймеров, несколько независимых АЦП с высокой точностью, аппаратный CAN, детерминированное поведение без фонового радиостека. Это выбор для промышленной автоматики, приводов и всего, что должно работать годами без сюрпризов.
ESP32 сильнее в связи и удобстве. Wi-Fi и Bluetooth встроены, памяти намного больше, порог входа ниже: Arduino IDE вместо связки STM32CubeIDE и HAL. Для устройства, которое должно попадать в сеть, альтернатив почти нет.
Отдельный аргумент за STM32 — доступность документации и промышленный температурный диапазон у части моделей. Отдельный аргумент за ESP32 — цена готовой платы с антенной и мостом USB.
Raspberry Pi Pico
Pico часто путают с «настоящей» Raspberry Pi, хотя это микроконтроллер, а не компьютер. Общее у них только название.
Сильная сторона Pico — блоки PIO: программируемые конечные автоматы, которые формируют сигналы независимо от процессора. Ими реализуют протоколы, которых нет в железе, — от адресных лент до нестандартных шин. У ESP32 такого механизма нет.
Слабая сторона — беспроводная связь есть только у версии Pico W, и её экосистема заметно моложе. Библиотек под ESP32 в разы больше.
Что выбрать
| Задача | Выбор |
|---|---|
| Первые шаги, уроки, школа | Arduino UNO |
| Датчик, отправляющий данные в сеть | ESP32 или ESP32-C3 |
| Умный дом, устройство с веб-интерфейсом | ESP32 |
| Управление моторами, робот, ЧПУ | ESP32 или STM32 |
| Промышленная автоматика, CAN, точный АЦП | STM32 |
| Нестандартные протоколы, точные сигналы | Raspberry Pi Pico |
| Камера, распознавание, машинное обучение | Raspberry Pi |
| Медиасервер, база данных, несколько сервисов | Raspberry Pi |
| Питание от батарейки месяцами | ESP32-C6 или STM32 в режиме сна |
Если сомневаетесь и проект связан с электроникой, а не с обработкой данных, — берите ESP32. Он покрывает диапазон задач от простого датчика до устройства с веб-интерфейсом, программируется в той же Arduino IDE и стоит дешевле большинства альтернатив. Ошибиться с ним сложно.
Чего не стоит делать
Брать Raspberry Pi ради GPIO. Если из всего компьютера нужны только выводы — это переплата, лишнее потребление и риск испортить карту при отключении питания.
Брать Arduino UNO под Wi-Fi. Связка UNO с модулем ESP8266 через UART — путь, пройденный тысячами людей до появления ESP32. Сегодня он не имеет смысла: ESP32 дешевле и делает всё сам.
Выбирать по частоте процессора. 240 МГц против 16 МГц ничего не говорит о том, успеет ли устройство отреагировать на прерывание. Куда важнее, сколько ещё кода крутится параллельно и есть ли между вашей программой и железом операционная система.
Что дальше
- Если выбрали ESP32 — Какую ESP32 выбрать.
- Сколько памяти реально нужно — Память Arduino и ESP32.
- С чего начать код — Язык Arduino.