Руководства · 10 мин чтения

Arduino или ESP32: главные отличия и что выбрать

Сравнение Arduino и ESP32: скорость, ОЗУ, Wi-Fi, логика 5 V и 3,3 V, АЦП, пины и время работы от батареи, а также сравнение с Pico, общий код и выбор платы по типу проекта.

Arduino или ESP32? Короткий ответ такой: если проекту нужны Wi-Fi, Bluetooth, интернет или серьёзная вычислительная мощность, выбирай ESP32; если ты изучаешь основы электроники, хочешь без хлопот подключать датчики и модули на 5 V и повторять любой урок один в один, выбирай Arduino Uno. Обе платы программируются в Arduino IDE одними и теми же командами digitalWrite, analogRead и Serial. Настоящая разница — в железе: скорость, память, рабочее напряжение, пины и беспроводная связь.

В этом руководстве сравним Arduino Uno R3 с самой распространённой платой ESP32, ESP32 DevKit (с модулем ESP-WROOM-32), на реальных цифрах: что на практике значит разница в процессоре и памяти, на какие модули влияет выбор между 5 V и 3,3 V, как меняются аналоговый вход и PWM и сколько часов каждая плата проработает от батареи? Затем запустим один и тот же скетч на обеих платах, коротко посмотрим на Raspberry Pi Pico и сведём в таблицу, какую плату выбрать для каждого типа проекта.

Отладочная плата Arduino Uno R3
Arduino Uno R3: плата на 5 V с 8-битным ATmega328P, которой новички пользуются чаще любой другой.

Короткий ответ: что и когда выбрать?

Твоя ситуацияРекомендуемая платаПочему?
Ты только начинаешь заниматься электроникойArduino Uno5 V, выносливые пины, больше всего примеров и уроков
Нужен Wi-Fi или интернетESP32Wi-Fi встроен, дополнительный модуль не нужен
Связь с телефоном по BluetoothESP32Встроены классический Bluetooth и BLE
Будут модули и шилды на 5 VArduino UnoПреобразователь уровней не нужен
Дисплеи, много светодиодов, большие данныеESP32520 КБ ОЗУ (у Uno 2 КБ)
Датчик, который месяцами работает от батареиESP32 (энергоэффективная плата)Около 10 µA в глубоком сне
Программирование на PythonRaspberry Pi PicoОчень зрелая поддержка MicroPython
Минимальный бюджетESP32 или PicoГораздо больше возможностей за цену клона Uno

Что такое Arduino Uno и ESP32?

Arduino Uno R3 — самая известная плата платформы Arduino, разработанной в Италии. Её сердце — 8-битный микроконтроллер ATmega328P с частотой 16 MHz. Плата работает от 5 V, а расположение её пинов не меняется уже много лет, поэтому с ней совместимы сотни шилдов (плат расширения, которые вставляются сверху), книг и курсов. Простая конструкция позволяет точно видеть, что происходит: если записать в пин HIGH, на нём действительно будет 5 V. Новая Uno R4 получила 32-битный процессор Arm на 48 MHz и 32 КБ ОЗУ, а в версии R4 WiFi на плату добавлен ESP32-S3 для беспроводной связи; в этой статье под «Uno» понимается R3, которая до сих пор встречается чаще всего. Чтобы лучше познакомиться с платформой, прочитай статью Что такое Arduino?.

Отладочная плата ESP32 DevKit (ESP-WROOM-32)
ESP32 DevKit: в модуле ESP-WROOM-32 под металлическим экраном находятся двухъядерный процессор, Wi-Fi и Bluetooth; логика платы — 3,3 V.

ESP32 же — это 32-битная система на кристалле (SoC), которую Espressif выпустила в 2016 году, с Wi-Fi и Bluetooth на одном чипе. Плата, которую ты держишь в руках, — отладочная плата с этим чипом: на ней есть преобразователь USB–UART, стабилизатор на 3,3 V и кнопки EN и BOOT. Важная деталь: ESP32 — не Arduino, но благодаря ядру Arduino от Espressif она программируется в Arduino IDE точно так же. Для настройки и первых проектов хорошо начать со статьи Что такое ESP32?.

