Você está na página 1de 19

SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL

FACULDADE DE TECNOLOGIA SENAI CAMPO GRANDE


CURSO SUPERIOR DE TECNOLOGIA EM AUTOMAÇÃO INDUSTRIAL

UNIDADE CURRICULAR: SISTEMAS MICROPROCESSADOS

PROTOCOLO DE COMUNICAÇÃO - MICROCONTROLADORES

Francisco Oliveira Aragão


Lennon Pereira Rangel
Rodrigo da Silva Corumbá
Prof.a: Carlos Vanti

CAMPO GRANDE/MS
2018
SUMÁRIO

1 INTRODUÇÃO 3

2 FUNDAMENTAÇÃO TEÓRICA 7
2.1 Comunicação Usando Interface Paralela 7
2.2 Comunicação Usando Interface Serial 8
2.3 Comunicação Usando SPI 9
2.4 Comunicação Usando I2C/TWI 12
2.5 Comunicação Usando OneWire 15

3 REFERÊNCIAS BIBLIOGRÁFICAS 19
1 INTRODUÇÃO

Protocolos são utilizados em muitas áreas tecnológicas, pois possibilitam o


transporte de informação entre dispositivos, estabelecendo regras e convenções que
regem o funcionamento de diferentes comunicações. Por serem utilizados em muitas
áreas, diversos protocolos foram desenvolvidos ao longo dos anos para atender da
melhor forma possível diferentes aplicações. Alguns exemplos são os protocolos I²C,
1wire e SPI.

 Características:

 Taxa de comunicação:

Sua unidade geralmente é bits por segundo (bps) e representa a velocidade de


uma comunicação. Por exemplo uma comunicação assíncrona com 9600 bps envia
um bit em 0,0001 s. Esta taxa assume diferentes nomes dependendo da
comunicação, como em comunicações síncronas que é chamada de "clock" ou em
comunicações assíncronas que é conhecida como "Baud Rate".
Todos os dispositivos ligados a mesma linha de comunicação devem estar com
a mesma taxa de comunicação, principalmente comunicações assíncronas que não
usam o clock como referência. Caso a taxa dos dispositivos seja diferente,
dificilmente os dispositivos receberão os dados corretamente.

Foto 01: Dispositivos com a mesma taxa de comunicação.

Fonte: Robo Core (Sem data).


Foto 02: Dispositivos com taxas diferentes de comunicação.

Fonte: Robo Core (Sem data).

 Métodos:

 Síncrono

É o método de comunicação que depende de um sinal de "clock", ou seja, cada


bit ou conjunto de bits enviado depende de um pulso do clock, tendo como principal
vantagem sua velocidade de transmissão de dados, em contrapartida é necessário
um fio extra para o clock.

Foto 03: Método Síncrono

Fonte: Robo Core (Sem data).

 Assíncrono

Ao contrário do método Síncrono, este não precisa de um sinal de clock,


portanto o número de fios necessários é menor. Contudo, o envio dos dados é mais
complicado e susceptível a erros, por isso alguns parâmetros são necessários para
garantir o envio sem erros. Um parâmetro muito evidente em comunicações
assíncronas é o Baud Rate que especifica a velocidade de recepção e envio, por
isso é muito importante que os dois dispositivos utilizem a mesma taxa.

Foto 04: Método Assíncrono

Fonte: Robo Core (Sem data).

 Sentido de Transmissão:

 Full-duplex

Indica que o dispositivo pode transmitir e receber dados ao mesmo tempo.

 Half-duplex

O dispositivo que comunica dessa forma pode enviar ou receber, mas não executa
essas funções simultaneamente.

 Simplex

Se trata de dispositivos que sua comunicação é unidirecional, ou seja, apenas efetua


o envio ou recebimento.

 Tensão do protocolo:

É a tensão que os protocolos identificam os níveis lógicos alto e baixo.


 Terminologia:

 RX/TX

RX é o termo usado para representar o pino receptor de uma comunicação serial e


TX representa o transmissor. Ao contrário dos pinos de GND ou VCC que são
conectados com seus semelhantes, como GND --> GND, o RX/TX tem uma ligação
diferente. O TX deve ser ligado no RX, ou seja, transmissor enviando para o
receptor, e vice-versa.

 Mestre e escravo

