Serielle UART -Kommunikation zwischen zwei Arduino -Boards

Serielle UART -Kommunikation zwischen zwei Arduino -Boards

UART ist ein Akronym für universelle asynchrone Empfängertransmitter. UART ist das am häufigsten verwendete serielle Kommunikationsprotokoll, in dem Datenformat und Kommunikationsgeschwindigkeit konfigurierbar sind. Arduino hat drei Kommunikationsprotokolle namens SPI, I2C und UART. Das UART -Protokoll ermöglicht Arduino, zwischen verschiedenen Geräten und Sensoren zu kommunizieren. Jetzt werden wir diskutieren, wie die UART -Kommunikation zwischen zwei Arduino -Boards verwendet wird.

Serielle UART -Kommunikation

Serielle UART ist das von Arduino verwendete serielle Kommunikationsprotokoll zur Kommunikation mit Mikrocontrollern und PCs. Arduino hat einen UART -Port bei D0 und D1. Ein serieller Bus mit zwei Terminals wird in der UART -Kommunikation verwendet, eine zum Senden von Daten, die benannt sind Tx an Pin D1 und einem anderen zum Empfangen von Daten, die als bezeichnet werden als Rx an Pin D0. Alle Geräte, die über UART -Protokoll arbeiten, müssen also zwei serielle Stifte haben:

  • Rx zum Empfangen von Daten
  • Tx zum Senden von Daten

Während Sie diese beiden Stifte für UART verwenden, ist es wichtig zu beachten BRAUGEN SIE EIN.

UART Serienkommunikation zwischen zwei Arduino -Boards

Jetzt werden wir zwei Arduino -Boards mit TX- und RX -Pins verbinden, um eine serielle Kommunikation zwischen ihnen ein Arduino -Board zu erstellen, die Daten übertragen wird Meister und das zweite Arduino -Vorstand, das Anweisungen erhält Sklave. Wir werden unsere Arduino -Boards in der Master- und Slave -Konfiguration einrichten. Bevor wir weiter gehen, benötigen wir die folgenden Geräte, um unsere serielle UART -Kommunikation zu starten.

Benötigte Ausrüstung

  • 2x Arduino Boards
  • 2x USB B -Kabel
  • 6x -Jumper -Drähte
  • Brotbrett
  • Widerstand 220 Ohm
  • LED

Um die Kommunikation zwischen zwei Arduino -Boards zu beginnen, wird einer als Absender und ein anderes Arduino -Board als Empfänger konfiguriert. Wir müssen also zwei Programme schreiben, einen für den Sender und den zweiten für den Empfänger. Befolgen Sie die folgenden Schritte zur Festlegung der seriellen Kommunikation.

Beispiel 1: Übergeben einer Zeichenfolge von einem Arduino an andere durch UART -Kommunikation

Wir werden eine Saite in unserem Master Arduino definieren und versuchen, sie mit serieller Kommunikation UART an Sklave zu übergeben. Folgen Sie den folgenden Schritten, um Daten zwischen zwei Arduinos zu übergeben.

Schritt 1: Verbinden Sie den Master Arduino

Die Verwendung eines USB -B -Kabels verbindet die Arduino -Karte, die als Master mit dem PC fungiert. Denken Sie daran, zuerst den COM -Port auszuwählen, bevor Sie die Skizze hochladen. Hier in unserem Fall ist der Arduino am COM6 -Port verbunden.


Laden Sie nun den folgenden Code in den Sender Master Arduino Board hoch.

// Absender Arduino Board Code (Master)
char Mystring [15] = "LinuxHint.com "; // String -Daten, die gesendet werden sollen
void setup ()
Serie.Beginnen Sie (9600); // Beginnen Sie die Serie mit 9600 Baudrate

void Loop ()
Serie.Schreiben Sie (MyString, 15); // Schreiben Sie die seriellen Daten
Verzögerung (1000);