Большая сравнительная таблица: Arduino Uno, ESP32 и Raspberry Pi Pico

ПараметрArduino Uno R3ESP32 DevKit (WROOM-32)Raspberry Pi Pico
ПроцессорATmega328P, 8-битный AVRXtensa LX6, 32 бита, два ядраRP2040, 32-битный Arm Cortex-M0+, два ядра
Тактовая частота16 MHzДо 240 MHz133 MHz
ОЗУ (SRAM)2 КБ520 КБ264 КБ
Память программ (flash)32 КБ (0,5 КБ занимает загрузчик)Обычно 4 МБ2 МБ
EEPROM1 КБНет (эмулируется во flash)Нет (файловая система во flash)
Логическое напряжение5 V3,3 V (5 V не выдерживает)3,3 V (5 V не выдерживает)
ПитаниеUSB 5 V или 7–12 V (разъём/VIN)USB 5 V или 5 V на VINUSB 5 V или 1,8–5,5 V на VSYS
Доступные GPIO20 (14 цифровых + 6 аналоговых)Около 25 (без пинов с ограничениями)26
Аналоговые входы (АЦП)6 каналов, 10 бит18 каналов, 12 бит (при включённом Wi-Fi только ADC1)3 канала, 12 бит
Аналоговый выход (ЦАП)Нет2 канала, 8 битНет
PWM6 пинов, 8 бит, 490/980 Hz16 каналов, настраиваемая частота, почти на любом пине16 каналов, на всех GPIO
Wi-FiНет802.11 b/g/n, 2,4 GHzНет (есть у Pico W)
BluetoothНетBluetooth 4.2: Classic + BLEНет (есть у Pico W)
UART / I2C / SPI1 / 1 / 13 / 2 / 2 (доступны пользователю)2 / 2 / 2
Ток на пинРекомендуется 20 mA (максимум 40 mA)Рекомендуется около 20 mA4 mA по умолчанию (настраивается до 12 mA)
Типичный ток платыОколо 45 mA50–130 mA в среднем с Wi-Fi, пики 240 mAОколо 25 mA
Самый глубокий сонЧип меньше 1 µA, плата около 30 mAЧип около 10 µA в глубоком снеПлата около 1 mA в режиме dormant
ПрограммированиеArduino C/C++Arduino C/C++, ESP-IDF, MicroPythonMicroPython, C/C++ SDK, Arduino
Примерная ценаОригинал 25–30 $, клон 5–10 $Клон DevKit 4–8 $4 $ (Pico W 6 $)

Процессор и память: что значат цифры на практике?

Процессор Uno выполняет около 16 миллионов инструкций в секунду и за раз работает с 8-битными числами; одна операция с 32-битным long или float занимает десятки инструкций, а аппаратного блока вычислений с плавающей точкой (FPU) нет. ESP32 работает на 240 MHz с 32-битными числами и имеет FPU одинарной точности. Поэтому в расчётах, где много float, ESP32 может быть быстрее Uno в десятки и даже сотни раз. Когда мигаешь светодиодом или читаешь датчик несколько раз в секунду, разницы не заметно, но она становится решающей для фильтрации, обработки звука, шифрования или расчёта анимаций для сотен светодиодов. Маленький совет: FPU у ESP32 работает только с float, а операции с double выполняются программно и заметно медленнее.

