Aula 17 – Comunicação Serial UART
Nesta aula vamos estudar a comunicação serial UART, muito utilizada para troca de dados entre o PIC e computadores, IHMs, módulos Bluetooth, GSM, conversores USB-Serial, interfaces RS-232 e redes RS-485.
1. O que é UART?
UART significa Universal Asynchronous Receiver Transmitter. É um periférico interno do microcontrolador responsável por transmitir e receber dados seriais.
UART = Transmissor e Receptor Assíncrono Universal
2. O que é comunicação serial?
Comunicação serial transmite os bits um de cada vez, utilizando poucos fios. Isso é diferente da comunicação paralela, que envia vários bits ao mesmo tempo.
Byte: 01010101
Transmissão serial:
0 → 1 → 0 → 1 → 0 → 1 → 0 → 1
3. Comunicação paralela x comunicação serial
| Tipo | Características |
|---|---|
| Paralela | Usa vários fios para transmitir vários bits ao mesmo tempo. |
| Serial | Usa poucos fios e transmite um bit por vez. |
4. Pinos TX e RX
A UART utiliza normalmente dois sinais principais:
- TX: transmissão de dados.
- RX: recepção de dados.
PIC16F877A:
RC6 = TX
RC7 = RX
5. Ligação correta entre dois dispositivos
O TX de um dispositivo deve ser ligado ao RX do outro.
PIC TX → RX do módulo
PIC RX ← TX do módulo
GND ↔ GND comum
6. O que é Baud Rate?
Baud Rate é a velocidade da comunicação serial. Ele define quantos bits são transmitidos por segundo.
Valores comuns:
9600
19200
38400
57600
115200
7. Exemplo de configuração para 9600 bps
Para um PIC com oscilador de 20 MHz, um valor comum para 9600 bps é:
SPBRG = 129;
8. Registradores principais da UART
| Registrador | Função |
|---|---|
| TXSTA | Controle da transmissão |
| RCSTA | Controle da recepção |
| SPBRG | Configuração do Baud Rate |
| TXREG | Registrador usado para transmitir dados |
| RCREG | Registrador usado para receber dados |
9. Inicializando a UART
void UART_Init()
{
SPBRG = 129; // Baud Rate 9600 bps com Fosc de 20 MHz
TXSTA = 0x24; // Transmissão habilitada, modo assíncrono, alta velocidade
RCSTA = 0x90; // Porta serial habilitada e recepção contínua
}
10. Enviando um caractere
void UART_Write(char dado)
{
while(!TXIF); // Aguarda o registrador ficar livre
TXREG = dado; // Envia o caractere
}
11. Enviando uma mensagem
void UART_Texto(char *texto)
{
while(*texto)
{
UART_Write(*texto++);
}
}
12. Recebendo um caractere
char UART_Read()
{
while(!RCIF); // Aguarda chegar dado
return RCREG; // Retorna o caractere recebido
}
13. Exemplo completo: enviando texto para o computador
#include <xc.h>
void UART_Init()
{
SPBRG = 129;
TXSTA = 0x24;
RCSTA = 0x90;
}
void UART_Write(char dado)
{
while(!TXIF);
TXREG = dado;
}
void UART_Texto(char *texto)
{
while(*texto)
{
UART_Write(*texto++);
}
}
void main()
{
UART_Init();
while(1)
{
UART_Texto("PIC do Zero\r\n");
}
}
14. Comunicação com computador
Para comunicar o PIC com um computador, normalmente usamos um conversor USB-Serial.
PIC → Conversor USB-Serial → Computador
15. RS-232
RS-232 é um padrão clássico de comunicação serial. Como trabalha com níveis de tensão diferentes dos pinos do PIC, geralmente é necessário utilizar o circuito integrado MAX232.
PIC UART ↔ MAX232 ↔ Porta serial RS-232
16. RS-485
RS-485 é muito utilizado em automação industrial por permitir comunicação em longas distâncias e com maior imunidade a ruídos.
PIC UART ↔ MAX485 ↔ Rede RS-485
17. UART com Bluetooth
Módulos como HC-05 e HC-06 se comunicam com o PIC usando UART.
PIC TX → RX do HC-05
PIC RX ← TX do HC-05
18. UART com GSM
Módulos GSM como SIM800 e SIM900 usam comandos AT pela UART.
UART_Texto("AT\r\n");
19. Aplicações industriais
- Comunicação com IHMs.
- Comunicação com CLPs.
- Comunicação com inversores de frequência.
- Leitura de balanças e sensores inteligentes.
- Redes RS-485.
- Protocolo Modbus RTU.
20. Cuidados importantes
- TX deve ligar no RX do outro dispositivo.
- RX deve ligar no TX do outro dispositivo.
- Os dois equipamentos devem usar o mesmo Baud Rate.
- É necessário GND comum em comunicação TTL.
- Verifique se o módulo trabalha em 5V ou 3,3V.
21. Exercícios
Exercício 1: Qual pino transmite dados?
TX
Exercício 2: Qual pino recebe dados?
RX
Exercício 3: Qual registrador envia dados?
TXREG
Exercício 4: Qual registrador recebe dados?
RCREG
22. Laboratório prático
Monte o PIC com um conversor USB-Serial e envie a mensagem PIC do Zero para o terminal serial do computador.
PIC16F877A
RC6/TX → RX do conversor USB-Serial
RC7/RX ← TX do conversor USB-Serial
GND ↔ GND do conversor
23. Resumo da Aula
- UART é comunicação serial assíncrona.
- TX transmite e RX recebe.
- Baud Rate define a velocidade.
- TXREG transmite dados.
- RCREG recebe dados.
- UART é base para RS-232, RS-485, Bluetooth, GSM e Modbus RTU.
Próxima Aula – Aula 18
Na próxima aula vamos estudar Comunicação RS-485 e Protocolo Modbus RTU, entrando no universo das redes industriais.