Protocolo de comunicação Arduino

Protocolo De Comunicacao Arduino



Protocolos de comunicação é o conjunto de regras que permite que os dispositivos se comuniquem e troquem dados. Esses protocolos são muito significativos na comunicação do Arduino, pois o Arduino envia e recebe dados constantemente. O uso desses protocolos ajuda o Arduino a cobrir a detecção de erros e possíveis métodos de recuperação de erros. Esses protocolos unem dispositivos analógicos e digitais e possibilitam a criação de vários projetos.

Protocolos de comunicação do Arduino

Usando protocolos de comunicação, podemos enviar e receber dados de qualquer sensor no Arduino.

Alguns sensores simples como o infravermelho (IR) podem se comunicar diretamente com o Arduino, mas alguns dos sensores complexos, como o módulo Wi-Fi, o módulo de cartão SD e o giroscópio, não podem se comunicar diretamente com o Arduino sem nenhum protocolo de comunicação. Então, é por isso que esses protocolos são parte integrante da comunicação do Arduino.







O Arduino tem vários periféricos conectados a ele; entre eles estão três periféricos de comunicação usados ​​em placas Arduino.



Protocolos de comunicação do Arduino

A comunicação entre diferentes dispositivos eletrônicos como o Arduino é padronizada entre esses três protocolos; ele permite que os designers se comuniquem facilmente entre diferentes dispositivos sem problemas de compatibilidade. O funcionamento desses três protocolos é o mesmo, pois servem ao mesmo propósito de comunicação, mas diferem na implementação dentro de um circuito. Uma descrição mais detalhada desses protocolos é discutida abaixo.







UART

A UART é conhecida como Transmissor Receptor Assíncrono Universal. UART é um protocolo de comunicação serial que significa que os bits de dados são transferidos em forma sequencial um após o outro. Para configurar a comunicação UART, precisamos de duas linhas. Um é o pino Tx (D1) da placa Arduino e o segundo é o pino Rx(D0) da placa Arduino. O pino Tx é para transmitir dados para dispositivos e o pino Rx é usado para receber dados. Diferentes placas Arduino possuem vários pinos UART.

Pino Digital Arduino Pino UART
D1 Tx
D0 Rx

Para estabelecer a comunicação serial usando a porta UART, precisamos conectar dois dispositivos na configuração mostrada abaixo:



No Arduino Uno, uma porta serial é dedicada à comunicação, comumente chamada de porta USB. Como o nome sugere Universal Serial Bus, então é uma porta serial. Usando a porta USB Arduino pode estabelecer comunicação com computadores. A porta USB está conectada aos pinos integrados Tx e Rx do Arduino. Usando esses pinos, podemos conectar qualquer hardware externo que não seja o computador através de USB. Arduino IDE fornece biblioteca SoftwareSerial (SoftwareSerial.h) que permite aos usuários usar pinos GPIO como pinos Serial Tx e Rx.

  • UART é simples de operar com Arduino
  • UART não precisa de nenhum sinal de relógio
  • A taxa de transmissão deve ser definida dentro do limite de 10% dos dispositivos de comunicação para evitar a perda de dados
  • Vários dispositivos com Arduino na configuração Master Slave não são possíveis com UART
  • UART é half duplex, o que significa que os dispositivos não podem transmitir e receber dados ao mesmo tempo
  • Apenas dois dispositivos por vez podem se comunicar com o protocolo UART

Interface Periférica Serial (SPI)

SPI é um acrônimo de interface serial periférica que é especialmente projetada para microcontroladores se comunicarem com eles. O SPI opera no modo full-duplex, o que significa que o SPI pode enviar e receber dados simultaneamente. Quando comparado com UART e I2C é o periférico de comunicação mais rápido em placas Arduino. É comumente usado onde uma alta taxa de dados é necessária, como em aplicativos de display LCD e cartão Micro SD.

Os pinos digitais SPI no Arduino são predefinidos. Para Arduino Uno a configuração do pino SPI é a seguinte:

Linha SPI GPIO Pin do cabeçalho ICSP
SCK 13 3
MISSÔ 12 1
FUMAÇA onze 4
SS 10
  • MOSI significa Master Out Slave In , MOSI é a linha de transmissão de dados do Mestre para o Escravo.
  • SCK é um Linha do relógio que define a velocidade de transmissão e as características de início e fim.
  • SS significa Seleção Escrava ; A linha SS permite que o Mestre selecione um determinado dispositivo Escravo ao operar em várias configurações de Escravos.
  • MIS significa Master in Slave Out ; MISO é a linha de transmissão Slave to Master para dados.