С разницей в памяти столкнёшься гораздо чаще. 2 КБ ОЗУ у Uno делятся между твоими переменными, буферами Serial и местом, которое резервируют библиотеки. Когда ОЗУ заканчивается, компилятор обычно не предупреждает: программа случайным образом зависает или ведёт себя странно. Типичные ситуации, в которых у Uno быстро кончается ОЗУ:

  • OLED-дисплей: один только буфер кадра дисплея SSD1306 128×64 занимает 1 КБ, половину ОЗУ (см. OLED-дисплей на Arduino).
  • Адресные светодиоды: каждый светодиод WS2812B занимает 3 байта, так что ленте на 300 светодиодов нужно 900 байт (см. WS2812B NeoPixel).
  • Данные из интернета: JSON от сервиса погоды может весить несколько КБ; в Uno он не помещается, а на ESP32 обрабатывается легко.
  • Склейка строк: объекты String, которые постоянно растут внутри цикла, дробят маленькую ОЗУ и через несколько часов могут привести к сбою.
  • SD-карта: библиотека SD резервирует буфер сектора на 512 байт; вместе с библиотеками дисплея и датчиков предел наступает быстро.

Разница в напряжении: 5 V против 3,3 V

Это отличие упускают чаще всего. Пины Uno работают с логикой 5 V: выход HIGH — это 5 V, а входы выше 3 V считаются HIGH. Пины ESP32 работают с логикой 3,3 V и не выдерживают 5 V. Если подать на пин 5 V, ESP32 может погибнуть не сразу, но внутренние защитные диоды получают нагрузку, и чип может выйти из строя со временем или разом. В обратную сторону проблем меньше: сигнал HIGH 3,3 V от ESP32 едва перешагивает порог Uno в 3 V, поэтому обычно читается как HIGH, но и это не считается надёжной схемой. Вот как распространённые модули ведут себя с каждой платой:

МодульС Arduino UnoС ESP32Примечание
Датчик расстояния HC-SR04НапрямуюДелитель напряжения на линии ECHOПин ECHO выдаёт 5 V
Модуль реле на 5 VНапрямуюБольшинство работает, некоторые не выключаютсяУ модулей с активным низким уровнем HIGH 3,3 V может не полностью отпустить реле
Сервопривод SG90НапрямуюСигнал напрямую, питание от 5 VНе питай сервопривод от пина 3V3 платы
DHT11 / DHT22НапрямуюНапрямую на 3,3 VРаботает при обоих напряжениях
I2C LCD (16x2)НапрямуюПитание 5 V, желателен преобразователь уровнейПодтягивающие резисторы модуля тянут линии к 5 V
SSD1306 OLEDНапрямуюНапрямую (3V3)На плате есть стабилизатор
Лента WS2812BНапрямуюОбычно работаетДля гарантированного результата нужен преобразователь уровней, например 74AHCT125
MPU6050 (GY-521)НапрямуюНапрямую (3V3)На плате есть стабилизатор на 3,3 V
Если подключаешь к ESP32 модуль, который выдаёт сигналы 5 V, поставь между ними делитель напряжения или преобразователь уровней. Например, с резистором 1 kΩ последовательно в сигнальной линии и 2 kΩ между пином ESP32 и GND напряжение 5 V падает до 5 × 2 / (1 + 2) = 3,33 V. На ESP32 всегда подключай аналоговые источники, например потенциометр, к пину 3V3, а не к пину 5V.

Пины, аналоговый вход и PWM

На Uno все 20 пинов ведут себя примерно одинаково: каждый может быть входом или выходом, спокойно отдаёт до 20 mA и не влияет на загрузку. У ESP32 DevKit на бумаге пинов больше, но они не равноценны: GPIO 6–11 соединены со встроенной flash-памятью и недоступны, GPIO 34–39 работают только на вход, а GPIO 0, 2, 5, 12 и 15 при загрузке должны быть на определённых уровнях. На практике можно спокойно пользоваться примерно 20–25 пинами. Карту пинов своей платы смотри в утилите Распиновка.

