Arduino - Kommunikation
Für diesen Datenaustausch wurden Hunderte von Kommunikationsprotokollen definiert. Jedes Protokoll kann in eine der beiden Kategorien eingeteilt werden: parallel oder seriell.
Parallele Kommunikation
Die parallele Verbindung zwischen dem Arduino und den Peripheriegeräten über Eingangs- / Ausgangsanschlüsse ist die ideale Lösung für kürzere Entfernungen von bis zu mehreren Metern. In anderen Fällen, in denen eine Kommunikation zwischen zwei Geräten über größere Entfernungen hergestellt werden muss, ist es jedoch nicht möglich, eine Parallelschaltung zu verwenden. Parallele Schnittstellen übertragen mehrere Bits gleichzeitig. Sie erfordern normalerweise Datenbusse, die über acht, sechzehn oder mehr Drähte übertragen werden. Daten werden in riesigen, abstürzenden Wellen von Einsen und Nullen übertragen.
Vor- und Nachteile der parallelen Kommunikation
Parallele Kommunikation hat sicherlich ihre Vorteile. Es ist schneller als seriell, unkompliziert und relativ einfach zu implementieren. Es sind jedoch viele E / A-Ports und -Leitungen erforderlich. Wenn Sie jemals ein Projekt von einem einfachen Arduino Uno auf ein Mega verschieben mussten, wissen Sie, dass die E / A-Leitungen eines Mikroprozessors kostbar und wenig sein können. Daher bevorzugen wir die serielle Kommunikation und opfern die potenzielle Geschwindigkeit für Pin-Immobilien.
Serielle Kommunikationsmodule
Heutzutage werden die meisten Arduino-Boards standardmäßig mit verschiedenen Systemen für die serielle Kommunikation gebaut.
Welches dieser Systeme verwendet wird, hängt von folgenden Faktoren ab:
- Mit wie vielen Geräten muss der Mikrocontroller Daten austauschen?
- Wie schnell muss der Datenaustausch sein?
- Wie groß ist der Abstand zwischen diesen Geräten?
- Müssen Daten gleichzeitig gesendet und empfangen werden?
Eines der wichtigsten Dinge bei der seriellen Kommunikation ist das Protocol, die unbedingt beachtet werden sollten. Es handelt sich um eine Reihe von Regeln, die angewendet werden müssen, damit die Geräte die Daten, die sie gegenseitig austauschen, korrekt interpretieren können. Glücklicherweise kümmert sich Arduino automatisch darum, so dass die Arbeit des Programmierers / Benutzers auf einfaches Schreiben (zu sendende Daten) und Lesen (empfangene Daten) reduziert wird.
Arten der seriellen Kommunikation
Serielle Kommunikation kann weiter klassifiziert werden als -
Synchronous - Geräte, die synchronisiert sind, verwenden dieselbe Uhr und ihr Timing ist miteinander synchronisiert.
Asynchronous - Asynchrone Geräte haben ihre eigenen Uhren und werden durch die Ausgabe des vorherigen Status ausgelöst.
Es ist leicht herauszufinden, ob ein Gerät synchron ist oder nicht. Wenn alle angeschlossenen Geräte dieselbe Uhr erhalten, sind sie synchron. Wenn keine Taktleitung vorhanden ist, ist diese asynchron.
Beispielsweise ist das UART-Modul (Universal Asynchronous Receiver Transmitter) asynchron.
Das asynchrone serielle Protokoll verfügt über eine Reihe integrierter Regeln. Diese Regeln sind nichts anderes als Mechanismen, die dazu beitragen, robuste und fehlerfreie Datenübertragungen zu gewährleisten. Diese Mechanismen, die wir erhalten, um das externe Taktsignal zu vermeiden, sind -
- Synchronisationsbits
- Daten Bits
- Paritätsbits
- Baudrate
Synchronisationsbits
Die Synchronisationsbits sind zwei oder drei spezielle Bits, die mit jedem Datenpaket übertragen werden. Sie sind das Startbit und das Stoppbit (die Stoppbits). Getreu ihrem Namen markieren diese Bits den Anfang bzw. das Ende eines Pakets.
Es gibt immer nur ein Startbit, aber die Anzahl der Stoppbits kann entweder auf eins oder zwei konfiguriert werden (obwohl normalerweise eins übrig bleibt).
Das Startbit wird immer durch eine Leerlaufdatenleitung von 1 bis 0 angezeigt, während die Stoppbits in den Leerlaufzustand zurückkehren, indem die Leitung bei 1 gehalten wird.
Daten Bits
Die Datenmenge in jedem Paket kann auf eine beliebige Größe von 5 bis 9 Bit eingestellt werden. Natürlich ist die Standarddatengröße Ihr grundlegendes 8-Bit-Byte, aber andere Größen haben ihre Verwendung. Ein 7-Bit-Datenpaket kann effizienter sein als 8, insbesondere wenn Sie nur 7-Bit-ASCII-Zeichen übertragen.
Paritätsbits
Der Benutzer kann auswählen, ob ein Paritätsbit vorhanden sein soll oder nicht, und wenn ja, ob die Parität ungerade oder gerade sein soll. Das Paritätsbit ist 0, wenn die Anzahl der Einsen unter den Datenbits gerade ist. Seltsame Parität ist genau das Gegenteil.
Baudrate
Der Begriff Baudrate wird verwendet, um die Anzahl der pro Sekunde übertragenen Bits [bps] zu bezeichnen. Beachten Sie, dass es sich um Bits handelt, nicht um Bytes. Das Protokoll verlangt normalerweise, dass jedes Byte zusammen mit mehreren Steuerbits übertragen wird. Dies bedeutet, dass ein Byte im seriellen Datenstrom aus 11 Bits bestehen kann. Wenn beispielsweise die Baudrate 300 Bit / s beträgt, können maximal 37 und mindestens 27 Byte pro Sekunde übertragen werden.
Arduino UART
Mit dem folgenden Code sendet Arduino beim Start eine Hallo-Welt.
void setup() {
Serial.begin(9600); //set up serial library baud rate to 9600
Serial.println("hello world"); //print hello world
}
void loop() {
}
Öffnen Sie nach dem Hochladen der Arduino-Skizze auf Arduino den seriellen Monitor
Geben Sie etwas in das obere Feld des seriellen Monitors ein und drücken Sie Senden oder die Eingabetaste auf Ihrer Tastatur. Dadurch wird eine Reihe von Bytes an das Arduino gesendet.
Der folgende Code gibt alles zurück, was er als Eingabe empfängt.
Mit dem folgenden Code liefert Arduino abhängig von der bereitgestellten Eingabe eine Ausgabe.
void setup() {
Serial.begin(9600); //set up serial library baud rate to 9600
}
void loop() {
if(Serial.available()) //if number of bytes (characters) available for reading from {
serial port
Serial.print("I received:"); //print I received
Serial.write(Serial.read()); //send what you read
}
}
Beachte das Serial.print und Serial.println sendet den tatsächlichen ASCII-Code zurück, während Serial.writesendet den eigentlichen Text zurück. Weitere Informationen finden Sie unter ASCII-Codes.