Um dos principais destaques do protocolo SPI é a configuração Master-Slave. Usando SPI um dispositivo pode ser definido como Mestre para controlar vários dispositivos Escravos. O Master está no controle total dos dispositivos Slave através do protocolo SPI.

O SPI é um protocolo síncrono, o que significa que a comunicação está vinculada a um sinal de clock comum entre o Mestre e o Escravo. O SPI pode controlar vários dispositivos como Slave em uma única linha de transmissão e recepção. Todos os Slaves são conectados ao Master usando MISSÔ receber linha junto com FUMAÇA uma linha de transmissão comum. SCK é também a linha de clock comum entre os dispositivos Master e Slave. A única diferença nos dispositivos escravos é que cada dispositivo escravo é controlado por SS selecione a linha. Isso significa que cada escravo precisa de um pino GPIO extra da placa Arduino que atuará como linha de seleção para esse dispositivo escravo específico.

Alguns dos principais destaques do protocolo SPI estão listados abaixo:

  • SPI é o protocolo mais rápido que I2C e UART
  • Não são necessários bits de início e parada, como no UART, o que significa que a transmissão contínua de dados é possível
  • Slave pode ser facilmente endereçado devido à configuração simples do Master Slave
  • Para cada Slave um pino extra é ocupado na placa Arduino. Praticamente 1 Master pode controlar 4 dispositivos Slave
  • O reconhecimento de dados está ausente como usado no UART
  • A configuração de vários mestres não é possível

Protocolo de Comunicação I2C

O Inter Integrated Circuit (I2C) é outro protocolo de comunicação usado pelas placas Arduino. I2C é o protocolo mais difícil e complicado de implementar com Arduino e outros dispositivos. Apesar de sua complicação, oferece vários recursos que faltam em outros protocolos, como várias configurações de Master e vários Slaves. I2C permite conectar até 128 dispositivos à placa Arduino principal. Isso só é possível porque o I2C compartilha um único fio entre todos os dispositivos Slave. O I2C no Arduino usa um sistema de endereços, ou seja, antes de enviar dados para o dispositivo Slave, o Arduino deve primeiro selecionar o dispositivo Slave enviando um endereço exclusivo. O I2C usa apenas dois fios, reduzindo a contagem geral de pinos do Arduino, mas o lado ruim é que o I2C é mais lento que o protocolo SPI.

Pino analógico do Arduino Pino I2C
A4 SDA
A5 SCL

No nível de hardware, o I2C é limitado a apenas dois fios, um para uma linha de dados conhecida como SDA (Dados de Série) e o segundo para a linha Clock SCL (Relógio Serial). No estado inativo, tanto o SDA quanto o SCL são elevados. Quando os dados precisam ser transmitidos, essas linhas são reduzidas usando circuitos MOSFET. Usando I2C em projetos é obrigatório o uso de resistores pull up normalmente no valor de 4,7Kohm. Esses resistores de pull up garantem que as linhas SDA e SCL permaneçam altas em sua partida ociosa.

Alguns dos principais destaques dos protocolos I2C são:

  • O número de pinos necessários é muito baixo
  • Vários dispositivos Master Slaves podem ser conectados
  • Só usa 2 fios
  • A velocidade é mais lenta em comparação com o SPI devido aos resistores pull-up
  • Resistores precisam de mais espaço no circuito
  • A complexidade do projeto aumenta com o aumento do número de dispositivos

Comparação entre UART vs I2C vs SPI

Protocolo UART SPI 2C
Velocidade Mais lento O mais rápido Mais rápido que o UART
Número de dispositivos Até 2 4 dispositivos Até 128 dispositivos
Fios necessários 2(Tx,Rx) 4 (SCK, FUMAÇA, OLHOS, SS) 2 (SDA, SCL)
Modo Duplex Modo Full Duplex Modo Full Duplex Meio duplex
Número de Master-Slaves possíveis Único Master-Single Slave Mestre único-vários escravos Múltiplos Mestres-Vários Escravos
Complexidade Simples Pode controlar facilmente vários dispositivos Complexo com aumento de dispositivos
Bit de confirmação Não Não Sim

Conclusão

Neste artigo, cobrimos uma comparação abrangente de todos os três protocolos UART, SPI e I2C usados ​​no Arduino. Conhecer todos os protocolos é importante, pois oferece infinitas oportunidades para integrar vários dispositivos. Compreender todos os periféricos de comunicação economizará tempo e ajudará a otimizar os projetos de acordo com o protocolo correto.