É um método de comando centralizado onde apenas o dispositivo mestre pode


iniciar uma comunicação, enviando comandos, controlando a taxa de comunicação,
etc.

 Nível lógico

São os estados que um bit pode assumir, nível alto (1) ou nível baixo (0). Os níveis
lógicos são interpretados pelos protocolos baseados nas tensões que recebe. Por
exemplo o protocolo TTL considera de 2V a 5V nível lógico alto (bit 1) e de 0V a 0,8V
nível lógico baixo (bit 0).
2 FUNDAMENTAÇÃO TEÓRICA

2.1 Comunicação Usando Interface Paralela

A comunicação paralela é atualmente pouco usada para comunicação em


circuitos com microcontroladores, mas durante um bom tempo foi uma das mais
utilizadas para comunicação com periféricos como impressoras e scanners.
Apesar de ser mais lembrada na utilização desses dispositivos, ela também
é (ou foi) a base para a construção de interfaces para motherboards (placa mãe) de
computadores, como as interfaces SCSI, ISA, PCI e IDE (também chamada de PATA
= Parallel ATA).
A comunicação paralela certamente tem suas vantagens. É mais rápida que
serial, simples e relativamente fácil de implementar. No entanto, requer muitas
portas e linhas de entrada/saída (E/S). Dessa forma, prefere-se a comunicação
serial, sacrificando a velocidade potencial.
Na comunicação paralela tem-se 8 linhas de dados, por onde consegue-se
enviar um byte (8 bits) de cada vez.

Foto 05: Interface Paralela

Fonte: Thomsen (2015).

Além dos 8 bits de dados geralmente também são necessários outros fios para
alimentação e controle, o que acaba trazendo algumas limitações à construção de
dispositivos utilizando essa interface, já que os cabos não podem ser tão longos
(estão sujeitos à interferência devido à proximidade dos fios) e a confecção,
manutenção dos conectores paralelos também é mais complexa.

2.2 Comunicação Usando Interface Serial

A comunicação serial (muitas vezes chamada de RS-232 ou até mesmo de


UART) é uma evolução da interface paralela e como o próprio nome diz, funciona
enviando os dados serialmente, um bit de cada vez.
O principal objetivo desta comunicação serial é transferir o esboço do
computador para o Arduino, enviar informações para o computador, etc.
O tipo mais comum de protocolo de comunicação serial é o UART, ou seja, o
Transmissor Receptor Assíncrono Universal. A conexão UART requer 9 pinos DE – 9
conectores. Mas a maioria dos computadores e laptops modernos não inclui essas
portas COM. Portanto, para conectar microcontroladores como o 8051, o AVR ou o
ARM, é preciso usar um serial externo para o conversor USB. No entanto, o Arduino
UNO tem um serial para o conversor USB e, portanto, pode conectar diretamente o
Arduino ao computador.
Usando esta conexão USB e Arduino IDE, consegue-se enviar dados para o
Arduino ou receber dados do Arduino. Esses dados podem ser monitorados com a
ajuda do Serial Monitor no Arduino IDE. Desse modo, a comunicação entre o
Arduino UNO (ou qualquer outra placa) e o computador é a comunicação serial.

Foto 06: Interface Serial.

Fonte: Thomsen (2015).

As vantagens com relação à comunicação paralela são o menor custo


