Schlaufuchs Logo

Die serielle Schnittstelle

Die serielle Schnittstelle ermöglicht eine Kommunikation zwischen dem Mikrocontroller und der Außenwelt, z.B. dem PC.

Mit Hilfe der seriellen Schnittstelle lassen sich Messwerte erfassen und auch Daten an den Mikrocontroller senden. Auch beim Debuggen von Programmen ist die serielle Schnittstelle ein praktischer Helfer.

UART

Die serielle Schnittstelle ist ein UART, d.h. ein Universal Asynchronous Receiver Transmitter. Genau genommen handelt es sich um ein TTL-UART, da die Signalpegel TTL-kompatibel sind. Die Datenübertragung erfolgt asynchron (ohne Taktsignal) über eine Sendeleitung (Tx, Transmit) und eine Empfangsleitung (Rx, Receive).

Die Sendeleitung ist beim Arduino-Uno-Board der Pin 1. Die Empfangsleitung der Pin 0.

Will man die serielle Schnittstelle nutzen, können die Pins 0 und 1 nicht als GPIO-Pins genutzt werden!

Auf dem Arduino-Board befindet sich ein Konverter, der die TTL-Signale vom Mikrocontroller in ein USB-Signal umsetzt, das der PC verarbeiten kann.

Standardmäßig sendet die Serielle Schnittstelle im 8N1-Format.

Initialisierung der seriellen Schnittstelle

Vor der Verwendung der seriellen Schnittstelle muss diese im SETUP-Teil des Arduino-Sketches initialisiert werden. Dies geschieht mit dem Befehl Serial.begin(Baudrate). Die Baudrate gibt die Übertragungsgeschwindigkeit an und muss bei Sender und Empfänger übereinstimmen.

Wenn der serielle Port bereit ist, liefert der Befehl if(Serial) ein wahres Ergebnis. Dies sollte im SETUP-Teil überprüft werden, um sicher zu gehen, dass die serielle Kommunikation möglich ist. Üblicherweise geschieht das in einer while()-Schleife.

void setup() {
  Serial.begin(9600);         // Serielle Schnittstelle auf 9600 Baud aktivieren.
  while(!Serial) {}           // Warten bis die serielle Schnittstelle antwortet.
}

  void loop() {
 
}

Codebeispiel: Initialisierung der seriellen Schnittstelle

Kommunikation via serieller Schnittstelle

Mit den Befehlen Serial.print(), Serial.println() und Serial.write() können Daten über die serielle Schnittstelle versendet werden.

Der serielle Monitor

Die Arduino-IDE besitzt einen integrierten seriellen Monitor mit dem die serielle Kommunikation zwischen Mikrocontroller und PC möglich ist. Wenn ein Arduino-Board angeschlossen ist, kann man mit der Tastenkombination Strg.+Umschalt+M den seriellen Monitor in einem eigenen Fenster öffnen.

  
Der serielle Monitor der Arduino IDE
(Screenshot)

Im seriellen Monitor kann auch die Baudrate für die Datenübertragung eingestellt werden.

Der serielle Monitor ist ein hervorragendes Tool zum Debuggen von Programmen!

Software UART

Viele Arduino Boards bieten nur einen Hardware UART. Wenn aber mit zwei (oder mehreren) Geräten per UART kommuniziert werden soll, muss ein UART per Software emuliert werden (Software UART).

Die SoftwareSerial Library

Die SoftwareSerial() Library bietet Methoden für Software UARTs, die an die Serial() Methoden für den Hardware UART angelehnt sind. Damit kann an beliebigen Pins ein oder mehrere UARTs emuliert werden. Bei mehreren Software UARTs kann jedoch nicht auf mehreren Software UARTs gleichzeitig empfangen werden.

Die entsprechenden Pins müssen zunächst als Eingang bzw, Ausgang definiert werden.

Danach wird mit dem SoftwareSerial() Konstruktor eine Instanz des SoftwareSerial Objekts erzeugt. Diese Instanz kann wie eine Instanz des Serial() Objekts angesprochen werden.

Beim Anschluss anderer Geräte ist auf die korrekte Anpassung der Logikpegel von 0 bis 3,3 V bzw. 5 V zu achten. Zu hohe oder zu niedrige (negative) Spannungen können den Mikrocontroller oder angeschlossene Geräte augenblicklich zerstören!