Для аналогового входа 10-битный АЦП Uno делит диапазон 0–5 V на 1024 шага; каждый шаг — около 4,9 mV, а показания довольно линейны. 12-битный АЦП ESP32 даёт 4096 шагов, но с настройками по умолчанию не различает значения ниже примерно 0,15 V и выше 3,1 V, шумит, а пины ADC2 при включённом Wi-Fi вообще не работают. Если на ESP32 нужно точное напряжение, используй analogReadMilliVolts() и подключай датчик к пинам ADC1 (GPIO 32–39). По PWM впереди ESP32: Uno даёт 8-битный PWM только на 6 пинах с частотой 490 или 980 Hz, а ESP32 может вывести 16 каналов с настраиваемыми частотой и разрешением почти на любой выходной пин. Кроме того, у неё есть 2 ЦАП (GPIO 25 и 26), которые выдают настоящее аналоговое напряжение. Основы PWM разобраны в статье Что такое PWM?.

Один и тот же скетч на обеих платах: что меняется?

Хорошая новость: всё, что изучено на Arduino, подходит и для ESP32. Скетч ниже читает потенциометр, выводит напряжение в монитор порта и включает встроенный светодиод, когда значение переходит середину. Строка #if defined(ESP32) определяет, для какой платы компилируется код, и меняет только номер пина, опорное напряжение и разрешение АЦП. Подключи крайние ножки потенциометра к 5V и GND на Uno или к 3V3 и GND на ESP32, среднюю ножку — к A0 на Uno или к GPIO 34 на ESP32, затем открой монитор порта на скорости 115200 бод. Главные отличия за пределами кода собраны в таблице.

C++ (Arduino IDE)
1// Aynı kod Uno ve ESP32'de çalışır / The same sketch runs on Uno and ESP32
2#if defined(ESP32)
3const int LED_PIN = 2;        // DevKit dahili LED / DevKit onboard LED
4const int POT_PIN = 34;       // ADC1 pini, Wi-Fi ile de çalışır / ADC1 pin, works with Wi-Fi too
5const float VREF = 3.3;       // ESP32 pinleri 3,3 V / ESP32 pins are 3.3 V
6const int ADC_MAX = 4095;     // 12 bit
7#else
8const int LED_PIN = 13;       // Uno dahili LED / Uno onboard LED
9const int POT_PIN = A0;
10const float VREF = 5.0;       // Uno referansı 5 V / Uno reference is 5 V
11const int ADC_MAX = 1023;     // 10 bit
12#endif
13
14void setup() {
15  Serial.begin(115200);
16  pinMode(LED_PIN, OUTPUT);
17}
18
19void loop() {
20  int raw = analogRead(POT_PIN);
21  float volts = raw * VREF / ADC_MAX;
22  Serial.print("Ham / raw: ");
23  Serial.print(raw);
24  Serial.print("  Gerilim / voltage: ");
25  Serial.println(volts, 2);
26  digitalWrite(LED_PIN, raw > ADC_MAX / 2 ? HIGH : LOW);   // yarıdan fazlaysa LED yanar / LED on above half
27  delay(250);
28}
ТемаArduino UnoESP32
Встроенный светодиодПин 13GPIO 2 на большинстве клонов DevKit (на DevKitC от Espressif его нет)
Диапазон analogRead0–1023 (10 бит)0–4095 (12 бит)
Внешние прерывания (attachInterrupt)Только пины 2 и 3Почти все пины (добавь IRAM_ATTR к функции прерывания)
Второй последовательный портНужен SoftwareSerialАппаратный Serial2 (GPIO 16 и 17)
EEPROMНастоящая EEPROM, 1 КБВо flash; EEPROM.commit() или Preferences
Загрузка кодаОдним нажатиемНа некоторых платах нужно нажимать кнопку BOOT
Время компиляцииНесколько секундПервая сборка может занять около минуты

Wi-Fi, Bluetooth и интернет

