Introdução
A comunicação serial é uma das habilidades mais fundamentais em eletrônica embarcada. Seja depurando um sensor, conversando com um módulo GPS ou enviando dados para um PC, o humilde USART (Receptor/Transmissor Universal Síncrono/Assíncrono) é sua ferramenta essencial. Neste tutorial, vamos construir um projeto simples de Eco Serial usando um Arduino Uno no simulador Velxio. Cada caractere que você digitar no Monitor Serial será ecoado de volta com seu valor ASCII e uma contagem em execução. É o “Olá, Mundo!” da comunicação serial.

Passo a Passo do Circuito
Este projeto é notavelmente simples — ele usa apenas a própria placa Arduino Uno. Nenhum componente externo é necessário porque a comunicação serial acontece através do conversor USB-serial embutido no Uno. No Velxio, o Monitor Serial está integrado na barra de ferramentas do editor, então você pode interagir com seu código imediatamente.
Componentes
| Componente | Quantidade | Observações |
|---|---|---|
| Arduino Uno (wokwi-arduino-uno) | 1 | O cérebro da operação |
É isso! Os pinos TX (pino 1) e RX (pino 0) do Arduino Uno estão internamente conectados à interface USB, que o Velxio emula perfeitamente. Nenhuma fiação é necessária.

Passo a Passo do Código
Vamos mergulhar no código. Abra o editor Velxio e você verá o seguinte 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);
}
}

Como Funciona
-
Setup: Inicializamos a comunicação serial a 9600 baud usando
Serial.begin(9600). Em seguida, imprimimos um banner e informações do sistema: a velocidade do clock da CPU (F_CPU / 1000000 dá em MHz) e a taxa de baud. -
Variável global:
unsigned long charCount = 0;mantém o controle de quantos caracteres recebemos. -
Loop:
if (Serial.available() > 0)verifica se há dados esperando no buffer de recepção.char c = Serial.read();lê um caractere.- Incrementamos
charCounte imprimimos uma mensagem formatada:[contagem] Received: 'c' (ASCII 99). - A cada 5 segundos, imprimimos um batimento cardíaco com o tempo de atividade e o total de caracteres recebidos.
Conceitos-Chave para Estudantes
- Taxa de Baud: A velocidade da comunicação serial. Ambos os lados devem concordar com a mesma taxa de baud (aqui 9600).
- Serial.available(): Retorna o número de bytes aguardando para serem lidos. Sempre verifique antes de ler para evitar obter -1.
- Serial.read(): Lê um único byte (caractere) do buffer.
- ASCII: Cada caractere tem um código numérico. Por exemplo, ‘A’ é 65. O código converte
cparaintpara mostrar isso. - millis(): Retorna milissegundos desde que o programa iniciou. Útil para temporização não bloqueante.
- Variáveis static:
static unsigned long lastBeatmantém seu valor entre iterações do loop, ao contrário de variáveis locais.
Problemas Comuns e Dicas de Depuração
- Monitor Serial não mostra saída? Certifique-se de que você abriu o Monitor Serial no Velxio (clique no botão “Serial Monitor” na barra de ferramentas). Verifique também se a taxa de baud no monitor corresponde a 9600.
- Caracteres estranhos? A incompatibilidade de taxa de baud é a causa mais comum. Verifique novamente
Serial.begin(9600)e a configuração do monitor. - Nada acontece quando você digita? Certifique-se de que você está pressionando “Send” ou Enter após digitar. O código lê um caractere por vez.
- Batimento cardíaco não está sendo impresso? A condição
if (millis() - lastBeat >= 5000)usa>=para evitar perder o intervalo. Se você não vir o batimento, verifique selastBeatestá sendo atualizado corretamente.
Extensões Sugeridas
Depois de dominar o eco básico, tente estes aprimoramentos:
- Eco de linhas inteiras: Em vez de ecoar cada caractere, acumule caracteres até a nova linha e então ecoe a linha inteira.
- Interpretador de comandos: Interprete comandos especiais como “LED ON” para acender um LED (adicione um LED ao circuito).
- Saída binária: Imprima o caractere recebido em formato binário.
- Múltiplas taxas de baud: Permita que o usuário mude a taxa de baud através de um comando.
- Registro em EEPROM virtual: Armazene os dados recebidos na EEPROM simulada.
Conclusão
Você acabou de construir seu primeiro projeto de comunicação serial! O Eco Serial é uma demonstração simples, mas poderosa, de como microcontroladores se comunicam com o mundo exterior. Com o Velxio, você pode experimentar sem nenhum hardware — basta abrir o simulador, escrever código e testar instantaneamente.
Pronto para testar você mesmo? Abra o exemplo ao vivo no Velxio e comece a digitar: Eco Serial no Velxio. Boa codificação!