Arduino komunikacijski protokol

Arduino Komunikacijski Protokol



Komunikacijski protokoli skup su pravila koji uređajima omogućuju komunikaciju i razmjenu podataka. Ovi protokoli su vrlo značajni u Arduino komunikaciji jer Arduino neprestano šalje i prima podatke. Korištenje ovih protokola pomaže Arduinu u otkrivanju grešaka i mogućim metodama oporavka od grešaka. Ovi protokoli spajaju analogne i digitalne uređaje i omogućuju dizajn više projekata.

Arduino komunikacijski protokoli

Korištenjem komunikacijskih protokola možemo slati i primati podatke bilo kojeg senzora u Arduinu.

Neki jednostavni senzori poput infracrvenog (IR) mogu izravno komunicirati s Arduinom, ali neki od složenih senzora poput Wi-Fi modula, modula SD kartice i žiroskopa ne mogu izravno komunicirati s Arduinom bez ikakvih komunikacijskih protokola. Dakle, zato su ovi protokoli sastavni dio Arduino komunikacije.







Arduino ima više perifernih uređaja priključenih na njega; među njima su tri komunikacijske periferije koje se koriste u Arduino pločama.



Arduino komunikacijski protokoli

Komunikacija između različitih elektroničkih uređaja kao što je Arduino standardizirana je između ova tri protokola; dizajnerima omogućuje laku komunikaciju između različitih uređaja bez problema s kompatibilnošću. Rad ova tri protokola je isti jer služe istoj svrsi komunikacije, ali se razlikuju u implementaciji unutar kruga. Daljnji opis ovih protokola razmatra se u nastavku.







UART

UART je poznat kao Univerzalni asinkroni prijamni odašiljač. UART je serijski komunikacijski protokol što znači da se bitovi podataka prenose u sekvencijalnom obliku jedan za drugim. Za postavljanje UART komunikacije potrebne su nam dvije linije. Jedan je Tx (D1) pin Arduino ploče, a drugi je Rx(D0) pin Arduino ploče. Tx pin služi za prijenos podataka na uređaje, a Rx pin se koristi za primanje podataka. Različite Arduino ploče imaju više UART pinova.

Arduino digitalni pin UART Pin
D1 Tx
D0 Rx

Da bismo uspostavili serijsku komunikaciju pomoću UART priključka moramo spojiti dva uređaja u dolje prikazanoj konfiguraciji:



Na Arduino Uno, jedan serijski port namijenjen je komunikaciji koji se obično naziva USB port. Kao što ime sugerira Universal Serial Bus, to je serijski port. Korištenjem USB priključka Arduino može uspostaviti komunikaciju s računalima. USB priključak je spojen na ugrađene pinove Tx i Rx Arduina. Pomoću ovih pinova možemo spojiti bilo koji vanjski hardver osim računala preko USB-a. Arduino IDE nudi biblioteku SoftwareSerial (SoftwareSerial.h) koji korisnicima omogućuje korištenje GPIO pinova kao serijskih Tx i Rx pinova.

  • UART je jednostavan za rukovanje s Arduinom
  • UART ne treba nikakav signal sata
  • Brzina prijenosa mora biti postavljena unutar ograničenja od 10% uređaja za komunikaciju kako bi se spriječio gubitak podataka
  • Više uređaja s Arduinom u Master Slave konfiguraciji nije moguće s UART-om
  • UART je half duplex, što znači da uređaji ne mogu slati i primati podatke u isto vrijeme
  • Samo dva uređaja istovremeno mogu komunicirati UART protokolom

Serijsko periferno sučelje (SPI)

SPI je akronim za serijsko periferno sučelje koje je posebno dizajnirano za komunikaciju mikrokontrolera s njima. SPI radi u full-duplex modu što znači da SPI može slati i primati podatke istovremeno. U usporedbi s UART i I2C to je najbrža komunikacijska periferija u Arduino pločama. Uobičajeno se koristi tamo gdje je potrebna velika brzina prijenosa podataka, kao što su LCD zasloni i aplikacije za mikro SD kartice.

SPI digitalni pinovi na Arduinu su unaprijed definirani. Za Arduino Uno SPI konfiguracija pinova je sljedeća:

SPI linija GPIO ICSP Pin zaglavlja
SCK 13 3
MISO 12 1
DIM jedanaest 4
SS 10
  • MOSI je kratica za Master Out Slave In , MOSI je linija za prijenos podataka od glavnog do podređenog.
  • SCK je a Linija sata koji definira brzinu prijenosa i start end karakteristike.
  • SS je kratica za Slave Select ; SS linija omogućuje Glavnom da odabere određeni Slave uređaj kada radi u višestrukoj Slave konfiguraciji.
  • MISO je kratica za Gospodar u Slave Out ; MISO je Slave to Master prijenosna linija za podatke.

