Avaliação dos interfaces de comunicação disponiveis para uma arquitectura distribuida

A arquitectura distribuida consiste no uso de vários microcontroladores coordenados, neste caso Arduinos, cada um deles especializados numa tarefa, ou grupos de tarefas.

Qualquer arquitetura distribuida  tem de  ter uma ou mais interfaces de comunicação entre os microcontroladores e entre estes e os dispositivos slave que lhes compete controlar.

Portanto um dos requisitos para implementar uma arquitetura distribuida é avaliar as interfaces disponiveis, quais usar e em que circunstâncias.

Interfaces de comunicação para microcontroladores

Existem vários tipos de interfaces de comunicação bem estabelecidas que podem ser usadas nos microcontroladores em geral e no Arduino em particular. Todas elas têm as suas particularidades, virtudes e defeitos.

  • I2C
  • SPI
  • SERIAL
  • CAN

Interface I2C

O interface I2C é um protocolo de comunicação série que funciona no paradigma master/slave cujas principais vantagens são:

  • Ser teoricamente possivel a existência de mais de um master no bus;
  • Exigir apenas duas linhas (fios): o SDA (dados) e o SCL (relógio:

As principais desvantagem são:

  • Lenta na transmissão de grandes volumes de dados
  • Dificuldade em implementar ambientes de exploração estaveis com multiplos masters;

Em microcontroladores Arduino quantidade teórica de dispositivos, ou nodes, possiveis no bus i2c é de 127 nodes (endereçamento de 7 bits). Mas como todos os Arduinos tem resistências pull up, nas linhas de sinal I2C, então, pela soma dessas resistências o número de Arduinos possiveis de ligar tem um limite inferior ao maximo teórico.

Os dispositvos no bus I2C, também chamados de nodes são identificados pelo seu endereço no bus e podem ser de um de dois tipos.

  • Master (estando previstos multiplos masters no protocolo)
  • Slave (naturalmente com multiplos slaves)

Cada um dos dispositivos, podem ter ser de um dos dois tipos.

A principal diferença funcional entre os masters I2C e os slaves I2C, é que apenas os masters podem iniciar comunicações.

Neste protocolo existem pelo menos os seguintes tipos de ambientes possiveis (em todos eles podem existir um ou mais nodes slave):

  • Apenas um node master (estável na maior parte das situações)
  • Multiplos nodes masters (não funciona em todas as situações)

A principal diferença entre estes tipos de ambiente é que com mais que um master existe o potencial de existência de colisões, que provocam  instabilidade e erros na transmissão dos dados, e a interrupção do funcionamento normal do microcontrolador.

 

Interface SPI

O interface SPI é um protocolo de comunicação série full duplex de alta velocidade desenvolvido pela Motorola que funciona no paradigma master/slave.

O protocolo do bus SPI define a existencia de pelo menos as seguintes quatro linhas: SCLK, MOSI, MISO, CSx; e a existência de um único master.

A pior caracteristica do interface de comunicação SPI é o número de pinos que requer. Para ligar um único dispositivo master a um único dispositivo slave é necessário pelo menos quatro linhas (fios). Cada slave adicional necessita de mais uma linha (fio).

Além do número de fios necessarios, o interface SPI também está limitado à existência de um único master no seu bus,

A melhor caracteristica é a velocidade. A funcionar com um relógio que podem ir até aos 10MHz e 10 milhões de bits por segundo, o interface SPI é bom para comunicações de alta velocidade.

 

Interface SERIAL

A interface serial, além da terra, necessita de duas linhas de sinal dedicadas por cada dispositivo.

A única interface serial que existe no Arduino Uno e Nano está afecta á USB serial, pelo que é necessário usar o biblioteca SoftwareSerial.

Baixa velocidade; max 115200 bps;

TODO

 

Interface CAN

Funciona com um modulo adicional e com 4 linhas e é baseado no SPI.

TODO