Introdução
Bem-vindo a mais um tutorial da Velxio! Hoje vamos construir um teste de Serial Echo para o Raspberry Pi Pico (RP2040). Este projeto é perfeito para iniciantes que desejam entender como a comunicação serial funciona em microcontroladores. Você aprenderá a enviar e receber dados via UART, adicionar um indicador visual com um LED e implementar um temporizador de heartbeat simples.

Passo a Passo do Circuito
O circuito é deliciosamente simples. Precisamos apenas de dois componentes:
- Raspberry Pi Pico (o cérebro)
- LED Amarelo (indicador visual para atividade serial)
Conexões
- Conecte o ânodo (A) do LED amarelo ao pino TX do Pico. O pino TX é usado para transmissão serial, então toda vez que o Pico enviar dados, o LED piscará.
- Conecte o cátodo (C) do LED ao GND (qualquer pino de terra no Pico).
É isso! O LED está ligado em série com a linha TX, então ele acende quando o Pico transmite. Isso fornece uma confirmação visual de que os dados seriais estão fluindo.

Explicação do Código
Vamos mergulhar no código. Abra o editor Velxio e você verá o seguinte sketch:
// Raspberry Pi Pico — Serial Echo Test
// Echoes received characters and prints a heartbeat every 2 seconds
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("=== Pico Serial Echo ===");
Serial.println("Type something and press Enter.");
Serial.println();
}
unsigned long lastHeartbeat = 0;
void loop() {
// Echo any incoming characters
while (Serial.available()) {
char c = Serial.read();
Serial.print("Echo: ");
Serial.println(c);
}
// Heartbeat every 2 seconds
if (millis() - lastHeartbeat >= 2000) {
lastHeartbeat = millis();
Serial.print("[Heartbeat] Uptime: ");
Serial.print(millis() / 1000);
Serial.println("s");
}
}
Como Funciona
setup(): Inicializa a comunicação serial a 115200 baud. Após um breve atraso, imprime uma mensagem de boas-vindas.loop(): Duas tarefas principais:- Echo: Verifica se há dados disponíveis na porta serial. Se sim, lê um caractere e o imprime de volta com o prefixo “Echo:”.
- Heartbeat: A cada 2000 milissegundos (2 segundos), imprime uma mensagem de heartbeat mostrando o tempo de atividade do sistema em segundos.
A variável lastHeartbeat mantém o controle da última vez que o heartbeat foi impresso, usando millis() para temporização não bloqueante.
Conceitos Principais
Comunicação Serial (UART)
UART (Universal Asynchronous Receiver/Transmitter) é um protocolo serial simples. O pino TX do Pico envia dados, e o pino RX recebe dados. Neste exemplo, usamos apenas TX para saída, mas a função echo também usa RX (através do Monitor Serial).
Temporização Não Bloqueante com millis()
Em vez de usar delay(), que pausa todo o programa, usamos millis() para verificar o tempo decorrido. Isso permite que o loop echo seja executado continuamente enquanto ainda imprime o heartbeat em intervalos regulares.
LED como Indicador Visual
Ao conectar o LED ao pino TX, obtemos um visual em tempo real da atividade serial. Toda vez que o Pico envia um caractere, o LED pisca brevemente.
Problemas Comuns e Dicas de Depuração
- Incompatibilidade de baud rate: Certifique-se de que o Monitor Serial está configurado para 115200 baud. Se você vir caracteres estranhos, verifique o baud rate.
- LED não piscando: Verifique a polaridade do LED (ânodo no TX, cátodo no GND). Verifique também se o Pico está realmente transmitindo (por exemplo, digite algo no Monitor Serial).
- Sem echo: Certifique-se de que você está enviando dados para o pino RX do Pico. No Velxio, o Monitor Serial lida com isso automaticamente.
- Heartbeat não está sendo impresso: Verifique se
lastHeartbeatfoi declarado comounsigned longe se a lógica de comparação está correta.

Extensões Sugeridas
Depois de ter o echo básico funcionando, tente estas melhorias:
- Adicione um LED RX: Conecte outro LED ao pino RX para mostrar quando os dados são recebidos.
- Interpretação de comandos: Em vez de apenas ecoar, interprete comandos como “LED ON” ou “LED OFF” para controlar um LED externo.
- Múltiplos baud rates: Permita que o usuário mude o baud rate através de um comando serial.
- Registro no console: Armazene os dados recebidos em um buffer e imprima-os sob demanda.

Chamada para Ação
Pronto para testar você mesmo? Abra o exemplo ao vivo no Velxio e comece a experimentar: Pico Serial Echo no Velxio. Você pode modificar o código, mudar a cor do LED ou adicionar novos componentes. Feliz programação!