Arduino kommunikasjonsprotokoll

Arduino kommunikasjonsprotokoll
Kommunikasjonsprotokoller er settet med regler som lar enheter kommunisere og utveksle data. Disse protokollene er veldig viktige i Arduino -kommunikasjon, da Arduino stadig sender og mottar data. Å bruke disse protokollene hjelper Arduino til å 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 enhver sensors data i Arduino.

Noen enkle sensorer som Infrared (IR) kan direkte kommunisere 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 grunnen til at disse protokollene er en integrert del av Arduino -kommunikasjonen.

Arduino har flere periferiutstyr knyttet til den; Blant dem er det tre kommunikasjonsperiferiutstyr som brukes i Arduino -brett.

  • Uart
  • Spi
  • I2C

Arduino kommunikasjonsprotokoller

Kommunikasjon mellom forskjellige elektroniske enheter som Arduino er standardisert blant disse tre protokollene; Det gjør det enkelt å kommunisere mellom forskjellige enheter uten kompatibilitetsproblemer. Arbeidet med disse tre protokollene er de samme som de tjener samme kommunikasjonsformål, 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 en etter den andre. For å sette opp UART -kommunikasjon trenger vi to linjer. Den ene er TX (D1) PIN -koden til Arduino -styret, og den andre er RX (D0) PIN -koden til Arduino -styret. TX PIN er for overføring av data til enheter og RX PIN brukes til å motta data. Ulike Arduino -brett har flere UART -pinner.

Arduino Digital Pin Uart pin
D1 Tx
D0 Rx

For å etablere seriell kommunikasjon ved hjelp av UART -port, må vi koble to enheter nedenfor vist konfigurasjon:

På Arduino UNO er ​​en seriell port dedikert for kommunikasjon som ofte blir referert til som USB -port. Som navnet antyder universell seriell buss, så er det en seriell port. Å bruke USB -porten Arduino kan etablere kommunikasjon med datamaskiner. USB -porten er koblet til Ombord -pinner TX og RX av Arduino. Ved hjelp av disse pinnene kan vi koble til annen ekstern maskinvare enn datamaskin via USB. Arduino IDE gir programvarebibliotek (Programvare.h) som lar brukere bruke GPIO -pinner som serielle TX- og RX -pinner.

  • UART er enkel å operere med Arduino
  • UART trenger ikke noe klokkesignal
  • Baud rate må settes innen 10% grense for å kommunisere enheter for å forhindre tap av data
  • Flere enheter med Arduino i Master Slave Configuration er ikke mulig med UART
  • UART er halvt dupleks, som betyr at enheter ikke kan overføre og motta data samtidig
  • Bare to enheter om gangen kan kommunisere med UART -protokollen

Seriell perifert grensesnitt (SPI)

Spi er et forkortelse av seriell perifert grensesnitt som er spesialdesignet for mikrokontrollere for å kommunisere med dem. SPI opererer på full-dupleksmodus som betyr at SPI kan sende og motta data samtidig. Sammenlignet med UART og I2C er det den raskeste kommunikasjonen perifere i Arduino -brett. Det brukes ofte der det kreves høy datahastighet som i LCD -skjerm og Micro SD -kortapplikasjoner.

SPI Digital Pins på Arduino er forhåndsdefinert. For Arduino Uno SPI -pin -konfigurasjon er som følger:

Spi -linje GPIO ICSP -toppstift
SCK 1. 3 3
Miso 12 1
Mosi 11 4
Ss 10 -
  • Mosi står for Master Out Slave In, Mosi er dataoverføringslinje for mester til slave.
  • SCK er en Klokkelinje som definerer overføringshastighet og start sluttegenskaper.
  • SS står for Slave Select; SS -linjen tillater Master å velge en bestemt slaveenhet når du opererer i flere slavekonfigurasjon.
  • Miso står for Mester i slave ut; Miso er slave for å mestre overføringslinjen for data.

