Подключаемся к Wi-Fi: network и station mode
Делаем главный шаг к умному дому — выводим плату в сеть.
Station mode (STA) — режим, в котором ESP32 подключается к существующей Wi-Fi-сети (роутеру) как обычный клиент, подобно телефону или ноутбуку.
Два режима Wi-Fi
ESP32 умеет работать в двух режимах: STA (подключиться к чужой сети) и AP (самому раздавать сеть, точка доступа). Для умного дома обычно нужен STA — плата идёт в ваш домашний роутер и через него в интернет.
Код подключения
import network
import time
def connect_wifi(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print("Подключаюсь к", ssid)
wlan.connect(ssid, password)
# ждём подключения
for _ in range(20):
if wlan.isconnected():
break
time.sleep(0.5)
if wlan.isconnected():
print("Подключено! IP:", wlan.ifconfig()[0])
else:
print("Не удалось подключиться")
return wlan
wlan = connect_wifi("MyHomeWiFi", "secret123")Что возвращает ifconfig
wlan.ifconfig() отдаёт кортеж из четырёх адресов: IP платы, маска сети, шлюз (роутер), DNS-сервер. Первый элемент — IP, по которому к плате можно обратиться из дома.
Ожидание подключения с таймаутом
Логику «ждать N попыток, потом сдаться» можно проверить на обычном Python:
# Симуляция: на какой попытке появилось соединение
def simulate(connected_at, max_tries=20):
for attempt in range(1, max_tries + 1):
connected = attempt >= connected_at
if connected:
return f"Подключено с попытки {attempt}"
return "Таймаут: не подключились"
print(simulate(connected_at=6))
print(simulate(connected_at=99))Вывод:
Подключено с попытки 6 Таймаут: не подключились
Как работает под капотом
Когда вы вызываете wlan.connect(), Wi-Fi-стек ESP32 (он крутится на отдельном ядре под FreeRTOS) ищет сеть с заданным именем, проходит аутентификацию по паролю и получает IP-адрес от роутера по протоколу DHCP. Всё это занимает 1–5 секунд, поэтому подключение асинхронно: connect() запускает процесс, а isconnected() сообщает, готово ли. Отсюда и цикл ожидания.
Частые ошибки
- Не ждать подключения. Сразу после
connect()сети ещё нет — нужен цикл сisconnected(). - Хранить пароль прямо в коде на GitHub. Выносите учётные данные в отдельный файл (например,
config.py), не публикуйте. - Сеть 5 ГГц. ESP32 (большинство моделей) работает только в диапазоне 2.4 ГГц — к сети 5 ГГц не подключится.
Итог
- Station mode (STA) подключает ESP32 к домашнему роутеру как клиента.
- Порядок:
WLAN(STA_IF)→active(True)→connect()→ ждатьisconnected(). ifconfig()[0]возвращает IP-адрес платы.- ESP32 работает в диапазоне 2.4 ГГц; пароли выносите из кода.