Arduino-Kommunikationsprotokoll

Arduino Kommunikationsprotokoll



Kommunikationsprotokolle sind die Regeln, die es Geräten ermöglichen, zu kommunizieren und Daten auszutauschen. Diese Protokolle sind in der Arduino-Kommunikation sehr wichtig, da Arduino ständig Daten sendet und empfängt. Die Verwendung dieser Protokolle hilft Arduino bei der Fehlererkennung und möglichen Fehlerbehebungsmethoden. Diese Protokolle bringen analoge und digitale Geräte zusammen und ermöglichen die Gestaltung mehrerer Projekte.

Arduino-Kommunikationsprotokolle

Durch die Verwendung von Kommunikationsprotokollen können wir die Daten aller Sensoren in Arduino senden und empfangen.

Einige einfache Sensoren wie Infrarot (IR) können direkt mit Arduino kommunizieren, aber einige der komplexen Sensoren wie Wi-Fi-Modul, SD-Kartenmodul und Gyroskop können ohne Kommunikationsprotokolle nicht direkt mit Arduino kommunizieren. Aus diesem Grund sind diese Protokolle ein wesentlicher Bestandteil der Arduino-Kommunikation.







An Arduino sind mehrere Peripheriegeräte angeschlossen. Darunter befinden sich drei Kommunikationsperipheriegeräte, die in Arduino-Boards verwendet werden.



Arduino-Kommunikationsprotokolle

Die Kommunikation zwischen verschiedenen elektronischen Geräten wie Arduino ist zwischen diesen drei Protokollen standardisiert; Es ermöglicht Designern eine einfache Kommunikation zwischen verschiedenen Geräten ohne Kompatibilitätsprobleme. Die Funktionsweise dieser drei Protokolle ist gleich, da sie demselben Kommunikationszweck dienen, sie unterscheiden sich jedoch in der Implementierung innerhalb einer Schaltung. Eine weitere Beschreibung dieser Protokolle wird unten diskutiert.







UART

UART ist bekannt als die Universal Asynchronous Receiver / Transmitter. UART ist ein serielles Kommunikationsprotokoll, dh Datenbits werden sequentiell nacheinander übertragen. Für den Aufbau der UART-Kommunikation benötigen wir zwei Leitungen. Einer ist der Tx (D1) Pin des Arduino Boards und der zweite ist der Rx (D0) Pin des Arduino Boards. Der Tx-Pin dient zum Übertragen von Daten an Geräte und der Rx-Pin wird zum Empfangen von Daten verwendet. Verschiedene Arduino-Boards haben mehrere UART-Pins.

Arduino Digital-Pin UART-Pin
D1 Tx
D0 Empfang

Um eine serielle Kommunikation über den UART-Port herzustellen, müssen wir zwei Geräte in der unten gezeigten Konfiguration verbinden:



Bei Arduino Uno ist ein serieller Port für die Kommunikation vorgesehen, der allgemein als USB-Port bezeichnet wird. Wie der Name schon sagt, handelt es sich bei Universal Serial Bus um eine serielle Schnittstelle. Über den USB-Anschluss kann Arduino die Kommunikation mit Computern herstellen. Der USB-Anschluss ist mit den Onboard-Pins Tx und Rx von Arduino verbunden. Mit diesen Pins können wir jede externe Hardware außer Computer über USB anschließen. Arduino IDE bietet eine SoftwareSerial-Bibliothek (SoftwareSerial.h) Dadurch können Benutzer GPIO-Pins als serielle Tx- und Rx-Pins verwenden.

  • UART ist mit Arduino einfach zu bedienen
  • UART benötigt kein Taktsignal
  • Die Baudrate muss innerhalb der 10 %-Grenze der kommunizierenden Geräte eingestellt werden, um Datenverlust zu vermeiden
  • Mehrere Geräte mit Arduino in Master-Slave-Konfiguration sind mit UART nicht möglich
  • UART ist Halbduplex, was bedeutet, dass Geräte nicht gleichzeitig Daten senden und empfangen können
  • Es können nur zwei Geräte gleichzeitig mit dem UART-Protokoll kommunizieren

Serielle Peripherieschnittstelle (SPI)

SPI ist ein Akronym für Serial Peripheral Interface, das speziell für Mikrocontroller entwickelt wurde, um mit ihnen zu kommunizieren. SPI arbeitet im Vollduplexmodus, was bedeutet, dass SPI Daten gleichzeitig senden und empfangen kann. Im Vergleich zu UART und I2C ist es das schnellste Kommunikationsperipheriegerät in Arduino-Boards. Es wird häufig verwendet, wenn eine hohe Datenrate erforderlich ist, wie bei LCD-Displays und Micro-SD-Kartenanwendungen.

Digitale SPI-Pins auf Arduino sind vordefiniert. Für Arduino Uno ist die SPI-Pin-Konfiguration wie folgt:

SPI-Linie GPIO ICSP-Header-Pin
SCK 13 3
MISO 12 1
RAUCH elf 4
SS 10
  • MOSI steht für Master raus, Sklave rein , MOSI ist eine Datenübertragungsleitung für Master zu Slave.
  • SCK ist ein Uhrenlinie die Übertragungsgeschwindigkeit und Start-End-Eigenschaften definiert.
  • SS steht für Slave-Auswahl ; Die SS-Leitung ermöglicht es dem Master, ein bestimmtes Slave-Gerät auszuwählen, wenn er in einer Konfiguration mit mehreren Slaves arbeitet.
  • Miso steht für Meister rein, Sklave raus ; MISO ist eine Slave-to-Master-Übertragungsleitung für Daten.

