Arduino-zu-Arduino MQTT-Kommunikation
In diesem Tutorial werden wir lernen:
- Kommunikation zwischen zwei Arduinos über MQTT bidirektional
- Beispielanwendung: Ein an Arduino #1 angeschlossener Taster/Schalter steuert eine LED, die an Arduino #2 angeschlossen ist, über MQTT

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Arduino und MQTT
Wir haben hier ein detailliertes Tutorial, wie man Arduino mit MQTT verwendet:
Kommunikation zwischen zwei Arduinos über MQTT
Zwei Arduino-Boards können miteinander über einen MQTT-Server kommunizieren. Wenn Sie möchten, dass zwei Arduinos direkt ohne die Verwendung eines MQTT-Servers kommunizieren, lesen Sie bitte das Tutorial zu Arduino-zu-Arduino TCP-Client/Server-Kommunikation.
Wenn Arduino #1 und Arduino #2 Daten über einen MQTT-Broker austauschen:
- Beide Arduinos verbinden sich mit dem MQTT-Broker.
- Um Arduino #2 dazu zu bringen, Daten an Arduino #1 zu senden:
- Arduino #1 abonniert ein Thema, zum Beispiel: arduino-1/data.
- Arduino #2 kann Daten an Arduino #1 senden, indem es die Daten auf das Thema veröffentlicht, das Arduino #1 abonniert hat.
- Ähnlich, um Arduino #1 Daten an Arduino #2 senden zu lassen:
- Arduino #2 abonniert ein Thema, zum Beispiel: arduino-2/data.
- Arduino #1 kann Daten an Arduino #2 senden, indem es die Daten auf das Thema veröffentlicht, das Arduino #2 abonniert hat.
Wenn man dieser Methode folgt, können zwei Arduinos Daten bidirektional austauschen.
Beispiel-Anwendungsfall
Lassen Sie uns die folgende Anwendung realisieren: Ein Taster/Schalter, der an Arduino #1 angeschlossen ist, steuert eine LED, die über MQTT mit Arduino #2 verbunden ist.

Wie oben erwähnt gibt es einige Anwendungsprotokolle, die wir verwenden können. In diesem Beispiel, um es einfach zu halten, definieren wir selbst ein Protokoll (ein selbst definiertes Protokoll).
Selbstdefiniertes Protokoll
Lass uns ein einfaches Protokoll definieren:
- Arduino #1 und Arduino #2 verbinden sich mit dem MQTT-Broker (MQTT-Server)
- Arduino #1:
- Arduino #1 sendet eine MQTT-Nachricht an ein Thema, wenn der Zustand des Schalters geändert wird.
- Wenn der Knopf/Schalter auf EIN geschaltet wird, ist der Payload der MQTT-Nachricht 1.
- Wenn der Knopf/Schalter auf AUS geschaltet wird, ist der Payload der MQTT-Nachricht 0.
- Arduino #2:
- Arduino #2 abonniert das Thema
- Wenn Arduino #2 eine MQTT-Nachricht mit Payload 1 erhält, schaltet die LED ein.
- Wenn Arduino #2 eine MQTT-Nachricht mit Payload 0 erhält, schaltet die LED aus.
- Arduino #1 - Schaltplan zwischen Arduino und Taster
- Arduino #2 - Schaltplan zwischen Arduino und LED
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.
Kommunikation zwischen zwei Arduino-Boards über MQTT
Arduino-Code Nr. 1
Arduino-Code Nr. 2
Schnelle Schritte
- Verdrahte einen Knopf/Schalter an Arduino #1.
- Verdrahte eine LED an Arduino #2.
- Öffne die Arduino IDE (genannt Arduino IDE #1).
- Öffne ein weiteres Arduino IDE-Fenster (genannt Arduino IDE #2) durch Klicken auf das Arduino IDE-Symbol auf deinem PC (wichtig!()).
- Öffne den Bibliotheks-Manager, indem du auf das Symbol in der linken Navigationsleiste der Arduino IDE klickst.
- Gib MQTT in das Suchfeld ein, dann suche nach der MQTT-Bibliothek von Joel Gaehwiler.
- Klicke auf die Installieren-Schaltfläche, um die MQTT-Bibliothek zu installieren.

- Geben Sie ezButton in das Suchfeld ein, und suchen Sie anschließend nach der Button-Bibliothek von ArduinoGetStarted
- Klicken Sie auf die Install-Schaltfläche, um die ezButton-Bibliothek zu installieren.

- Verbinde Arduino #1 über ein USB-Kabel mit dem PC und wähle den COM-Port von Arduino #1 in der Arduino IDE #1 aus
- Verbinde Arduino #2 über ein USB-Kabel mit dem PC und wähle den COM-Port von Arduino #2 in der Arduino IDE #2 aus
- Kopiere den Arduino #1 Code, füge ihn in die Arduino IDE #1 ein und speichere ihn ab (benannt Arduino-1)
- Kopiere den Arduino #2 Code, füge ihn in die Arduino IDE #2 ein und speichere ihn ab (benannt Arduino-2)
- Ersetze die WLAN-Informationen (SSID und Passwort) in beiden Codes durch deine eigenen.
- Ersetze die MQTT-Broker-Adresse in beiden Codes (Domänenname oder IP-Adresse).
- Lade den Arduino #1 Code auf Arduino #1 hoch
- Lade den Arduino #2 Code auf Arduino #2 hoch
- Öffne den seriellen Monitor in der Arduino IDE #1
- Öffne den seriellen Monitor in der Arduino IDE #2
- Drücke und halte den Knopf an Arduino #1 gedrückt – sieh den Zustand der LED auf Arduino #2 (AN)
- Lass den Knopf an Arduino #1 los – sieh den Zustand der LED auf Arduino #2 (AUS)
- Drücke, halte und lasse den Knopf mehrmals hintereinander los.
- Sieh die Ausgaben auf beiden seriellen Monitoren
- Serieller Monitor von Arduino #1
- Serieller Monitor von Arduino #2