ESP32-WLAN im Simulator
ESP32-Boards in Velxio verfügen über funktionierendes WLAN. Das emulierte Funkmodul scannt, assoziiert, erhält eine IP-Adresse über DHCP und erreicht das Internet über das NAT-Gateway des Emulators. Es ist der echte WLAN-Stack aus dem Hersteller-SDK, der auf einem emulierten Funkmodul läuft, kein Platzhalter: Derselbe Sketch, unverändert, läuft auf dem physischen Chip.
Diese Seite führt von der ersten Verbindung zu Ihren eigenen Netzwerken, Paketmitschnitten und Ihrem realen LAN.
Ihre erste Verbindung
Abschnitt betitelt „Ihre erste Verbindung“- Öffnen Sie das Galerie-Beispiel Connect to WiFi
(
/example/esp32-wifi-connect), oder ziehen Sie ein beliebiges ESP32-Board auf die Leinwand und fügen Sie den untenstehenden Sketch ein. - Drücken Sie Run. Die erste Kompilierung einer Sitzung dauert länger; spätere werden zwischengespeichert.
- Öffnen Sie den Serial-Monitor in der Symbolleiste unter der Leinwand.
- Beobachten Sie den Beitritt: das eigene Startprotokoll des SDK, dann der DHCP-Lease.
#include <WiFi.h>
const char* WIFI_SSID = "Velxio-GUEST"; // eingebautes, offenes Netzwerk
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() {}Der serielle Monitor zeigt den Beitritt und die Adresse, die der emulierte DHCP-Server vergeben hat:

Eines überrascht beim ersten Mal jeden: Das Protokoll sagt
Connecting to Espressif, obwohl der Sketch Velxio-GUEST nennt. Das
ist die SSID-Umschreibung bei der Arbeit, und der nächste Abschnitt erklärt
sie.
Die IP ist innerhalb der Simulation real: Sockets, HTTP-Clients und MQTT-Bibliotheken funktionieren von hier an. Siehe MQTT und HTTP für vollständige Projekte.
Die eingebauten Netzwerke
Abschnitt betitelt „Die eingebauten Netzwerke“Ohne Access-Point-Teil auf der Leinwand sendet das Funkmodul vier Demonstrationsnetzwerke. Eine Station assoziiert mit genau einem von ihnen:
| SSID | Kanal | Signal | Authentifizierung |
|---|---|---|---|
Velxio-GUEST |
6 | -20 dBm | Offen |
PICSimLabWifi |
1 | -25 dBm | WPA2-PSK |
Espressif |
5 | -30 dBm | WPA2-PSK |
MasseyWifi |
10 | -40 dBm | WPA2-PSK |
Die SSID in Ihrem Sketch spielt keine Rolle
Abschnitt betitelt „Die SSID in Ihrem Sketch spielt keine Rolle“Solange das Projekt keinen Access-Point-Teil hat, ist der Netzwerkname, den
Sie schreiben, nicht der, dem das Board beitritt. Auf dem Weg zum
Emulator schreibt der Compiler jedes SSID-Literal in Espressif um und
leert jedes Passwort-Literal, ob es eine Variable, ein Array, ein #define
oder ein Strukturfeld ist:
const char* ssid = "MyHomeNetwork"; // kompiliert als "Espressif"#define WIFI_PASS "hunter2" // kompiliert als ""Deshalb verbindet sich ein Sketch, der aus einem beliebigen Tutorial kopiert wurde, hier ohne Bearbeitung, deshalb schlägt ein falsches Passwort nie fehl, und deshalb nennt das serielle Protokoll ein Netzwerk, das Sie nicht eingegeben haben. Es ist nichts falsch, wenn das passiert.
Zwei Konsequenzen, die man kennen sollte:
- Das Hinzufügen eines Access-Point-Teils schaltet die Umschreibung ab. Von da an definiert das Projekt seinen eigenen Luftraum, also ist das, was Sie eingeben, das, was existiert, und die SSID muss mit einem Teil übereinstimmen.
- Firmware, die bereits kompiliert ankommt, durchläuft die Umschreibung
nie. Sie sucht nach der im Binärformat eingebackenen SSID, weshalb ein
sonst funktionierender
.bineinfach dasitzt und keine Verbindung herstellen kann. Entweder bauen Sie sie neu auf und benennen eines der vier obigen Netzwerke, oder Sie senden die SSID, die sie erwartet, mit einem Access-Point-Teil.
MicroPython
Abschnitt betitelt „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() gibt dieselben Netzwerke zurück, die die Arduino-API sieht, als
(ssid, bssid, channel, rssi, authmode, hidden)-Tupel.
Ihre eigenen Netzwerke
Abschnitt betitelt „Ihre eigenen Netzwerke“Mit einem Maker-Plan sind Sie nicht auf die Demo-Netzwerke beschränkt. Ein WiFi Access Point-Teil lässt das emulierte Funkmodul Ihre SSID senden.
- Klicken Sie auf Add Component in der Leinwand-Symbolleiste.
- Suchen Sie nach
WiFi Access Pointund platzieren Sie es. Es benötigt keine Verkabelung: Es hat keine Pins, es ist Luftraum. - Wählen Sie das Teil aus und setzen Sie ssid auf das gewünschte
Netzwerk, z. B.
HomeNet. - Richten Sie den Sketch auf diesen Namen aus und drücken Sie Run.
WiFi.begin("HomeNet"); // die SSID auf Ihrem Access Point Teil
Sobald ein Projekt ein Access-Point-Teil enthält, verstummen die eingebauten Netzwerke. Ein Scan sieht dann genau das, was die Leinwand definiert, was Netzwerkauswahlcode testbar macht.
Teileigenschaften
Abschnitt betitelt „Teileigenschaften“| Eigenschaft | Standard | Was es tut |
|---|---|---|
ssid |
MyNetwork |
Der Netzwerkname, mit dem sich Ihr Sketch verbindet. |
password |
leer | Wird auf der Karte gespeichert und angezeigt. Das Netzwerk sendet weiterhin offene Authentifizierung, bis WPA2 verfügbar ist, also verbinden sich Sketches, die ein Passwort übergeben, trotzdem. |
channel |
6 |
WLAN-Kanal, 1 bis 13. Wird von Scans gemeldet. |
rssi |
-50 |
Signalstärke in dBm, wie das Board sie sieht, -90 bis -20. Wiederholte Scans schwanken ein paar dB, wie es echte tun. |
internet |
an | Aus macht das Netzwerk isoliert: Das Board assoziiert und erhält eine IP, aber nichts wird nach außen geroutet. |
bssid |
leer | AP-MAC-Adresse. Leer bedeutet eine stabile, die aus der SSID generiert wird. |
Probieren Sie es mit einem Klick aus: Connect to your own WiFi network
(/example/esp32-custom-wifi-ap) öffnet
sich mit dem bereits platzierten Teil. Wenn Sie es ausführen, scannt es,
findet genau Ihr Netzwerk und tritt ihm bei:

Mehrere Netzwerke gleichzeitig
Abschnitt betitelt „Mehrere Netzwerke gleichzeitig“Fügen Sie ein Teil pro Netzwerk hinzu, um einen Picker oder eine “Stärkstes zuerst”-Richtlinie zu testen. Jedes hat seinen eigenen Kanal und sein eigenes Signal, sodass ein Scan so geordnet zurückkommt, wie es ein echter tun würde:
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) enthält
drei Teile: HomeNet bei -40 dBm, Office_5G bei -62 dBm und CoffeeShop
bei -78 dBm.
Captive Portale und Provisionierung
Abschnitt betitelt „Captive Portale und Provisionierung“Schalten Sie internet an einem Teil aus, und das Netzwerk wird isoliert. Das Board assoziiert und erhält einen DHCP-Lease, aber kein Datenverkehr verlässt das Netzwerk. Das ist das Provisionierungsszenario: Das Gerät startet, findet keinen Weg nach draußen und stellt seine eigene Konfigurationsseite bereit.
Captive portal on an isolated network
(/example/esp32-wifi-captive-portal)
richtet dies mit einem AP namens SetupAP ein.
Das WLAN-Panel
Abschnitt betitelt „Das WLAN-Panel“Ein WLAN-Abzeichen erscheint in der Leinwand-Symbolleiste, wenn Sie Run drücken, und verschwindet bei Stop: Es gehört zur laufenden Simulation, es gibt also nichts zu öffnen, bevor man eine startet. Es ist grau, während der Stack bootet, und grün, sobald das Board eine Adresse hat.
Das Abzeichen ist eine geteilte Schaltfläche. Das Symbol behält seine Ein-Klick-Aktion: Mit einer IP öffnet es den Webserver des Boards über das IoT-Gateway. Das Caret daneben öffnet das WiFi panel:

Das Panel zeigt:
-
Netzwerke auf dem Kanal, mit Kanal und Signal. Die Überschrift sagt this project, wenn Access-Point-Teile sie definieren, und built-in, wenn die vier Demo-Netzwerke auf dem Kanal sind:

-
den Assoziationsstatus des Boards und seine IP, sobald DHCP abgeschlossen ist;
-
Download PCAP, den 802.11-Datenverkehr des Laufs als Mitschnittdatei;
-
den Abschnitt Lokales Netzwerk-Gateway. Bei einem Maker-Plan enthält er das Kopplungsfeld; beim kostenlosen Plan erklärt er, was das Gateway tut, und verlinkt auf die Pläne.
Datenverkehr erfassen und in Wireshark öffnen
Abschnitt betitelt „Datenverkehr erfassen und in Wireshark öffnen“- Drücken Sie Run und lassen Sie den Sketch seine Netzwerkarbeit erledigen.
- Öffnen Sie das WLAN-Panel und klicken Sie auf Download PCAP.
- Öffnen Sie die Datei in Wireshark.
Der Mitschnitt enthält Verwaltungsrahmen, DHCP, DNS und TCP mit
simulierten Zeitstempeln, sodass dhcp oder dns als Anzeigefilter den
Handshake isoliert, den Sie debuggen. Die Datei wird in Ihrem Browser
erstellt: Es wird nichts hochgeladen.
Ihr eigenes Gerät erreichen
Abschnitt betitelt „Ihr eigenes Gerät erreichen“Die obigen Netzwerke routen ins öffentliche Internet. Um den MQTT-Broker,
Home Assistant oder den Entwicklungsserver zu erreichen, der auf Ihrem
Rechner läuft, führen Sie das lokale Gateway aus: siehe Lokales
Netzwerk-Gateway. Sketches erreichen Ihren
Rechner dann als host.velxio.internal.
Fertige Beispiele
Abschnitt betitelt „Fertige Beispiele“| Beispiel | Was es zeigt |
|---|---|
| Connect to WiFi | Der minimale Beitritt zu einem eingebauten Netzwerk |
| Scan WiFi networks | scanNetworks() gegen die eingebaute Menge |
| Connect to your own WiFi network | Ein Access-Point-Teil, Scan und Beitritt |
| Scan several WiFi networks | Drei Netzwerke mit verschiedenen Kanälen und Signal |
| Captive portal on an isolated network | internet aus, Provisionierungsablauf |
| NTP clock over your WiFi | UDP zu einem echten Zeitserver |
| Fetch JSON from a web API | HTTPClient gegen eine echte REST-API |
| Reach a service on your own network | host.velxio.internal über das lokale Gateway |
| MQTT | Publizieren und Abonnieren auf einem öffentlichen Broker |
Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“| Symptom | Ursache | Lösung |
|---|---|---|
| Hochgeladene Firmware assoziiert nie | Ihre SSID ist eingebacken, der Compiler konnte sie also nicht umschreiben | Benennen Sie ein eingebautes Netzwerk oder fügen Sie ein Access-Point-Teil mit dieser SSID hinzu |
| Ein Scan gibt nur Ihre Netzwerke zurück | Funktioniert wie vorgesehen: Ein Access-Point-Teil schaltet die eingebaute Menge stumm | Entfernen Sie die Teile, um die Demo-Netzwerke zurückzubekommen |
| Assoziiert und erhält eine IP, aber nichts wird geroutet | Das Teil hat internet ausgeschaltet | Schalten Sie es ein, es sei denn, Sie testen ein Captive Portal |
| Ein Passwort wird nicht abgelehnt | WPA2-Emulation ist noch nicht verfügbar, das Netzwerk sendet offene Authentifizierung | Derzeit erwartet; das Passwort wird auf dem Teil gespeichert |
host.velxio.internal löst nicht auf |
Kein lokales Gateway gekoppelt | Siehe Lokales Netzwerk-Gateway |
Welche Boards
Abschnitt betitelt „Welche Boards“WLAN ist in der gesamten simulierten ESP32-Familie verfügbar: die klassischen ESP32-Boards, ESP32-S3, ESP32-C3, ESP32-C6 und ESP32-C5, plus deren XIAO, Nano- und M5Stack-Varianten. Der Raspberry Pi Pico W hat seine eigene CYW43-Emulation. Der Bluetooth-Werbestatus wird auch für Sketches gemeldet, die BLE initialisieren.