Arduino-kommunikaatioprotokolla

Arduino Kommunikaatioprotokolla



Viestintäprotokollat ​​ovat sääntöjoukko, jonka avulla laitteet voivat viestiä ja vaihtaa tietoja. Nämä protokollat ​​ovat erittäin tärkeitä Arduino-viestinnässä, koska Arduino lähettää ja vastaanottaa jatkuvasti tietoja. Näiden protokollien käyttö auttaa Arduinoa kattamaan virheiden havaitsemisen ja mahdolliset virheenpalautusmenetelmät. Nämä protokollat ​​yhdistävät analogiset ja digitaaliset laitteet ja mahdollistavat useiden projektien suunnittelun.

Arduino-kommunikaatioprotokollat

Viestintäprotokollien avulla voimme lähettää ja vastaanottaa minkä tahansa anturin tietoja Arduinossa.

Jotkut yksinkertaiset anturit, kuten infrapuna (IR), voivat kommunikoida suoraan Arduinon kanssa, mutta jotkin monimutkaiset anturit, kuten Wi-Fi-moduuli, SD-korttimoduuli ja gyroskooppi, eivät pysty kommunikoimaan suoraan Arduinon kanssa ilman viestintäprotokollia. Siksi nämä protokollat ​​ovat olennainen osa Arduino-viestintää.







Arduinoon on liitetty useita oheislaitteita; Niiden joukossa on kolme Arduino-levyissä käytettyä viestintäoheislaitetta.



Arduino-kommunikaatioprotokollat

Viestintä erilaisten elektronisten laitteiden, kuten Arduino, välillä on standardoitu näiden kolmen protokollan kesken; sen avulla suunnittelijat voivat kommunikoida eri laitteiden välillä helposti ilman yhteensopivuusongelmia. Näiden kolmen protokollan toiminta on sama, koska ne palvelevat samaa viestintätarkoitusta, mutta ne eroavat toteutuksessaan piirin sisällä. Näiden protokollien lisäkuvauksia käsitellään alla.







UART

UART tunnetaan nimellä Universaali asynkroninen vastaanotinlähetin. UART on sarjaliikenneprotokolla, joka tarkoittaa, että databitit siirretään peräkkäin peräkkäin. UART-viestinnän määrittämiseksi tarvitsemme kaksi linjaa. Toinen on Arduino-levyn Tx (D1) -nasta ja toinen on Arduino-levyn Rx (D0) -nasta. Tx-nastaa käytetään tiedon siirtämiseen laitteisiin ja Rx-nastaa käytetään tiedon vastaanottamiseen. Eri Arduino-levyillä on useita UART-nastaja.

Arduino Digital Pin UART Pin
D1 Tx
D0 Rx

Sarjayhteyden muodostamiseksi UART-portin avulla meidän on yhdistettävä kaksi laitetta alla esitetyssä kokoonpanossa:



Arduino Unossa yksi sarjaportti on omistettu tiedonsiirrolle, jota kutsutaan yleisesti USB-portiksi. Kuten nimestä voi päätellä Universal Serial Bus, se on sarjaportti. USB-portin avulla Arduino voi muodostaa yhteyden tietokoneisiin. USB-portti on kytketty Arduinon sisäisiin nastoihin Tx ja Rx. Näitä nastoja käyttämällä voimme liittää USB:n kautta minkä tahansa ulkoisen laitteiston paitsi tietokoneen. Arduino IDE tarjoaa SoftwareSerial-kirjaston (SoftwareSerial.h) jonka avulla käyttäjät voivat käyttää GPIO-nastoja Serial Tx- ja Rx-nasteina.

  • UART on helppokäyttöinen Arduinon kanssa
  • UART ei tarvitse kellosignaalia
  • Tiedonsiirtonopeus on asetettava 10 %:n rajojen sisälle kommunikoivista laitteista tietojen häviämisen estämiseksi
  • Useita laitteita, joissa on Arduino Master Slave -konfiguraatiossa, ei ole mahdollista UART:lla
  • UART on puolidupleksi, mikä tarkoittaa, että laitteet eivät voi lähettää ja vastaanottaa dataa samanaikaisesti
  • Vain kaksi laitetta kerrallaan voi kommunikoida UART-protokollan kanssa

SPI (Serial Peripheral Interface)

SPI on lyhenne sarja-oheisliitännästä, joka on erityisesti suunniteltu mikro-ohjaimille kommunikoimaan niiden kanssa. SPI toimii full-duplex-tilassa, mikä tarkoittaa, että SPI voi lähettää ja vastaanottaa tietoja samanaikaisesti. Verrattuna UARTiin ja I2C:hen, se on Arduino-levyjen nopein viestintäoheislaite. Sitä käytetään yleisesti, kun vaaditaan suurta tiedonsiirtonopeutta, kuten LCD-näytössä ja Micro SD -korttisovelluksissa.

Arduinon digitaaliset SPI-nastat ovat ennalta määritettyjä. Arduino Uno SPI -nastakokoonpano on seuraava:

SPI-linja GPIO ICSP Header Pin
SCK 13 3
MISO 12 1
SAVU yksitoista 4
SS 10
  • MOSI tarkoittaa Master Out Slave In , MOSI on tiedonsiirtolinja isännästä orjaan.
  • SCK on a Kellon linja joka määrittää siirtonopeuden ja aloituspään ominaisuudet.
  • SS tarkoittaa Valitse orja ; SS-linjan avulla isäntä voi valita tietyn orjalaitteen, kun se toimii useissa orjakokoonpanoissa.
  • MISO tarkoittaa Master in Slave Out ; MISO on Slave to Master -siirtolinja datalle.

