Protocol de comunicació Arduino

Protocol De Comunicacio Arduino



Els protocols de comunicació són el conjunt de regles que permeten als dispositius comunicar-se i intercanviar dades. Aquests protocols són molt importants en la comunicació d'Arduino, ja que Arduino envia i rep dades constantment. L'ús d'aquests protocols ajuda a Arduino a cobrir la detecció d'errors i els possibles mètodes de recuperació d'errors. Aquests protocols uneixen dispositius analògics i digitals i permeten dissenyar múltiples projectes.

Protocols de comunicació Arduino

Mitjançant l'ús de protocols de comunicació, podem enviar i rebre dades de qualsevol sensor a Arduino.

Alguns sensors senzills com els infrarojos (IR) es poden comunicar directament amb Arduino, però alguns dels sensors complexos com el mòdul Wi-Fi, el mòdul de la targeta SD i el giroscopi no es poden comunicar directament amb Arduino sense cap protocol de comunicació. Per tant, per això aquests protocols són una part integral de la comunicació Arduino.







Arduino té diversos perifèrics connectats; entre ells hi ha tres perifèrics de comunicació utilitzats a les plaques Arduino.



Protocols de comunicació Arduino

La comunicació entre diferents dispositius electrònics com Arduino està estandarditzada entre aquests tres protocols; permet als dissenyadors comunicar-se fàcilment entre diferents dispositius sense cap problema de compatibilitat. El funcionament d'aquests tres protocols és el mateix, ja que tenen el mateix propòsit de comunicació, però es diferencien en la implementació dins d'un circuit. A continuació s'explica una descripció més detallada d'aquests protocols.







UART

UART es coneix com a Transmissor receptor asíncron universal. UART és un protocol de comunicació sèrie que significa que els bits de dades es transfereixen de forma seqüencial un darrere l'altre. Per configurar la comunicació UART necessitem dues línies. Un és el pin Tx (D1) de la placa Arduino i el segon és el pin Rx (D0) de la placa Arduino. El pin Tx serveix per transmetre dades als dispositius i el pin Rx s'utilitza per rebre dades. Les diferents plaques Arduino tenen diversos pins UART.

Pin digital Arduino Pin UART
D1 Tx
D0 Rx

Per establir una comunicació sèrie mitjançant el port UART, hem de connectar dos dispositius a la configuració que es mostra a continuació:



A Arduino Uno, un port sèrie està dedicat per a la comunicació, que s'anomena habitualment port USB. Com el seu nom indica Universal Serial Bus, per tant és un port sèrie. Amb el port USB Arduino pot establir comunicació amb ordinadors. El port USB està connectat als pins integrats Tx i Rx d'Arduino. Amb aquests pins, podem connectar qualsevol maquinari extern que no sigui l'ordinador mitjançant USB. Arduino IDE proporciona una biblioteca SoftwareSerial (SoftwareSerial.h) que permet als usuaris utilitzar pins GPIO com a pins Serial Tx i Rx.

  • UART és senzill d'operar amb Arduino
  • UART no necessita cap senyal de rellotge
  • La velocitat de transmissió s'ha d'establir dins del límit del 10% dels dispositius que es comuniquen per evitar la pèrdua de dades
  • No són possibles diversos dispositius amb Arduino en configuració Master Slave amb UART
  • UART és semidúplex, el que significa que els dispositius no poden transmetre i rebre dades al mateix temps
  • Només dos dispositius alhora es poden comunicar amb el protocol UART

Interfície perifèrica sèrie (SPI)

SPI és un acrònim d'interfície perifèrica sèrie que està especialment dissenyat perquè els microcontroladors es comuniquin amb ells. SPI funciona en mode dúplex complet, el que significa que SPI pot enviar i rebre dades simultàniament. En comparació amb UART i I2C, és el perifèric de comunicació més ràpid de les plaques Arduino. S'utilitza habitualment quan es requereix una alta velocitat de dades, com en les aplicacions de pantalla LCD i targetes Micro SD.

Els pins digitals SPI a Arduino estan predefinits. Per a Arduino Uno, la configuració del pin SPI és la següent:

Línia SPI GPIO Pin de capçalera ICSP
SCK 13 3
MISO 12 1
FUM 11 4
SS 10
  • MOSI significa Master Out Slave In , MOSI és una línia de transmissió de dades de mestre a esclau.
  • SCK és un Línia del rellotge que defineix la velocitat de transmissió i les característiques d'inici final.
  • SS significa Selecció d'esclaus ; La línia SS permet al Mestre seleccionar un dispositiu esclau en particular quan funciona en una configuració d'esclau múltiple.
  • MISO significa Mestre en Slave Out ; MISO és una línia de transmissió esclau a mestre per a dades.

