MicroPython: ESP32/ESP8266 – точка доступа (Access Point)

Узнайте, как настроить платы ESP32 или ESP8266 в режиме точки доступа (AP) с использованием прошивки MicroPython. Это позволяет подключаться к вашим ESP-платам напрямую по Wi-Fi без использования беспроводного маршрутизатора.

MicroPython: ESP32/ESP8266 точка доступа (Access Point)

Используйте следующий фрагмент кода, чтобы настроить ESP32 или ESP8266 в качестве точки доступа с помощью MicroPython:

ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid=ssid, password=password)

Предварительные требования

Для прохождения этого руководства вам необходимо установить прошивку MicroPython на платы ESP32 или ESP8266. Также вам понадобится IDE для написания и загрузки кода на плату. Мы предлагаем использовать Thonny IDE или uPyCraft IDE:

Подробнее о MicroPython: MicroPython Programming with ESP32 and ESP8266 eBook

ESP32/ESP8266: режим станции и режим точки доступа

В большинстве наших проектов веб-серверов на MicroPython мы подключаем ESP32 или ESP8266 к беспроводному маршрутизатору. В такой конфигурации мы можем обращаться к ESP-плате через локальную сеть.

В этом сценарии маршрутизатор выступает в роли точки доступа, а ESP-платы настроены как станция (station). Поэтому для управления ESP32 или ESP8266 необходимо быть подключённым к вашему маршрутизатору (локальной сети).

ESP32/ESP8266 в режиме станции (Station) MicroPython

В некоторых случаях такая конфигурация может быть неудобной (например, когда поблизости нет маршрутизатора). Однако если настроить ESP-платы как точку доступа (hotspot), к ним можно подключаться с помощью любого устройства с поддержкой Wi-Fi, без необходимости подключения к маршрутизатору.

По сути, когда вы настраиваете ESP32 или ESP8266 в качестве точки доступа, создаётся собственная Wi-Fi сеть, и ближайшие Wi-Fi устройства (станции) могут к ней подключаться (например, ваш смартфон или компьютер).

ESP32/ESP8266 в режиме точки доступа (Access Point) MicroPython

В этом руководстве мы покажем, как настроить ESP32 и ESP8266 в качестве точки доступа в проектах с веб-серверами. Таким образом, для управления ими не нужно быть подключённым к маршрутизатору.

Поскольку ESP не подключается к проводной сети (как ваш маршрутизатор), такая точка доступа называется soft-AP (программная точка доступа – soft Access Point).

Это означает, что если вы попытаетесь загрузить библиотеки или использовать прошивку из интернета, это не сработает. Также не будут работать HTTP-запросы к интернет-сервисам, например публикация показаний датчиков в облако.

ESP32/ESP8266 MicroPython: точка доступа (AP) для веб-сервера

Для демонстрации мы создадим простой веб-сервер «Hello, World!». Чтобы узнать больше о создании веб-сервера на ESP32 или ESP8266, вы можете прочитать следующее руководство:

Скопируйте следующий код в файл boot.py и загрузите его на вашу плату.

# Полное описание проекта на https://RandomNerdTutorials.com

try:
  import usocket as socket
except:
  import socket

import network

import esp
esp.osdebug(None)

import gc
gc.collect()

ssid = 'MicroPython-AP'
password = '123456789'

ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid=ssid, password=password)

while ap.active() == False:
  pass

print('Connection successful')
print(ap.ifconfig())

def web_page():
  html = """<html><head><meta name="viewport" content="width=device-width, initial-scale=1"></head>
  <body><h1>Hello, World!</h1></body></html>"""
  return html

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)

while True:
  conn, addr = s.accept()
  print('Got a connection from %s' % str(addr))
  request = conn.recv(1024)
  print('Content = %s' % str(request))
  response = web_page()
  conn.send(response)
  conn.close()

Просмотреть исходный код

Настройка SSID и пароля

Вам нужно задать имя SSID и пароль для вашей точки доступа. В этом примере мы задаём имя SSID как MicroPython-AP, но вы можете изменить его на любое другое. Пароль – 123456789, его тоже можно изменить.

ssid = 'MicroPython-AP'
password = '123456789'

Настройка точки доступа в MicroPython

Затем создайте точку доступа с помощью следующей строки кода:

ap = network.WLAN(network.AP_IF)

Активируйте точку доступа:

ap.active(True)

Настройте точку доступа с помощью ранее заданных ssid и password:

ap.config(essid=ssid, password=password)

Следующие строки выводят IP-адрес точки доступа:

print('Connection successful')
print(ap.ifconfig())

По умолчанию IP-адрес – 192.168.4.1.

Теперь точка доступа создана.

Socket-сервер

Для демонстрации мы создаём socket-сервер, который отображает сообщение «Hello, World!».

def web_page():
  html = """<html><head><meta name="viewport" content="width=device-width, initial-scale=1"</head><body><h1>Hello, World!</h1></body></html>"""
  return html

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)

while True:
  conn, addr = s.accept()
  print('Got a connection from %s' % str(addr))
  request = conn.recv(1024)
  print('Content = %s' % str(request))
  response = web_page()
  conn.send(response)
  conn.close()

Подключение к точке доступа (AP)

После загрузки кода в качестве boot.py на плату ESP32 или ESP8266, откройте на смартфоне настройки Wi-Fi и нажмите на сеть MicroPython-AP:

Подключение к точке доступа ESP32/ESP8266 с использованием MicroPython

Введите пароль, который вы задали ранее.

Подключение к точке доступа MicroPython -- ввод пароля

Откройте веб-браузер и введите IP-адрес http://192.168.4.1. Должна загрузиться страница веб-сервера:

Веб-сервер точки доступа MicroPython -- тест в браузере

В Shell должно появиться подобное сообщение:

Точка доступа MicroPython -- отладочная информация в Shell

Заключение

В этом руководстве вы узнали, как настроить платы ESP32 или ESP8266 в качестве программной точки доступа (soft-AP) с использованием MicroPython. Если вы хотите узнать, как сделать то же самое с помощью Arduino IDE, ознакомьтесь со следующими руководствами:

Узнайте больше о MicroPython с нашими ресурсами: