Логотип sheen.bot

← Идеи и опыт

Почему аналоговый датчик на ESP32 сходит с ума при включении Wi-Fi

15 окт. 2026 г.·Sheen Robotics
Почему аналоговый датчик на ESP32 сходит с ума при включении Wi-Fi

Если аналоговый датчик начинает выдавать бессмысленные значения сразу после запуска Wi-Fi, скорее всего, он подключен к выводу ADC2. Радиомодуль Wi-Fi в ESP32 монополизирует ADC2; переключение датчика на ADC1 моментально решает проблему.

Во время тестирования через последовательный порт USB аналоговый датчик выдает четкие и правдоподобные показания. Но как только код выполняет WiFi.begin() и плата устанавливает соединение, данные начинают хаотично скакать, замирают на отметке 4095 или падают до нуля. Датчик исправен, подтягивающий резистор на месте, и плата работает штатно. Дело в том, что вы подключили датчик к выводу ADC2.

Аппаратное ограничение чипа: ADC1 против ADC2

Кремниевый кристалл стандартного ESP32 содержит два независимых 12-битных периферийных модуля аналого-цифрового преобразователя (АЦП): ADC1 и ADC2. Вместе они обслуживают до 18 аналоговых входных выводов на самом чипе, хотя на платы разработки выводится лишь часть из них.

Модуль ADC1 работает независимо. А вот ADC2 делит внутренние аппаратные ресурсы с радиоподсистемой Wi-Fi и Bluetooth микроконтроллера ESP32. Когда активируется драйвер Wi-Fi — будь то сканирование эфира в поиске SSID, согласование DHCP или передача телеметрии по MQTT, — сетевой стек забирает монопольный доступ к ADC2 для калибровки радиочастотного тракта и измерения внутреннего питания.

Если во время работы драйвера Wi-Fi код вызывает функцию analogRead() на выводе ADC2, драйвер прерывает или блокирует чтение. В средах Arduino Core и MicroPython это проявляется одним из двух способов: функция чтения завершается с ошибкой и возвращает пустое или мусорное значение либо радиочастотный всплеск наводит мощные электрические помехи прямо на периферийный блок, из-за чего результат преобразования колеблется между насыщением (4095) и нулем (0).

Переназначение выводов: безопасные и небезопасные пины

Решение не требует никаких программных обходных путей: достаточно переключить сигнальный провод датчика с вывода ADC2 на вывод ADC1. Каналы ADC1 электрически не связаны с радиочастотным блоком Wi-Fi и стабильно выполняют преобразование независимо от сетевой активности.

Блок АЦПНомера GPIOБезопасен с Wi-Fi?Примечания для занятий
ADC1GPIO 32, 33, 34, 35, 36 (VP), 39 (VN)ДаБезопасен для любых аналоговых датчиков во время передачи данных по Wi-Fi. Обратите внимание: GPIO 34, 35, 36 и 39 работают только на вход (у них нет внутренних подтягивающих резисторов к питанию или земле).
ADC2GPIO 0, 2, 4, 12, 13, 14, 15, 25, 26, 27НетНепригоден для аналоговых измерений после вызова WiFi.begin(). Многие из этих выводов также служат контактами начальной загрузки (bootstrapping pins).

На распространенных 30- и 38-выводных платах ESP32 NodeMCU/DevKit контакты GPIO 36 и 39 часто обозначены как VP и VN. Именно они, наряду с GPIO 32, 33, 34 и 35, являются основными выводами для сбора аналоговых данных.

Практический пример распиновки

Рассмотрим стандартный школьный проект в сфере IoT: систему мониторинга растений с датчиком влажности почвы либо датчиком освещенности. Ученик подключает аналоговый щуп влажности почвы к GPIO 4 (канал 0 блока ADC2) просто потому, что тот удобно расположен рядом с выводом «земли» (GND). При автономном тестировании монитор порта выводит стабильные значения в диапазоне от 1500 до 2800. Но как только плата подключается к школьной точке доступа для отправки данных на дашборд, показания намертво зависают на 4095.

Как исправить ситуацию:

  • Переставьте сигнальный провод с GPIO 4 на GPIO 34 (или 32, 33, 35).
  • Обновите номер вывода в коде: const int sensorPin = 34;.
  • Оставьте GPIO 4 для цифровых выходов — например, для управления модулем реле или транзистором, коммутирующим погружной насос на 5 В.

Если вы проектируете многодатчиковые метеостанции или комплексы экологического мониторинга, ознакомиться с учебным оборудованием и схемами подключения можно на странице Sheen IoT.

Второй фактор: просадка шины питания

Если вы уже переключили датчик на ADC1 (например, на GPIO 32), но во время передачи данных все равно наблюдаются небольшие резкие скачки, проблема кроется не в блокировке АЦП, а в стабильности питания. Когда ESP32 включает передатчик радиомодуля, потребление тока на несколько миллисекунд резко подскакивает с ~50 мА до более чем 300–400 мА.

Если плата питается от нестабильного порта USB на старой мобильной тележке с ноутбуками или подключена через тонкие макетные провода, шина 3,3 В кратковременно проседает. Поскольку аналого-цифровое преобразование измеряет напряжение относительно опорного напряжения шины питания, просадка шины приводит к кажущемуся резкому росту внешнего аналогового напряжения. Электролитический конденсатор емкостью 100 мкФ, установленный на макетной плате между выводами 3V3 и GND, полностью сглаживает такие импульсные радиопомехи.

#esp32#интернет вещей#электроника#диагностика#датчики

Больше в категории «Идеи и опыт»

Почему пин Arduino считывает HIGH при отсутствии подключения (и как это исправить)
Идеи и опыт· 14 окт. 2026 г.

Почему пин Arduino считывает HIGH при отсутствии подключения (и как это исправить)

Неподключенный входной пин Arduino не имеет по умолчанию нулевого напряжения: он находится в высокоомном состоянии и действует как антенна, улавливающая электростатические наводки.

Читать далее →
Почему корни в школьной гидропонике становятся коричневыми и осклизлыми (и как это исправить)
Идеи и опыт· 13 окт. 2026 г.

Почему корни в школьной гидропонике становятся коричневыми и осклизлыми (и как это исправить)

Коричневые осклизлые корни в гидропонике указывают на питиум (корневую гниль), вызванный высокой температурой воды и нехваткой кислорода в закрытых классах. Вот как спасти систему с помощью аптечной перекиси водорода и аквариумной аэрации.

Читать далее →
Почему ступицы шестигранных валов проскальзывают и срываются в матчах FTC и как это исправить
Идеи и опыт· 12 окт. 2026 г.

Почему ступицы шестигранных валов проскальзывают и срываются в матчах FTC и как это исправить

Шестигранные ступицы выходят из строя во время матчей, поскольку установочные винты удерживаются лишь за счет крошечных точек трения, которые ослабевают при динамических скачках крутящего момента; переход на разрезные зажимные ступицы решает эту проблему механически.

Читать далее →