Arduino kommunikasjonsprotokoll

Arduino Kommunikasjonsprotokoll



Kommunikasjonsprotokoller er settet med regler som lar enheter kommunisere og utveksle data. Disse protokollene er svært viktige i Arduino-kommunikasjon ettersom Arduino hele tiden sender og mottar data. Ved å bruke disse protokollene hjelper Arduino å dekke feildeteksjon og mulige feilgjenopprettingsmetoder. Disse protokollene bringer analoge og digitale enheter sammen og gjør det mulig å designe flere prosjekter.

Arduino kommunikasjonsprotokoller

Ved å bruke kommunikasjonsprotokoller kan vi sende og motta alle sensordata i Arduino.

Noen enkle sensorer som infrarød (IR) kan kommunisere direkte med Arduino, men noen av de komplekse sensorene som Wi-Fi-modul, SD-kortmodul og Gyroskop kan ikke kommunisere direkte med Arduino uten noen kommunikasjonsprotokoller. Så det er derfor disse protokollene er en integrert del av Arduino-kommunikasjonen.







Arduino har flere eksterne enheter knyttet til seg; blant dem er det tre kommunikasjonsutstyr som brukes i Arduino-kort.



Arduino kommunikasjonsprotokoller

Kommunikasjon mellom ulike elektroniske enheter som Arduino er standardisert blant disse tre protokollene; det gjør det mulig for designere å kommunisere mellom forskjellige enheter enkelt uten kompatibilitetsproblemer. Arbeidet med disse tre protokollene er det samme siden de tjener samme formål med kommunikasjon, men de er forskjellige i implementering i en krets. Ytterligere beskrivelse av disse protokollene er diskutert nedenfor.







UART

UART er kjent som Universal asynkron mottaker sender. UART er en seriell kommunikasjonsprotokoll som betyr at databiter overføres i sekvensiell form etter hverandre. For å sette opp UART-kommunikasjon trenger vi to linjer. Den ene er Tx (D1)-pinnen til Arduino-kortet og den andre er Rx(D0)-pinnen til Arduino-kortet. Tx pin brukes for å overføre data til enheter og Rx pin brukes for å motta data. Ulike Arduino-brett har flere UART-pinner.

Arduino digital pin UART Pin
D1 Tx
D0 Rx

For å etablere seriell kommunikasjon med UART-port må vi koble til to enheter i konfigurasjonen nedenfor:



På Arduino Uno er en seriell port dedikert for kommunikasjon, som ofte refereres til som USB-port. Som navnet antyder Universal Serial Bus, så er det en seriell port. Ved å bruke USB-porten Arduino kan opprette kommunikasjon med datamaskiner. USB-porten er koblet til pinnene Tx og Rx på Arduino ombord. Ved å bruke disse pinnene kan vi koble til annen ekstern maskinvare enn datamaskin via USB. Arduino IDE tilbyr SoftwareSerial-bibliotek (SoftwareSerial.h) som lar brukere bruke GPIO-pinner som Serial Tx- og Rx-pinner.

  • UART er enkel å betjene med Arduino
  • UART trenger ikke noe klokkesignal
  • Baud-hastigheten må settes innenfor 10 % grense for kommuniserende enheter for å forhindre tap av data
  • Flere enheter med Arduino i Master Slave-konfigurasjon er ikke mulig med UART
  • UART er halvt dupleks, noe som betyr at enheter ikke kan sende og motta data samtidig
  • Bare to enheter om gangen kan kommunisere med UART-protokollen

Serial Peripheral Interface (SPI)

SPI er et akronym av serielt perifert grensesnitt som er spesialdesignet for mikrokontrollere for å kommunisere med dem. SPI opererer i full-dupleks-modus som betyr at SPI kan sende og motta data samtidig. Sammenlignet med UART og I2C er det den raskeste kommunikasjonsutstyret i Arduino-kort. Det brukes ofte der det kreves høy datahastighet som i LCD-skjerm og Micro SD-kortapplikasjoner.

SPI digitale pinner på Arduino er forhåndsdefinert. For Arduino Uno SPI pin konfigurasjon er som følger:

SPI linje GPIO ICSP Header Pin
SCK 1. 3 3
MISO 12 1
RØYK elleve 4
SS 10
  • MOSI står for Master Out Slave In , MOSI er dataoverføringslinje for master til slave.
  • SCK er en Klokkelinje som definerer overføringshastighet og startsluttegenskaper.
  • SS står for Slavevalg ; SS-linje lar Master velge en bestemt slaveenhet når den opererer i flere slavekonfigurasjoner.
  • MISO står for Master i Slave Out ; MISO er Slave to Master overføringslinje for data.

