Привет! Эта статья должна была стать законченной точкой в ознакомлении с Wi-Fi модулями для Arduino или непосредственно Arduino со встроенными модулями, но получилась какая-то пеленка от чайника. Так что от чайника для чайников про Arduino WiFi.
Я оставлю подачу максимально простой: что это за зверь, зачем он нужен, как его подключить, чем питать и как не спалить на ровном месте. Плюс добавлю пару практичных нюансов, которые обычно всплывают только после пары вечеров боли и мата. А у нас цель другая – чтобы оно заработало с первого-второго раза, а не после покупки третьего модуля.
Есть исправления, важные дополнения или хороший анекдот? Внизу статьи люди оставляют комментарии, можно написать и туда!
Для чего это нужно?
Вся суть сводится к тому, что неплохо бы стандартные платы Arduino было бы прошивать не по проводу, а на лету по воздуху. Да и приятно изменять код удаленно, или даже просто иметь доступ к Wi-Fi сетям. И тут начинается – вначале не было ничего хорошего, пока китайцы из Espressif не показали рынку свою ESP8266 – классный модуль с широким функционалом.
Крутая цена и возможности сделали этот модуль по-настоящему народным. Его даже теперь встраивают в некоторые платы – например, в Arduino Uno WiFi. А как итог – подключили раз, и можно менять прошивки удаленно без использования паяльника. Старперы индустрии люто плачут на этом месте (но провод тоже никто не отменял).
Тут важно правильно понимать формулировку «встроили в плату». Иногда это действительно Arduino-подобная плата, где ESP8266 является главным мозгом (и вы шьете ее как ESP). А иногда это гибрид, где рядом живет AVR-контроллер, а ESP8266 работает как «модем» по UART (то есть вы общаетесь с ним командами, а не шьете прямо Arduino-скетчи внутрь ESP). Снаружи все выглядит одинаково красиво, но подход к прошивке и к программированию будет разный. Поэтому перед покупкой полезно глянуть, что именно за плата у вас в руках и какой у нее USB-UART чип (CH340/CP2102) – это потом влияет на драйверы и порты.
С первого варианта прошло уже достаточно много времени, и сейчас уже есть где покопаться и из чего выбирать:

В общем интересная игрушка для тех, кто хочет поразвлекаться от создания каких-то автоматизированных систем умного дома с морем датчиков (начиная от температуры) до создания модных ныне меш-сетей по нашему профилю.
Например, самый понятный «первый проект» – датчик температуры/влажности, который шлет показания по Wi-Fi и показывает их в браузере или приложении. Это реально проще, чем кажется, и обычно именно с такого люди и втягиваются. Если хочется вдохновиться живыми сценариями (теплица, котел, квартира, склад) – можно глянуть нашу статью про Wi-Fi датчик температуры, там много идей, куда вообще прикрутить ESP8266, кроме «поморгать диодом».
А по поводу меш-сетей: да, ESP8266 умеет строить подобные штуки на уровне библиотек и самописных протоколов, но это не «домашний Mesh как у роутеров». Если вы хотите понять, что такое нормальная Mesh Wi-Fi сеть в быту и почему она работает иначе, чем повторители, то вот понятное введение: что такое Wi-Fi Mesh сеть.
Характеристики
Тут уже голимый паблик, все и так известно по этой игрушке. Что у нас имеется на борту:
- 160 МГц, 32 бит
- IEEE 802.11 b/g/n, WEP/WPA/WPA2
- Флеш-память аж на 4 Мб, внешняя память до 16 Мб.
- 14 портов ввода-вывода, SPI, I2C, UART, 10-бит АЦП
- Питание – 2,2-3,6 В (оптимально 3,3 В, не сожгите пятивольниками), 300 мА (стандартная Ардуино не разгонит ее, лучше использовать доппитание)
- ОЗУ – примерно 50 Кб
- Кнопки перезагрузки и перепрошивки
- И все это за пару баксов – шоколадка в микроэлеткронике, можно заказывать тоннами на Aliexpress
Теперь пару уточнений, чтобы характеристики не вводили в заблуждение. Частота 160 МГц – это обычно режим «разгона», по умолчанию модуль часто работает на 80 МГц, и для большинства задач этого хватает с запасом. Память «4 Мб» тоже не абсолют: у ESP-01 может быть меньше, у некоторых плат больше – смотрите маркировку и то, что выбранно в настройках платы в Arduino IDE. А по GPIO хитрее всего: у чипа ног много, но часть занята под флеш-память, часть ведет себя капризно на старте, а на разных платах наружу выведено разное количество пинов.
ESP8266 работает только в диапазоне 2,4 ГГц. Если дома Wi-Fi сеть только 5 ГГц (или «единая сеть» и роутер упорно не дает 2,4), модуль к ней не подключится. На практике это решается включением отдельной сети 2,4 ГГц на роутере, и да – это нормально, вы не сломали модуль.
Про WEP в списке тоже скажу прямо: да, протокол может «поддерживаться», но пользоваться им не стоит. На текущий день это устаревшая и слабая защита. Если делаете проект для дома, ставьте WPA2-PSK (AES) или то, что дает ваш роутер в адекватном безопасном режиме.
Подключение
Этот раздел будет посвящен разным схемам подключения. Проще всего в таких случаях сразу же глянуть первое попавшееся видео от зачетного автора. Вот, например, вот это:
В видео выше не только про то, как подключить, но и общую информацию о плате со всеми ее фичами и информацией по всем вариантам прошивок – обязательно посмотрите, о таком в одном месте никто и не пишет. При этом рабочая версия – NodeMCU.
Остальным же рекомендуется искать свою распиновку и документацию в официальных источниках. Схема распиновки на примере ESP8266 12E:
Есть несколько вариантов плат и несколько ревизий с разным расположением светодиода – копайте мануалы под свой вариант. Здесь лишь общая ознакомительная бесполезная информация.
Самое важное по железу, что обычно забывают: у ESP8266 есть «пины загрузки». И если они в неправильном состоянии при старте, модуль не загрузится как надо. В бытовом виде это выглядит так: вы все подключили, а он либо молчит, либо уходит в вечную перезагрузку. Поэтому полезно знать базовую логику: GPIO0 и GPIO2 должны быть в HIGH на обычную загрузку, а GPIO15 – в LOW. На dev-платах это часто уже сделано резисторами, но если вы собираете на голом модуле или навешали периферию, можно случайно все сломать.
Если модуль «не стартует»: временно уберите все лишнее с GPIO0/GPIO2/GPIO15, оставьте только питание и UART, и проверьте, оживает ли он. Это простой способ понять, это ваша периферия мешает загрузке или проблема глубже.
Подключение к Arduino Nano:
Подключение к Arduino Uno:
Помните, Arduino использует 5В, а ESP8266 до 3,6 В. При соединении используйте резистивные делители, иначе есть риск спалить контроллер.
И вот тут я добавлю самый практичный момент, потому что он в комментариях всплывает чаще всего. По UART всегда соединяем крест-накрест: TX одного устройства идет в RX другого. То есть Arduino TX (5В) -> ESP8266 RX (3,3В) через резистивный делитель, а ESP8266 TX (3,3В) -> Arduino RX обычно можно напрямую, потому что для AVR «тройка» часто читается как логическая единица. Если перепутать TX/RX или попытаться подать 5В прямо на RX ESP8266, шанс попрощаться с модулем очень даже реальный.
Пример делителя, который обычно работает без сюрпризов: 1 кОм сверху и 2 кОм вниз (или 2 кОм и 3,3 кОм) – получаем около 3,3В на входе ESP8266. Да, можно и другими номиналами, смысл один – снизить уровень. И еще: обязательно соедините «землю» (GND) Arduino и ESP8266, иначе UART превращается в гадание на кофейной гуще – вроде провода есть, а связи нет.
Если вы хотите дальность или более стабильный прием, смотрите на платы/модули с внешней антенной (u.FL или разъем под «рожок»). Сама тема антенн отдельная и большая, но для понимания принципов можно почитать про Wi-Fi антенны – что вообще бывает и почему «антенка побольше» не всегда решает магически.
Не забываем, что сам «модуль» по сути является полноценным микроконтроллером со встроенной памятью. Т.е. при желании можно его запрограммировать через тот же USB-UART, а не использовать для этого подключение через отдельную плату. Тем более встроенной памяти хватит на хранение нескольких весомых библиотек.
И это, на мой взгляд, самый адекватный путь для новичка: взять NodeMCU/WeMos, подключить по USB, выбрать плату в IDE и шить напрямую. Потому что связка «Arduino + ESP8266 по UART» нужна скорее тогда, когда вам по какой-то причине хочется оставить старую Arduino как отдельный мозг, а ESP использовать как Wi-Fi модем. В большинстве домашних проектов проще и дешевле сразу использовать ESP как главный контроллер, и не городить зоопарк из двух плат.
Если вам вообще интересно, как люди делают на базе Arduino/ESP свои нестандартные штуки (включая самодельные Wi-Fi адаптеры), можно посмотреть обзор «Wi-Fi адаптер своими руками». Это больше для вдохновения и понимания, чем для «повторяй один в один», но идеи там попадаются веселые.
Про программирование
Хоть модуль и является сторонним, извращаться с поиском всевозможных программ здесь не нужно. Базовая Arduino IDE все поддерживает из коробки, нужно лишь выбрать в списке нашу 8266 и уже будут доступны базовые программы, начиная от стандартного моргания диода через USB-UART (хеллоу ворлд епта, пример будет в видео ниже).
Но тут я обязан поправить важную деталь: чаще всего ESP8266 появляется в Arduino IDE не «из коробки», а после установки пакета плат (ESP8266 core) через менеджер плат. Делается это один раз, и дальше реально все удобно. Заходим в «Файл» – «Настройки» – «Дополнительные ссылки для менеджера плат» и добавляем ссылку: http://arduino.esp8266.com/stable/package_esp8266com_index.json. Дальше идем «Инструменты» – «Плата» – «Менеджер плат», ищем «esp8266» и ставим. После установки выбираем свою плату (NodeMCU, WeMos D1 mini, Generic ESP8266) и работаем как с обычной Arduino.
Если плата не шьется и не появляется порт: на Windows проверьте «Диспетчер устройств» и COM-порт, на Linux проверьте /dev/ttyUSB0 или /dev/ttyACM0, на macOS обычно видно что-то вроде /dev/cu.usbserial. Самая частая причина – драйвер USB-UART (CH340/CP2102) или не тот кабель (иногда попадаются кабели «только зарядка» без данных).
Еще полезно понимать, что «прошивка ESP8266» бывает разной, и это не всегда Arduino-скетчи. Встречается AT-прошивка (модуль становится Wi-Fi модемом и принимает команды), встречается NodeMCU (Lua), встречается MicroPython, а еще куча прикладных прошивок под конкретные задачи. Для новичка самый простой и массовый путь – Arduino core, потому что примеров море и порог входа низкий. Но если вы делаете, например, быстрый прототип «веб-страничка + датчик», иногда MicroPython зайдет проще, потому что правки можно делать быстрее и не всегда нужно пересобирать проект.
И про OTA (прошивка по воздуху) тоже добавлю, раз уж статья про Wi-Fi. Обычно OTA на ESP8266 работает так: первый раз вы все равно шьете по проводу, а дальше модуль уже умеет принимать обновления по сети (через специальную библиотеку/механизм). Это очень удобно, когда устройство уже прикручено под потолок или спрятано в коробку. Но если питание плохое или Wi-Fi нестабильный, OTA превращается в риск словить полупрошитое состояние – поэтому сначала решаем питание и связь, а уже потом играемся в «прошивку по воздуху».
Про питание
Это прям начальная дилемма этой платы. Она требует 3,3 В и 300 мА. Та же Arduino Nano или просто USB-UART не вывозят такого тока – заранее нужно позаботиться о питании. Существующие варианты:
- Покупка блока питания на 3,3 В – существуют такие, самый простой и скорее верный вариант.
- Покупка модуля для понижения напряжения 5 В -> 3,3 В. Тоже доступно и удобно.
- Самопальные сборки (на том же Хабре видел пример на базе регулятора AMS1117 и конденсатора 22 мкФ) – кто ищет, тот всегда найдет решение в любой непонятной ситуации. А для втянувшихся с головой в микроэлектронику подобные деяния просто мастхэв.
Теперь реальность, которая бьет по рукам: ESP8266 может давать короткие пики потребления выше «красивых» 300 мА, особенно когда активно работает Wi-Fi. Из-за этого модуль часто уходит в ребуты на плохом питании, и люди думают, что «прошивка кривая». Поэтому я бы закладывал источник 3,3 В с запасом по току (условно 500 мА) и обязательно ставил конденсатор побольше прямо рядом с модулем (100-470 мкФ плюс мелкий 0,1 мкФ). Чем короче провода питания – тем меньше сюрпризов. И да, макетная плата с длинными соплями иногда сама по себе источник зла.
AMS1117 рабочий, но это линейник: если кормить его от 12В, он будет греться как утюг, а модуль будет страдать. Для питания от 5В еще куда ни шло, но даже там лучше нормальный DC-DC понижайка, если проект не «на коленке на вечер».
Платы со встроенным ESP8266
Вот основной список плат с уже встроенным ESP8266 и всем доступным для него функционалом:



Последняя в списке Arduino Uno WiFi – это уже упоминаемый ТОП в платостроении. Именно на ней создают многие интересные проекты. И она как раз из коробки позволяет перепрошивать себя по воздуху (режима OTA – Firmware Over The Air). А вот и видеообзор этого чуда с характеристиками, подключением, базовым использованием:
Только еще раз: с «Arduino Uno WiFi» есть нюансы по конкретной версии платы. Встречаются разные реализации (официальные и не очень), и где-то ESP реально главный контроллер, а где-то он как помощник. Поэтому если вы покупаете такую плату именно ради OTA, заранее проверьте, что именно умеет ваша конкретная модель и как она прошивается. NodeMCU и WeMos в этом плане проще: они почти всегда шьются как обычная ESP8266-плата через USB и не требуют второго контроллера рядом.
ESP8266 или ESP32 – что выбрать?
Чтобы закрыть вопрос «а не устарело ли это все»: ESP8266 на текущий день все еще живая и полезная штука для простых проектов. Датчики, реле, простые веб-интерфейсы, уведомления, MQTT – все это она тянет спокойно. Но если вам нужен Bluetooth, больше памяти, больше ножек, или вы хотите сразу запас по мощности – смотрите в сторону ESP32. Там возможностей больше, и часто разница в цене уже не такая драматичная.
Если хотите кратко: ESP8266 – дешево и сердито под 2,4 ГГц и простые задачи. ESP32 – когда хочется «чтобы было все и сразу», включая Bluetooth и более жирные проекты. У нас на сайте есть смежный обзор, где ESP32 тоже мелькает: Bluetooth + Wi-Fi адаптер – там как раз упоминается ESP-32S и почему его любят.
Частые проблемы и быстрые решения
- Постоянные перезагрузки/ребуты. Почти всегда питание. Дайте стабильные 3,3 В с запасом по току, поставьте конденсатор рядом с модулем, укоротите провода.
- Не прошивается, ошибка загрузки. Проверьте правильный порт, драйвер USB-UART, качество кабеля, а на «голых» модулях еще и режим загрузки (GPIO0 в LOW для прошивки, GPIO0 в HIGH для обычного старта).
- Мусор в Serial Monitor. Неправильная скорость (часто 115200), перепутаны TX/RX, нет общей земли, или уровни 5В лупят в RX ESP без делителя.
- Не подключается к Wi-Fi. Сеть 5 ГГц (модуль ее не видит), неправильный пароль, или роутер включает экзотичные настройки. Для теста создайте простую сеть 2,4 ГГц без лишних наворотов и проверьте на ней.
- Странные проблемы после добавления датчиков. Проверьте, не посадили ли вы на стартовые пины (GPIO0/GPIO2/GPIO15) устройства, которые меняют уровень при включении.
Очень рабочая диагностика: сначала добейтесь стабильного питания и прошивки по USB, потом подключите к Wi-Fi (самый простой пример), и только потом навешивайте датчики и реле. Если делать наоборот, вы будете гадать, что именно ломает систему.
FAQ
Можно ли питать ESP8266 от 3,3В выхода Arduino?
Иногда «вроде бы заводится», но часто нестабильно. У ESP8266 бывают пики потребления, и слабый стабилизатор Arduino просто проседает по напряжению – отсюда ребуты и глюки. Для надежности лучше отдельный источник 3,3 В или нормальная понижайка с запасом по току. Если вы делаете проект «на долго», это один из самых важных пунктов.
Нужно ли обязательно ставить резистивный делитель между Arduino и ESP8266?
Да, если вы подаете сигнал с 5В логикой на вход ESP8266. Самый критичный канал – Arduino TX -> ESP RX. Обратно (ESP TX -> Arduino RX) чаще всего можно напрямую, но в спорных случаях тоже ставят преобразователь уровней для идеальной совместимости. Экономия на делителе иногда заканчивается покупкой нового модуля.
Почему модуль не видит домашнюю сеть?
Чаще всего потому что это 5 ГГц или роутер «умно» объединяет сети и не дает нормально зацепиться к 2,4 ГГц. ESP8266 работает только на 2,4 ГГц, это нормально. Включите отдельную сеть 2,4 ГГц или временно отключите объединение диапазонов на роутере и попробуйте снова.
Что проще для новичка: ESP8266 как отдельный контроллер или связка Arduino + ESP?
Почти всегда проще сразу NodeMCU/WeMos и прошивка через Arduino IDE как ESP8266. Связка Arduino + ESP как модем нужна под специфичные сценарии или когда вы хотите сохранить старый проект на Arduino и просто добавить Wi-Fi «сбоку». Для первого опыта отдельная ESP-плата обычно дает меньше боли и быстрее результат.
Хочу сделать что-то полезное, а не просто тесты – с чего начать?
С простого датчика: температура/влажность, состояние двери, реле для света, уведомления в локальную сеть. Важно, чтобы проект был понятен и сразу давал «вау, работает». А дальше уже можно усложнять: веб-интерфейс, расписания, интеграции, OTA и все остальное.
Вот и все. Задача нашего проекта освещать все Wi-Fi события, и платы для Arduino тоже находятся в этом поле. Но специфичные задачи по созданию классных домашних проектов лучше изучать уже на специализированных ресурсах. Здесь же только общий обзор и пара занимательных на наш взгляд видеороликов. Надеемся, что с возможностями этой платы и подключением к интернету задачи ваших проектов достигнут новых высот. Всем до связи, ваш WiFiGid.









Спасибо за подробную статью. Нигде не мог найти эту инфу. Здоровья тебе
Помню в институте нам препод показывал, как его перепрошивать.
А ккой лучше брать – выбор то огромный. у кого опыт использования был?
В статье перепутаны выводы TX и RX ардуино при подключении к esp8266 через резистивный делитель. Если подключить по предлагаемой схеме, то с модулем wifi модулем можете попрощаться.