По-настоящему ESP32 выделяет беспроводная связь. Плата подключается к сетям Wi-Fi 2,4 GHz, может создать собственную точку доступа, запускает веб-сервер, отправляет данные в систему умного дома по MQTT, получает время из интернета по NTP и может обновлять прошивку по воздуху (OTA). Со стороны Bluetooth поддерживаются и классический Bluetooth (профиль последовательного порта, SPP), и энергоэффективный BLE, а через ESP-NOW несколько ESP32 могут общаться друг с другом без роутера. Ничего из этого в Uno не встроено: для Bluetooth нужен модуль вроде HC-05, а для Wi-Fi — отдельный чип, например ESP-01, плюс AT-команды. Скетч ниже читает тот же потенциометр, но уже по Wi-Fi: открой адрес из монитора порта в браузере телефона, подключённого к той же сети, и увидишь напряжение в милливольтах, а страница будет сама обновляться каждые две секунды.

C++ (Arduino IDE)
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";          // Wi-Fi adın / your Wi-Fi name
5const char* password = "Sifre123";   // Wi-Fi şifren / your Wi-Fi password
6const int POT_PIN = 34;              // ADC1 pini / ADC1 pin
7
8WebServer server(80);
9
10void handleRoot() {
11  uint32_t mv = analogReadMilliVolts(POT_PIN);   // kalibre edilmiş mV / calibrated mV
12  String html = "<meta name='viewport' content='width=device-width'>"
13                "<meta http-equiv='refresh' content='2'>"
14                "<h1>ESP32</h1><p>Pot: ";
15  html += mv;
16  html += " mV</p>";
17  server.send(200, "text/html", html);
18}
19
20void setup() {
21  Serial.begin(115200);
22  WiFi.begin(ssid, password);
23  while (WiFi.status() != WL_CONNECTED) delay(500);
24  Serial.print("Telefonda aç / open on your phone: http://");
25  Serial.println(WiFi.localIP());
26  server.on("/", handleRoot);
27  server.begin();
28}
29
30void loop() {
31  server.handleClient();
32}

Энергопотребление и работа от батарей

На бумаге ESP32 — одновременно самая прожорливая и самая экономная плата. При отправке данных по Wi-Fi она потребляет пики до 240 mA, поэтому от слабого USB-порта перезагружается с ошибкой «Brownout detector was triggered» (сработал детектор просадки питания). Зато в глубоком сне чип потребляет всего около 10 µA. Плата Uno в простое берёт около 45 mA; даже когда ATmega328P спит, преобразователь USB–UART, стабилизатор и светодиод питания продолжают потреблять около 30 mA. Разберём пример: аккумулятора на 2000 mAh непрерывно работающей Uno хватит примерно на 2000 / 45 ≈ 44 часа. ESP32 с постоянно включённым Wi-Fi (в среднем 100 mA) проработает около 20 часов. Но если ESP32 раз в 10 минут просыпается на 3 секунды, отправляет показание при 120 mA и оставшиеся 597 секунд спит при 10 µA, средний ток будет (3 × 120 + 597 × 0,01) / 600 ≈ 0,61 mA, и тот же аккумулятор теоретически продержится больше 3000 часов, то есть более четырёх месяцев. Для такого результата нужна энергоэффективная плата или голый модуль: стабилизатор и USB-чип на стандартных DevKit даже во сне потребляют несколько mA. Свой сценарий можно посчитать в утилите время работы от батареи.

Где здесь место Raspberry Pi Pico?

Третий сильный вариант — Raspberry Pi Pico. У её чипа RP2040 два ядра Cortex-M0+ на 133 MHz, 264 КБ ОЗУ и 2 МБ flash, а стоит она около 4 $. Как и ESP32, она работает от 3,3 V и даёт 26 GPIO, но аналоговых входов у неё всего 3. Главные её сильные стороны — очень зрелая поддержка MicroPython, простая загрузка прошивки (плата видна на компьютере как USB-флешка) и блоки PIO, которые генерируют протоколы с точными таймингами, не нагружая процессор. Если нужна беспроводная связь, выбирай Pico W (Wi-Fi и Bluetooth), если нужна мощность — Pico 2 с чипом RP2350. Подробнее в статье Что такое Raspberry Pi Pico?. То же чтение потенциометра на Pico в MicroPython выглядит так (средняя ножка к GP26, крайние к 3V3 и GND):