Et av hovedhøydepunktene til SPI-protokollen er Master-Slave-konfigurasjon. Ved å bruke SPI kan én enhet defineres som Master for å kontrollere flere slaveenheter. Master har full kontroll over Slave-enheter gjennom SPI-protokollen.

SPI er synkron protokoll, som betyr at kommunikasjon er koblet med felles klokkesignal mellom Master og Slave. SPI kan kontrollere flere enheter som slave over en enkelt sende- og mottakslinje. Alle slavene er koblet til Master ved hjelp av felles MISO motta linje sammen med RØYK én felles sendelinje. SCK er også den vanlige klokkelinjen blant Master- og Slave-enheter. Den eneste forskjellen på slaveenheter er at hver slaveenhet styres gjennom separate SS velg linje. Dette betyr at hver Slave trenger en ekstra GPIO-pin fra Arduino-kortet som vil fungere som utvalgslinje for den spesielle Slave-enheten.

Noen av hovedhøydepunktene i SPI-protokollen er oppført nedenfor:

  • SPI er den raskeste protokollen enn I2C og UART
  • Ingen start- og stoppbiter kreves som i UART, noe som betyr at kontinuerlig dataoverføring er mulig
  • Slave kan enkelt adresseres på grunn av enkel Master Slave-konfigurasjon
  • For hver slave er det en ekstra pin på Arduino-brettet. Praktisk talt 1 Master kan kontrollere 4 Slave-enheter
  • Databekreftelse mangler som brukt i UART
  • Multiple Master-konfigurasjon er ikke mulig

I2C kommunikasjonsprotokoll

Inter Integrated Circuit (I2C) er en annen kommunikasjonsprotokoll som brukes av Arduino-kort. I2C er den vanskeligste og mest kompliserte protokollen å implementere med Arduino og andre enheter. Til tross for komplikasjonen, tilbyr den flere funksjoner som mangler i andre protokoller som flere Master- og flere Slaves-konfigurasjoner. I2C gjør det mulig å koble opptil 128 enheter til hoved Arduino-kortet. Dette er bare mulig fordi I2C deler enkelt ledning blant alle slave-enhetene. I2C i Arduino bruker et adressesystem, noe som betyr at før du sender data til Slave-enhet, må Arduino først velge Slave-enhet ved å sende en unik adresse. I2C bruker bare to ledninger som reduserer det totale antallet Arduino-pinner, men den dårlige siden er at I2C er tregere enn SPI-protokollen.

Arduino analog pinne I2C Pin
A4 SDA
A5 SCL

På maskinvarenivå er I2C begrenset til kun to ledninger, en for en datalinje kjent som SDA (seriedata) og den andre for klokkelinjen SCL (Serial Clock). Ved inaktiv tilstand trekkes både SDA og SCL høyt. Når data må overføres, trekkes disse linjene lavt ved hjelp av MOSFET-kretser. Ved å bruke I2C i prosjekter er det obligatorisk å bruke pull up-motstander, normalt en verdi på 4,7 Kohm. Disse opptrekksmotstandene sikrer at både SDA- og SCL-linjene forblir høye i tomgangsstart.

Noen av hovedhøydepunktene til I2C-protokoller er:

  • Antall pinner som kreves er svært lavt
  • Flere Master Slaves-enheter kan kobles til
  • Bruker kun 2 ledninger
  • Hastigheten er lavere sammenlignet med SPI på grunn av opptrekksmotstander
  • Motstander trenger mer plass i kretsen
  • Prosjektets kompleksitet øker med økning i antall enheter

Sammenligning mellom UART vs I2C vs SPI

Protokoll UART SPI 2C
Hastighet Tregest Raskest Raskere enn UART
Antall enheter Opptil 2 4 enheter Opptil 128 enheter
Ledninger kreves 2(Tx,Rx) 4(SCK,SMOKE,EYES,SS) 2(SDA,SCL)
Dupleksmodus Full dupleksmodus Full dupleksmodus Halv dupleks
Antall Master-slaver mulig Enkel Master-Singel Slave Enkeltmester-flere slaver Flere Masters-Flere Slaver
Kompleksitet Enkel Kan enkelt kontrollere flere enheter Kompleks med økning i enheter
Anerkjennelsesbit Nei Nei Ja

Konklusjon

I denne artikkelen har vi dekket en omfattende sammenligning av alle de tre protokollene UART, SPI og I2C som brukes i Arduino. Å kjenne alle protokollene er viktig siden det gir uendelige muligheter til å integrere flere enheter. Å forstå alle kommunikasjonsutstyret vil spare tid og bidra til å optimalisere prosjekter i henhold til riktig protokoll.