de confecção de cabos e conectores, já que a comunicação é feita por meio
de apenas um fio, e a redução de interferência de sinal em cabos mais longos.
Evidentemente que a utilização de apenas um fio serve somente para
efeitos didáticos ou em projetos específicos, já que na comunicação serial precisa-se
também receber dados de controle, resposta, etc. Assim, tem-se pelo menos 3
fios: TX(Transmissão), RX (Recepção) e GND (terra).
As configurações da comunicação serial variam de dispositivo para dispositivo
e devem ser a mesma tanto no transmissor como no receptor. Os parâmetros
configuráveis na interface serial são Baud rate, Data Bits, Stop Bits e Paridade.
Baud rate - É a taxa de transmissão ou a velocidade com que a serial vai se
comunicar com o outro dispositivo e indica quantos bits são transmitidos por
segundo. Os valores mais utilizados estão na faixa de 300 a 115.200  bauds, mas
dependendo do hardware podem alcançar taxas muito maiores.
Data Bits - Indica quantos bits de dados você vai enviar pela serial.
Esse número não precisa necessariamente ser 8 (um byte completo). Em
algumas situações, podemos escolher entre o envio de 5, 7 ou 8 bytes de cada vez.
Stop Bits - Bits de parada, indica o fim da transmissão de um pacote de dados.
Pode ter o valor de 1, 1.5 ou 2. É utilizado para fins de sincronização entre os
dispositivos.
Paridade - Também utilizado para fins de sincronização e verificação da
integridade dos dados após a transmissão.
Apesar de todos esses parâmetros o mais comum é encontrar como
padrão para configuração da comunicação serial os valores 8-N-1, que significam
8 bits de dados, sem paridade e 1 stop bit. A adoção de outros valores vai depender
do tipo de equipamento e protocolo utilizado.
Pela estrutura mostrada acima, pode-se ver que a comunicação serial é do
tipo assíncrona, ou seja, não utiliza nenhum tipo de clock para sincronização e
depende do envio de bits específicos após os dados para sinalizar o final da
transmissão.

2.3 Comunicação Usando SPI

O protocolo serial síncrono SPI utiliza quatro fios (SCK - Clock, MOSI - Master


Output/Slave Input, MISO - Master Input/Slave Output e SS - Slave Select) para
realizar uma comunicação full duplex permitindo que ambos os Arduinos possam
enviar e receber dados ao mesmo tempo.
Nesse tipo de comunicação, há um dispositivo mestre (geralmente o
microcontrolador) e vários escravos (periféricos).
O protocolo permite que um mestre se conecte com múltiplos escravos, para
isso cada escravo deve possuir um pino Slave Select definido no mestre.
Desta maneira, para selecionar o módulo escravo que irá receber a
informação, basta colocar o pino seletor do dispositivo desejado em nível lógico alto.

 Vantagem: não há limite para o número de escravos, a comunicação é full-duplex


e possui boa velocidade de comunicação.

 Funcionamento: primeiramente o mestre gera um clock e seleciona através do


pino SS com qual dispositivo será efetuada a comunicação. Em seguida os dados
são enviados para o dispositivo de destino pelo pino MOSI e então o dispositivo
escravo envia uma resposta (se necessário) ao mestre pelo pino MISO.

 Ligação: existem dois tipos de ligação para o protocolo SPI, ligação paralela e
ligação em cascata.

 Ligação paralela: É a ligação mais comum deste protocolo que utiliza 1 pino de
MOSI, MISO e clock para todos dispositivos e 1 pino SS para cada escravo
ligado a comunicação.

Foto 07: Ligação Paralela

Fonte: Robo Core (Sem data).

 Ligação em cascata: Este tipo de ligação demanda menos pinos de


comunicação, pois é utilizado 1 pino SS para todos os dispositivos ligados na
comunicação, porém causa perda de velocidade na comunicação.
Foto 08: Ligação em cascata

Fonte: Robo Core (Sem data).

 O que usa este protocolo?

 Matriz de LEDs RGB

 Exemplo de aplicação:

 Pisca LED

Nesse exemplo, ao pressionar o botão conectado à placa Master, o estado do


LED conectado à placa Slave será alterado.

Foto 09: Exemplo de aplicação SPI com dois Arduinos.


Fonte: Robo Core (Sem data).

 Componentes utilizados:

 BlackBoard V1.0
 LED
 Resistor
 PushButton
 Jumpers M/M
 Protoboard

 Outros tipos de aplicações:

 Sensor de pressão barométrica: lê a pressão do ar e a temperatura de um


sensor usando o protocolo SPI.
 Digital Pot Control: Controla um potenciômetro digital AD5206 usando o
protocolo SPI.

2.4 Comunicação Usando I2C/TWI