Un dels aspectes més destacats del protocol SPI és la configuració mestre-esclau. L'ús de SPI es pot definir un dispositiu com a mestre per controlar diversos dispositius esclaus. El mestre té el control total dels dispositius esclaus mitjançant el protocol SPI.

SPI és un protocol síncron, el que significa que la comunicació està enllaçada amb un senyal de rellotge comú entre mestre i esclau. SPI pot controlar diversos dispositius com a esclau a través d'una única línia de transmissió i recepció. Tots els esclaus estan connectats al mestre mitjançant comú MISO rebre la línia juntament amb FUM una línia de transmissió comuna. SCK també és la línia de rellotge comuna entre els dispositius mestre i esclau. L'única diferència entre els dispositius esclaus és que cada dispositiu esclau es controla per separat SS seleccionar la línia. Això vol dir que cada esclau necessita un pin GPIO addicional de la placa Arduino que actuarà com a línia de selecció per a aquest dispositiu esclau en particular.

A continuació s'enumeren alguns dels aspectes més destacats del protocol SPI:

  • SPI és el protocol més ràpid que I2C i UART
  • No es requereixen bits d'inici i de parada com a UART, la qual cosa significa que és possible la transmissió de dades contínua
  • L'esclau es pot adreçar fàcilment a causa de la senzilla configuració d'esclau mestre
  • Per a cada esclau s'ocupa un pin addicional a la placa Arduino. Pràcticament 1 mestre pot controlar 4 dispositius esclaus
  • Falta el reconeixement de dades com s'utilitza a UART
  • No és possible la configuració de múltiples mestres

Protocol de comunicació I2C

Inter Integrated Circuit (I2C) és un altre protocol de comunicació utilitzat per les plaques Arduino. I2C és el protocol més difícil i complicat d'implementar amb Arduino i altres dispositius. Malgrat la seva complicació, ofereix múltiples funcions que falten en altres protocols, com ara múltiples configuracions mestres i múltiples esclaus. I2C permet connectar fins a 128 dispositius a la placa principal Arduino. Això només és possible perquè I2C comparteix un únic cable entre tots els dispositius esclaus. I2C a Arduino utilitza un sistema d'adreces, és a dir, abans d'enviar dades al dispositiu esclau, Arduino primer ha de seleccionar el dispositiu esclau enviant una adreça única. I2C utilitza només dos cables que redueixen el recompte general de pins Arduino, però el costat dolent és que I2C és més lent que el protocol SPI.

Pin analògic Arduino Pin I2C
A4 SDA
A5 SCL

A nivell de maquinari, I2C es limita a només dos cables, un per a una línia de dades coneguda com SDA (dades en sèrie) i el segon per a la línia del rellotge SCL (Rellotge de sèrie). En l'estat d'inactivitat, tant SDA com SCL es fan alt. Quan les dades s'han de transmetre, aquestes línies s'abaixen mitjançant circuits MOSFET. Utilitzant I2C en projectes, és obligatori utilitzar resistències pull up normalment un valor de 4,7 Kohm. Aquestes resistències d'extracció asseguren que les línies SDA i SCL es mantinguin altes en el seu inici inactiu.

Alguns dels aspectes més destacats dels protocols I2C són:

  • El nombre de pins necessaris és molt baix
  • Es poden connectar diversos dispositius esclaus mestres
  • Només utilitza 2 cables
  • La velocitat és més lenta en comparació amb SPI a causa de les resistències d'aixecament
  • Les resistències necessiten més espai al circuit
  • La complexitat del projecte augmenta amb l'augment del nombre de dispositius

Comparació entre UART i I2C i SPI

Protocol UART SPI 2C
Velocitat El més lent El més ràpid Més ràpid que UART
Nombre de dispositius Fins a 2 4 dispositius Fins a 128 dispositius
Es requereixen cables 2(Tx,Rx) 4(SCK,FUM,ULLS,SS) 2(SDA,SCL)
Mode dúplex Mode dúplex complet Mode dúplex complet Semi Dúplex
Nombre de mestres-esclaus possibles Mestre únic-Esclau únic Mestre únic-Múltiples esclaus Múltiples mestres-Múltiples esclaus
Complexitat Simple Pot controlar fàcilment diversos dispositius Complex amb augment de dispositius
Bit de reconeixement No No

Conclusió

En aquest article, hem cobert una comparació completa dels tres protocols UART, SPI i I2C utilitzats a Arduino. Conèixer tots els protocols és important, ja que ofereix infinites oportunitats per integrar diversos dispositius. Entendre tots els perifèrics de comunicació estalviarà temps i ajudarà a optimitzar els projectes segons el protocol correcte.