UART verstehen: Die serielle Schnittstelle für Maker – einfach erklärt

UART verstehen: Die serielle Schnittstelle für Maker – einfach erklärt

UART verstehen: Die serielle Schnittstelle für Maker – einfach erklärt

UART (Universal Asynchronous Receiver/Transmitter) ist eine der unkompliziertesten Möglichkeiten, zwei Geräte seriell miteinander sprechen zu lassen – vom Mikrocontroller über Sensor-Module bis hin zum PC über USB-Seriell-Adapter. In diesem Beitrag führen wir dich praxisnah durch die Grundlagen, typische Stolperfallen und zeigen kleine Code-Beispiele, damit deine nächste serielle Verbindung sofort läuft.


Was ist UART – in 60 Sekunden?

  • Asynchron: Es gibt kein gemeinsames Taktsignal; Sender und Empfänger müssen nur dieselbe Baudrate und Rahmenparameter kennen.
  • Punkt-zu-Punkt: Typischerweise je ein Sender und ein Empfänger pro Leitung.
  • Minimaler Leitungsbedarf: TX, RX und GND – optional Leitungen für Flow-Control.
  • Weit verbreitet: Debug-Konsolen, Bootloader, Konfiguratoren, GPS-Module, Bluetooth-Module, 3D-Drucker, CNC-Controller u. v. m.

So funktioniert die Rahmenbildung

Ein UART-Datenrahmen besteht aus:

  1. Startbit (logisch 0)
  2. Datenbits (meist 8, LSB zuerst)
  3. Optional Parität (gerade/ungerade/keine)
  4. Stopbit(s) (1 oder 2, logisch 1)

Die gängigste Einstellung in der Maker-Welt ist 8N1: 8 Datenbits, No Parity, 1 Stopbit. Baudrate gibt an, wie viele Symbole pro Sekunde übertragen werden (z. B. 9 600, 19 200, 115 200). Sender und Empfänger müssen exakt übereinstimmen.

Pegel: TTL-UART vs. RS-232

  • TTL-UART (3,3 V / 5 V)
    Pins: TX, RX, GND. Direkt an Mikrocontrollern (Arduino, ESP32, STM32). Kabellänge: kurz halten (typisch < 1–2 m).
  • RS-232 (±3 V bis ±15 V)
    Klassische DE-9-Stecker (oft am alten PC/Industriegerät). Benötigt Pegelwandler (MAX3232 etc.) zwischen RS-232 und TTL. Geeignet für längere Leitungen bei moderaten Baudraten.

Wichtig: RX ↔ TX kreuzen, GND verbinden und unbedingt auf die Pegelkompatibilität achten. Ein 5-V-TX kann einen 3,3-V-Eingang zerstören – notfalls Level-Shifter nutzen.

Flow-Control: Wann sinnvoll?

  • Ohne: Standard in vielen Projekten – einfach laufen lassen.
  • Software: XON/XOFF im Datenstrom – selten nötig.
  • Hardware: RTS/CTS, DTR/DSR – sinnvoll bei hohen Raten oder vollen Buffern (z. B. Modems, Hochgeschwindigkeits-Logger).

Für die meisten Maker-Setups ist keine Flow-Control notwendig.

UART vs. I²C vs. SPI – kurz verglichen

Merkmal UART I²C SPI
Topologie Punkt-zu-Punkt Bus (Multi-Master/-Slave) Master-Slave (mehrere Slaves)
Leitungen 2 + GND (TX, RX) 2 + GND (SDA, SCL) min. 3 + pro Slave SS
Takt Asynchron Getaktet Getaktet
Nutzung Debug, Konsolen, Module Sensorbus, kurze Strecken Schnelle Peripherie

Praxis: Verkabelung & Adapter

  • USB-zu-TTL-Adapter (CH340, CP2102, FT232 etc.) verbinden PC/Laptop mit TTL-UART-Pins am Board.
  • Wiring:
    • Adapter TX → Board RX
    • Adapter RX → Board TX
    • GNDGND
    • Optional 5 V/3,3 V nur nutzen, wenn der Adapter dafür gedacht ist und die Spannung passt.
  • RS-232-Gerät? Nutze RS-232↔TTL-Wandler statt eines reinen USB-TTL-Adapters.

