Kommunikation zwischen zwei Arduino Nano ESP32-Boards
Dieser Leitfaden zeigt Ihnen, wie Sie eine Verbindung zwischen zwei Arduino Nano ESP32-Geräten herstellen, die TCP/IP über WLAN verwenden, und Daten austauschen. Ein Arduino Nano ESP32 fungiert als TCP-Client, während das andere als TCP-Server fungiert. Lassen Sie uns den Prozess anhand eines Beispiels genauer betrachten:
- Der erste Arduino Nano ESP32 (bezeichnet als Arduino Nano ESP32 #1) ist mit einem Knopf verbunden und fungiert als TCP-Client.
- Der zweite Arduino Nano ESP32 (bezeichnet als Arduino Nano ESP32 #2) ist mit einer LED verbunden und fungiert als TCP-Server.
- Beide Arduino Nano ESP32-Geräte verbinden sich über das lokale LAN oder das Internet miteinander.
- Wenn der Knopf am Arduino Nano ESP32 #1 gedrückt wird, wird die LED am Arduino Nano ESP32 #2 eingeschaltet.

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) |
Kaufhinweis: Um den Verdrahtungsprozess zu vereinfachen, empfehlen wir die Verwendung des LED Module, das mit einem eingebauten Widerstand geliefert wird.
Kommunikation zwischen zwei Arduino Nano ESP32 – Übersicht
Es gibt verschiedene Methoden, um die Kommunikation zwischen "Arduino Nano ESP32 #1" und "Arduino Nano ESP32 #2" zu ermöglichen. Die Wahl der Methode hängt von der Entfernung zwischen ihnen ab. Zu den Optionen gehören:
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 beide Arduino Nano ESP32-Geräte mit dem Internet verbunden sind, ist die Kommunikationsreichweite unbegrenzt.
- Wenn beide Arduino Nano ESP32-Geräte nicht mit dem Internet verbunden sind, aber im selben LAN (Local Area Network) verbunden sind, ist die Kommunikationsreichweite auf das LAN beschränkt.
In diesem Tutorial wird WiFi verwendet, um die Kommunikation zwischen zwei ESP32-Boards zu ermöglichen.
Kommunikation zwischen zwei Arduino Nano ESP32 über WLAN
Zwei Arduino Nano ESP32-Geräte können über WiFi unter den folgenden Bedingungen kommunizieren:
- Wenn sich beide Arduino Nano ESP32-Geräte im selben LAN (Local Area Network) befinden, können sie kommunizieren, ohne eine Internetverbindung herstellen zu müssen.
- Wenn sich die beiden Arduino Nano ESP32-Geräte in verschiedenen LAN-Netzwerken befinden, müssen sie eine Internetverbindung herstellen, um die Kommunikation zu ermöglichen.
Es gibt zwei Hauptmethoden für die Kommunikation zwischen zwei Arduino Nano ESP32-Geräten:
- Direkte Kommunikation:
- In dieser Methode fungiert ein Arduino Nano ESP32 als TCP-Client, während der andere als TCP-Server dient. Sie kommunizieren direkt miteinander über WLAN.
- Beide Arduino Nano ESP32-Geräte fungieren als TCP-Clients und kommunizieren indirekt über einen zentralen Server, wie z. B. ein MQTT-Server. Sie können sich auf das Tutorial ESP32-to-Arduino Nano ESP32 Communication via MQTT beziehen, um Implementierungsdetails zu erhalten.
- Selbstdefiniertes Protokoll über rohes TCP (für direkte Kommunikation verwendet)
- Modbus TCP (für direkte Kommunikation verwendet)
- HTTP (für direkte Kommunikation verwendet)
- Telnet (für direkte Kommunikation verwendet)
- SSH (für direkte Kommunikation verwendet)
- MQTT (für indirekte Kommunikation über einen Server verwendet)
^ Indirekte Kommunikation über einen zentralen Server (z. B. MQTT-Server):
Es wird ein Anwendungsprotokoll benötigt, das von zwei Arduino Nano ESP32s verwendet wird, um miteinander zu kommunizieren. Zum Beispiel:
Beispielanwendung
Lass uns die folgende Anwendung implementieren: Ein Knopf oder Schalter, der mit Arduino Nano ESP32 #1 verbunden ist, wird eine LED, die mit Arduino Nano ESP32 #2 verbunden ist, über WLAN steuern.

Um es zu vereinfachen, verwenden wir ein selbstdefiniertes Protokoll (von uns erstellt, kein Standard).
Selbstdefiniertes Protokoll
Wir definieren ein einfaches Protokoll wie folgt:
- Stelle eine TCP-Verbindung zwischen Arduino Nano ESP32 #1 und Arduino Nano ESP32 #2
- Arduino Nano ESP32 #1:
- TCP-Client: stellt aktiv eine TCP-Verbindungsanfrage an Arduino Nano ESP32 #2
- Wenn der Zustand des Schalters auf AN geändert wird, sendet Arduino Nano ESP32 #1 ein Byte (Kommando) mit dem Wert 1 an Arduino Nano ESP32 #2.
- Wenn der Zustand des Schalters auf AUS geändert wird, sendet Arduino Nano ESP32 #1 ein Byte (Kommando) mit dem Wert 0 an Arduino Nano ESP32 #2.
- Arduino Nano ESP32 #2:
- TCP-Server: wartet auf eine TCP-Verbindungsanfrage von Arduino Nano ESP32 #1. Wenn es eine TCP-Anfrage gibt, akzeptiert er sie und die Verbindung wird hergestellt.
- Wenn es ein Byte empfängt:
- Wenn der Wert 1 ist, LED einschalten
- Wenn der Wert 0 ist, LED ausschalten
- Schaltplan für Arduino Nano ESP32 #1: TCP-Client + eine Taste oder einen Schalter
- Schaltplan für Arduino Nano ESP32 #2: TCP-Server + eine LED
- Arduino Nano ESP32 - LED Tutorial
- Arduino Nano ESP32 - Taster Tutorial
- Wenn Sie ESP32 zum ersten Mal verwenden, sehen Sie wie man die Umgebung für Arduino Nano ESP32 in der Arduino IDE einrichtet.
- Schließen Sie einen Knopf/Schalter an den Arduino Nano ESP32 #1 an.
- Schließen Sie eine LED an den Arduino Nano ESP32 #2 an.
- Öffnen Sie die Arduino IDE (im Folgenden Arduino IDE #1 genannt)
- Installieren Sie ezButton-Bibliothek in der Arduino IDE
- Verbinden Sie den Arduino Nano ESP32 #1 per USB-Kabel mit dem PC und wählen Sie den COM-Port des Arduino Nano ESP32 #1 in der Arduino IDE #1 aus.
- Öffnen Sie ein weiteres Fenster der Arduino IDE (im Folgenden Arduino IDE #2 genannt) durch Klicken auf das Arduino IDE-Symbol auf Ihrem PC (wichtig!())
- Verbinden Sie den Arduino Nano ESP32 #2 per USB-Kabel mit dem PC und wählen Sie den COM-Port des Arduino Nano ESP32 #2 in der Arduino IDE #2 aus.
- Kopieren Sie den Code des Arduino Nano ESP32 #1, fügen Sie ihn in die Arduino IDE #1 ein und speichern Sie ihn (benannt ESP321).
- Kopieren Sie den Code des Arduino Nano ESP32 #2, fügen Sie ihn in die Arduino IDE #2 ein und speichern Sie ihn (benannt ESP322).
- Laden Sie zuerst den Code des Arduino Nano ESP32 #2 in den Arduino Nano ESP32 #2.
- Öffnen Sie den Seriellen Monitor in der Arduino IDE #2 und ermitteln Sie die TCP-Server-IP-Adresse.
- Aktualisiere die TCP-Server-IP-Adresse im Code des Arduino Nano ESP32 #1
- Lade den Arduino Nano ESP32 #1-Code auf das Arduino Nano ESP32 #1
- Öffne den seriellen Monitor in der Arduino IDE #1
- Drücke und halte den Knopf am Arduino Nano ESP32 #1 → sieh den LED-Zustand am Arduino Nano ESP32 #2 (AN)
- Lass den Knopf am Arduino Nano ESP32 #1 los → sieh den LED-Zustand am Arduino Nano ESP32 #2 (AUS)
- Wiederhole den oben beschriebenen Vorgang mehrmals.
- Sieh die Ausgaben auf beiden seriellen Monitoren.
- Serieller Monitor von Arduino Nano ESP32 #1
- Serieller Monitor von Arduino Nano ESP32 #2
- (): Wenn Sie das Arduino-IDE-Fenster Nr. 2 über „Datei“ → „Neu“ oder „Öffnen“ aus dem Arduino-IDE-Fenster Nr. 2 öffnen, können Sie NICHT zwei serielle Monitore für zwei Arduino Nano 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 Tutorial Arduino Nano ESP32 - Modbus Tutorial
Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
※ Notiz:
Für die LED wird ein Widerstand benötigt, falls sie keinen eingebauten Widerstand hat. Wir haben spezielle Tutorials für Taster und LED. Sie können mehr darüber in folgenden Tutorials erfahren:
Arduino Nano ESP32 Code für Arduino Nano ESP32 Nr. 1
Arduino Nano ESP32 Code für Arduino Nano ESP32 #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.