Após consolidar aquisição de dados, controle de hardware, persistência e controle de potência, o próximo passo em sistemas embarcados é a comunicação entre dispositivos.
UART (Universal Asynchronous Receiver/Transmitter) é um dos mecanismos mais fundamentais para isso — simples, direto e amplamente suportado.
O que é Comunicação Serial
Comunicação serial consiste no envio de dados:
- Bit a bit
- Em sequência
- Sem necessidade de clock compartilhado (assíncrono)
Conceitos Fundamentais
Baud Rate
9600 baud = 9600 bits por segundo
Valores típicos:
- 9600
- 19200
- 38400
Estrutura de Frame
[Start] [8 bits de dados] [Stop]
Formato padrão:
- 8 bits
- Sem paridade
- 1 bit de parada (8N1)
Linhas Físicas
- TX → Transmissão
- RX → Recepção
- GND → Referência comum
UART no Raspberry Pi Pico
Características:
- 2 interfaces UART disponíveis
- Configuração flexível via software
- Integração direta com MicroPython
Inicialização
from machine import UART
uart = UART(0, 9600)
Operações Básicas
uart.write("Hello")
uart.read()
uart.readline()
Projeto 1: Envio de Temperatura
from machine import ADC, UART
import utime
adc = ADC(4)
uart = UART(0, 9600)
conv = 3.3 / 65535
while True:
v = adc.read_u16() * conv
temp = 27 - (v - 0.706) / 0.001721
uart.write(str(temp)[:5])
uart.write(" C\n")
utime.sleep(10)
Arquitetura:
- Entrada: sensor interno
- Processamento: conversão térmica
- Saída: transmissão serial
Projeto 2: Recepção de Dados
from machine import UART
uart = UART(0, 9600)
while True:
if uart.any():
data = uart.readline()
print(data)
Ponto crítico:
uart.any()evita leitura inválidareadline()depende de\n
Projeto 3: Comunicação Pico ↔ Arduino
Envio (Pico)
uart = UART(0, 9600)
uart.write("25.5 C\n")
Recepção (Arduino)
if(Serial.available()) {
String data = Serial.readStringUntil('\n');
Serial.println(data);
}
Aplicação:
- Integração entre plataformas
- Sistemas híbridos
Projeto 4: Recebendo Dados Externos
from machine import UART
uart = UART(0, 9600)
while True:
data = uart.readline()
if data:
print(data)
Projeto 5: Comunicação com Raspberry Pi
Pico
from machine import UART
import utime
uart = UART(0, 9600)
while True:
uart.write("Hello from Pico\n")
if uart.any():
response = uart.readline()
print(response)
utime.sleep(5)
Raspberry Pi
import serial
import time
ser = serial.Serial("/dev/serial0", 9600)
while True:
data = ser.readline()
print(data)
ser.write(b"Hello back\n")
time.sleep(5)
Boas Práticas
Sincronização de Baud Rate
UART(0, 9600)
Ambos os lados devem usar o mesmo valor.
Controle de Nível Elétrico
- Pico: 3.3V
- Interfaces industriais podem usar níveis diferentes
Nunca conectar diretamente sem validação.
Uso de Delimitadores
uart.write("data\n")
Permite parsing confiável com readline().
Arquitetura de Sistema Real
Com UART, o sistema evolui para comunicação distribuída:
- Módulos independentes
- Troca de dados estruturada
- Integração entre dispositivos
Integração com Outros Blocos
UART conecta todos os pilares anteriores:
- Sensores → leitura local
- Processamento → decisão
- PWM → atuação
- Data logging → histórico
- UART → comunicação externa
Insight Técnico Final
Sem comunicação, o sistema é isolado.
Com UART, ele passa a:
- Compartilhar dados
- Integrar sistemas
- Escalar arquitetura
Encerramento Geral
Neste ponto, o conjunto está completo:
- Entrada (ADC)
- Processamento (lógica)
- Saída (GPIO / PWM)
- Persistência (arquivos)
- Comunicação (UART)
Isso define a base de qualquer sistema embarcado moderno.
