ESP32 и ESP8266 — WiFi и IoT
WiFi, HTTP-запросы, веб-сервер, dual core
Выходим в сеть: подключение к WiFi, GET/POST запросы, мини-веб-сервер на контроллере, отличие ESP32 от ESP8266 и от Uno.
Прогресс раздела0/63 · 0%
- ESP32 и ESP8266: чем отличаются и что выбратьESP32 против ESP8266: ядра, память, Bluetooth и цена.15 мин
- ESP32 DevKit: распиновка и опасные пиныКарта выводов DevKit V1: strapping-пины GPIO 0, 2, 12 и 15, входы 34–39 без подтяжки, пины внутренней flash и безопасный набор для схем.16 мин
- Первый скетч на ESP32: мигаем светодиодомПервый скетч на ESP32: мигаем светодиодом на GPIO 2, скорость порта 115200, кнопка BOOT при загрузке и мигание без delay через millis().14 мин
- Dual core ESP32: задачи на двух ядрахDual core ESP32 на практике: xTaskCreatePinnedToCore по шагам, ядро 0 для WiFi-стека и ядро 1 для логики, стек задачи в байтах, watchdog и мигалка без пауз.16 мин
- FreeRTOS для ардуинщика: задачи и очередиFreeRTOS минимум для ардуинщика: две задачи, xQueueCreate и очередь-почтовый ящик, бинарный семафор и мьютекс на Serial — без гонок и потерянных событий.16 мин
- ESP32 как IoT-датчик: показания в облакоESP32 как IoT-датчик: полный путь показания — DHT22, millis-планировщик, WiFi с таймаутом, запрос в облако и разбор ответа; лимиты сервисов и тихие отказы.17 мин
- Энергобюджет ESP32: батарейка и сонЭнергобюджет ESP32 на 18650: ток каждого режима от 120 мА до 10-150 мкА, средний ток цикла на салфетке, месяцы работы и скетч метео-датчика со сном.16 мин
- Итоговый проект: метеостанция с веб-интерфейсомФинальная сборка раздела: метеостанция с DHT22, deep sleep, публикацией на сервер и веб-страницей в браузере по кнопке.17 мин
- Два API в одном loop: опрос по расписанию без блокировокДва HTTP-источника на ESP32 по тайм-слотам millis: отдельные HTTPClient-объекты, http.end против утечек и правило одного запроса за проход loop.16 мин
- Монитор доступности: HTTP-код как пингМонитор сети на ESP32: GET на роутер раз в 10 секунд как пинг, LED-статус, счётчик отказов и журнал смен состояния — аргумент в споре с поддержкой.16 мин
- Коды ответов 200/404/500 и retry с backoffКоды HTTP 200/301/404/500/503 и вежливый повтор на ESP32: switch по коду, backoff 1-2-4-8 с, потолок пяти попыток и отличие таймаута от отказа сервера.16 мин
- Портируем скетч на ESP8266: что меняется в кодеПеренос скетча с Uno на ESP8266: ESP8266WiFi.h вместо WiFi.h, D-метки против GPIO (D4 = GPIO2), A0 до 1 В, EEPROM.begin и commit, таблица Uno против 8266.16 мин
- Ticker: задачи по расписанию без millis-костылейTicker на ESP8266: attach в секундах и attach_ms, once и detach, почему в колбэке нельзя delay и что случится со сторожем.16 мин
- Uptime и причины перезагрузок: почему плата сама рестартуетАптайм на millis: секунды в дни и часы, потолок 49,7 суток, ESP.getResetReason и таблица причин рестарта, сторож после зацикленного кода, счётчик в RTC-памяти.17 мин
- WiFi.status(): шпаргалка кодов от 0 до 6 и когда какой выпадаетКоды WiFi.status() от 0 до 6: когда выпадает WL_IDLE_STATUS, что значит WL_NO_SSID_AVAIL, почему тройка не сертификат здоровья и как не застрять в вечном while.16 мин
- Reconnect-машина: setAutoReconnect против ручного цикла на millisЧто умеет и чего не умеет WiFi.setAutoReconnect: ручной reconnect-цикл на millis с растущей паузой, счётчиком попыток и рестартом платы как последним доводом.17 мин
- RSSI и слабый сигнал: диагностика в Serial, когда связь числится живойWiFi.RSSI() как приборная панель: шкала от -30 до -95 dBm, что делать при -90, антенна, стены и расстояние, скетч с HTTP-запросом и счётчиком обрывов в Serial.16 мин
- Preferences: настройки, которые переживают вилку из розеткиPreferences на ESP32: namespace под задачу, ключи с типом в имени, тихие дефолты чужим типом, clear() по namespace и чем EEPROM.h отличается физически.16 мин
- Touch-пины: кнопка без кнопки и охота на фантомыtouchRead и тач-пины T0-T9: калибровка на месте, гистерезис и подтверждение замерами, фантомные касания от длинного провода и воды, пробуждение из сна.17 мин
- Фиксированный IP: WiFi.config и когда имя .local не спасаетWiFi.config до WiFi.begin(): адрес, шлюз и DNS, грабля «сеть есть, интернета нет», DHCP-резервация и статика в скетче, и когда адрес надёжнее имени .local.17 мин
- ESP-NOW: две платы говорят без роутераESP-NOW на ESP32: связь двух плат без роутера.16 мин
- SSE: поток событий с платы в браузерSSE на ESP32: события текут в браузер поверх обычного HTTP.16 мин
- ESP-NOW сеть: узлы, broadcast и шлюз в WiFiESP-NOW сеть на ESP32: звезда узлов и broadcast без квитанций, лимит пиров, канальная дисциплина, шлюз с WiFi роутера и статистика доставки из колбэка.17 мин
- Deep sleep: что живёт и что умирает во снеТаймерное пробуждение из deep sleep: 10 мкА во сне против 160 мА в бодрствовании, RTC-домен против основной памяти, gpio_hold для пинов и цена секунд загрузки.16 мин
- Питание ESP32: пики WiFi и просадка до brownoutПочему ESP32 перезагружается при старте WiFi: пики 350-500 мА, просадка на кабеле и AMS1117, конденсатор 470 мкФ, buck вместо LDO и повербанк с автостопом.17 мин
- Автопереподключение WiFi: backoff-лестница и Serial-журналReconnect, который переживает ночной перезапуск роутера: лестница пауз 2-60 с, журнал попыток и статусов в Serial, сброс лестницы после минуты устойчивой связи.17 мин
- Preferences.h: настройки Wi-Fi и пороги на флеш ESP32Пороги и настройки Wi-Fi на флеш ESP32: putUShort и getUShort по делу, путаница во втором аргументе begin, уборка ключей через remove и clear, ресурс флеша.16 мин
- Touch-пины ESP32: кнопка без кнопкиTouch-кнопка без кнопки: калибровка порога от базы при старте, гистерезис против стрекоты, ловушка длинного провода и умный выключатель с touchAttachInterrupt.16 мин
- Два ядра ESP32: xTaskCreatePinnedToCore для начинающихДва ядра ESP32 для новичков: фоновый экран на ядре 0, приоритеты 1-3, гонка общей переменной, volatile и portMUX простыми словами, таблица что куда повесить.16 мин
- WebServer на ESP32: ручки-эндпоинты и управление светодиодомWebServer.h на ESP32: эндпоинты server.on для светодиода, HTML-пульт с кнопками, handleClient в loop и ответ за 5-50 мс.16 мин
- mDNS: заходи по имени, а не по IPmDNS на ESP32: имя kotel.local вместо IP, порядок begin, addService и announce, анонс после реконнекта и IP-фоллбэк для Android и роутеров с IGMP-snooping.16 мин
- ESP-NOW: две платы без роутераESP-NOW между двумя ESP32: пара зеркальных структур, колбэки send и recv, payload до 250 байт и задержка 1-3 мс, канальная дисциплина и сравнение с MQTT.17 мин
- WiFi.begin: подключаемся к роутеру за десять строкWiFi.begin на ESP32: SSID и пароль, ждём WL_CONNECTED в цикле, читаем IP по DHCP в Serial и разбираем, почему первая попытка входа в сеть падает.14 мин
- WiFi.status и реконнект: авто-переподключение при обрывеWiFi.status() и реконнект на ESP32: ловим WL_DISCONNECTED, переподключаемся по millis без delay и держим связь, когда роутер перезагрузился посреди ночи.16 мин
- Точка доступа на ESP32: своя сеть WiFiWiFi.softAP на ESP32: поднимаем свою сеть с SSID и паролем, заходим на IP 192.168.4.1 с телефона и держим веб-сервер прямо на плате без роутера.17 мин
- Тач-пины ESP32: кнопки без кнопкиТач-пины ESP32: touchRead на T0-T9, значения падают при касании, порог как доля от фона, калибровка в setup, фольга вместо кнопки и ловушки GPIO0 и GPIO12.14 мин
- ESP32-C3, S3 или DevKit V1: какую плату выбратьЧто выбрать: ESP32 DevKit V1 на WROOM-32, C3 или S3.15 мин
- ESP32 от повербанка: глубокий сон и токESP32 от повербанка: deep sleep 10 мкА у чипа и 1-5 мА у DevKit, пики WiFi 300-500 мА, отсечка AUTO_OFF при токе ниже 50 мА и будильник RTC-таймера.16 мин
- Light sleep ESP32: лёгкий сон с живым контекстомLight sleep ESP32: код продолжается с той же строки после сна, millis() не сбрасывается, 0,8-1 мА у чипа против 40-120 мА, будильники таймера и RTC-пинов.16 мин
- BLE-скан ESP32: находим устройства вокругBLE-скан ESP32: BLEScan и колбэк onResult с адресом, именем и RSSI, активный скан против пассивного, дедупликация адресов и фильтры против свалки в журнале.15 мин
- Время после сна: NTP-зоны и struct tmВремя ESP32 после сна: RTC-таймер тикает во сне и time() живёт, configTzTime с зоной MSK-3, struct tm и strftime, перевёрнутый знак зоны и дрейф генератора.15 мин
- JSON по HTTP: получаем и разбираем ответСвязка HTTPClient и ArduinoJson: DynamicJsonDocument, deserializeJson, чтение temp по ключам, коды разбора и поток вместо String для больших ответов на ESP32.16 мин
- Веб-сервер на ESP32: первый HTML из скетчаWebServer.h на ESP32: server.on и server.send, HTML-страница из PROGMEM, маршруты вместо перебора if, onNotFound для чужих путей и handleClient без delay.17 мин
- Управление светодиодом из браузера: ссылки и кнопкиКнопки в браузере дергают пины платы: /on и /off через server.on, редирект 303, состояние светодиода в RAM и favicon, который кликает сам.16 мин
- mDNS: заходим на плату по имени .localИмя esp32.local вместо IP: как работает mDNS, что нужно плате и роутеру, кто понимает адреса .local, конфликты имён, кэш на 120 секунд и отладка.16 мин
- NTP-клиент: точное время из интернетаconfigTime и epoch: синхронизируем часы ESP32 по NTP, переводим unix-время в часы и минуты делением, зоны UTC и МСК, этикет NTP-пула и ловушка 1970 года.16 мин
- HTTPS на ESP32: WiFiClientSecure и сертификатыWiFiClientSecure на ESP32: setInsecure и CA-сертификаты, цена TLS-рукопожатия — секунды и 40-50 КБ памяти, откуда взять корневой CA и когда его менять.16 мин
- OTA-обновление: прошивка ESP32 по воздухуПрошивка ESP32 по воздуху: два слота флеша и порт 3232, ArduinoOTA.begin с паролем, handle() без delay в loop и чек-лист, когда сетевой порт не появляется.16 мин
- Deep sleep ESP32: микроамперы и таймер снаЭнергобюджет ESP32: 10 мкА у модуля против 15 мА DevKit, таймер сна в микросекундах, глушим WiFi перед сном и калькулятор: на сколько хватит банки 18650.16 мин
- Пробуждение из deep sleep: кнопка и причиныПробуждение ESP32 из сна: esp_sleep_get_wakeup_cause от 0 до 4, ext0 на GPIO 33, ext1 по маске, ловушка strapping-пина GPIO 12 и цикл сна в симуляторе.16 мин
- BLE-сервер на ESP32: первый Bluetooth-периферийникСобираем первый BLE-сервер на ESP32: сервис, характеристика, реклама.16 мин
- BLE-уведомления: шлём данные на телефонnotify и дескриптор CCCD: телефон сам подписывается на показания DHT.16 мин
- Bluetooth SPP: Serial по воздуху на ESP32SerialBT: знакомый Serial по воздуху на Bluetooth Classic.15 мин
- STA и AP одновременно: два режима WiFiWiFi.mode(WIFI_AP_STA): точка доступа и клиент в одной плате.16 мин
- WiFiClient и HTTPClient: GET-запрос из скетчаWiFiClient и HTTPClient на ESP32: сырой TCP-запрос руками и обёртка с кодами ответа.16 мин
- HTTP POST на ESP32: отправляем данные на серверHTTP POST с ESP32: формируем тело из показаний, ставим Content-Type, читаем 201 и ответ сервера.17 мин
- WebServer.h: маршруты, параметры и обработчикиРоутинг WebServer.h на ESP32: server.on для /led и /status, парсинг аргументов server.arg и hasArg, JSON-статус, 404 и живой разбор запросов в симуляторе.16 мин
- Асинхронный веб-сервер: ESPAsyncWebServerESPAsyncWebServer: async-сервер держит десять клиентов, пока loop() крутит датчики.17 мин
- WebSocket на ESP32: данные без перезагрузки страницыWebSocket на ESP32: живые показания в браузере без F5.16 мин
- Данные между снами: RTC-память ESP32RTC-память ESP32: 8 КБ, которые переживают глубокий сон, счётчик пробуждений на RTC_DATA_ATTR, износ EEPROM-альтернативы и модель цикла сон-работа в симуляторе.16 мин
- ESP32: первый запуск и подключение к WiFiПодключаем ESP32 к WiFi: установка пакета плат в Arduino IDE, WiFi.begin и WiFi.status по шагам, тупик с WiFi.h, отличия от Uno: 240 МГц, 3.3 В, ADC 12 бит.22 мин
- HTTP-запросы с ESP32: получаем данные из сетиШлём HTTP GET-запросы с ESP32: HTTPClient, коды ответа 200 и -1, парсинг строки ответа и вывод в Serial.20 мин
- Мини-веб-сервер на ESP32: управляем светодиодом из браузераМини-веб-сервер на ESP32: WiFiServer на 80 порту, запрос-строка, HTML-ответ и управление светодиодом из браузера.24 мин
Гайды по теме раздела
- ESP32 Bluetooth Classic: связь со смартфоном без WiFiESP32 с встроенным Bluetooth Classic + BLE: библиотека BluetoothSerial, связка со смартфоном, отличие Classic от BLE, грабли скорости и стабильности.
- ESP32-CAM: симулятор скетчей в браузере — что проверять без камерыСимулятор скетчей под ESP32-CAM: WiFi, HTTP-сервер, детектор движения — что можно проверить в браузере, а что требует живой камеры.
- ESP32-CAM: стриминг видео и фото в браузереESP32-CAM с потоковой передачей видео в браузер: настройка CameraWebServer, статический IP, захват фото по таймеру, отправка в Telegram и на SD-карту.
- ESP32 Deep Sleep: снижаем ток до 10 мкА для IoT на батарейкеГлубокий сон ESP32: esp_deep_sleep_start с таймером и EXT0/EXT1 по кнопке, RTC_DATA_ATTR для памяти, ток 10-150 мкА — IoT на батарейке месяцами.
- ESP32 OTA: беспроводное обновление прошивкиESP32 OTA по воздуху: ArduinoOTA, HTTP-обновление с сервера, разделы флеша, откат и защита паролем.
- Проекты на ESP32: 8 сборок от простых к продвинутым — WiFi, BLE и deep sleepЧто можно сделать на ESP32: 8 проектов с WiFi, BLE и deep sleep — веб-сервер, метеостанция, уведомления на телефон.
- Метеостанция на ESP32: BME280, OLED, WiFi-отправкаМетеостанция на ESP32 с BME280, OLED 0.96 дюйма и отправкой данных на сервер или в Telegram.
- WiFi-сканнер на ESP8266: ищем сети, анализируем сигналСканнер WiFi на ESP8266: WiFi.scanNetworks, RSSI, шифрование, канал.
- Wemos D1 Mini (ESP8266): компактная плата для IoT-проектовWemos D1 Mini на ESP8266: распиновка D0-D8 + A0, питание 5 В micro-USB, программирование через Arduino IDE, грабли с пинами и аналоговым входом.
- LoRa на Arduino: урок с нуля до передатчикаУрок LoRa для Arduino: подключение SX1276 (SPI), библиотека LoRa.h, код передатчика и приёмника, spreading factor, частоты 433/868/915, RSSI.
- GSM SIM800L на Arduino: урок с AT-командами до SMSУрок GSM SIM800L для Arduino: подключение через SoftwareSerial, AT-команды (AT, CSQ, CMGF, CMGS), отправка SMS (write 26=Ctrl+Z), звонки (ATD/ATA/ATH).
- ESP32-S3: распиновка DevKitC, платы Waveshare и отличие от C3Распиновка ESP32-S3-DevKitC-1: 36 выводов GPIO, USB на GPIO19 и GPIO20, разница с ESP32-C3, октальная PSRAM, встроенный JPEG-декодер и камера.