Et av hovedhøydepunktene i SPI-protokollen er Master-Slave Configuration. Å bruke SPI En enhet kan defineres som master for å kontrollere flere slaveenheter. Master er i full kontroll over slaveenheter gjennom SPI -protokollen.

SPI er synkron protokoll, noe som betyr at kommunikasjon er knyttet til vanlig klokkesignal mellom master og slave. SPI kan kontrollere flere enheter som slave over en enkelt sending og motta linje. Alle slavene er koblet til Master ved bruk av vanlige Miso Motta linje sammen med Mosi En vanlig overføringslinje. SCK er også den vanlige klokkelinjen blant master- og slaveenheter. Bare forskjellen i slaveenheter er at hver slaveenhet kontrolleres gjennom separat Ss Velg linje. Dette betyr at hver slave trenger en ekstra GPIO -pinne fra Arduino -brettet som vil fungere som valgt linje for den aktuelle slaveapparatet.

Noen av de viktigste høydepunktene i SPI -protokollen er listet opp nedenfor:

  • SPI er raskeste protokoll enn I2C og UART
  • Ingen start- og stoppbiter som kreves som i UART, noe som betyr at kontinuerlig dataoverføring er mulig
  • Slave kan lett tas opp på grunn av enkel master slavekonfigurasjon
  • For hver slave er en ekstra pin okkupert på Arduino -styret. Praktisk talt 1 master kan kontrollere 4 slaveenheter
  • Data -bekreftelse mangler som brukt i UART
  • Flere masterkonfigurasjoner er ikke mulig

I2C kommunikasjonsprotokoll

Inter Integrated Circuit (I2C) er en annen kommunikasjonsprotokoll som brukes av Arduino -tavler. I2C er den vanskeligste og kompliserte protokollen å implementere med Arduino og andre enheter. Til tross for komplikasjonen, tilbyr det flere funksjoner som mangler i andre protokoller som flere master og flere slaver -konfigurasjoner. I2C tillater å koble opp til 128 enheter til hoved Arduino -tavlen. Dette er bare mulig fordi I2C deler enkelttråd mellom alle slaveenhetene. I2C i Arduino bruker et adressesystem, noe som betyr at du sender data til slaveenhet Arduino må først velge slaveenhet ved å sende unik adresse. I2C bruker bare to ledninger som reduserer den totale telleren.

Arduino analog pin I2C PIN
A4 SDA
A5 SCL

På maskinvarenivå er I2C begrenset til bare to ledninger, en for en datalinje kjent som SDA (seriedata) og den andre for klokkelinjen SCL (serieklokke). Ved tomgangsstat blir både SDA og SCL trukket høyt. Når data må overføres, trekkes disse linjene lave ved hjelp av MOSFET -kretsløp. Ved å bruke I2C i prosjekter er det obligatorisk å bruke opptreden motstander normalt en verdi på 4.7kohm. Disse trekker opp motstandene sikrer at både SDA- og SCL -linjer forblir høye i sin ledige start.

Noen av de viktigste høydepunktene i I2C -protokoller er:

  • Antall pinner som kreves er veldig lavt
  • Flere master slaver -enheter kan kobles til
  • Bruker bare 2 ledninger
  • Hastigheten er tregere sammenlignet med SPI på grunn av opptrekkede motstander
  • Motstander trenger mer plass i kretsen
  • Kompleksiteten i prosjektøkningen med økning i antall enheter

Sammenligning mellom UART vs I2C vs SPI

Protokoll Uart Spi I2C
Hastighet Tregeste Raskest Raskere enn uart
Antall enheter Opptil 2 4 enheter Opptil 128 enheter
Ledninger kreves 2 (TX, RX) 4 (SCK, MOSI, MISO, SS) 2 (SDA, SCL)
Dupleksmodus Full dupleksmodus Full dupleksmodus Halv dupleks
Antall mulige master-slaver Single Master-Single Slave Enkelt master-multiple slaver Flere master-multiple slaver
Kompleksitet Enkel Kan enkelt kontrollere flere enheter Kompleks med økning i enheter
Anerkjennelse Nei Nei Ja

Konklusjon

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