Zurück

Serielles Echo mit Arduino: USART-Kommunikation lernen

Einleitung

Serielle Kommunikation ist eine der grundlegendsten Fähigkeiten in der eingebetteten Elektronik. Egal, ob du einen Sensor debuggen, mit einem GPS-Modul kommunizieren oder Daten an einen PC senden möchtest – der bescheidene USART (Universal Synchronous/Asynchronous Receiver/Transmitter) ist dein Werkzeug der Wahl. In diesem Tutorial bauen wir ein einfaches Serielles Echo-Projekt mit einem Arduino Uno im Velxio-Simulator. Jedes Zeichen, das du im Seriellen Monitor eingibst, wird zusammen mit seinem ASCII-Wert und einem laufenden Zähler zurückgesendet. Es ist das „Hallo Welt!“ der seriellen Kommunikation.

Schaltplan des seriellen Echos auf der Velxio-Simulator-Leinwand

Schaltplan-Erklärung

Dieses Projekt ist bemerkenswert einfach – es verwendet nur das Arduino Uno-Board selbst. Es werden keine externen Komponenten benötigt, da die serielle Kommunikation über den im Uno integrierten USB-zu-Seriell-Wandler erfolgt. In Velxio ist der Serielle Monitor in die Editor-Symbolleiste integriert, sodass du sofort mit deinem Code interagieren kannst.

Komponenten

KomponenteMengeHinweise
Arduino Uno (wokwi-arduino-uno)1Das Gehirn der Operation

Das war’s! Die TX (Pin 1) und RX (Pin 0) des Arduino Uno sind intern mit der USB-Schnittstelle verbunden, die Velxio perfekt emuliert. Es ist keine Verkabelung erforderlich.

Velxio Editor-Symbolleiste mit Compile- und Run-Steuerung

Code-Erklärung

Tauchen wir in den Code ein. Öffne den Velxio-Editor und du wirst den folgenden Sketch sehen:

// Serial Echo — USART Protocol Test
// Open the Serial Monitor to send and receive data.
// Everything you type is echoed back with extra info.

void setup() {
  Serial.begin(9600);
  Serial.println("=============================");
  Serial.println("  Serial Echo Test (USART)");
  Serial.println("=============================");
  Serial.println("Type something and press Send.");
  Serial.println();

  // Print system info
  Serial.print("CPU Clock: ");
  Serial.print(F_CPU / 1000000);
  Serial.println(" MHz");
  Serial.print("Baud rate: 9600");
  Serial.println();
  Serial.println();
}

unsigned long charCount = 0;

void loop() {
  if (Serial.available() > 0) {
    char c = Serial.read();
    charCount++;

    Serial.print("[");
    Serial.print(charCount);
    Serial.print("] Received: '");
    Serial.print(c);
    Serial.print("' (ASCII ");
    Serial.print((int)c);
    Serial.println(")");
  }

  // Periodic heartbeat
  static unsigned long lastBeat = 0;
  if (millis() - lastBeat >= 5000) {
    lastBeat = millis();
    Serial.print("Uptime: ");
    Serial.print(millis() / 1000);
    Serial.print("s | Chars received: ");
    Serial.println(charCount);
  }
}

Quellcode für serielles Echo im Velxio Monaco-Editor

Wie es funktioniert

  1. Setup: Wir initialisieren die serielle Kommunikation mit 9600 Baud über Serial.begin(9600). Dann geben wir einen Banner und Systeminformationen aus: die CPU-Taktgeschwindigkeit (F_CPU / 1000000 ergibt MHz) und die Baudrate.

  2. Globale Variable: unsigned long charCount = 0; verfolgt, wie viele Zeichen wir empfangen haben.

  3. Loop:

    • if (Serial.available() > 0) prüft, ob Daten im Empfangspuffer warten.
    • char c = Serial.read(); liest ein Zeichen.
    • Wir erhöhen charCount und geben eine formatierte Nachricht aus: [count] Received: 'c' (ASCII 99).
    • Alle 5 Sekunden geben wir einen Herzschlag mit der Betriebszeit und der Gesamtzahl der empfangenen Zeichen aus.

Wichtige Konzepte für Schüler

Häufige Fallstricke und Debugging-Tipps

Vorgeschlagene Erweiterungen

Sobald du das grundlegende Echo gemeistert hast, probiere diese Verbesserungen aus:

  1. Ganze Zeilen echoen: Statt jedes Zeichen einzeln zu echoen, sammle Zeichen bis zum Zeilenumbruch und echo dann die gesamte Zeile.
  2. Befehls-Parser: Interpretiere spezielle Befehle wie „LED ON“, um eine LED einzuschalten (füge eine LED zum Schaltplan hinzu).
  3. Binäre Ausgabe: Gib das empfangene Zeichen im Binärformat aus.
  4. Mehrere Baudraten: Lass den Benutzer die Baudrate über einen Befehl ändern.
  5. In virtuelles EEPROM protokollieren: Speichere empfangene Daten im simulierten EEPROM.

Fazit

Du hast soeben dein erstes serielles Kommunikationsprojekt gebaut! Das Serielle Echo ist eine einfache, aber leistungsstarke Demonstration, wie Mikrocontroller mit der Außenwelt kommunizieren. Mit Velxio kannst du ohne Hardware experimentieren – öffne einfach den Simulator, schreibe Code und teste sofort.

Bereit, es selbst auszuprobieren? Öffne das Live-Beispiel in Velxio und beginne zu tippen: Serielles Echo auf Velxio. Viel Spaß beim Programmieren!


Teilen auf:
David Montero

Geschrieben von

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

Ähnliche Artikel


Vorheriger Artikel
Serielle LED-Steuerung mit Arduino — Befehle zum Blinken senden
Nächster Artikel
LCD 20x4 Display mit Arduino: Hello World in Velxio