Eines der wichtigsten Highlights des SPI-Protokolls ist die Master-Slave-Konfiguration. Mit SPI kann ein Gerät als Master definiert werden, um mehrere Slave-Geräte zu steuern. Der Master hat über das SPI-Protokoll die volle Kontrolle über die Slave-Geräte.

SPI ist ein synchrones Protokoll, was bedeutet, dass die Kommunikation mit einem gemeinsamen Taktsignal zwischen Master und Slave verbunden ist. SPI kann mehrere Geräte als Slave über eine einzige Sende- und Empfangsleitung steuern. Alle Slaves sind über Common mit dem Master verbunden MISO erhalten Linie zusammen mit RAUCH eine gemeinsame Sendeleitung. SCK ist auch die gemeinsame Taktlinie zwischen Master- und Slave-Geräten. Der einzige Unterschied bei Slave-Geräten besteht darin, dass jedes Slave-Gerät separat gesteuert wird SS Linie auswählen. Dies bedeutet, dass jeder Slave einen zusätzlichen GPIO-Pin von der Arduino-Platine benötigt, der als Auswahlleitung für dieses bestimmte Slave-Gerät fungiert.

Einige der wichtigsten Highlights des SPI-Protokolls sind unten aufgeführt:

  • SPI ist das schnellste Protokoll als I2C und UART
  • Es sind keine Start- und Stoppbits wie bei UART erforderlich, wodurch eine kontinuierliche Datenübertragung möglich ist
  • Slave kann durch einfache Master-Slave-Konfiguration einfach angesprochen werden
  • Für jeden Slave wird ein extra Pin auf dem Arduino-Board belegt. Praktisch kann 1 Master 4 Slave-Geräte steuern
  • Die Datenbestätigung fehlt, wie sie in UART verwendet wird
  • Eine Konfiguration mit mehreren Mastern ist nicht möglich

I2C-Kommunikationsprotokoll

Inter Integrated Circuit (I2C) ist ein weiteres Kommunikationsprotokoll, das von Arduino-Boards verwendet wird. I2C ist das schwierigste und komplizierteste Protokoll, das mit Arduino und anderen Geräten implementiert werden kann. Trotz seiner Komplexität bietet es mehrere Funktionen, die in anderen Protokollen fehlen, wie z. B. mehrere Master- und mehrere Slave-Konfigurationen. I2C ermöglicht den Anschluss von bis zu 128 Geräten an das Arduino-Hauptboard. Dies ist nur möglich, weil I2C eine einzelne Leitung zwischen allen Slave-Geräten teilt. I2C in Arduino verwendet ein Adresssystem, was bedeutet, dass Arduino vor dem Senden von Daten an das Slave-Gerät zuerst das Slave-Gerät auswählen muss, indem es eine eindeutige Adresse sendet. I2C verwendet nur zwei Drähte, was die Gesamtzahl der Arduino-Pins reduziert, aber die schlechte Seite daran ist, dass I2C langsamer als das SPI-Protokoll ist.

Arduino-Analog-Pin I2C-Pin
A4 SDA
A5 SCL

Auf Hardwareebene ist I2C auf nur zwei Drähte beschränkt, einer für eine Datenleitung, bekannt als SDA (Seriendaten) und die zweite für die Uhrenlinie SCL (Serial Clock). Im Ruhezustand werden sowohl SDA als auch SCL hochgezogen. Wenn Daten übertragen werden müssen, werden diese Leitungen unter Verwendung einer MOSFET-Schaltung auf Low gezogen. Bei der Verwendung von I2C in Projekten ist es zwingend erforderlich, Pull-up-Widerstände zu verwenden, die normalerweise einen Wert von 4,7 kOhm haben. Diese Pull-up-Widerstände stellen sicher, dass sowohl SDA- als auch SCL-Leitungen bei ihrem Leerlaufstart hoch bleiben.

Einige der wichtigsten Highlights von I2C-Protokollen sind:

  • Die Anzahl der benötigten Pins ist sehr gering
  • Es können mehrere Master-Slave-Geräte angeschlossen werden
  • Verwendet nur 2 Drähte
  • Die Geschwindigkeit ist im Vergleich zu SPI aufgrund von Pull-up-Widerständen langsamer
  • Widerstände brauchen mehr Platz in der Schaltung
  • Die Komplexität des Projekts steigt mit der Anzahl der Geräte

Vergleich zwischen UART vs. I2C vs. SPI

Protokoll UART SPI 2C
Geschwindigkeit Am langsamsten Am schnellsten Schneller als UART
Anzahl der Geräte Bis zu 2 4 Geräte Bis zu 128 Geräte
Drähte erforderlich 2 (Senden, Empfangen) 4 (SCK, RAUCH, AUGEN, SS) 2 (SDA, SCL)
Duplex-Modus Vollduplex-Modus Vollduplex-Modus Halbduplex
Anzahl Master-Slaves möglich Single Master-Single Slave Einzelner Master – mehrere Slaves Mehrere Master – mehrere Slaves
Komplexität Einfach Kann problemlos mehrere Geräte steuern Komplex mit Zunahme der Geräte
Quittungsbit Ja

Fazit

In diesem Artikel haben wir einen umfassenden Vergleich aller drei in Arduino verwendeten Protokolle UART, SPI und I2C behandelt. Es ist wichtig, alle Protokolle zu kennen, da es endlose Möglichkeiten bietet, mehrere Geräte zu integrieren. Das Verständnis aller Kommunikationsperipherie spart Zeit und hilft, Projekte entsprechend dem richtigen Protokoll zu optimieren.