O protocolo de comunicação I2C foi criado pela Philips Semicondutores (hoje


NXP) e posteriormente adotado por vários fabricantes. Devido à problemas de
licença, pode também ser encontrada como interface TWI (Two Wire Interface)
ou TWSI(Two-Wire Serial Interface), mas segue o mesmo princípio de
funcionamento.
O protocolo serial síncrono I2C, utiliza de dois fios (SDA: Dados; SCL: Clock).
Forma-se um barramento endereçável onde cada componente na rede possui um
endereço para ser identificado para que a informação possa ser designada para o
destinatário correto. Cada dispositivo I2C tem um endereço fixo para se comunicar
com o microcontrolador e pode ser configurado para transmitir ou receber
dados. Assim, tanto a linha SDA como a SCL são bidirecionais, com os
dispositivos alternando seu estado entre mestre e escravo.
 Vantagem: possibilita comunicar com vários dispositivos utilizando poucos fios,
além de possibilitar que mais de um mestre controle os escravos.

 Funcionamento: para que a informação seja enviada, o dispositivo mestre deve


informar aos dispositivos escravos o início da comunicação, ou "Start condition".
Neste caso o pino SCL deve estar em nível lógico alto e o pino SDA em nível
lógico baixo. Quando isso ocorrer, todos os escravos estarão prontos para
receber a primeira informação que é o endereço do escravo que comunicará com
o mestre, junto com a operação que este escravo desempenhará. Em situações
em que houver mais de um mestre na comunicação, terá preferência o mestre
que sinalizar mais rápido o início de uma transmissão. Depois que o endereço é
enviado, o escravo que tiver o endereço correspondente realizará a operação de
leitura ou escrita da informação até que o dispositivo mestre envie uma "stop
condition" para interromper a comunicação.

 Ligação: este protocolo utiliza apenas dois pinos, SDA que é o sinal de dados e SCL
o clock. Com isso é possível concluir que este protocolo é half-duplex, pois
contém apenas um pino para envio de dados, e síncrono, pois usa um pino de
clock.

Foto 10: Exemplo de Comunicação I2C.

Fonte: Thomsen (2015).

 O que usa este protocolo?


 LCDs 16X2 com protocolo I²C
 Acelerômetro de 3 Eixos MMA8452Q
 Sensor de Temperatura Infravermelho - MLX90614

 Exemplo de aplicação:

 Pisca LED

Neste exemplo a placa Master estará conectada ao botão e, ao pressionar este


botão, o estado do LED conectado à placa Slave será alterado. A placa Master
trabalhará como o emissor e a placa Slave como o receptor.

Foto 11: Exemplo de comunicação I2C entre Arduinos.

Fonte: Robo Core (Sem data).

 Componentes utilizados:

 BlackBoard V1.0
 LED
 Resistor
 PushButton
 Jumpers M/M
 Protoboard

 Outros tipos de aplicações:

 Potenciômetro Digital: Controla um Potenciômetro Digital AD5171 Analog


Devices.
 Master Reader / Slave Writer: Programa duas placas Arduino para se
comunicarem entre si.
 Gravador Mestre / Receptor Escravo: Programa duas placas Arduino para se
comunicarem entre si.
 SFR Ranger Reader: Lê um localizador de faixa ultrassônico através do I2C.
 Adicionar SerCom: Adicionando interfaces de série aos microcontroladores
SAMD.

2.5 Comunicação Usando OneWire

A comunicação OneWire (1-Wire), utiliza um protocolo criado pela


Dallas Semicondutores (agora Maxim), que permite que um dispositivo mestre (na
maioria dos casos um microcontrolador), se comunique com um dispositivo escravo
utilizando apenas um pino de dados.
No entanto, ele usa um fio para dados, mas usa também o aterramento ou
GND, ou seja, dois fios. Em algumas implementações o dispositivo pode usar um
terceiro fio para a alimentação, geralmente de 5v, apesar de ser possível utilizar com
apenas dois no modo "vampiro". Nesse modo o dispositivo usa a energia que vem
na linha de dados e faz uso de um capacitor para continuar alimentado nos períodos
em que o sinal de dados fica baixo.
O protocolo prevê a existência de um dispositivo Mestre na rede e os outros
dispositivos funcionam no modo Escravo. Uma rede com a configuração
mestre/escravo utilizando protocolo Onewire é chamada de MicroLAN. O dispositivo
Mestre envia um comando para que os escravos se identifiquem e inicia a
comunicação com cada um deles.
Cada elemento inserido no barramento irá possuir um determinado endereço,
de modo que, o próprio barramento, através de um algoritmo de busca pode
determinar quais são os endereços que estão sendo utilizados pelos dispositivos
para que seja possível fazer com que o mestre, possa interagir com os mesmos de
maneira rápida e fácil. Os endereços dos dispositivos são fixos e, dessa forma, não
podem ser alterados.

