Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Arduino Serielle Kommunikation: UART-Grundlagen & Troubleshooting meistern

Arduino Serial: Serielle Kommunikation mit Arduino

Hintergrund: Parallele vs. Serielle Kommunikation

Mikrocontroller kommunizieren über 8-Bit-Datenbusse. Parallele Übertragung bräuchte 8 Leitungen + Steuerleitungen → teuer, störanfällig bei langen Leitungen. Lösung: Serielles Protokoll – nur 3 Leitungen (TX, RX, GND). 8 Bit werden per Shift-Register (PISO) serialisiert, am Empfänger per SIPO wieder parallelisiert.

Zwei Betriebsarten: Synchron (Blockweise, Taktleitung) & Asynchron (Byteweise, Start/Stopp-Bits, kein geteilter Takt). Asynchron ist Standard (UART).

Übertragungsmodi

  1. Simplex: Nur Senden
  2. Halbduplex: Senden oder Empfangen (nicht gleichzeitig)
  3. Vollduplex: Gleichzeitiges Senden & Empfangen

RS-232 & Framing

Serielles Protokoll ≈ RS-232. 1 Datenbyte wird gerahmt: Startbit (0) + 8 Datenbits + Parität (optional) + Stoppbit(s) (1). Ursprünglich für PC-Ports (±12 V Pegel). Für TTL-Logik (0/5 V) Pegelwandler nötig (z. B. MAX232). Arduino hat USB-UART-Brücke onboard – direkte PC-Verbindung per USB, keine externen Pegelwandler nötig.

Wichtigste Arduino-Serial-Funktionen

FunktionBeschreibung
Serial.begin(baud)Serielle Schnittstelle initialisieren (Baudrate, z. B. 9600). In setup().
Serial.available()Prüft, ob Empfangsdaten im Puffer: 0 = nein, >0 = Anzahl Bytes.
Serial.read()Liest 1 Byte aus Puffer. Rückgabe: int (-1 wenn leer). Hinweis: Sendet man ASCII '1', liest man 49 (Dezimalcode).
Serial.print(val) / Serial.println(val)Daten an PC senden (ln = mit Newline). Formatierung: DEC, HEX, BIN, etc.
Serial.flush()Wartet, bis Sende-Puffer leer ist (seit IDE 1.0). Nicht „Puffer leeren“!
Serial.write(val)Rohdaten (Byte) senden.
Serial.readString()Liest String bis Timeout.
Serial.parseInt()Parst Integer aus Serial-Stream.

Praxisbeispiel: Echo mit LED-Steuerung

const int ledPin = 13;
char incomingByte;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    incomingByte = Serial.read();      // Byte lesen
    Serial.print("Empfangen: ");
    Serial.println(incomingByte);      // Echo zurück
    
    if (incomingByte == '1') digitalWrite(ledPin, HIGH);
    if (incomingByte == '0') digitalWrite(ledPin, LOW);
  }
}

Öffnen Sie den Seriellen Monitor (Strg+Shift+M), stellen Sie 9600 Baud ein, senden Sie '1' oder '0' → LED schaltet, Echo erscheint.

Tipps & Häufige Fehler

Weiterführende Themen

Industrietechnik

  1. MQTT vs. DDS: Das richtige M2M-Protokoll für IoT wählen
  2. Industrial IoT Communication: 6 bewährte Infrastruktur-Protokolle
  3. Datenfluss verstehen: Von Simplex bis Voll-Duplex-Kommunikation
  4. Optische Datenkommunikation: Licht für hochbandbreiten, störungsfreie Übertragung nutzen
  5. Netzwerkprotokolle verstehen: Von der Physikalischen Schicht bis zu fortgeschrittener Arbitration
  6. Mikroprozessoren: Die Evolution des Stored-Program-Computing
  7. Nahtlose Arduino–Raspberry Pi 2 I2C-Integration für IoT-Sensorprojekte
  8. Kabellose Datenübertragung per Magnetfeld: Arduino & Infineon 3D-Sensor (TLE493D)
  9. Kommunikationshilfe für Taubblinde: 1Sheeld + Arduino + Sprachausgabe & Anzeige
  10. Arduino Temperatur- & Feuchtelogger mit DHT11 & Ethernet Shield