Protocolul de comunicare Arduino

Protocolul De Comunicare Arduino



Protocoalele de comunicare reprezintă un set de reguli care permit dispozitivelor să comunice și să schimbe date. Aceste protocoale sunt foarte semnificative în comunicarea Arduino, deoarece Arduino trimite și primește în mod constant date. Utilizarea acestor protocoale ajută Arduino să acopere detectarea erorilor și posibilele metode de recuperare a erorilor. Aceste protocoale reunesc dispozitivele analogice și digitale și fac posibilă proiectarea mai multor proiecte.

Protocoale de comunicare Arduino

Prin utilizarea protocoalelor de comunicare, putem trimite și primi datele oricărui senzor în Arduino.

Unii senzori simpli precum infraroșu (IR) pot comunica direct cu Arduino, dar unii dintre senzorii complecși, cum ar fi modulul Wi-Fi, modulul cardului SD și giroscopul, nu pot comunica direct cu Arduino fără niciun protocoale de comunicare. Deci, de aceea aceste protocoale sunt parte integrantă a comunicării Arduino.







Arduino are mai multe periferice atașate la el; printre ele se numără trei periferice de comunicare utilizate în plăcile Arduino.



Protocoale de comunicare Arduino

Comunicarea între diferite dispozitive electronice precum Arduino este standardizată între aceste trei protocoale; le permite designerilor să comunice cu ușurință între diferite dispozitive, fără probleme de compatibilitate. Funcționarea acestor trei protocoale este aceeași, deoarece servesc aceluiași scop de comunicare, dar diferă în implementare în interiorul unui circuit. Descrierea suplimentară a acestor protocoale este discutată mai jos.







UART

UART este cunoscut sub numele de Transmițător receptor asincron universal. UART este un protocol de comunicație serial care înseamnă că biții de date sunt transferați în formă secvențială unul după altul. Pentru configurarea comunicației UART avem nevoie de două linii. Unul este pinul Tx (D1) al plăcii Arduino, iar al doilea este pinul Rx (D0) al plăcii Arduino. Pinul Tx este pentru transmiterea datelor către dispozitive, iar pinul Rx este folosit pentru primirea datelor. Diferitele plăci Arduino au mai mulți pini UART.

Pin digital Arduino Pin UART
D1 Tx
D0 Rx

Pentru a stabili o comunicație serială folosind portul UART, trebuie să conectăm două dispozitive în configurația prezentată mai jos:



Pe Arduino Uno, un port serial este dedicat comunicațiilor, care este denumit în mod obișnuit port USB. După cum sugerează și numele Universal Serial Bus, deci este un port serial. Folosind portul USB Arduino poate stabili comunicarea cu computerele. Portul USB este conectat la pinii integrati Tx și Rx ai Arduino. Folosind acești pini, putem conecta orice hardware extern, altul decât computer, prin USB. Arduino IDE oferă o bibliotecă SoftwareSerial (SoftwareSerial.h) care permite utilizatorilor să folosească pini GPIO ca pini Serial Tx și Rx.

  • UART este simplu de operat cu Arduino
  • UART nu are nevoie de niciun semnal de ceas
  • Rata de transmisie trebuie setată în limita de 10% a dispozitivelor care comunică pentru a preveni pierderea datelor
  • Mai multe dispozitive cu Arduino în configurația Master Slave nu sunt posibile cu UART
  • UART este semi-duplex, ceea ce înseamnă că dispozitivele nu pot transmite și primi date în același timp
  • Doar două dispozitive simultan pot comunica cu protocolul UART

Interfață periferică serială (SPI)

SPI este un acronim al interfeței periferice seriale care este special conceput pentru ca microcontrolere să comunice cu acestea. SPI funcționează în modul full-duplex, ceea ce înseamnă că SPI poate trimite și primi date simultan. În comparație cu UART și I2C, este cel mai rapid periferic de comunicare din plăcile Arduino. Este folosit în mod obișnuit acolo unde este necesară o rată mare de date, cum ar fi afișajul LCD și aplicațiile pentru carduri Micro SD.

Pinii digitali SPI pe Arduino sunt predefiniti. Pentru Arduino Uno, configurația pinului SPI este următoarea:

Linia SPI GPIO Pin antet ICSP
SCK 13 3
MISO 12 1
FUM unsprezece 4
SS 10
  • MOSI înseamnă Master Out Slave In , MOSI este linie de transmisie de date pentru Master to Slave.
  • SCK este un Linia ceasului care definește viteza de transmisie și caracteristicile de sfârșit de pornire.
  • SS înseamnă Selectare slave ; Linia SS permite Masterului să selecteze un anumit dispozitiv Slave atunci când operează în configurație Slave multiple.
  • MISO înseamnă Maestru în Slave Out ; MISO este linia de transmisie Slave to Master pentru date.

