MicroPython: ESP32/ESP8266 – точка доступа (Access Point)
Узнайте, как настроить платы ESP32 или ESP8266 в режиме точки доступа (AP) с использованием прошивки MicroPython. Это позволяет подключаться к вашим ESP-платам напрямую по Wi-Fi без использования беспроводного маршрутизатора.
Используйте следующий фрагмент кода, чтобы настроить 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:
Thonny IDE:
uPyCraft IDE:
Подробнее о MicroPython: MicroPython Programming with ESP32 and ESP8266 eBook
ESP32/ESP8266: режим станции и режим точки доступа
В большинстве наших проектов веб-серверов на MicroPython мы подключаем ESP32 или ESP8266 к беспроводному маршрутизатору. В такой конфигурации мы можем обращаться к ESP-плате через локальную сеть.
В этом сценарии маршрутизатор выступает в роли точки доступа, а ESP-платы настроены как станция (station). Поэтому для управления ESP32 или ESP8266 необходимо быть подключённым к вашему маршрутизатору (локальной сети).
В некоторых случаях такая конфигурация может быть неудобной (например, когда поблизости нет маршрутизатора). Однако если настроить ESP-платы как точку доступа (hotspot), к ним можно подключаться с помощью любого устройства с поддержкой Wi-Fi, без необходимости подключения к маршрутизатору.
По сути, когда вы настраиваете ESP32 или ESP8266 в качестве точки доступа, создаётся собственная Wi-Fi сеть, и ближайшие Wi-Fi устройства (станции) могут к ней подключаться (например, ваш смартфон или компьютер).
В этом руководстве мы покажем, как настроить 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:
Введите пароль, который вы задали ранее.
Откройте веб-браузер и введите IP-адрес http://192.168.4.1. Должна загрузиться страница веб-сервера:
В Shell должно появиться подобное сообщение:
Заключение
В этом руководстве вы узнали, как настроить платы ESP32 или ESP8266 в качестве программной точки доступа (soft-AP) с использованием MicroPython. Если вы хотите узнать, как сделать то же самое с помощью Arduino IDE, ознакомьтесь со следующими руководствами:
ESP32 точка доступа (AP) для веб-сервера с использованием Arduino IDE
ESP8266 NodeMCU точка доступа (AP) для веб-сервера с использованием Arduino IDE
Узнайте больше о MicroPython с нашими ресурсами: