Arduino komunikacijski protokol

Arduino Komunikacijski Protokol



Komunikacijski protokoli so niz pravil, ki napravam omogočajo komunikacijo in izmenjavo podatkov. Ti protokoli so zelo pomembni pri komunikaciji Arduino, saj Arduino nenehno pošilja in sprejema podatke. Uporaba teh protokolov pomaga Arduinu pri odkrivanju napak in možnih metodah za odpravo napak. Ti protokoli združujejo analogne in digitalne naprave ter omogočajo oblikovanje več projektov.

Arduino komunikacijski protokoli

Z uporabo komunikacijskih protokolov lahko pošiljamo in prejemamo podatke katerega koli senzorja v Arduinu.

Nekateri preprosti senzorji, kot je infrardeči (IR), lahko neposredno komunicirajo z Arduinom, vendar nekateri kompleksni senzorji, kot so modul Wi-Fi, modul kartice SD in žiroskop, ne morejo neposredno komunicirati z Arduinom brez komunikacijskih protokolov. Torej, zato so ti protokoli sestavni del komunikacije Arduino.







Arduino ima nanj priključenih več zunanjih naprav; med njimi so tri komunikacijske periferije, ki se uporabljajo v ploščah Arduino.



Arduino komunikacijski protokoli

Komunikacija med različnimi elektronskimi napravami, kot je Arduino, je standardizirana med temi tremi protokoli; oblikovalcem omogoča enostavno komunikacijo med različnimi napravami brez težav z združljivostjo. Delovanje teh treh protokolov je enako, saj služijo istemu namenu komunikacije, razlikujejo pa se v izvedbi znotraj vezja. Nadaljnji opis teh protokolov je obravnavan spodaj.







UART

UART je znan kot Univerzalni asinhroni sprejemni oddajnik. UART je serijski komunikacijski protokol, kar pomeni, da se podatkovni biti prenašajo v zaporedni obliki drug za drugim. Za nastavitev komunikacije UART potrebujemo dve liniji. Eden je zatič Tx (D1) na plošči Arduino, drugi pa je zatič Rx (D0) na plošči Arduino. Tx pin je za prenos podatkov v naprave, Rx pin pa za sprejemanje podatkov. Različne plošče Arduino imajo več zatičev UART.

Arduino Digital Pin UART Pin
D1 Tx
D0 Rx

Za vzpostavitev serijske komunikacije z uporabo vrat UART moramo povezati dve napravi v spodaj prikazani konfiguraciji:



Na Arduino Uno so ena serijska vrata namenjena komunikaciji, ki se običajno imenujejo vrata USB. Kot pove že ime Universal Serial Bus, je to serijska vrata. Z uporabo vrat USB lahko Arduino vzpostavi komunikacijo z računalniki. Vrata USB so povezana z vgrajenimi zatiči Tx in Rx Arduina. S temi nožicami lahko prek USB-ja povežemo katero koli zunanjo strojno opremo razen računalnika. Arduino IDE nudi knjižnico SoftwareSerial (SoftwareSerial.h) ki uporabnikom omogoča uporabo zatičev GPIO kot zaporednih zatičev Tx in Rx.

  • UART je preprost za upravljanje z Arduinom
  • UART ne potrebuje signala ure
  • Hitrost prenosa mora biti nastavljena znotraj 10 % omejitve komunikacijskih naprav, da preprečite izgubo podatkov
  • Več naprav z Arduinom v konfiguraciji Master Slave ni mogoče z UART
  • UART je polovični dupleks, kar pomeni, da naprave ne morejo prenašati in sprejemati podatkov hkrati
  • Samo dve napravi hkrati lahko komunicirata s protokolom UART

Serijski periferni vmesnik (SPI)

SPI je akronim za serijski periferni vmesnik, ki je posebej zasnovan za komunikacijo mikrokrmilnikov z njimi. SPI deluje v polnem dupleksnem načinu, kar pomeni, da lahko SPI hkrati pošilja in prejema podatke. V primerjavi z UART in I2C je to najhitrejša komunikacijska periferija v ploščah Arduino. Običajno se uporablja tam, kjer je potrebna visoka hitrost prenosa podatkov, na primer pri aplikacijah za zaslon LCD in kartico Micro SD.

Digitalni zatiči SPI na Arduinu so vnaprej določeni. Konfiguracija pinov Arduino Uno SPI je naslednja:

Linija SPI GPIO Zatič glave ICSP
SCK 13 3
MISO 12 1
DAJITE enajst 4
SS 10
  • MOSI pomeni Master Out Slave In , MOSI je linija za prenos podatkov od glavnega do podrejenega.
  • SCK je a Vrstica ure ki določa hitrost prenosa in značilnosti začetka in konca.
  • SS pomeni Slave Select ; Linija SS omogoča Masterju, da izbere določeno podrejeno napravo, ko deluje v konfiguraciji več podrejenih.
  • MISO pomeni Mojster v Slave Out ; MISO je podrejeni prenosni vod za podatke.