Foto 12: Barramento OneWire.

Fonte: Madeira (2018).

 Vantagem: utiliza apenas 1 pino para a comunicação, cada dispositivo tem um


endereço único.

 Funcionamento: este protocolo funciona em 3 fases. A primeira fase é


responsável por habilitar a comunicação e identificar os escravos ligados, a
segunda fase seleciona qual escravo receberá os comandos e, por fim, na
terceira fase ocorre a leitura ou escrita de dados.

 Ligação: pode ser feita de duas formas, parasita ou com alimentação externa.

 Ligação Parasita: com esta ligação a alimentação de um dispositivo 1-wire é


realizado com o próprio pino de comunicação.

Foto 13: Ligação Parasita.


Fonte: Robo Core (Sem data).

 Ligação Alimentação Externa: é mais indicado porque garante uma comunicação


mais confiável, principalmente quando os dispositivos então afastados a mais de
6m de distância do mestre.

Foto 14: Ligação Alimentação Externa.

Fonte: Robo Core (Sem data).

 O que usa este protocolo?

 Sensor de Temperatura Digital DS18B20

 Exemplo de aplicação:

 Leitura de sensor de temperatura


Este é de longe um dos sensores digitais mais simples de conexão. Além da
energia e do aterramento, ele possui um único pino de sinal digital que é conectando
ao pino digital 2 no arduino. Também requer um resistor de pull-up de 4,7k entre o
sinal e o pino de alimentação, e jumpers para fazer a ligação no arduino, conforme
mostrado na ilustração.

 Componentes utilizados:

 Arduino Uno R3
 Sensor de Temperatura Digital DS18B20
 Resistor
 Jumpers

Foto 15: Exemplo de aplicação OneWire com Arduino.

Fonte: bildr.blog (2011)

Este sensor também pode ser utilizado como alarme programável, ou seja, é
possível programar um alarme de temperatura alta e baixa.  para que quando a
temperatura estiver fora desses valores o sensor sinalize. Essa configuração é
gravada em uma memória não volátil EEPROM.
3 REFERÊNCIAS BIBLIOGRÁFICAS

Arduino. Interfacing with Hardware. Disponível em:<


https://playground.arduino.cc/Main/InterfacingWithHardware#onewire>. Acesso em:
17 de nov. 2018.

Bildr.blog. One Wire Digital Temperature. DS18B20 + Arduino. Disponível em:<


http://bildr.org/2011/07/ds18b20-arduino/>. Acesso em: 16 de nov. 2018.

BUILDBOT. Interfaces de comunicação OneWire, SPI e I2C. Disponível em:<


http://buildbot.com.br/blog/interfaces-de-comunicacao-onewire-spi-i2c/ >. Acesso em:
15 de nov. de 2018.

Córtex Binário. Protocolos de Comunicação Serial dos Microcontroladores -


SPI, I2C, 1Wire e RS-232. Disponível em:<
http://cortexbinario.blogspot.com/2017/06/protocolos-de-comunicacao-serial-
dos.html>. Acesso em: 16 de nov. 2018.

Electronics Hub. Arduino Serial Communication. Disponível em:<


https://www.electronicshub.org/arduino-serial-communication/>. Acesso em: 16 de
nov. 2018.

MADEIRA, Daniel. DS18B20 – Sensor de temperatura inteligente. Disponível


em:< https://portal.vidadesilicio.com.br/sensor-de-temperatura-ds18b20/>. Acesso
em: 17 de nov. 2018.

THOMSEN, Adilson. Comparação Entre Protocolos de Comunicação Serial.


Disponível em:< https://www.robocore.net/tutoriais/comparacao-entre-protocolos-de-
comunicacao-serial.html >. Acesso em: 15 de nov. de 2018.

Tutorials point. Arduino - Communication. Disponível em:<


https://www.tutorialspoint.com/arduino/arduino_communication.htm>. Acesso em: 16
de nov. 2018.

Você também pode gostar