Половина «загадочных» проблем с Arduino и ESP32 — это не код, а питание. Порт USB 2.0 отдаёт до 500 мА, USB 3.x — до 900 мА, и это предел на порт, а не «сколько попросит плата». Когда ESP32 включает радиомодуль, ток подскакивает короткими импульсами, напряжение на кабеле проседает, срабатывает детектор brownout — и плата перезагружается посреди работы. Диагностика занимает минуты, если идти по цепочке «порт → кабель → плата → нагрузка».
Сколько даёт порт и сколько просит плата
| Устройство | Типичное потребление | Комментарий |
|---|---|---|
| Arduino Uno (без нагрузки) | 40–60 мА | плюс питание внешних модулей через 5 В |
| ESP32 DevKit, Wi-Fi выключен | 40–80 мА | зависит от платы и стабилизатора |
| ESP32, передача по Wi-Fi | импульсы до нескольких сотен мА | именно они вызывают просадку |
| Сервопривод SG90 под нагрузкой | до ~700 мА в пике | питать от USB-порта нельзя |
| Модуль реле | 60–80 мА на канал | несколько реле — уже сотни мА |
| NeoPixel-лента, 30 светодиодов на полной яркости | до ~1,5 А | только внешнее питание |
Отсюда простое правило: всё, что имеет двигатель, реле, яркие светодиоды или нагрев, питается от отдельного источника, а USB используется для данных и питания логики.
Признаки нехватки питания
- ESP32 перезагружается в момент подключения к Wi-Fi или отправки данных.
- В мониторе порта появляется сообщение о brownout detector (у ESP32 это настраиваемый порог в конфигурации).
- Arduino «мигает» и определяется заново при включении реле или сервопривода.
- Напряжение на 5 В линии проседает ниже 4,6–4,7 В при измерении мультиметром под нагрузкой.
- Плата работает от одного USB-порта и не работает от другого — виноват порт или кабель, а не скетч.
Важно: brownout — это защита, а не ошибка. Плата сбрасывается, чтобы не работать при нестабильном напряжении; отключать детектор в прошивке — значит скрывать симптом.
Драйвер или питание: как различить
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Плата не появляется в диспетчере устройств | кабель (только зарядка), порт, драйвер | другой кабель, другой порт, dmesg в Linux |
| «Неизвестное устройство», код 43 | сбой USB или питание | порт, кабель, отключить хаб |
| Устройство с жёлтым знаком, код 10 | драйвер не установлен или не подходит | установить драйвер с сайта производителя чипа |
| Порт есть, но загрузка скетча падает | занятый порт, скорость, клон платы | закрыть монитор порта, выбрать правильную плату |
| Плата перезагружается при работе | нехватка тока | внешнее питание, конденсатор, толще провода |
Драйверы: у плат на CH340 нужен драйвер WCH, у CP2102 — Silicon Labs. На Windows 11 многие определяются автоматически, но клоны CH340 могут требовать ручной установки. На Windows ARM (Snapdragon) драйверы ядра должны быть ARM64 — та же проблема, что и с USB-COM адаптерами.
Как организовать питание правильно
- Считайте бюджет. Сложите ток всех потребителей и добавьте 50% запаса на пики.
- Внешний источник с общей землёй. Питайте нагрузку от блока 5 В, соедините земли блока и платы; сигнальные линии оставьте от платы.
- Не питайте ESP32 через вывод 3,3 В, если на плате есть стабилизатор: этот вывод предназначен для выхода, а не входа.
- Конденсатор у потребителя. Электролит 100–470 мкФ рядом с платой сглаживает импульсы; керамика 0,1 мкФ — по питанию микросхем.
- USB-хаб с внешним питанием, если устройств несколько. Недопитанный хаб делит 500 мА между всеми.
- Короткий толстый кабель. Тонкий провод сечением 28 AWG на метр даёт заметное падение напряжения при токе 500 мА.
Пример расчёта бюджета питания
Соберём типичный проект: ESP32 с Wi-Fi, два реле, датчик и светодиодная индикация.
| Потребитель | Ток | Комментарий |
|---|---|---|
| ESP32 (среднее) | 80 мА | пики при передаче — до нескольких сотен мА |
| Два модуля реле | 140 мА | 70 мА на канал |
| Датчик (например, BME280) | 1 мА | малое потребление |
| Индикация | 20 мА | 4 светодиода по 5 мА |
| Итого | ~240 мА + пики | запас по питанию обязателен |
240 мА формально укладываются в 500 мА USB 2.0, но пики Wi-Fi и одновременное срабатывание реле складываются, и напряжение на тонком кабеле проседает. Правильное решение: ESP32 питается от USB, реле — от отдельного блока 5 В с общей землёй, сигналы управления идут с платы. Тогда токовая нагрузка распределена, а логика защищена от просадок.
Если добавить сервопривод или ленту адресных светодиодов, бюджет вырастает до единиц ампер, и USB перестаёт быть источником питания вовсе.
Что делать, если плата «отваливается» при нагреве
Симптом: первые минуты всё работает, затем устройство исчезает из системы и появляется снова. Причины по частоте:
- Просадка питания при нагреве стабилизатора платы.
- Плохой контакт в разъёме USB (расшатанное гнездо, дешёвый кабель).
- Перегрев самого USB-моста на плате-клоне.
- Драйвер, который неверно обрабатывает переподключение.
Диагностика: замените кабель, подключите через USB-хаб с внешним питанием, проверьте температуру платы рукой (осторожно) и посмотрите журнал системы на предмет повторных подключений устройства.
Драйверы и среда
- Arduino IDE 2.x требует выбора платы и порта; для клонов выбирайте соответствующий пункт (например, Arduino Uno с CH340 работает как обычный Uno).
- Порт занят другой программой (монитор порта, терминал, Python-скрипт) — типичная причина ошибки загрузки. Закройте всё, что держит порт.
- Linux: пользователь должен быть в группе
dialout, иначе порт есть, но доступа нет. - macOS: для CH340/CP210x нужны подписанные драйверы производителя; после обновления ОС их иногда нужно переустановить.
Безопасность
- Не подключайте к USB плату с внешним питанием без проверки: два источника 5 В, соединённые вместе, — это ток через дорожки платы.
- Не работайте с платой под напряжением 220 В, даже через реле: силовая часть требует корпуса, предохранителя и человека, который понимает правила электробезопасности.
- Не оставляйте нагревательные элементы и аккумуляторы без присмотра.
- Металлическая стружка рядом с платой — риск короткого замыкания; держите рабочее место чистым.
Частые вопросы
Почему ESP32 перезагружается при подключении к Wi-Fi?
Импульсный ток радиомодуля просаживает питание. Помогает качественный кабель, конденсатор 100–470 мкФ у платы и внешний источник 5 В. Отключать brownout-детектор не нужно: он сигнализирует о реальной проблеме.
Хватит ли порта USB ноутбука для Arduino Uno?
Да, сама плата потребляет десятки миллиампер. Проблемы начинаются, когда к ней подключены реле, сервоприводы или светодиодные ленты — их питают отдельно.
Что делать, если компьютер не видит плату?
Сначала другой кабель и другой порт, затем проверка диспетчера устройств и dmesg. Если устройство определяется как неизвестное — ставьте драйвер чипа (CH340 или CP210x) с сайта производителя.
Можно ли запитать ESP32 от повербанка?
Можно, если повербанк поддерживает режим малого тока и не отключается при нагрузке 50–100 мА. Дешёвые модели «засыпают» и обесточивают плату — это частая причина ночных сбоев логгеров.
Нужен ли осциллограф для диагностики питания?
Не обязательно. Мультиметра достаточно, чтобы увидеть просадку под нагрузкой; осциллограф нужен, если вы ищете короткие импульсные провалы и помехи.