Yksi SPI-protokollan tärkeimmistä kohokohdista on Master-Slave-konfigurointi. SPI:tä käyttämällä yksi laite voidaan määrittää isäntälaitteeksi ohjaamaan useita Slave-laitteita. Master hallitsee täysin Slave-laitteita SPI-protokollan kautta.

SPI on synkroninen protokolla, mikä tarkoittaa, että viestintä on linkitetty yhteiseen kellosignaaliin isäntälaitteen ja orjan välillä. SPI voi ohjata useita laitteita orjana yhden lähetys- ja vastaanottolinjan kautta. Kaikki orjat on yhdistetty Masteriin yhteisellä MISO vastaanottaa linjan mukana SAVU yksi yhteinen lähetyslinja. SCK on myös yleinen kellolinja isäntä- ja orjalaitteiden välillä. Ainoa ero orjalaitteissa on se, että jokaista orjalaitetta ohjataan erikseen SS valitse rivi. Tämä tarkoittaa, että jokainen Slave tarvitsee ylimääräisen GPIO-nastan Arduino-kortilta, joka toimii valintalinjana kyseiselle Slave-laitteelle.

Jotkut SPI-protokollan tärkeimmistä kohokohdista on lueteltu alla:

  • SPI on nopein protokolla kuin I2C ja UART
  • Aloitus- ja lopetusbittejä ei tarvita, kuten UART:ssa, mikä tarkoittaa, että jatkuva tiedonsiirto on mahdollista
  • Slave voidaan käsitellä helposti yksinkertaisen Master Slave -konfiguroinnin ansiosta
  • Jokaista Slavea kohden Arduino-levyllä on ylimääräinen tappi. Käytännössä 1 isäntä voi ohjata 4 orjalaitetta
  • Tietojen kuittaus puuttuu, kuten UART:ssa
  • Multiple Master -määritys ei ole mahdollista

I2C-viestintäprotokolla

Inter Integrated Circuit (I2C) on toinen Arduino-levyjen käyttämä viestintäprotokolla. I2C on vaikein ja monimutkaisin protokolla toteuttaa Arduinon ja muiden laitteiden kanssa. Monimutkaisuudestaan ​​huolimatta se tarjoaa useita ominaisuuksia, jotka puuttuvat muista protokollista, kuten useista Master- ja useista orjista. I2C mahdollistaa jopa 128 laitteen liittämisen Arduino-päälevyyn. Tämä on mahdollista vain, koska I2C jakaa yhden johdon kaikkien orjalaitteiden kesken. Arduinon I2C käyttää osoitejärjestelmää, mikä tarkoittaa, että ennen tietojen lähettämistä Slave-laitteeseen Arduinon on ensin valittava Slave-laite lähettämällä yksilöllinen osoite. I2C käyttää vain kahta johtoa, mikä vähentää yleistä Arduinon pinojen määrää, mutta sen huono puoli on, että I2C on hitaampi kuin SPI-protokolla.

Arduino Analog Pin I2C Pin
A4 SDA
A5 SCL

Laitteistotasolla I2C on rajoitettu vain kahteen johtoon, joista toinen on datalinjaa varten SDA (sarjatiedot) ja toinen kellolinjalle SCL (Serial Clock). Tyhjäkäynnissä sekä SDA että SCL vedetään korkealle. Kun dataa on siirrettävä, nämä linjat vedetään alas MOSFET-piirin avulla. Käytettäessä I2C:tä projekteissa on pakollista käyttää vetovastuksia, joiden arvo on normaalisti 4,7 Kohm. Nämä vetovastukset varmistavat, että sekä SDA- että SCL-linjat pysyvät korkealla tyhjäkäynnissä.

Jotkut I2C-protokollien tärkeimmistä kohokohdista ovat:

  • Tarvittavien tappien määrä on erittäin pieni
  • Useita Master Slaves -laitteita voidaan yhdistää
  • Käyttää vain 2 johtoa
  • Nopeus on hitaampi verrattuna SPI:hen vetovastusten vuoksi
  • Vastukset tarvitsevat enemmän tilaa piirissä
  • Projektin monimutkaisuus lisääntyy laitteiden määrän lisääntyessä

UART vs I2C vs SPI vertailu

pöytäkirja UART SPI 2C
Nopeus Hitain Nopein Nopeampi kuin UART
Laitteiden lukumäärä Jopa 2 4 laitetta Jopa 128 laitetta
Johdot vaaditaan 2 (Tx, Rx) 4 (SCK, SMOKE, EYES, SS) 2(SDA,SCL)
Kaksipuolinen tila Full Duplex Mode Full Duplex Mode Half Duplex
Isäntäorjien lukumäärä mahdollinen Yksi isäntä-yksittäinen orja Yksi isäntä-useita orjia Useita isäntiä - useita orjia
Monimutkaisuus Yksinkertainen Voi helposti ohjata useita laitteita Monimutkainen laitteiden lisääntyessä
Tunnustuksen bitti Ei Ei Joo

Johtopäätös

Tässä artikkelissa olemme käsitelleet kattavan vertailun kaikista kolmesta Arduinossa käytetystä protokollasta UART, SPI ja I2C. Kaikkien protokollien tunteminen on tärkeää, koska se antaa loputtomasti mahdollisuuksia integroida useita laitteita. Kaikkien viestintäoheislaitteiden ymmärtäminen säästää aikaa ja auttaa optimoimaan projekteja oikean protokollan mukaan.