Der obige Code sendet eine einfache Nachricht LinuxHint.com zu den anderen Arduino. Zuerst haben wir ein Array definiert „LinuxHint.com ”. Die Nummer 15 in Klammern zeigt, dass dieses Array 15 Zeichen enthalten kann. 13 sind Alphabete, während 2 für den Platz eingestellt sind, damit wir im Seriennachmonitor eindeutiger Ausgang sehen können. Innen aufstellen() Die serielle Kommunikation wird mit seriellem Rahmen etabliert.begin () und 9600 werden als Baudrate ausgewählt.

Der Schleife() Der Abschnitt der Skizze enthält die Serie.schreiben() Funktion. Diese Funktionen schreiben eine Nachricht an das Empfänger -Slave Arduino Board mit 1000 Millisekunden -Verzögerung.

Schritt 2: Schließen Sie den Slave Arduino an

Schließen Sie die zweite Arduino -Karte an, die in unserer Konfiguration Sklave ist. Schließen Sie diese Platine an einem anderen PC -Port an als dem Port, der im vorherigen Schritt vom Master Arduino Board verwendet wird. Wählen Sie vor dem Hochladen des Arduino -Code Arduino Com Port aus. Unser Sklaven -Arduino -Board ist bei COM8 verbunden.


Jetzt unten angegebenen Code in Slave Arduino Board hochladen.

// Empfänger Arduino Board Code
Char Mystring [20]; // initialisierte Variable zum Speichern des Empfangs
void setup ()
Serie.Beginnen Sie (9600); // Beginnen Sie die Serie bei 9600 Baud

void Loop ()
Serie.ReadBytes (MyString, 15); // Lesen Sie die seriellen Daten
Serie.println (mystring); // Daten zum Serienmonitor drucken
Serie.println ("Empfänger");
Verzögerung (1000);



Oben Code of Slave Arduino ähnelt wie Master Arduino Nur Unterschied ist hier anstelle von Serie.schreiben() Wir haben benutzt Serie.readBytes () die eingehenden Daten von Master Arduino lesen. Nach dem Lesen von Daten werde ich auf dem seriellen Monitor verwendet Serie.println () Funktion.

Schritt 3: Verbinden Sie beide Arduino mit TX- und RX -Stiften

Sobald Arduino Code in beiden Arduino Boards hochgeladen wurde. Verbinden Sie den ersten Arduino Tx Pin mit RX -Stift des zweiten Arduino ähnlich RX Pin des ersten Arduino mit TX Pin des zweiten Arduino.

Denken Sie daran, dass beim Hochladen von Code in beiden Arduino TX- und RX -Pins keine serielle Kommunikation nicht möglich ist.


Ausgabe von Master Arduino

Master Arduino sendet eine Saite ständig an Sklaven Arduino mit einer Verzögerung von 1000 Millisekunden.


Ausgabe von Slave Arduino

Slave Arduino druckt zuerst den Empfänger in Ausgangsserieklemme danach ein Array LinuxHint erhält.com mit einer Verzögerung von 1000 Millisekunden von Master Arduino. Daher erfolgt die serielle Kommunikation zwischen zwei Arduino -Boards.

Beispiel 2: Blink LED mit zwei Arduino -Boards durch UART -Kommunikation mit zwei Arduino -Boards

Schritt 1: Code in Master Arduino Board hochladen

Schließen Sie die Arduino -Karte an, die mit dem PC mit dem USB -B -Kabel als Master fungiert, und wählen Sie den COM -Anschluss aus, an dem Arduino verbunden ist. In unserem Fall ist das Master Arduino Board am COM7 -Port verbunden.


Laden Sie den angegebenen Code unten im Absender Arduino Board hoch.

// Sender (TX) Arduino Board Code
void setup ()

Serie.Beginnen Sie (9600);

Hohlraumschleife ()

Serie.Druck (1);
Verzögerung (2000);
Serie.Druck (0);
Verzögerung (2000);



In der obigen Code -Master Arduino sendet Arduino Anweisungen an Slave Arduino in Form von Zahlen 1 und 0. Der Master sendet Nummer 1 und wartet dann 2 Sekunden lang, danach sendet er die Nummer 0, dann wird erneut eine Verzögerung von 2 Sekunden vorgenommen. Danach wiederholt es sich in einer Schleife. Hier haben wir die benutzt Serie.drucken() Funktion, die den Master Arduino -Anweisungen in ASCII -Zeichen umwandelt, was bedeutet, dass der Master die Werte 49 für 1 und 48 für 0 übermittelt.

