Arduino sideprotokoll

Arduino Sideprotokoll



Sideprotokollid on reeglite kogum, mis võimaldab seadmetel suhelda ja andmeid vahetada. Need protokollid on Arduino suhtluses väga olulised, kuna Arduino saadab ja võtab pidevalt andmeid vastu. Nende protokollide kasutamine aitab Arduinol katta vigade tuvastamise ja võimalike vigade taastamise meetodeid. Need protokollid ühendavad analoog- ja digitaalseadmed ning võimaldavad kavandada mitut projekti.

Arduino sideprotokollid

Sideprotokolle kasutades saame saata ja vastu võtta mis tahes andurite andmeid Arduinos.

Mõned lihtsad andurid, nagu infrapuna (IR), saavad Arduinoga otse suhelda, kuid mõned keerulised andurid, nagu Wi-Fi-moodul, SD-kaardi moodul ja güroskoop, ei saa Arduinoga otse suhelda ilma sideprotokollideta. Seetõttu on need protokollid Arduino suhtluse lahutamatu osa.







Arduinol on sellega ühendatud mitu välisseadet; nende hulgas on kolm Arduino plaatides kasutatavat sidevälisseadet.



Arduino sideprotokollid

Side erinevate elektrooniliste seadmete, nagu Arduino, vahel on nende kolme protokolli vahel standardiseeritud; see võimaldab disaineritel suhelda erinevate seadmete vahel ilma ühilduvusprobleemideta. Nende kolme protokolli toimimine on sama, kuna neil on sama side eesmärk, kuid nende rakendamine ahela sees on erinev. Nende protokollide täpsemat kirjeldust käsitletakse allpool.







UART

UART on tuntud kui Universaalne asünkroonne vastuvõtja saatja. UART on jadasideprotokoll, mis tähendab, et andmebitte edastatakse järjestikusel kujul üksteise järel. UART-side seadistamiseks vajame kahte liini. Üks on Arduino plaadi Tx (D1) pin ja teine ​​Arduino plaadi Rx (D0) pin. Tx pin on andmete edastamiseks seadmetele ja Rx pin kasutatakse andmete vastuvõtmiseks. Erinevatel Arduino plaatidel on mitu UART-tihvti.

Arduino digitaalne pin UART Pin
D1 Tx
D0 Rx

Jadaühenduse loomiseks UART-pordi abil peame ühendama kaks seadet allpool näidatud konfiguratsioonis:



Arduino Unol on üks jadaport mõeldud suhtlemiseks, mida tavaliselt nimetatakse USB-pordiks. Nagu nimi viitab Universal Serial Bus, on see jadaport. USB-porti kasutades saab Arduino luua side arvutitega. USB-port on ühendatud Arduino sisemiste tihvtidega Tx ja Rx. Neid kontakte kasutades saame USB kaudu ühendada mis tahes välise riistvara peale arvuti. Arduino IDE pakub SoftwareSerial raamatukogu (SoftwareSerial.h) mis võimaldab kasutajatel kasutada GPIO kontakte Serial Tx ja Rx kontaktidena.

  • UART-i on Arduinoga lihtne kasutada
  • UART ei vaja kellasignaali
  • Andmekao vältimiseks tuleb andmeedastuskiirus seada sideseadmete 10% piiridesse
  • UART-iga pole võimalik kasutada mitut seadet, mille Arduino on Master Slave konfiguratsioonis
  • UART on pooldupleks, mis tähendab, et seadmed ei saa andmeid samal ajal edastada ja vastu võtta
  • UART-protokolliga saavad suhelda ainult kaks seadet korraga

Serial Peripheral Interface (SPI)

SPI on jadaliidese akronüüm, mis on spetsiaalselt loodud mikrokontrolleritele nendega suhtlemiseks. SPI töötab täisdupleksrežiimis, mis tähendab, et SPI saab andmeid samaaegselt saata ja vastu võtta. Võrreldes UARTi ja I2C-ga on see Arduino plaatide kiireim sidevälisseade. Seda kasutatakse tavaliselt siis, kui on vaja suurt andmeedastuskiirust, näiteks LCD-ekraani ja Micro SD-kaardi rakendustes.

Arduino SPI digitaalsed tihvtid on eelmääratletud. Arduino Uno SPI pin konfiguratsioon on järgmine:

SPI liin GPIO ICSP päise pin
SCK 13 3
MISO 12 1
SUITSU üksteist 4
SS 10
  • MOSI tähistab Master Out Slave In , MOSI on andmeedastusliin peremehest orjani.
  • SCK on a Kella rida mis määrab edastuskiiruse ja alguse lõpu omadused.
  • SS tähistab Slave valimine ; SS-liin võimaldab Masteril valida konkreetse alamseadme, kui see töötab mitme alluva konfiguratsioonis.
  • MISO tähistab Master in Slave Out ; MISO on andmeedastusliin Slave to Master.