Jedna od glavnih značajki SPI protokola je konfiguracija Master-Slave. Korištenjem SPI jedan uređaj se može definirati kao Master za kontrolu nekoliko Slave uređaja. Master ima punu kontrolu nad Slave uređajima putem SPI protokola.

SPI je sinkroni protokol, što znači da je komunikacija povezana sa zajedničkim signalom sata između glavnog i podređenog. SPI može kontrolirati više uređaja kao Slave preko jedne linije za prijenos i prijem. Svi su podređeni spojeni na Master koristeći zajednički MISO primiti liniju zajedno sa DIM jednu zajedničku prijenosnu liniju. SCK također je uobičajena linija sata među glavnim i podređenim uređajima. Jedina razlika u Slave uređajima je da se svaki slave uređaj kontrolira putem zasebnog SS odaberite liniju. To znači da svaki Slave treba dodatni GPIO pin s Arduino ploče koji će djelovati kao odabrana linija za taj određeni Slave uređaj.

Neke od glavnih značajki SPI protokola navedene su u nastavku:

  • SPI je najbrži protokol od I2C i UART
  • Nisu potrebni startni i stop bitovi kao u UART-u, što znači da je moguć kontinuirani prijenos podataka
  • Slave se može jednostavno adresirati zahvaljujući jednostavnoj konfiguraciji Master Slave
  • Za svaki Slave zauzima dodatni pin na Arduino ploči. Praktički 1 Master može kontrolirati 4 Slave uređaja
  • Nedostaje potvrda primanja podataka kao što se koristi u UART-u
  • Više master konfiguracija nije moguća

I2C komunikacijski protokol

Interintegrated Circuit (I2C) je još jedan komunikacijski protokol koji koriste Arduino ploče. I2C je najteži i najkompliciraniji protokol za implementaciju s Arduinom i drugim uređajima. Unatoč svojoj kompliciranosti, nudi višestruke značajke koje nedostaju u drugim protokolima poput višestrukih nadređenih i višestrukih podređenih konfiguracija. I2C omogućuje spajanje do 128 uređaja na glavnu Arduino ploču. To je moguće samo zato što I2C dijeli jednu žicu među svim podređenim uređajima. I2C u Arduinu koristi adresni sustav, što znači da prije slanja podataka podređenom uređaju Arduino prvo mora odabrati podređeni uređaj slanjem jedinstvene adrese. I2C koristi samo dvije žice smanjujući ukupni broj Arduino pinova, ali loša strana toga je što je I2C sporiji od SPI protokola.

Arduino analogni Pin I2C Pin
A4 SDA
A5 SCL

Na hardverskoj razini I2C je ograničen na samo dvije žice, jednu za podatkovnu liniju poznatu kao SDA (serijski podaci) i drugi za liniju sata SCL (serijski sat). U stanju mirovanja i SDA i SCL su podignuti visoko. Kada je potrebno prenijeti podatke, te se linije povlače nisko pomoću MOSFET sklopova. Koristeći I2C u projektima, obavezna je upotreba otpornika za podizanje, obično vrijednosti 4,7 Kohma. Ovi pull-up otpornici osiguravaju da i SDA i SCL vodovi ostanu visoki u svom startu u praznom hodu.

Neke od glavnih značajki I2C protokola su:

  • Broj potrebnih pinova je vrlo mali
  • Može se spojiti više Master Slaves uređaja
  • Koristi samo 2 žice
  • Brzina je sporija u usporedbi sa SPI zbog otpornika za podizanje
  • Otpornici trebaju više prostora u krugu
  • Složenost projekta raste s povećanjem broja uređaja

Usporedba između UART vs I2C vs SPI

Protokol UART SPI 2C
Ubrzati Najsporije Najbrži Brži od UART-a
Broj uređaja do 2 4 uređaja Do 128 uređaja
Potrebne žice 2(Tx,Rx) 4(SCK,DIM,OČI,SS) 2(SDA,SCL)
Dupleksni način rada Full Duplex Mode Full Duplex Mode Polu dupleks
Broj mogućih Master-Slave Jedan gospodar-jedan podređeni Jedan gospodar-više robova Više gospodara-više robova
Složenost Jednostavan Može jednostavno kontrolirati više uređaja Kompleks s povećanjem uređaja
Bit potvrde Ne Ne Da

Zaključak

U ovom smo članku pokrili sveobuhvatnu usporedbu sva tri protokola UART, SPI i I2C koji se koriste u Arduinu. Poznavanje svih protokola je važno jer daje beskrajne mogućnosti za integraciju više uređaja. Razumijevanje svih komunikacijskih periferija uštedjet će vrijeme i pomoći u optimizaciji projekata prema ispravnom protokolu.