Escolar Documentos
Profissional Documentos
Cultura Documentos
Comunicação Serial
Prof. Richard Junior Manuel Godinez Tello
Comunicação Serial
DB9 Comunicação UART
Tx Rx
GPS Rx Tx uC
GND GND
2
Diferença entre a Comunicação Paralela vs Serial
Transmissão serial
Lado do Lado do
transmissor 1 0 1 1 1 0 1 0 receptor
Transmissão em paralelo
1
0
1
Lado do 1 Lado do
transmissor 1 receptor
0
1
0
3
UART e Comunicação Serial UART
Na maioria dos circuitos de comunicação serial utiliza-se um transmissor/receptor RX TX
(transceptor) Assíncrono Universal conhecido como UART (Universal Asynchronous
Receiver/Transmitter). A UART é uma interface genérica de comunicação serial e que RS-232
pode suportar protocolos específicos diferentes. É responsável pelo envio e recepção
de uma sequencia de bits através de duas linhas, uma de TX (transmissão) e uma de RX
(recepção).
É a primeira função a ser utilizada quando vai trabalhar com a comunicação serial. Ela configura
a taxa de comunicação em bits por segundo (baud rate). Possui um segundo parâmetro opcional
para a definição da quantidade de bits, paridade e stop bits. Se for omitido esse parâmetro o
padrão será 8 bits, sem paridade e 1 stop bit.
Sintaxe:
Serial.begin(speed)
Serial.begin(speed, config)
Parâmetros:
Retorna a quantidades de bytes disponíveis para leitura no buffer de leitura. Essa função auxilia
em loops onde a leitura dos dados só e realizada quando há dados disponível. A quantidade
máxima de bytes no buffer é 64.
Sintaxe:
Serial.available();
Parâmetros:
Retorno:
Sintaxe:
Serial.read();
Parâmetros:
Retorno:
(int) - O primeiro byte disponível no buffer da serial. Retorna -1 caso n tenha dado
disponível. 12
Funções seriais usadas no Arduino
Serial.print()
Escreve na serial texto em formato ASCII. Essa função tem muitas possibilidades.
Números inteiros são escritos usando um caractere ASCII para cada dígito. O mesmo
ocorre para números flutuante e, por padrão, são escrito duas casas decimais. Bytes são
enviados como caracteres únicos e strings e caracteres são enviados como escritos.
Obs.: caracteres são enviados com aspas simples e strings com aspas duplas.
13
Funções seriais usadas no Arduino
Um segundo parâmetro opcional define a base numérica para formatar o valor enviado. São aceitos os
seguintes parâmetros:
Para números em ponto flutuante esse parâmetro define a quantidade de casas decimais a serem
enviadas após o ponto. Exemplos:
Serial.print(val)
Serial.print(val, format)
Parâmetros:
format: base numérica para tipos inteiros ou a quantidade de casas decimais para
números flutuantes.
Retorno:
Funciona praticamente igual a função Serial.print(), a única diferença é que esta função
acrescenta ao fim da mensagem o caractere de retorno de carro (ASCII 13 ou ‘\r’) e o
caractere de nova linha(ASCII 10 ou ‘\n’). A sintaxe, os parâmetros e o retorno são os
mesmos da função Serial.print().
Serial.write()
Sintaxe:
Serial.write(val)
Serial.write(str)
Serial.write(buf, len) 16
Funções seriais usadas no Arduino
Parâmetros:
str: uma string para ser enviada como uma sequência de bytes.
Retorno:
• Serial.write ()
Grava dados binários na porta serial. Esses dados são enviados como um byte
ou série de bytes; para enviar os caracteres que representam os dígitos de um
número, use a função print ().
• Serial.print ()
Imprime dados na porta serial como texto ASCII legível por humanos.
18
Funções seriais usadas no Arduino
Serial.flush()
Descrição
De forma resumida, aguarda a conclusão da transmissão dos dados seriais. Quando
transmitimos dados pela serial, os dados são colocados em um buffer e o programa passa para
a próxima instrução. Os dados são transmitidos lentamente ao buffer pois serial é tento. Se
você não quiser que o programa avance até que a transmissão seja concluída, você pode usar a
função Serial.flush() para garantir que todos os dados sejam transmitidos e o buffer fique vazio.
Com esta função, o programa não avançará até que a transmissão serial seja concluída.
• 1 potenciômetro
• 1 Arduino
• Jumpers
Exemplo de conexões 20
Projeto 1: Leitura de dados analógicos
Diagrama esquemático:
Materiais:
• 1 potenciômetro
• 1 Arduino
• Jumpers
5V
Potenciômetro A0
1KΩ
GND 21
Projeto 1: Leitura de dados analógicos
O código:
int sensor = A0;
void setup() {
pinMode(sensor, INPUT);
Serial.begin(9600);
}
void loop() {
float tensao = analogRead(sensor)*5.0/1023.0;
Serial.print("Tensao do pino A0 em Volts: ");
Serial.println(tensao);
delay(1000);
}
22
Projeto 2: Controle Liga/Desliga de um LED
caractere 'A'
23
Projeto 2: Controle Liga/Desliga de um LED
Materiais:
• 1 LED
• 1 resistor de
330Ω
• Jumpers
Exemplo de conexões 24
Projeto 2: Controle Liga/Desliga de um LED
O código: const int LED = 13;
void setup() {
Serial.begin(9600); //configura comunicação serial com 9600 bps
pinMode(LED,OUTPUT); //configura pino do led como saída
}
void loop() {
if (Serial.available()) //se byte pronto para leitura
{
switch(Serial.read()) //verifica o digito ou caractere recebido
{
case 'A': //caso 'A'
digitalWrite(LED,!digitalRead(LED)); //inverte estado do LED
break;
}
}
}
25