MicroPython
1from machine import ADC, Pin
2import time
3
4pot = ADC(26)                  # GP26 = ADC0, potansiyometre orta ucu / pot wiper
5led = Pin("LED", Pin.OUT)      # dahili LED (Pico ve Pico W) / onboard LED (Pico and Pico W)
6
7while True:
8    raw = pot.read_u16()                   # 0–65535 (12 bit ölçüm ölçeklenir / 12-bit reading, scaled)
9    volts = raw * 3.3 / 65535
10    print("Ham / raw:", raw, " Gerilim / voltage: {:.2f}".format(volts))
11    led.value(raw > 32767)                 # yarıdan fazlaysa yanar / on above half
12    time.sleep(0.25)

Цена и простота обучения

Одна только цена редко решает вопрос. Оригинальная Uno R3 стоит около 25–30 $, а клоны с USB-чипом CH340 продаются за 5–10 $; клоны ESP32 DevKit стоят 4–8 $, а Pico — 4 $. Так что разницы в цене между ESP32 и клоном Uno почти нет; настоящие расходы видны в дополнениях: чтобы подключить модули на 5 V к ESP32, понадобятся несколько резисторов или преобразователь уровней за 1–2 $, а чтобы добавить Wi-Fi к Uno, нужен отдельный модуль. В обучении впереди Uno: выбираешь плату и нажимаешь «Загрузка» (Upload), сообщения об ошибках и примеры не меняются годами, а с модулями на 5 V нет несовпадения напряжений. Для ESP32 сначала нужно установить пакет плат Espressif и при необходимости драйвер USB-чипа (CP2102 или CH340), выбрать правильную модель платы, а на некоторых платах ещё и удерживать кнопку BOOT при загрузке; к тому же часть примеров в интернете написана для старых версий ядра и может не скомпилироваться (например, в ядре 3.x вместо ledcSetup используется ledcAttach). На эти препятствия уходит несколько часов, но если ты собираешь схемы впервые, на Uno проще понять, в чём проблема — в коде или в подключении.

Какую плату выбрать для какого проекта?

ПроектЛучшая платаПочему?
Первые уроки со светодиодами, кнопками и зуммеромArduino UnoПрощает ошибки, 5 V, масса примеров
Машинка-робот (L298N, HC-SR04)Arduino UnoРаботает с модулями на 5 V напрямую
Метеостанция с Wi-FiESP32Отправляет данные на телефон и в интернет
Умный дом на релеESP32Веб, MQTT и интеграция с голосовыми ассистентами
Bluetooth-пульт с телефонаESP32BLE и классический Bluetooth встроены
Удалённый датчик на батарейкахESP32 (энергоэффективная плата)Глубокий сон и короткие сеансы Wi-Fi
Изучение PythonRaspberry Pi PicoMicroPython здесь полноправный язык
Сотни адресных светодиодовESP32 или PicoМного ОЗУ, быстрый процессор
Трансляция изображения с камерыESP32-CAMКамера и слот microSD на плате
Шилды для моторов и шилды на 5 VArduino UnoШилды рассчитаны на расположение пинов Uno

Частые ошибки и заблуждения

  • «ESP32 всегда лучше»: она мощнее, но пины на 3,3 V, чувствительные к загрузке пины, кнопка BOOT и просадки питания могут измотать новичка. Для изучения основ у Uno меньше сюрпризов.
  • Подключать датчик на 5 V к ESP32 напрямую: сигналы 5 V, например выход ECHO у HC-SR04, без делителя могут повредить пин.
  • Читать пин ADC2 при включённом Wi-Fi: GPIO 0, 2, 4, 12–15 и 25–27 не читают аналоговые значения, пока работает Wi-Fi; перенеси датчик на GPIO 32–39.
  • Забывать про ОЗУ Uno: если код компилируется, а плата случайно зависает, возможно, закончилась ОЗУ; помещай постоянный текст в F("...") и не склеивай String в цикле.
  • Питать ESP32 от слабого USB: если плата перезагружается при запуске Wi-Fi, возьми хороший кабель для передачи данных и адаптер, который даёт не меньше 1 A.
  • Путать Pico и Pico W: у обычной Pico нет Wi-Fi; для беспроводного проекта покупай модель с буквой W в названии.
