Arduino kommunikationsprotokol

Arduino Kommunikationsprotokol



Kommunikationsprotokoller er det sæt af regler, der tillader enheder at kommunikere og udveksle data. Disse protokoller er meget vigtige i Arduino-kommunikation, da Arduino konstant sender og modtager data. Brug af disse protokoller hjælper Arduino med at dække fejlfinding og mulige fejlgendannelsesmetoder. Disse protokoller bringer analoge og digitale enheder sammen og gør det muligt at designe flere projekter.

Arduino kommunikationsprotokoller

Ved at bruge kommunikationsprotokoller kan vi sende og modtage enhver sensors data i Arduino.

Nogle simple sensorer som infrarød (IR) kan kommunikere direkte med Arduino, men nogle af de komplekse sensorer som Wi-Fi-modul, SD-kortmodul og Gyroskop kan ikke kommunikere direkte med Arduino uden nogen kommunikationsprotokoller. Så det er derfor, disse protokoller er en integreret del af Arduino-kommunikation.







Arduino har flere perifere enheder knyttet til det; blandt dem er der tre kommunikationsudstyr, der bruges i Arduino-kort.



Arduino kommunikationsprotokoller

Kommunikation mellem forskellige elektroniske enheder som Arduino er standardiseret blandt disse tre protokoller; det giver designere mulighed for nemt at kommunikere mellem forskellige enheder uden kompatibilitetsproblemer. Arbejdet med disse tre protokoller er det samme, da de tjener det samme formål med kommunikation, men de adskiller sig i implementeringen inde i et kredsløb. Yderligere beskrivelse af disse protokoller er diskuteret nedenfor.







UART

UART er kendt som Universal asynkron modtagersender. UART er en seriel kommunikationsprotokol, hvilket betyder, at databits overføres i sekventiel form efter hinanden. Til opsætning af UART-kommunikation har vi brug for to linjer. Den ene er Tx (D1) stiften på Arduino kortet, og den anden er Rx(D0) stiften på Arduino kortet. Tx pin bruges til at overføre data til enheder, og Rx pin bruges til at modtage data. Forskellige Arduino boards har flere UART-stifter.

Arduino digital pin UART Pin
D1 Tx
D0 Rx

For at etablere seriel kommunikation ved hjælp af UART-port skal vi forbinde to enheder i nedenstående viste konfiguration:



På Arduino Uno er en seriel port dedikeret til kommunikation, som almindeligvis omtales som USB-port. Som navnet antyder Universal Serial Bus, så er det en seriel port. Ved at bruge USB-porten kan Arduino etablere kommunikation med computere. USB-porten er forbundet til de indbyggede ben Tx og Rx på Arduino. Ved at bruge disse stifter kan vi tilslutte enhver ekstern hardware bortset fra computer via USB. Arduino IDE leverer SoftwareSerial-bibliotek (SoftwareSerial.h) som giver brugerne mulighed for at bruge GPIO-stifter som Serial Tx- og Rx-stifter.

  • UART er enkel at betjene med Arduino
  • UART har ikke brug for noget ursignal
  • Baudhastigheden skal indstilles inden for en grænse på 10 % af kommunikerende enheder for at forhindre tab af data
  • Flere enheder med Arduino i Master Slave-konfiguration er ikke mulige med UART
  • UART er halv duplex, hvilket betyder, at enheder ikke kan sende og modtage data på samme tid
  • Kun to enheder ad gangen kan kommunikere med UART-protokollen

Serial Peripheral Interface (SPI)

SPI er et akronym af serielt perifert interface, der er specielt designet til mikrocontrollere til at kommunikere med dem. SPI fungerer på fuld duplex-tilstand, hvilket betyder, at SPI kan sende og modtage data samtidigt. Sammenlignet med UART og I2C er det den hurtigste kommunikationsudstyr i Arduino-kort. Det er almindeligt anvendt, hvor høj datahastighed er påkrævet som i LCD-skærm og Micro SD-kortapplikationer.

SPI digitale stifter på Arduino er foruddefinerede. For Arduino Uno SPI pin-konfiguration er som følger:

SPI linje GPIO ICSP Header Pin
SCK 13 3
MISO 12 1
RØG elleve 4
SS 10
  • MOSI står for Master Out Slave In , MOSI er Datatransmissionslinje for Master til Slave.
  • SCK er en Ur linje som definerer transmissionshastighed og startende-karakteristika.
  • SS står for Slavevalg ; SS-linje giver Master mulighed for at vælge en bestemt slaveenhed, når den opererer i multiple slave-konfigurationer.
  • MISO står for Mester i Slave Out ; MISO er slave til master transmissionslinje for data.

