Kommunikation zwischen zwei Arduino-Boards
In diesem Tutorial werden wir lernen:
- Kommunikation zwischen zwei Arduino-Boards – Übersicht
- Kommunikation zwischen zwei Arduino-Boards über Ethernet/WiFi
- Beispielanwendung: Ein an Arduino Nr. 1 angeschlossener Knopf oder Schalter steuert eine LED, die über Ethernet/WiFi mit Arduino Nr. 2 verbunden ist.
- Wie man zwei Arduino-Boards über das Internet verbindet

Das Tutorial stellt den Arduino-Code für zwei Fälle bereit:
- Arduino Uno R4 WiFi
- Arduino Uno/Mega mit Ethernet-Shield
Erforderliche Hardware
2 | × | Arduino UNO R4 WiFi | |
2 | × | USB-Kabel Typ-C |
Alternatively if using Ethernet:
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables STEM V3 Starter-Kit (Arduino enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Kommunikation zwischen zwei Arduino-Boards - Übersicht
Lassen Sie uns einen konkreten Fall betrachten: Arduino #1 kommuniziert mit Arduino #2. Es gibt viele Methoden, um die Kommunikation zwischen zwei Arduinos zu ermöglichen. Wir können je nach Reichweite der Kommunikation eine davon auswählen. In der untenstehenden Tabelle sind einige Methoden und ihre Reichweiten aufgeführt.
Methods | Range |
---|---|
I2C | very short |
SPI | very short |
UART (TTL) | very short |
UART (RS-232/485/422) | short |
Bluetooth | short |
LoRa | long |
Ethernet/WiFi | unlimited(*) |
※ Notiz:
(*):
- Wenn zwei Arduino mit dem Internet verbunden sind, ist die Kommunikationsreichweite unbegrenzt
- Wenn zwei Arduino nicht mit dem Internet verbunden sind, sich aber im selben LAN-Netzwerk befinden, können sie dennoch miteinander kommunizieren. Die Reichweite der Kommunikation ist innerhalb des LAN-Netzwerks begrenzt.
Unter den oben genannten Methoden verwendet dieses Tutorial Ethernet/WiFi, um die Kommunikation zwischen zwei Arduinos zu ermöglichen, da es zwei Arduinos erlaubt, über unbegrenzte Entfernungen hinweg zu kommunizieren.
Kommunikation zwischen zwei Arduinos über Ethernet/WiFi
Zwei Arduinos können miteinander über Ethernet/WiFi kommunizieren, wenn:
- Zwei Arduino im selben LAN-Netzwerk; die Internetverbindung ist nicht erforderlich
- Zwei Arduino in unterschiedlichen LAN-Netzwerken; die Internetverbindung ist erforderlich
Unabhängig davon, ob zwei Arduinos sich innerhalb eines lokalen LAN-Netzwerks oder über das Internet miteinander verbinden, gibt es zwei Arten der Kommunikation:
- Zwei Arduino-Boards kommunizieren direkt miteinander
- Zwei Arduino-Boards kommunizieren über einen zentralen Server (z. B. MQTT-Server). Siehe Kommunikation zwischen zwei Arduino-Boards über MQTT
Bei direkter Kommunikation übernimmt in den meisten Fällen ein Arduino die Rolle des TCP-Clients, das andere übernimmt die Rolle des TCP-Servers.
Im Fall der Kommunikation über einen zentralen Server spielen in den meisten Fällen beide Arduino-Boards die Rolle eines TCP-Clients.
Je nach Anwendung müssen wir ein Kommunikationsprotokoll auswählen, um zwischen zwei Arduinos zu kommunizieren. Im Folgenden sind einige der Kommunikationsprotokolle aufgeführt, die wir verwenden können:
- Eigenes Protokoll über rohes TCP (direkt)
- Modbus TCP (direkt)
- HTTP (direkt)
- Telnet (direkt)
- SSH (direkt)
- MQTT (über einen zentralen Server)
※ Notiz:
Es spielt keine Rolle, ob:
- Beide Arduinos verwenden Ethernet
- Beide Arduinos verwenden WiFi
- Ein Arduino verwendet Ethernet, das andere WiFi verwendet
Das UDP-Protokoll liegt außerhalb des Umfangs dieses Tutorials.
Beispielanwendung
Wir realisieren die folgende Anwendung: Ein Knopf oder Schalter, der an Arduino Nr. 1 angeschlossen ist, steuert eine LED, die über Ethernet/WiFi mit Arduino Nr. 2 verbunden ist.

Dieses Tutorial verwendet zwei Arduino Ethernet-Shields. Sie können stattdessen ein anderes WiFi-Shield oder Ethernet-Shield verwenden. Wenn Sie ein anderes Shield verwenden, muss der Code nur ein wenig angepasst werden.
Wie oben erwähnt gibt es einige Anwendungsprotokolle, die wir verwenden können. In diesem Beispiel, um es einfach zu machen, werden wir ein selbst definiertes Protokoll definieren (ein selbst definiertes Protokoll).
Selbstdefiniertes Protokoll
Lassen Sie uns ein einfaches Protokoll definieren:
- Eine TCP-Verbindung wird zwischen Arduino #1 und Arduino #2 hergestellt
- Arduino #1:
- Als TCP-Client fungieren, aktiv eine TCP-Verbindungsanfrage an Arduino #2 senden
- Wenn der Schalter auf EIN gestellt wird, sendet Arduino #1 ein Byte (Befehl) mit dem Wert 1 an Arduino #2.
- Wenn der Schalter auf AUS gestellt wird, sendet Arduino #1 ein Byte (Befehl) mit dem Wert 0 an Arduino #2.
- Arduino #2:
- Als TCP-Server fungieren, auf die TCP-Verbindungsanfrage von Arduino #1 warten
- Wenn das empfangene Byte 1 ist, LED einschalten
- Wenn das empfangene Byte 0 ist, LED ausschalten
Verdrahtungsdiagramm

※ Notiz:
Sie müssen einen Widerstand für die LED hinzufügen, wenn die LED keinen eingebauten Widerstand hat. Sie können mehr in den Tutorials Arduino - LED und Arduino - Button erfahren.
Die Kommunikation zwischen zwei Arduinos über WiFi
Arduino-Code für Arduino Uno R4 WiFi #1
Arduino-Code für Arduino Uno R4 WiFi #2
Kommunikation zwischen zwei Arduinos über Ethernet
Arduino-Code für Arduino Ethernet #1
Arduino-Code für Arduino-Ethernet #2
Schnelle Schritte
- Falls Sie das Ethernet Shield verwenden, stapeln Sie Ethernet Shields auf Arduino #1 und Arduino #2.
- Schließen Sie einen Knopf/Schalter an Arduino #1 an.
- Schließen Sie eine LED an Arduino #2 an.
- Öffnen Sie die Arduino IDE (die Arduino IDE #1 genannt).
- Installieren Sie die ezButton-Bibliothek in der Arduino IDE.
- Verbinden Sie Arduino #1 über ein USB-Kabel mit dem PC und wählen Sie den COM-Port von Arduino #1 in der Arduino IDE #1 aus.
- Öffnen Sie ein weiteres Arduino IDE-Fenster (das Arduino IDE #2 genannt) durch Klicken Sie auf das Symbol der Arduino IDE auf Ihrem PC (wichtig!()).
- Verbinden Sie Arduino #2 über ein USB-Kabel mit dem PC und wählen Sie den COM-Port von Arduino #2 in der Arduino IDE #2 aus.
- Kopieren Sie den Arduino #1-Code, fügen Sie ihn in die Arduino IDE #1 ein und speichern Sie ihn (als Arduino1).
- Kopieren Sie den Arduino #2-Code, fügen Sie ihn in die Arduino IDE #2 ein und speichern Sie ihn (als Arduino2).
- Laden Sie zuerst den Arduino #2-Code auf Arduino #2 hoch.
- Öffnen Sie den Serial Monitor in der Arduino IDE #2 und erhalten Sie die TCP-Server-IP-Adresse.
- Aktualisieren Sie die TCP-Server-IP-Adresse im Arduino-#1-Code
- Laden Sie den Arduino-#1-Code auf Arduino #1 hoch
- Öffnen Sie den seriellen Monitor in der Arduino-IDE #1
- Drücken und halten Sie den Knopf an Arduino #1 → sehen Sie den LED-Zustand an Arduino #2 (AN)
- Lassen Sie den Knopf an Arduino #1 los → sehen Sie den LED-Zustand an Arduino #2 (AUS)
- Drücken, Halten und mehrmals Loslassen des Knopfs
- Sehen Sie die Ausgaben auf beiden seriellen Monitoren
- Serieller Monitor von Arduino #1
- Serieller Monitor von Arduino #2
※ Notiz:
- (): Wenn Sie das Arduino IDE #2-Fenster über "Datei" → "Neu" oder "Öffnen" aus dem Arduino IDE #2-Fenster öffnen, werden Sie nicht in der Lage sein, zwei serielle Monitore für zwei Arduino-Boards gleichzeitig auf dem selben PC zu öffnen.
- Es gibt eine Alternative zu diesem selbst definierten Protokoll. Es handelt sich um Modbus TCP. Das Modbus-Protokoll ist standardisiert und bietet viele Vorteile gegenüber dem selbst definierten Protokoll. Weitere Informationen finden Sie im Arduino - Modbus Tutorial
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.
Wie man zwei Arduinos über das Internet verbindet
Es gibt zwei Arten von IP-Adressen: private IP-Adressen und öffentliche IP-Adressen. Die IP-Adresse, die Sie im Heimnetzwerk verwenden, ist in der Regel eine private IP-Adresse.
Sie können die private IP-Adresse leicht identifizieren. Die private IP-Adresse hat drei Muster: 10.x.x.x, 172.16.x.x, 192.168.x.x
Es spielt keine Rolle, die private IP-Adresse im folgenden Fall zu verwenden:
- Wenn zwei Arduino-Boards im selben LAN-Netzwerk sind, unabhängig davon, ob sie direkt kommunizieren oder über einen zentralen Server, unabhängig davon, ob das LAN-Netzwerk mit dem Internet verbunden ist oder nicht.
- Wenn zwei Arduino-Boards sich in unterschiedlichen LAN-Netzen befinden und miteinander über einen zentralen Server kommunizieren.
Wenn sich zwei Arduinos in unterschiedlichen LAN-Netzen befinden und direkt miteinander kommunizieren, kann der Arduino-TCP-Client die private IP-Adresse verwenden. Der Arduino-TCP-Server muss jedoch entweder:
- Eine öffentliche IP-Adresse
- Eine private IP-Adresse mit Portweiterleitung auf dem Router/AP
Der Prozess der Portweiterleitung ist bei jedem Router/AP unterschiedlich. Dies liegt außerhalb des Umfangs dieses Tutorials.