Indietro

Echo Seriale con Arduino: Impara la Comunicazione USART

Introduzione

La comunicazione seriale è una delle competenze più fondamentali nell’elettronica embedded. Che tu stia eseguendo il debug di un sensore, comunicando con un modulo GPS o inviando dati a un PC, l’umile USART (Universal Synchronous/Asynchronous Receiver/Transmitter) è lo strumento ideale. In questo tutorial, costruiremo un semplice progetto di Echo Seriale utilizzando un Arduino Uno nel simulatore Velxio. Ogni carattere che digiti nel Monitor Seriale viene rimandato indietro con il suo valore ASCII e un conteggio progressivo. È l‘“Hello, World!” della comunicazione seriale.

Diagramma del circuito dell'echo seriale sul canvas del simulatore Velxio

Panoramica del Circuito

Questo progetto è estremamente semplice: utilizza solo la scheda Arduino Uno stessa. Non sono necessari componenti esterni perché la comunicazione seriale avviene tramite il convertitore USB-serial integrato nell’Uno. In Velxio, il Monitor Seriale è integrato nella barra degli strumenti dell’editor, così puoi interagire immediatamente con il tuo codice.

Componenti

ComponenteQuantitàNote
Arduino Uno (wokwi-arduino-uno)1Il cervello dell’operazione

Questo è tutto! I pin TX (pin 1) e RX (pin 0) dell’Arduino Uno sono collegati internamente all’interfaccia USB, che Velxio emula perfettamente. Non è richiesto alcun cablaggio.

Barra degli strumenti dell'editor Velxio con i controlli di compilazione ed esecuzione

Analisi del Codice

Immergiamoci nel codice. Apri l’editor Velxio e vedrai il seguente sketch:

// 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);
  }
}

Codice sorgente per l'echo seriale nell'editor Monaco di Velxio

Come Funziona

  1. Setup: Inizializziamo la comunicazione seriale a 9600 baud usando Serial.begin(9600). Poi stampiamo un’intestazione e le informazioni di sistema: la velocità del clock della CPU (F_CPU / 1000000 dà i MHz) e il baud rate.

  2. Variabile globale: unsigned long charCount = 0; tiene traccia di quanti caratteri abbiamo ricevuto.

  3. Loop:

    • if (Serial.available() > 0) controlla se ci sono dati in attesa nel buffer di ricezione.
    • char c = Serial.read(); legge un carattere.
    • Incrementiamo charCount e stampiamo un messaggio formattato: [conteggio] Ricevuto: 'c' (ASCII 99).
    • Ogni 5 secondi, stampiamo un heartbeat con il tempo di attività e il totale dei caratteri ricevuti.

Concetti Chiave per Studenti

Errori Comuni e Suggerimenti per il Debug

Estensioni Suggerite

Una volta padroneggiato l’echo di base, prova questi miglioramenti:

  1. Echo di righe intere: Invece di rimandare indietro ogni carattere, accumula i caratteri fino al newline, poi rimanda indietro l’intera riga.
  2. Parser di comandi: Interpreta comandi speciali come “LED ON” per accendere un LED (aggiungi un LED al circuito).
  3. Output binario: Stampa il carattere ricevuto in formato binario.
  4. Baud rate multipli: Permetti all’utente di cambiare il baud rate tramite un comando.
  5. Registrazione su EEPROM virtuale: Memorizza i dati ricevuti nella EEPROM simulata.

Conclusione

Hai appena realizzato il tuo primo progetto di comunicazione seriale! L’Echo Seriale è una dimostrazione semplice ma potente di come i microcontrollori comunicano con il mondo esterno. Con Velxio, puoi sperimentare senza alcun hardware: basta aprire il simulatore, scrivere codice e testare immediatamente.

Pronto a provarlo tu stesso? Apri l’esempio live in Velxio e inizia a digitare: Echo Seriale su Velxio. Buon coding!


Condividi su:
David Montero

Scritto da

David Montero

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

GitHub velxio.dev

Articoli correlati


Articolo precedente
Controllo LED Seriale con Arduino: Invia Comandi per Lampeggiare
Articolo successivo
Display LCD 20x4 con Arduino: Hello World in Velxio