Typische Fehler & schnelle Checks

  1. Falsche Baudrate → Zeichenmüll oder gar nichts: beide Seiten auf identische Werte stellen.
  2. Kein gemeinsames GND → undefiniertes Verhalten: immer GND verbinden.
  3. Pegel falsch (5 V vs. 3,3 V / RS-232) → ggf. Level-Shifter einsetzen.
  4. RX/TX nicht gekreuzt → keine Kommunikation.
  5. Kabel zu lang/gestört → kürzen, abgeschirmte Leitung, Baudrate senken.
  6. Busy COM-Port → Port in der IDE/Terminal freigeben, richtigen Port wählen.
  7. Autoreset (DTR) stört? → in manchen Tools deaktivieren oder Kondensator/Brücke gemäß Board-Doku setzen.

Mini-Beispiel: Arduino als UART-Partner


#include <SoftwareSerial.h>
SoftwareSerial gps(10, 11); // RX, TX

void setup() {
  Serial.begin(115200);   // USB-Seriell zum PC
  gps.begin(9600);        // TTL-UART zum Modul
  Serial.println("Start");
}

void loop() {
  if (gps.available()) {
    int c = gps.read();
    Serial.write(c);      // Durchreichen an den PC
  }
}
    

Mini-Beispiel: PC-Terminal in Python (pyserial)


import serial

with serial.Serial(port="COM5", baudrate=115200, timeout=1) as ser:
    ser.write(b"hello\r\n")
    line = ser.readline()  # liest bis \n oder timeout
    print("Empfangen:", line.decode(errors="ignore"))
    

Baudrate wählen – Faustregeln

  • 9 600: maximal kompatibel, robust, langsam.
  • 57 600 / 115 200: flüssiges Debugging, viele Module unterstützen das.
  • > 1 M: möglich auf kurzen, sauberen Leitungen mit passenden Quarzen und Puffern.

Stimmen Quarze/PLL und die Baudraten-Toleranz nicht, häufen sich Bitfehler. Senke dann die Baudrate oder passe den Takt an.

Sicherheit & ESD

  • Beim Stecken unter Strom drohen ESD-Schäden oder Glitches. Wenn möglich: kurz stromlos, dann verbinden.
  • Ground-Loops vermeiden, besonders bei langen Leitungen und unterschiedlichen Netzteilen.

UART im Alltag von Maker-Projekten

  • Debug-Konsole mit Serial.print() – schnellste Diagnose.
  • Bootloader/Flashing – viele MCUs und Module lassen sich über UART programmieren.
  • Konfigurationsschnittstellen – AT-Befehle bei Funkmodulen, GNSS-Output, Motorcontroller-Telemetrie.
  • Maschine↔PC – 3D-Drucker senden Status, OctoPrint/Pronterface steuern via G-Code.

Checkliste: Läuft deine UART-Verbindung?

  • Richtige Baudrate/8N1 auf beiden Seiten
  • TX↔RX gekreuzt, GND verbunden
  • Pegel passen (3,3 V/5 V/RS-232)
  • COM-Port korrekt und frei
  • Kabel kurz & sauber verlegt (ggf. Baudrate reduzieren)

Fazit

UART ist die Schweizer Taschenmesser-Schnittstelle für Maker: simpel zu verdrahten, schnell einsatzbereit und ideal zum Debuggen oder als Konfig-Kanal. Mit korrekter Baudrate, passenden Pegeln und sauberer Verdrahtung steht stabilen Verbindungen kaum etwas im Weg.

Lust bekommen, es auszuprobieren? Typische Helfer sind USB-zu-TTL-Adapter, Pegelwandler (MAX3232) und Level-Shifter – dazu passende Kabel und Jumper-Wires.

0 Kommentare

Kommentieren

Bitte beachten Sie, dass Kommentare vor ihrer Veröffentlichung genehmigt werden müssen.