ESP32 WiFi в симуляторе
Платы ESP32 в Velxio поставляются с рабочим WiFi. Эмулируемое радио сканирует, подключается, получает IP-адрес по DHCP и выходит в интернет через NAT-шлюз эмулятора. Это реальный стек WiFi из SDK производителя, работающий на эмулируемом радио, а не заглушка: тот же скетч, без изменений, работает на физическом чипе.
Эта страница проведет вас от первого подключения к вашим собственным сетям, захвату пакетов и вашей локальной сети.
Ваше первое подключение
Заголовок раздела «Ваше первое подключение»- Откройте пример из галереи Connect to WiFi
(
/example/esp32-wifi-connect) или перетащите любую плату ESP32 на холст и вставьте приведенный ниже скетч. - Нажмите Run (Запуск). Первая компиляция сеанса занимает больше времени; последующие кэшируются.
- Откройте монитор Serial (Последовательный порт) на панели инструментов под холстом.
- Наблюдайте за подключением: собственные сообщения SDK при загрузке, затем аренда DHCP.
#include <WiFi.h>
const char* WIFI_SSID = "Velxio-GUEST"; // встроенная, открытая сеть
void setup() { Serial.begin(115200);
WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID);
Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(250); Serial.print("."); }
Serial.printf("\nConnected. IP: %s\n", WiFi.localIP().toString().c_str()); Serial.printf("Gateway: %s\n", WiFi.gatewayIP().toString().c_str()); Serial.printf("RSSI: %d dBm\n", WiFi.RSSI());}
void loop() {}Монитор последовательного порта показывает подключение и адрес, выданный эмулируемым DHCP-сервером:

Всех удивляет одна вещь в первый раз: в журнале написано
Connecting to Espressif, хотя в скетче указано Velxio-GUEST. Это
работает перезапись SSID, и следующий раздел объясняет это.
IP-адрес реален внутри симуляции: сокеты, HTTP-клиенты и MQTT библиотеки работают, начиная с этого момента. Смотрите MQTT и HTTP для полных проектов.
Встроенные сети
Заголовок раздела «Встроенные сети»Без части точки доступа на холсте радио передает сигналы четырех демонстрационных сетей. Станция подключается ровно к одной из них:
| SSID | Канал | Сигнал | Аутентификация |
|---|---|---|---|
Velxio-GUEST |
6 | -20 dBm | Открытая |
PICSimLabWifi |
1 | -25 dBm | WPA2-PSK |
Espressif |
5 | -30 dBm | WPA2-PSK |
MasseyWifi |
10 | -40 dBm | WPA2-PSK |
SSID в вашем скетче не имеет значения
Заголовок раздела «SSID в вашем скетче не имеет значения»Пока в проекте нет части точки доступа, имя сети, которое вы пишете, —
это не та сеть, к которой подключается плата. На пути к эмулятору компилятор
перезаписывает каждый литерал SSID на Espressif и обнуляет каждый литерал пароля,
будь то переменная, массив, #define или поле структуры:
const char* ssid = "MyHomeNetwork"; // компилируется как "Espressif"#define WIFI_PASS "hunter2" // компилируется как ""Вот почему скетч, скопированный из любого руководства, подключается здесь без редактирования, почему передача неправильного пароля никогда не приводит к ошибке и почему в последовательном журнале указывается сеть, которую вы не вводили. В этом нет ничего плохого.
Стоит знать два следствия:
- Добавление части точки доступа отключает перезапись. С этого момента проект определяет собственное воздушное пространство, поэтому то, что вы вводите, существует, и SSID должен соответствовать части.
- Прошивка, которая поступает уже собранной, никогда не проходит через перезапись.
Она ищет SSID, встроенный в двоичный файл, поэтому в остальном рабочий
.binможет находиться в состоянии сбоя подключения. Либо пересоберите его, указав одну из четырех сетей выше, либо транслируйте ожидаемый SSID с помощью части точки доступа.
MicroPython
Заголовок раздела «MicroPython»import networkimport time
WIFI_SSID = "Velxio-GUEST"
sta = network.WLAN(network.STA_IF)sta.active(True)sta.connect(WIFI_SSID)
while not sta.isconnected(): time.sleep(0.25)
print("Connected. ifconfig:", sta.ifconfig())sta.scan() возвращает те же сети, которые видит API Arduino, в виде
кортежей (ssid, bssid, channel, rssi, authmode, hidden).
Ваши собственные сети
Заголовок раздела «Ваши собственные сети»С планом Maker вы не ограничены демонстрационными сетями. Часть WiFi Access Point (Точка доступа WiFi) заставляет эмулируемое радио транслировать ваш SSID.
- Нажмите Add Component (Добавить компонент) на панели инструментов холста.
- Найдите
WiFi Access Pointи разместите его. Ему не требуется подключение: у него нет контактов, это воздушное пространство. - Выберите часть и установите ssid на нужную сеть, например
HomeNet. - Укажите это имя в скетче и нажмите Run.
WiFi.begin("HomeNet"); // SSID на вашей части Access Point
Как только проект содержит одну часть точки доступа, встроенные сети замолкают. Сканирование затем видит ровно то, что определено на холсте, что делает код выбора сети тестируемым.
Свойства части
Заголовок раздела «Свойства части»| Свойство | По умолчанию | Что делает |
|---|---|---|
ssid |
MyNetwork |
Имя сети, к которой подключается ваш скетч. |
password |
пусто | Сохраняется и отображается на карточке. Сеть по-прежнему транслирует открытую аутентификацию, пока не появится WPA2, поэтому скетчи, передающие пароль, все равно подключаются. |
channel |
6 |
Канал WiFi, от 1 до 13. Сообщается при сканировании. |
rssi |
-50 |
Уровень сигнала в дБм, как его видит плата, от -90 до -20. Повторные сканирования дают небольшие колебания в несколько дБ, как в реальных условиях. |
internet |
вкл | Выкл. делает сеть изолированной: плата подключается и получает IP, но ничто не маршрутизируется наружу. |
bssid |
пусто | MAC-адрес точки доступа. Пустое значение означает стабильный адрес, сгенерированный из SSID. |
Попробуйте в один клик: Connect to your own WiFi network
(/example/esp32-custom-wifi-ap) открывается с
уже размещенной частью. Запуск сканирует, находит ровно вашу сеть и
подключается к ней:

Несколько сетей одновременно
Заголовок раздела «Несколько сетей одновременно»Добавьте по одной части на сеть, чтобы протестировать выборщик или политику «самый сильный первым». Каждая часть имеет свой канал и сигнал, поэтому сканирование возвращается упорядоченным так же, как в реальности:
int n = WiFi.scanNetworks();for (int i = 0; i < n; i++) { Serial.printf("%2d: %-16s ch %2d %d dBm\n", i + 1, WiFi.SSID(i).c_str(), WiFi.channel(i), WiFi.RSSI(i));}Scan several WiFi networks
(/example/esp32-wifi-scan-multi) поставляется с
тремя частями: HomeNet на -40 дБм, Office_5G на -62 дБм и CoffeeShop на
-78 дБм.
Captive-порталы и подготовка
Заголовок раздела «Captive-порталы и подготовка»Выключите internet на части, и сеть станет изолированной. Плата подключается и получает аренду DHCP, но ни один трафик не выходит наружу. Это сценарий подготовки: устройство запускается, не находит выхода и обслуживает свою собственную страницу конфигурации.
Captive portal on an isolated network
(/example/esp32-wifi-captive-portal)
настраивает это с точкой доступа с именем SetupAP.
Панель WiFi
Заголовок раздела «Панель WiFi»Значок WiFi появляется на панели инструментов холста когда вы нажимаете Run, и исчезает при остановке: он принадлежит запущенной симуляции, поэтому его нечего открывать до ее запуска. Он серый, пока стек загружается, и зеленый, как только плата получает адрес.
Значок — это разделенная кнопка. Иконка сохраняет свое действие в один клик: при наличии IP-адреса она открывает веб-сервер платы через IoT-шлюз. Каретка рядом с ней открывает WiFi panel (панель WiFi):

