Введение в ESP8266 и модуль ESP-01
Модуль ESP8266 от компании Espressif Systems — это экономичный Wi-Fi чип с полноценным стеком TCP/IP и микроконтроллером, который открывает безграничные возможности для создания IoT-устройств. В этой статье мы подробно рассмотрим работу с популярной версией этого модуля — ESP-01.

Модуль ESP-01 - компактное решение для WiFi подключения
Основные характеристики ESP-01
- Процессор: 32-битный Tensilica L106 с тактовой частотой 80 МГц (до 160 МГц)
- Память: 64 KB загрузочного ROM, 64 KB инструкций RAM, 96 KB данных RAM
- Флеш-память: От 512 KB до 4 MB (в зависимости от версии)
- WiFi: 802.11 b/g/n, поддержка WPA/WPA2
- GPIO: 2 вывода (GPIO0 и GPIO2), плюс TX/RX
- Питание: 3.3V (не терпит 5V!)
- Размеры: Всего 14.3mm x 24.8mm
ESP-01 — это самый компактный и недорогой вариант ESP8266, идеально подходящий для проектов, где важны малые габариты и минимальное энергопотребление. Однако у него ограниченное количество GPIO, что делает его менее универсальным, чем другие версии (например, ESP-12).
Подключение модуля ESP-01 к Arduino
Для успешного подключения ESP-01 к Arduino необходимо учитывать несколько важных моментов, связанных с различиями в уровнях напряжения и особенностями работы модуля.
Необходимые компоненты
- Arduino Uno/Nano или другая совместимая плата
- Модуль ESP-01 (желательно с предустановленными AT-командами)
- Резисторы: 1kΩ (2 шт) и 2.2kΩ (для делителя напряжения)
- Конденсатор 10µF (для стабилизации питания)
- Макетная плата и соединительные провода
- Источник питания 3.3V с током не менее 300mA
Важно! Модуль ESP-01 работает ТОЛЬКО от 3.3V. Подача 5V может мгновенно вывести его из строя. Кроме того, модуль потребляет значительный ток при передаче данных (до 250mA), поэтому встроенный 3.3V стабилизатор Arduino может не справиться.
Подробная схема подключения

Полная схема подключения ESP-01 к Arduino Uno
Вывод ESP-01 | Подключение | Примечание |
---|---|---|
VCC | 3.3V | Обязательно внешний источник питания |
GND | GND Arduino | Общая земля |
CH_PD (EN) | 3.3V через резистор 10kΩ | Активирует модуль |
GPIO0 | GND только при прошивке | В нормальном режиме оставить "в воздухе" |
GPIO2 | Не подключать | Должен быть HIGH при запуске |
RST | Кнопка сброса | Не обязательна, но желательна |
TX | RX Arduino через делитель напряжения | 3.3V → 1kΩ → TX, 2.2kΩ → GND |
RX | TX Arduino | Прямое подключение (Arduino 5V tolerant) |
Альтернативные варианты подключения
Если у вас нет внешнего источника 3.3V, можно использовать FTDI преобразователь или специальный переходник для ESP-01 с встроенным регулятором напряжения и преобразователем уровней.

