Kommunikation zwischen zwei ESP32-Geräten
Dieses Tutorial zeigt dir, wie man eine Verbindung zwischen zwei ESP32-Geräten über TCP/IP über WLAN herstellt und Daten austauscht. Ein ESP32 fungiert als TCP-Client und der andere als TCP-Server. Wir lernen außerdem im Detail anhand eines Beispiels:
- ESP32 #1 ist mit einem Knopf verbunden und fungiert als TCP-Client.
- ESP32 #2 ist mit einer LED verbunden und fungiert als TCP-Server.
- Zwei ESP32 verbinden sich über das Internet miteinander.
- Wenn der Knopf an ESP32 #1 gedrückt wird, leuchtet die LED an ESP32 #2.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables ESP32 Starter-Kit (ESP32 enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Kommunikation zwischen zwei ESP32-Geräten – Übersicht
Es gibt viele Möglichkeiten, wie ESP32 #1 mit ESP32 #2 kommunizieren kann. Je nach Abstand können wir eine der unten genannten Möglichkeiten auswählen:
Methods | Distance |
---|---|
SPI | very short |
I2C | very short |
UART (TTL) | very short |
UART (RS-232/485/422) | short |
Bluetooth | short |
LoRa | long |
WiFi | unlimited(*) |
※ Notiz:
(*):
- Wenn wir beide ESP32 mit dem Internet verbinden, ist die Reichweite der Kommunikation unbegrenzt
- Wenn wir beide ESP32 nicht mit dem Internet verbinden, sondern sie im selben LAN verbinden, ist die Reichweite der Kommunikation auf das LAN beschränkt
Dieses Tutorial wird WiFi zur Kommunikation zwischen zwei ESP32 verwenden.
Kommunikation zwischen zwei ESP32s über WLAN
Zwei ESP32s können über WLAN miteinander kommunizieren, wenn:
- Zwei ESP32 im gleichen LAN-Netzwerk. Sie benötigen keinen Internetzugang.
- Zwei ESP32 in verschiedenen LAN-Netzen. Sie müssen eine Internetverbindung herstellen.
Es gibt zwei Möglichkeiten, wie zwei ESP32 miteinander kommunizieren können.
- Zwei ESP32 kommunizieren direkt miteinander: Ein ESP32 ist ein TCP-Client, der andere ist ein TCP-Server.
- Zwei ESP32 kommunizieren indirekt miteinander über einen zentralen Server (z. B. MQTT-Server): Beide ESP32 sind TCP-Clients. Siehe das Tutorial ESP32-to-ESP32 Communication via MQTT.
Es braucht ein Anwendungsprotokoll, das zwei ESP32s verwenden, um miteinander zu kommunizieren. Zum Beispiel:
- Eigenes Protokoll über reines TCP (direkt)
- Modbus TCP (direkt)
- HTTP (direkt)
- Telnet (direkt)
- SSH (direkt)
- MQTT (indirekt über einen Server)
※ Notiz:
- UDP-Protokoll liegt außerhalb des Rahmens dieses Tutorials.
Beispielanwendung
Lassen Sie uns die folgende Anwendung realisieren: Ein Knopf/Schalter, der mit ESP32 #1 verbunden ist, steuert eine LED, die mit ESP32 #2 über WLAN verbunden ist.