Schritt 2: Code in Slave Arduino Board hochladen

Schließen Sie nun die zweite Arduino -Karte an, die als Slave mit einem anderen Port des PCs mit einem USB -B -Kabel fungiert. Denken Sie daran, den Arduino Board Com -Port zuerst auszuwählen, bevor Sie den Absendercode hochladen. Slave Arduino Board ist am COM8 -Port des PCs verbunden.


Laden Sie nun den folgenden Code im zweiten Arduino -Board hoch, der als Sklave fungiert.

// Empfänger (RX) Arduino Board Code
char SerialInput = ";
Byte LED = 2;
void setup ()

PinMode (LED, Ausgabe);
Serie.Beginnen Sie (9600);

Hohlraumschleife ()

if (seriell.verfügbar())

char SerialInput = seriell.lesen();
if (serialInput == '0') digitalwrite (LED, LOW);
if (serialInput == '1') digitalwrite (led, hoch);
Serie.println (Serialinput);



Im obigen Code des Sklaven -Arduino -Chars -Serialinputs wird initialisiert, die Anweisungen von Master Arduino erhalten und speichern.

Danach wird im Schleifenabschnitt des Codes ein Scheck verwendet.

if (seriell.verfügbar())


Überprüft der obige Befehl wird überprüft, ob Daten im Puffer vorhanden sind oder nicht.

Wenn Daten kommen, wird ein einzelner Zeichen gelesen und gespeichert verkohlen Variable Serialinput.

Da sind wir nur für 0 und 1 Werte interessiert. Wenn Aussagen die Arbeit hier erledigen. Wenn Anweisungen den Serialinput -Wert überprüfen, wenn er 1 ist, wird ein hohes Signal an LED gesendet. Wenn es Serialinput 0 erhielt, sendet es ein niedriges Signal auf Pin -Nummer 2.

Notiz: Verbinden Sie immer beide Arduino -Boards an separaten COM -Ports und bevor Sie neuen Code hochladen. Es wird empfohlen, zwei separate IDE -Fenster für beide Arduino -Boards zu verwenden.

Schritt 2: Code in Slave Arduino Board hochladen

Schließen Sie die Arduino -Boards in der folgenden Konfiguration an, wie im Bild gezeigt. Verbinden Sie TX des ersten Arduino mit RX des zweiten Arduino. Schließen Sie den RX von First Arduino in ähnlicher Weise mit dem TX des zweiten Arduino an. Schließen Sie TX- und RX -Stifte nicht an, bevor Sie den Arduino -Code hochladen, da Arduino nur einen seriellen Kommunikationsport hat, der diese beiden Ports mit einem anderen Gerät verbindet. Blockiert die serielle Kommunikation mit PC über USB -Kabel.

Schließen Sie die LED am digitalen Pin -Nummer 2 und den GND -Pin von Arduino an, da zwischen diesen beiden Stiften einen 220OHM -Widerstand anschließen, um sichere Stromgrenzen aufrechtzuerhalten. Verbinden Sie Arduino GND miteinander.


Ausgangs -LED blinken

Nach dem Hochladen von Code in beiden Arduino -Boards. Der Master sendet Anweisungen mit einer Verzögerung von 2000 ms ein und aus. In Output sehen wir eine LED nacheinander in 1 Sek. Ein und 1 Sekundenspunkt -Konfiguration sehen.

LED einschalten


LED deaktivieren aus

Abschluss

Das serielle Kommunikationsprotokoll von UART wird von mehreren Geräten und Modulen verwendet, mit denen Arduino es in einen Strom oder Projekt integrieren kann. Hier haben wir behandelt, wie wir zwei Arduinos und Übertragungsdaten mithilfe der seriellen Kommunikation verbinden können. Mit dem UART -Protokoll können wir die Kommunikation zwischen Geräten und Arduino -Boards verbessern.