Готовый переходник для ESP-01 с преобразователем уровней
Прошивка модуля ESP-01
Для программирования ESP-01 можно использовать как AT-команды, так и полноценную среду разработки Arduino IDE. Рассмотрим оба варианта.
Настройка Arduino IDE для работы с ESP8266
- Откройте Arduino IDE и перейдите в Файл → Настройки
- В поле "Дополнительные ссылки для Менеджера плат" добавьте URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Перейдите в Инструменты → Плата → Менеджер плат
- Найдите "esp8266" и установите последнюю версию
- После установки выберите плату: Generic ESP8266 Module
- Установите следующие параметры:
- Flash Mode:
DOUT
- Flash Size:
1M (512K SPIFFS)
- Upload Speed:
115200
- CPU Frequency:
80 MHz
- Flash Mode:
Для успешной прошивки модуля ESP-01 необходимо перевести его в режим программирования:
- Подключите GPIO0 к GND
- Подайте питание на модуль
- Отправьте скетч через Arduino IDE
- Отключите GPIO0 от GND и перезагрузите модуль
Проверка связи с помощью AT-команд
Перед программированием полезно проверить связь с модулем через AT-команды:
- Подключите модуль как описано выше
- Откройте монитор последовательного порта (115200 бод)
- Отправьте команду
AT
- в ответ должно прийтиOK
- Проверьте версию прошивки:
AT+GMR
- Просмотрите список доступных WiFi сетей:
AT+CWLAP
AT OK AT+GMR AT version:1.7.4.0(May 11 2021 19:13:04) SDK version:3.0.4(9532ceb) compile time:May 27 2021 02:59:34 OK AT+CWLAP +CWLAP:(3,"MyWiFi",-67,"aa:bb:cc:dd:ee:ff",1) +CWLAP:(4,"NeighborNet",-82,"11:22:33:44:55:66",6) OK
Если модуль не отвечает на AT-команды, возможно:
- Неверная скорость обмена (попробуйте 9600, 57600, 115200)
- Модуль работает в другом режиме (нужна перепрошивка)
- Проблемы с питанием или подключением
Примеры кода для ESP-01
Рассмотрим несколько практических примеров использования ESP-01 в проектах.
1. Подключение к WiFi сети
Базовый пример подключения к WiFi сети с выводом IP-адреса:
#include <ESP8266WiFi.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; void setup() { Serial.begin(115200); delay(100); // Подключение к WiFi сети Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void loop() { // Здесь может быть ваш код }
2. HTTP клиент (получение данных с веб-сервера)
#include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } if (WiFi.status() == WL_CONNECTED) { HTTPClient http; http.begin("http://example.com/api/data"); // URL запроса int httpCode = http.GET(); if (httpCode > 0) { String payload = http.getString(); Serial.println(httpCode); Serial.println(payload); } else { Serial.println("Error on HTTP request"); } http.end(); } delay(30000); // Задержка 30 секунд между запросами } void loop() { }
3. HTTP сервер (управление через веб-интерфейс)
#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> ESP8266WebServer server(80); const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; void handleRoot() { String html = "<html><head><title>ESP-01 Control</title></head>"; html += "<body><h1>ESP-01 Web Server</h1>"; html += "<p>GPIO0 state: " + String(digitalRead(0)) + "</p>"; html += "<a href='/on'><button>ON</button></a>"; html += "<a href='/off'><button>OFF</button></a>"; html += "</body></html>"; server.send(200, "text/html", html); } void handleOn() { digitalWrite(2, HIGH); server.sendHeader("Location", "/"); server.send(302, "text/plain", "OK"); } void handleOff() { digitalWrite(2, LOW); server.sendHeader("Location", "/"); server.send(302, "text/plain", "OK"); } void setup() { pinMode(2, OUTPUT); digitalWrite(2, LOW); Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.on("/", handleRoot); server.on("/on", handleOn); server.on("/off", handleOff); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); }
Для работы с более сложными проектами рекомендуется использовать библиотеки:
ESP8266WiFi
- базовые WiFi функцииESP8266HTTPClient
- HTTP запросыESP8266WebServer
- веб-серверPubSubClient
- MQTT клиентArduinoOTA
- обновление по воздуху
Практические проекты с ESP-01
Вот несколько идей для проектов с использованием ESP-01:
1. WiFi реле
Управление электроприборами через веб-интерфейс или мобильное приложение. Для этого потребуется:
- ESP-01
- Релейный модуль (например, 1-канальное 5V реле)
- Оптоизолированная схема управления
- Внешний источник питания
2. Датчик температуры/влажности
Отправка данных с датчика DHT11/DHT22 на веб-сервер или в MQTT брокер. Особенности:
- Использование единственного GPIO для датчика
- Энергосберегающий режим с периодическим пробуждением
- Хранение данных при потере соединения
3. WiFi сигнализация
Охранная система с датчиками движения и отправкой уведомлений:
- ИК-датчик движения (PIR)
- Зуммер или сирена
- Отправка push-уведомлений через IFTTT или Telegram

Различные проекты на основе модуля ESP-01
Частые проблемы и их решения
Проблема | Возможные причины | Решение |
---|---|---|
Модуль не отвечает |
|
|
Не подключается к WiFi |
|
|
Сброс при передаче данных |
|
|
Не загружается прошивка |
|
|
Модуль перегревается |
|
|
Совет: Если модуль ведет себя нестабильно, попробуйте:
- Сбросить настройки AT-командой
AT+RESTORE
- Обновить прошивку до последней версии
- Использовать внешнюю антенну (для моделей с коннектором)