Um es einfach zu machen, wird dieses Tutorial ein von uns selbst definiertes Protokoll verwenden (von uns definiert, kein Standard).
Selbstdefiniertes Protokoll
Wir definieren ein einfaches Protokoll wie folgt:
- Stelle eine TCP-Verbindung zwischen ESP32 #1 und ESP32 #2 her
- ESP32 #1:
- TCP-Client: stellt aktiv eine TCP-Verbindungsanfrage an ESP32 #2
- Wenn der Schalterzustand auf EIN geändert wird, sendet ESP32 #1 ein Byte (Befehl) mit dem Wert 1 an ESP32 #2.
- Wenn der Schalterzustand auf AUS geändert wird, sendet ESP32 #1 ein Byte (Befehl) mit dem Wert 0 an ESP32 #2.
- ESP32 #2:
- TCP-Server: hört auf eine TCP-Verbindungsanfrage von ESP32 #1. Falls es eine TCP-Anfrage gibt, akzeptiert er sie und die Verbindung wird hergestellt.
- Empfängt es ein Byte:
- Ist der Wert 1, LED einschalten
- Ist der Wert 0, LED ausschalten
- Schaltplan für ESP32 #1: TCP-Client + einen Knopf/Schalter
- Schaltplan für ESP32 #2: TCP-Server + eine LED
- ESP32 - LED Tutorial
- ESP32 - Button Tutorial
- Wenn Sie ESP32 zum ersten Mal verwenden, sehen Sie sich wie man die Umgebung für ESP32 in der Arduino IDE einrichtet an.
- Verbinden Sie einen Knopf oder Schalter mit ESP32 #1.
- Verbinden Sie eine LED mit ESP32 #2.
- Öffnen Sie die Arduino IDE (auch Arduino IDE #1 genannt).
- Installieren Sie ezButton-Bibliothek in der Arduino IDE.
- Verbinden Sie ESP32 #1 über USB-Kabel mit dem PC und wählen Sie den COM-Port von ESP32 #1 in Arduino IDE #1 aus.
- Öffnen Sie ein weiteres Arduino IDE-Fenster (genannt Arduino IDE #2) indem Sie auf das Arduino IDE-Symbol auf Ihrem PC klicken (wichtig!())
- Verbinden Sie ESP32 #2 über USB-Kabel mit dem PC und wählen Sie den COM-Port von ESP32 #2 in der Arduino IDE #2 aus.
- Kopieren Sie den Code von ESP32 #1, fügen Sie ihn in Arduino IDE #1 ein und speichern Sie ihn (benannt ESP321).
- Kopieren Sie den Code von ESP32 #2, fügen Sie ihn in Arduino IDE #2 ein und speichern Sie ihn (benannt ESP322).
- Laden Sie zuerst den Code von ESP32 #2 auf ESP32 #2 hoch.
- Öffnen Sie den Serial Monitor in Arduino IDE #2, um die TCP-Server-IP-Adresse zu erhalten.
- Aktualisieren Sie die TCP-Server-IP-Adresse im ESP32 #1-Code
- Laden Sie den ESP32 #1-Code auf ESP32 #1 hoch
- Öffnen Sie den seriellen Monitor in der Arduino-IDE #1
- Drücken und halten Sie den Knopf am ESP32 #1 → beobachten Sie den Zustand der LED am ESP32 #2 (AN)
- Lassen Sie den Knopf am ESP32 #1 los → beobachten Sie den Zustand der LED am ESP32 #2 (AUS)
- Wiederholen Sie den obigen Vorgang mehrmals.
- Sehen Sie die Ausgabe auf beiden seriellen Monitoren
- Serieller Monitor von ESP32 #1
- Serieller Monitor von ESP32 #2
- (): Wenn Sie das Arduino IDE #2-Fenster über „Datei“ → „Neu“ oder „Öffnen“ aus dem Arduino IDE #2-Fenster öffnen, können Sie nicht zwei Serial-Monitore für zwei ESP32 gleichzeitig auf demselben PC öffnen.
- Es gibt eine Alternative zu diesem selbst definierten Protokoll. Es handelt sich um Modbus TCP. Das Modbus-Protokoll ist standardisiert. Es hat viele Vorteile gegenüber dem selbst definierten Protokoll. Weitere Informationen finden Sie im ESP32 - Modbus Tutorial.
Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
※ Notiz:
Eine LED benötigt einen Vorwiderstand, falls sie keinen eingebauten Widerstand hat. Wir haben spezielle Tutorials für Taster und LED. Weitere Informationen dazu finden Sie unter:
ESP32-Code für ESP32 #1
ESP32-Code für ESP32 Nr. 2
Schnelle Schritte
※ Notiz:
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.