Et af de vigtigste højdepunkter i SPI-protokollen er Master-Slave-konfiguration. Ved at bruge SPI kan én enhed defineres som Master til at styre flere slaveenheder. Master har fuld kontrol over slave-enheder gennem SPI-protokol.

SPI er synkron protokol, hvilket betyder, at kommunikation er forbundet med fælles clock-signal mellem Master og Slave. SPI kan styre flere enheder som slave over en enkelt sende- og modtagelinje. Alle slaverne er forbundet til Master ved hjælp af common MISO modtage linje sammen med RØG én fælles sendelinje. SCK er også den almindelige urlinje blandt Master- og Slave-enheder. Den eneste forskel i slave-enheder er, at hver slave-enhed styres gennem separate SS vælg linje. Dette betyder, at hver Slave har brug for en ekstra GPIO-pin fra Arduino-kortet, som vil fungere som valglinje for den pågældende Slave-enhed.

Nogle af de vigtigste højdepunkter i SPI-protokollen er angivet nedenfor:

  • SPI er den hurtigste protokol end I2C og UART
  • Der kræves ingen start- og stopbits som i UART, hvilket betyder, at kontinuerlig datatransmission er mulig
  • Slave kan nemt adresseres på grund af simpel Master Slave-konfiguration
  • For hver slave er en ekstra pin optaget på Arduino-brættet. Praktisk talt 1 Master kan styre 4 Slave-enheder
  • Databekræftelse mangler som brugt i UART
  • Multiple Master-konfiguration er ikke mulig

I2C kommunikationsprotokol

Inter Integrated Circuit (I2C) er en anden kommunikationsprotokol, der bruges af Arduino-kort. I2C er den sværeste og mest komplicerede protokol at implementere med Arduino og andre enheder. På trods af dets komplikation tilbyder det flere funktioner, der mangler i andre protokoller, såsom flere Master- og multiple Slaves-konfigurationer. I2C tillader tilslutning af op til 128 enheder til Arduino-hovedkortet. Dette er kun muligt, fordi I2C deler en enkelt ledning blandt alle slave-enhederne. I2C i Arduino bruger et adressesystem, hvilket betyder, at før du sender data til Slave-enhed, skal Arduino først vælge Slave-enhed ved at sende en unik adresse. I2C bruger kun to ledninger, hvilket reducerer det samlede antal Arduino-ben, men den dårlige side ved det er, at I2C er langsommere end SPI-protokollen.

Arduino analog pin I2C Pin
A4 SDA
A5 SCL

På hardwareniveau er I2C begrænset til kun to ledninger, en til en datalinje kendt som SDA (serielle data) og den anden til Clock line SCL (Serielt ur). Ved inaktiv tilstand trækkes både SDA og SCL højt. Når data skal transmitteres, trækkes disse linjer lavt ved hjælp af MOSFET-kredsløb. Ved at bruge I2C i projekter er det obligatorisk at bruge pull up-modstande, normalt en værdi på 4,7 Kohm. Disse pull up-modstande sikrer, at både SDA- og SCL-linjerne forbliver høje i deres tomgangsstart.

Nogle af de vigtigste højdepunkter ved I2C-protokoller er:

  • Antallet af krævede stifter er meget lavt
  • Flere Master Slaves-enheder kan tilsluttes
  • Bruger kun 2 ledninger
  • Hastigheden er langsommere sammenlignet med SPI på grund af pull-up modstande
  • Modstande har brug for mere plads i kredsløbet
  • Projektets kompleksitet stiger med stigning i antallet af enheder

Sammenligning mellem UART vs I2C vs SPI

Protokol UART SPI 2C
Hastighed Langsomst Hurtigste Hurtigere end UART
Antal enheder Op til 2 4 enheder Op til 128 enheder
Ledninger påkrævet 2(Tx,Rx) 4(SCK,RYG,ØJNE,SS) 2(SDA,SCL)
Duplekstilstand Fuld duplex-tilstand Fuld duplex-tilstand Halv duplex
Antal Master-Slaves muligt Enkelt Master-Enkelt Slave Enkelt Master-Flere Slaver Flere Masters-Flere slaver
Kompleksitet Enkel Kan nemt styre flere enheder Kompleks med stigning i enheder
Anerkendelse bit Nix Nix Ja

Konklusion

I denne artikel har vi dækket en omfattende sammenligning af alle de tre protokoller UART, SPI og I2C, der bruges i Arduino. At kende alle protokollerne er vigtigt, da det giver uendelige muligheder for at integrere flere enheder. Forståelse af alle kommunikationsudstyr vil spare tid og hjælpe med at optimere projekter i henhold til den korrekte protokol.