Панель показывает:
-
Networks on the air (Сети в эфире), с каналом и сигналом. Заголовок говорит this project (этот проект), когда части точки доступа определяют их, и built-in (встроенные), когда четыре демонстрационные сети в эфире:

-
состояние подключения платы и ее IP-адрес после завершения DHCP;
-
Download PCAP (Скачать PCAP), трафик 802.11 за сеанс в виде файла захвата;
-
раздел local network gateway (локальный сетевой шлюз). По плану Maker в нем есть поле сопряжения; по бесплатному плану объясняется, что делает шлюз, и даются ссылки на планы.
Захватите трафик и откройте его в Wireshark
Заголовок раздела «Захватите трафик и откройте его в Wireshark»- Нажмите Run и дайте скетчу выполнить свою сетевую работу.
- Откройте панель WiFi и нажмите Download PCAP.
- Откройте файл в Wireshark.
Захват содержит управляющие кадры, DHCP, DNS и TCP с метками
симулированного времени, поэтому dhcp или dns в качестве фильтра отображения изолирует квитирование, которое вы
отлаживаете. Файл создается в вашем браузере: ничего не загружается.
Доступ к вашему собственному компьютеру
Заголовок раздела «Доступ к вашему собственному компьютеру»Сети, описанные выше, маршрутизируются в публичный интернет. Чтобы получить доступ к MQTT-брокеру,
Home Assistant или серверу разработки, работающему на вашем компьютере, запустите локальный
шлюз: смотрите Local network gateway. Скетчи
затем обращаются к вашему компьютеру как host.velxio.internal.
Готовые примеры
Заголовок раздела «Готовые примеры»| Пример | Что показывает |
|---|---|
| Connect to WiFi | Минимальное подключение к встроенной сети |
| Scan WiFi networks | scanNetworks() против встроенного набора |
| Connect to your own WiFi network | Одна часть точки доступа, сканирование и подключение |
| Scan several WiFi networks | Три сети с разными каналами и сигналом |
| Captive portal on an isolated network | internet выкл., процесс подготовки |
| NTP clock over your WiFi | UDP-запросы к реальному серверу времени |
| Fetch JSON from a web API | HTTPClient против реального REST API |
| Reach a service on your own network | host.velxio.internal через локальный шлюз |
| MQTT | Публикация и подписка на публичном брокере |
Устранение неполадок
Заголовок раздела «Устранение неполадок»| Симптом | Причина | Исправление |
|---|---|---|
| Загруженная прошивка никогда не подключается | Ее SSID встроен, поэтому компилятор не смог его переписать | Укажите встроенную сеть или добавьте часть точки доступа с этим SSID |
| Сканирование возвращает только ваши сети | Работает как задумано: одна часть точки доступа отключает встроенный набор | Удалите части, чтобы вернуть демонстрационные сети |
| Подключается и получает IP, но ничто не маршрутизируется наружу | На части выключен internet | Включите его, если только вы не тестируете captive-портал |
| Пароль не отклоняется | Эмуляция WPA2 еще не реализована, сеть транслирует открытую аутентификацию | Пока ожидаемо; пароль сохраняется на части |
host.velxio.internal не разрешается |
Нет сопряженного локального шлюза | Смотрите Local network gateway |
Какие платы
Заголовок раздела «Какие платы»WiFi доступен во всем симулированном семействе ESP32: классические платы ESP32, ESP32-S3, ESP32-C3, ESP32-C6 и ESP32-C5, а также их варианты XIAO, Nano и M5Stack. Raspberry Pi Pico W имеет собственную эмуляцию CYW43. Состояние рекламы Bluetooth также сообщается для скетчей, которые инициализируют BLE.