Eden od glavnih poudarkov protokola SPI je konfiguracija Master-Slave. Z uporabo SPI je ena naprava lahko definirana kot glavna za nadzor več podrejenih naprav. Master ima popoln nadzor nad podrejenimi napravami prek protokola SPI.

SPI je sinhroni protokol, kar pomeni, da je komunikacija povezana s skupnim signalom ure med glavnim in podrejenim. SPI lahko nadzoruje več naprav kot podrejene prek ene oddajne in sprejemne linije. Vsi podrejeni so povezani z nadrejenim prek skupnega MISO prejmi linijo skupaj z DAJITE eno skupno oddajno linijo. SCK je tudi običajna linija ure med glavnimi in podrejenimi napravami. Edina razlika v podrejenih napravah je, da se vsaka podrejena naprava krmili ločeno SS izberite vrstico. To pomeni, da vsak podrejeni potrebuje dodaten pin GPIO iz plošče Arduino, ki bo deloval kot izbrana linija za to posebno podrejeno napravo.

Nekaj ​​glavnih poudarkov protokola SPI je navedenih spodaj:

  • SPI je najhitrejši protokol kot I2C in UART
  • Niso potrebni začetni in končni biti, kot pri UART, kar pomeni, da je mogoč neprekinjen prenos podatkov
  • Slave je mogoče zlahka nasloviti zaradi preproste konfiguracije Master Slave
  • Za vsakega podrejenega je na plošči Arduino zaseden dodaten pin. Praktično 1 glavni lahko nadzoruje 4 podrejene naprave
  • Manjka potrditev podatkov, kot se uporablja v UART
  • Multiple Master konfiguracija ni mogoča

Komunikacijski protokol I2C

Interintegrated Circuit (I2C) je še en komunikacijski protokol, ki ga uporabljajo plošče Arduino. I2C je najtežji in zapleten protokol za implementacijo z Arduinom in drugimi napravami. Kljub svoji zapletenosti ponuja več funkcij, ki manjkajo v drugih protokolih, kot so konfiguracije več glavnih in več podrejenih. I2C omogoča priklop do 128 naprav na glavno ploščo Arduino. To je mogoče samo zato, ker I2C deli eno žico med vsemi podrejenimi napravami. I2C v Arduinu uporablja naslovni sistem, kar pomeni, da mora Arduino pred pošiljanjem podatkov v podrejeno napravo najprej izbrati podrejeno napravo s pošiljanjem edinstvenega naslova. I2C uporablja samo dve žici, kar zmanjša skupno število pinov Arduino, vendar je slaba stran tega, da je I2C počasnejši od protokola SPI.

Arduino Analog Pin I2C Pin
A4 SDA
A5 SCL

Na ravni strojne opreme je I2C omejen na samo dve žici, eno za podatkovno linijo, znano kot SDA (Serijski podatki) in drugi za linijo ure SCL (serijska ura). V stanju mirovanja sta tako SDA kot SCL dvignjena visoko. Ko je treba podatke prenesti, se te linije potegnejo nizko z uporabo vezja MOSFET. Pri uporabi I2C v projektih je obvezna uporaba vlečnih uporov, običajno z vrednostjo 4,7 Kohm. Ti vlečni upori zagotavljajo, da obe liniji SDA in SCL ostaneta visoki pri zagonu v prostem teku.

Nekateri glavni poudarki protokolov I2C so:

  • Število potrebnih zatičev je zelo malo
  • Povezati je mogoče več naprav Master Slaves
  • Uporablja samo 2 žici
  • Hitrost je počasnejša v primerjavi s SPI zaradi vlečnih uporov
  • Upori potrebujejo več prostora v vezju
  • Kompleksnost projekta se povečuje s povečanjem števila naprav

Primerjava med UART proti I2C proti SPI

Protokol UART SPI 2C
Hitrost Najpočasnejši Najhitrejši Hitreje kot UART
Število naprav Do 2 4 naprave Do 128 naprav
Potrebne so žice 2(Tx,Rx) 4(SCK,DIM,OČI,SS) 2(SDA,SCL)
Dvostranski način Polni dupleksni način Polni dupleksni način Half Duplex
Možno število glavnih in podrejenih En sam master-single slave En sam gospodar-več sužnjev Več gospodarjev-več sužnjev
Kompleksnost Enostavno Z lahkoto lahko upravlja več naprav Kompleks s povečanjem naprav
Bit potrditve ne ne ja

Zaključek

V tem članku smo zajeli obsežno primerjavo vseh treh protokolov UART, SPI in I2C, ki se uporabljajo v Arduinu. Poznavanje vseh protokolov je pomembno, saj daje neskončne možnosti za integracijo več naprav. Razumevanje vseh komunikacijskih zunanjih naprav bo prihranilo čas in pomagalo optimizirati projekte v skladu s pravilnim protokolom.