SPI-protokolli üks peamisi esiletõstmisi on Master-Slave konfiguratsioon. SPI-d kasutades saab ühe seadme defineerida ülemseadmena, et juhtida mitut alluvseadet. Master kontrollib täielikult Slave-seadmeid SPI-protokolli kaudu.

SPI on sünkroonprotokoll, mis tähendab, et side on ühendatud ühise kellasignaaliga Masteri ja Slave vahel. SPI saab juhtida mitut seadet orjana ühe edastus- ja vastuvõtuliini kaudu. Kõik orjad on ühendatud Masteriga, kasutades ühist MISO saada rida koos SUITSU üks ühine edastusliin. SCK on ka üldlevinud kellariin Master- ja Slave-seadmete seas. Ainus erinevus alamseadmetes on see, et iga alamseadet juhitakse eraldi SS vali rida. See tähendab, et iga Slave vajab Arduino plaadilt täiendavat GPIO-tihvti, mis toimib selle konkreetse Slave-seadme valikuliinina.

Mõned SPI-protokolli peamised esiletõstmised on loetletud allpool:

  • SPI on kiireim protokoll kui I2C ja UART
  • Alg- ja stoppbitte pole vaja nagu UART-is, mis tähendab, et pidev andmeedastus on võimalik
  • Slave'i saab hõlpsasti käsitleda tänu lihtsale Master Slave'i konfiguratsioonile
  • Iga Slave'i jaoks on Arduino plaadil hõivatud lisatihvt. Praktiliselt 1 Master saab juhtida 4 Slave seadet
  • Andmete kinnitus puudub, nagu seda kasutatakse UART-is
  • Mitme Masteri konfigureerimine pole võimalik

I2C sideprotokoll

Inter Integrated Circuit (I2C) on veel üks Arduino plaatide kasutatav sideprotokoll. I2C on Arduino ja teiste seadmetega kõige keerulisem ja keerulisem protokoll. Hoolimata selle keerukusest pakub see mitmeid funktsioone, mis puuduvad teistes protokollides, näiteks mitme Masteri ja mitme Slaves konfiguratsioonis. I2C võimaldab ühendada kuni 128 seadet Arduino põhiplaadiga. See on võimalik ainult seetõttu, et I2C jagab kõigi Slave-seadmete vahel ühte juhet. Arduino I2C kasutab aadressisüsteemi, mis tähendab, et enne andmete saatmist Slave-seadmesse peab Arduino esmalt valima Slave-seadme, saates kordumatu aadressi. I2C kasutab ainult kahte juhet, mis vähendavad üldist Arduino kontaktide arvu, kuid selle halb külg on see, et I2C on aeglasem kui SPI-protokoll.

Arduino analoogpin I2C pin
A4 SDA
A5 SCL

Riistvara tasemel on I2C piiratud ainult kahe juhtmega, millest üks on andmeliini jaoks SDA (jadaandmed) ja teine ​​kellaliini jaoks SCL (jadakell). Tühikäigul tõstetakse nii SDA kui ka SCL kõrgele. Kui andmeid on vaja edastada, tõmmatakse need liinid MOSFET-lülituse abil madalale. Kasutades projektides I2C, on kohustuslik kasutada tõmbetakisteid, mille väärtus on tavaliselt 4,7 Kohm. Need tõmbetakistid tagavad, et nii SDA kui ka SCL liinid jäävad tühikäigu käivitamisel kõrgele.

Mõned I2C-protokollide peamised esiletõstmised on järgmised:

  • Vajalike tihvtide arv on väga väike
  • Ühendada saab mitu Master Slave seadet
  • Kasutab ainult 2 juhet
  • Kiirus on SPI-ga võrreldes aeglasem tänu tõmbetakistitele
  • Takistid vajavad vooluringis rohkem ruumi
  • Projekti keerukus suureneb koos seadmete arvu suurenemisega

UART vs I2C vs SPI võrdlus

Protokoll UART SPI 2C
Kiirus Aeglasem Kiireim Kiirem kui UART
Seadmete arv Kuni 2 4 seadet Kuni 128 seadet
Vajalikud juhtmed 2 (Tx, Rx) 4 (SKK, SMOKE, EYES, SS) 2 (SDA, SCL)
Dupleksrežiim Täisdupleksrežiim Täisdupleksrežiim Pooldupleks
Võimalik Master-Slave'i arv Üksik ülem-üksik ori Üksik ülem - mitu orja Mitu peremeest - mitu orja
Keerukus Lihtne Saate hõlpsasti juhtida mitut seadet Seadmete arvu suurenemisega keeruline
Tunnustus bitt Ei Ei Jah

Järeldus

Selles artiklis oleme käsitlenud kõigi Arduinos kasutatavate kolme protokolli UART, SPI ja I2C põhjalikku võrdlust. Kõigi protokollide tundmine on oluline, kuna see annab lõputult võimalusi mitme seadme integreerimiseks. Kõigi sidevälisseadmete mõistmine säästab aega ja aitab optimeerida projekte vastavalt õigele protokollile.