Лучший путь часто — попробовать обе: изучить основы на Uno (или на её младшей сестре Nano), а потом перейти на ESP32 для первого проекта, которому нужен Wi-Fi. Большая часть кода переносится без изменений; меняются в основном номера пинов и напряжение. ESP32 DevKit часто стоит примерно как клон Uno, так что добавить её в стартовый набор вполне разумно.

Короче говоря, Arduino Uno — плата для обучения, ESP32 — плата для подключения к сети, а Raspberry Pi Pico — плата для экспериментов с Python. Если не можешь решить, какая модель из семейства Arduino тебе подходит, загляни в статью Какую Arduino купить?. В приложении BlueGrays есть десятки проектов для Arduino, ESP32 и Pico — от мигания светодиодом до веб-сервера на Wi-Fi и от часов с NTP до погодного дисплея, каждый с пошаговой схемой и кодом.

Частые вопросы

ESP32 лучше, чем Arduino?

По чистой мощности, памяти и беспроводной связи — да: ESP32 работает на 240 MHz, у неё 520 КБ ОЗУ, Wi-Fi и Bluetooth. Но из-за пинов на 3,3 V, ограниченных GPIO и более сложной загрузки у Arduino Uno для новичков меньше сюрпризов. Какая лучше, зависит от того, что нужно проекту.

Можно ли программировать ESP32 в Arduino IDE?

Да. После добавления пакета плат esp32 от Espressif в Arduino IDE ESP32 программируется командами Arduino. Функции pinMode, digitalWrite, analogRead, Serial и Wire работают так же; меняются в основном номера пинов и уровни напряжения.

Работает ли код для Arduino на ESP32?

Большая часть кода работает с небольшими изменениями. Нужно поменять номера пинов под ESP32, учесть, что analogRead возвращает 0–4095, и заменить код, который обращается к регистрам AVR или к библиотекам вроде SoftwareSerial, аналогами для ESP32.

Можно ли добавить Wi-Fi к Arduino Uno?

Да: модуль вроде ESP-01 (ESP8266) можно использовать через последовательный порт с AT-командами, а можно купить Uno R4 WiFi. Но ESP-01 нужны питание 3,3 V и согласование уровней, а 2 КБ ОЗУ у Uno с трудом справляются с веб-задачами. Поэтому в большинстве случаев проще и дешевле сразу взять ESP32.

Arduino или Raspberry Pi Pico?

Чтобы остаться в экосистеме Arduino с C/C++, работать с модулями на 5 V и находить больше всего примеров, лучше подходит Arduino Uno; для программирования на Python, низкой цены и точных таймингов с PIO выбирай Raspberry Pi Pico. Pico работает от 3,3 V, поэтому с сигналами 5 V нужна осторожность, как и с ESP32.

Можно ли использовать ESP32 с датчиками на 5 V?

Если датчик работает и от 3,3 V, проще всего питать его от пина 3V3. Для датчиков, которые работают только от 5 V и выдают 5 V, поставь на выходную линию делитель напряжения или преобразователь уровней. Если подать 5 V прямо на пины ESP32, можно повредить чип.

Все проекты
Мигающий светодиод
#1Новичок

Мигающий светодиод

Самое первое «привет» в электронике: включение и выключение одного светодиода. Arduino включает и выключает светодиод через короткие промежутки, поэтому свет быстро мигает. Ты самым простым способом в

4.6(188)
1127
Мигающий светодиод на ESP32
#103Новичок

Мигающий светодиод на ESP32