Unul dintre punctele principale ale protocolului SPI este configurația Master-Slave. Folosind SPI un dispozitiv poate fi definit ca Master pentru a controla mai multe dispozitive Slave. Master deține controlul total asupra dispozitivelor Slave prin protocolul SPI.

SPI este un protocol sincron, ceea ce înseamnă că comunicarea este legată de semnalul de ceas comun între Master și Slave. SPI poate controla mai multe dispozitive ca slave pe o singură linie de transmisie și recepție. Toate Slave sunt conectate la Master folosind comun MISO linie de primire împreună cu FUM o linie de transmisie comună. SCK este, de asemenea, linia de ceas comună între dispozitivele Master și Slave. Singura diferență între dispozitivele slave este că fiecare dispozitiv slave este controlat separat SS selectați linia. Aceasta înseamnă că fiecare slave are nevoie de un pin GPIO suplimentar de la placa Arduino, care va acționa ca linie de selecție pentru acel dispozitiv slave.

Unele dintre principalele puncte importante ale protocolului SPI sunt enumerate mai jos:

  • SPI este cel mai rapid protocol decât I2C și UART
  • Nu sunt necesari biți de pornire și oprire ca în UART, ceea ce înseamnă că este posibilă transmiterea continuă a datelor
  • Slave poate fi abordat cu ușurință datorită configurației simple Master Slave
  • Pentru fiecare Slave este ocupat un pin suplimentar pe placa Arduino. Practic 1 Master poate controla 4 dispozitive Slave
  • Confirmarea datelor lipsește, așa cum este folosită în UART
  • Configurarea Multiple Master nu este posibilă

Protocolul de comunicare I2C

Inter Integrated Circuit (I2C) este un alt protocol de comunicare folosit de plăcile Arduino. I2C este cel mai dificil și mai complicat protocol de implementat cu Arduino și alte dispozitive. În ciuda complicațiilor sale, oferă mai multe funcții care lipsesc în alte protocoale, cum ar fi mai multe configurații Master și multiple Slave. I2C permite conectarea a până la 128 de dispozitive la placa principală Arduino. Acest lucru este posibil numai deoarece I2C partajează un singur fir între toate dispozitivele Slave. I2C în Arduino utilizează un sistem de adrese, adică înainte de a trimite date către dispozitivul Slave, Arduino trebuie să selecteze dispozitivul Slave trimițând o adresă unică. I2C folosește doar două fire, reducând numărul total de pini Arduino, dar partea proastă a acestuia este că I2C este mai lent decât protocolul SPI.

Pin analog Arduino Pin I2C
A4 SDA
A5 SCL

La nivel hardware, I2C este limitat la doar două fire, unul pentru o linie de date cunoscută ca SDA (date seriale) și al doilea pentru linia de ceas SCL (Ceas serial). În starea de repaus, atât SDA, cât și SCL sunt trase în sus. Când datele trebuie transmise, aceste linii sunt reduse folosind circuite MOSFET. Folosind I2C în proiecte, este obligatoriu să folosiți rezistențe pull up în mod normal o valoare de 4,7Kohm. Aceste rezistențe de tragere asigură că atât liniile SDA, cât și SCL rămân ridicate la pornirea lor inactiv.

Unele dintre principalele puncte importante ale protocoalelor I2C sunt:

  • Numărul de pini necesari este foarte mic
  • Pot fi conectate mai multe dispozitive Master Slave
  • Foloseste doar 2 fire
  • Viteza este mai mică în comparație cu SPI datorită rezistențelor de tragere
  • Rezistoarele au nevoie de mai mult spațiu în circuit
  • Complexitatea proiectului crește odată cu creșterea numărului de dispozitive

Comparație între UART vs I2C vs SPI

Protocol UART SPI 2C
Viteză Cel mai lent Cel mai rapid Mai rapid decât UART
Numărul de dispozitive Până la 2 4 dispozitive Până la 128 de dispozitive
Sunt necesare fire 2(Tx,Rx) 4(SCK,FUM,OCHI,SS) 2(SDA,SCL)
Modul Duplex Modul Full Duplex Modul Full Duplex Half Duplex
Numărul de master-slave posibil Single Master-Single Slave Single Master-Multi Sclavi Mai mulți stăpâni-mai mulți sclavi
Complexitate Simplu Poate controla cu ușurință mai multe dispozitive Complex cu creșterea numărului de dispozitive
Bit de recunoaștere nu nu da

Concluzie

În acest articol, am acoperit o comparație cuprinzătoare a tuturor celor trei protocoale UART, SPI și I2C utilizate în Arduino. Cunoașterea tuturor protocoalelor este importantă, deoarece oferă oportunități nesfârșite de a integra mai multe dispozitive. Înțelegerea tuturor perifericelor de comunicare va economisi timp și va ajuta la optimizarea proiectelor conform protocolului corect.