Учит базовой работе с выходами GPIO на ESP32. Эффект мигания получается включением и выключением светодиода с цифрового пина. Это ESP32-версия классического проекта мигания на Arduino UNO; базовые команды мигания в среде Arduino те же, но расположение пинов ESP32 и уровни GPIO 3,3 V отличаются от Arduino UNO.

4.7(37)
99
Мигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W)
#147Новичок

Мигание встроенным светодиодом Raspberry Pi Pico (Pico и Pico W)

Первый проект серии Raspberry Pi Pico! Мигаем зелёным встроенным светодиодом, чтобы проверить, что плата работает, — классический первый опыт «Hello World». НИКАКИХ внешних компонентов, только Pico и USB-кабель. Код написан на MicroPython (официальном языке, поддерживаемом Raspberry Pi Foundation). Изучи в Thonny IDE класс machine.Pin, режим Pin.OUT, методы led.on()/off() и time.sleep(). Каждое переключение видно в выводе (REPL).

5.0(1)
10
Температура и влажность с DHT11
#55Средний

Температура и влажность с DHT11

Насколько тепло в твоей комнате и влажный ли воздух или сухой? Датчик DHT11 измеряет температуру и влажность, а Arduino выводит значения на двухстрочный LCD-экран и обновляет их каждые пару секунд. Ес

4.7(47)
73
Регулировка яркости светодиода потенциометром на ESP32 (аналог → PWM)
#115Средний
Premium

Регулировка яркости светодиода потенциометром на ESP32 (аналог → PWM)

В этом проекте яркость светодиода плавно регулируется потенциометром. Пин АЦП ESP32 читает напряжение 0–3,3V с потенциометра, затем это значение превращается в сигнал PWM (широтно-импульсная модуляция) и подаётся на светодиод. В результате при повороте потенциометра светодиод постепенно становится ярче или тусклее. В Arduino Core 3.0+ можно сразу использовать analogWrite(); на ESP32-S2/S3 разрешение АЦП фиксировано — 12 бит.

4.5(19)
32
Подключение ESP32 к Wi-Fi в режиме STA (с экраном LCD)
#127Продвинутый

Подключение ESP32 к Wi-Fi в режиме STA (с экраном LCD)

В этом проекте ESP32 надёжно и устойчиво к сбоям подключается к домашней сети Wi-Fi в режиме станции (STA). SSID и пароль хранятся в отдельном файле secrets.h, чтобы не утекли в Git; настроено автоматическое переподключение, а уровень сигнала RSSI и IP-адрес выводятся на I2C LCD-экран. Встроенный светодиод служит индикатором состояния. Это менеджер подключения уровня реальных устройств.

4.4(21)
34
Асинхронный веб-сервер на ESP32 (с выводом IP на LCD)
#129Продвинутый

Асинхронный веб-сервер на ESP32 (с выводом IP на LCD)

В этом проекте ESP32 превращается в асинхронный веб-сервер, которым можно управлять с телефона или компьютера в той же сети Wi-Fi. Благодаря библиотеке ESPAsyncWebServer сервер может обрабатывать несколько запросов одновременно (в отличие от классического WebServer.h, который блокируется на одном запросе). Открыв IP-адрес ESP32 в браузере, ты нажимаешь кнопки ON/OFF (маршруты /on и /off) и включаешь и выключаешь светодиод на GPIO 5.

4.8(16)
26
ESP32 HTTPClient + API погоды (с экраном LCD)
#133Продвинутый
Premium

ESP32 HTTPClient + API погоды (с экраном LCD)

В этом проекте ESP32 через HTTPClient.h делает вызов REST API к сервису погоды (wttr.in) через интернет. Полученный ответ в JSON разбирается с помощью ArduinoJson v7, а город, температура, влажность, погода и ветер выводятся на I2C LCD на турецком и английском. wttr.in бесплатен и не требует ключа API — достаточно указать любое название города, чтобы получить текущую погоду. Данные автоматически обновляются каждые 30 минут.

4.7(13)
20