Arduino ryšio protokolas

Arduino Rysio Protokolas



Ryšio protokolai yra taisyklių rinkinys, leidžiantis įrenginiams bendrauti ir keistis duomenimis. Šie protokolai yra labai svarbūs Arduino komunikacijoje, nes Arduino nuolat siunčia ir gauna duomenis. Šių protokolų naudojimas padeda „Arduino“ aptikti klaidų aptikimą ir galimus klaidų atkūrimo metodus. Šie protokolai sujungia analoginius ir skaitmeninius įrenginius ir leidžia kurti kelis projektus.

Arduino ryšio protokolai

Naudodami komunikacijos protokolus galime siųsti ir gauti bet kokius jutiklio duomenis Arduino.

Kai kurie paprasti jutikliai, tokie kaip infraraudonųjų spindulių (IR), gali tiesiogiai susisiekti su „Arduino“, tačiau kai kurie sudėtingi jutikliai, tokie kaip „Wi-Fi“ modulis, SD kortelės modulis ir giroskopas, negali tiesiogiai susisiekti su „Arduino“ be jokių ryšio protokolų. Taigi, todėl šie protokolai yra neatsiejama Arduino komunikacijos dalis.







„Arduino“ turi kelis išorinius įrenginius; tarp jų yra trys ryšio periferiniai įrenginiai, naudojami Arduino plokštėse.



Arduino ryšio protokolai

Ryšys tarp skirtingų elektroninių įrenginių, tokių kaip Arduino, yra standartizuotas tarp šių trijų protokolų; tai leidžia dizaineriams lengvai bendrauti tarp skirtingų įrenginių be jokių suderinamumo problemų. Šių trijų protokolų veikimas yra toks pat, nes jie tarnauja tam pačiam ryšio tikslui, tačiau skiriasi jų įgyvendinimas grandinėje. Tolesnis šių protokolų aprašymas aptariamas toliau.







UART

UART yra žinomas kaip Universalus asinchroninis imtuvas siųstuvas. UART yra nuoseklaus ryšio protokolas, kuris reiškia, kad duomenų bitai perduodami nuosekliai vienas po kito. Norėdami nustatyti UART ryšį, mums reikia dviejų linijų. Vienas yra Arduino plokštės Tx (D1) kaištis, o antrasis - Arduino plokštės Rx (D0) kaištis. Tx kontaktas skirtas duomenims perduoti į įrenginius, o Rx kaištis naudojamas duomenims priimti. Skirtingos Arduino plokštės turi kelis UART kaiščius.

Arduino skaitmeninis PIN kodas UART kaištis
D1 Tx
D0 Rx

Norėdami užmegzti nuoseklųjį ryšį naudodami UART prievadą, turime prijungti du įrenginius pagal žemiau pateiktą konfigūraciją:



„Arduino Uno“ vienas nuoseklusis prievadas skirtas ryšiui, kuris paprastai vadinamas USB prievadu. Kaip rodo pavadinimas, Universal Serial Bus, tai yra nuoseklusis prievadas. Naudojant USB prievadą Arduino galima užmegzti ryšį su kompiuteriais. USB prievadas yra prijungtas prie „Arduino“ Tx ir Rx kaiščių. Naudodami šiuos kaiščius, per USB galime prijungti bet kokią išorinę aparatinę įrangą, išskyrus kompiuterį. „Arduino IDE“ teikia „SoftwareSerial“ biblioteką (SoftwareSerial.h) kuri leidžia vartotojams naudoti GPIO kaiščius kaip Serial Tx ir Rx kaiščius.

  • UART paprasta valdyti su Arduino
  • UART nereikia jokio laikrodžio signalo
  • Norint išvengti duomenų praradimo, perdavimo sparta turi būti nustatyta neviršijant 10 % ryšio įrenginių
  • Naudojant UART, negalima naudoti kelių įrenginių, kuriuose yra „Arduino“ pagrindinėje Slave konfigūracijoje
  • UART yra pusiau dvipusis, o tai reiškia, kad įrenginiai negali perduoti ir priimti duomenų tuo pačiu metu
  • Tik du įrenginiai vienu metu gali susisiekti su UART protokolu

Serijinė periferinė sąsaja (SPI)

SPI yra nuosekliosios periferinės sąsajos akronimas, specialiai sukurtas mikrovaldikliams bendrauti su jais. SPI veikia pilno dvipusio ryšio režimu, o tai reiškia, kad SPI gali siųsti ir gauti duomenis vienu metu. Palyginti su UART ir I2C, tai greičiausias Arduino plokščių komunikacijos periferinis įrenginys. Jis dažniausiai naudojamas ten, kur reikalingas didelis duomenų perdavimo greitis, pvz., LCD ekrane ir „Micro SD“ kortelių programose.

Arduino SPI skaitmeniniai kaiščiai yra iš anksto nustatyti. Arduino Uno SPI kaiščio konfigūracija yra tokia:

SPI linija GPIO ICSP antraštės PIN kodas
SCK 13 3
MISO 12 1
DŪMAI vienuolika 4
SS 10
  • MOSI reiškia Master Out Slave In , MOSI yra duomenų perdavimo linija, skirta nuo pagrindinio iki vergo.
  • SCK yra a Laikrodžio linija kuri apibrėžia perdavimo greitį ir pradžios pabaigos charakteristikas.
  • SS reiškia Slave Select ; SS linija leidžia pagrindiniam valdikliui pasirinkti konkretų Slave įrenginį, kai jis veikia keliose Slave konfigūracijose.
  • MISO reiškia Master in Slave Out ; MISO yra duomenų perdavimo linija iš vergo į pagrindinį.

Vienas iš pagrindinių SPI protokolo akcentų yra Master-Slave konfigūracija. Naudojant SPI vieną įrenginį galima apibrėžti kaip pagrindinį, kad būtų galima valdyti kelis Slave įrenginius. Master visiškai valdo Slave įrenginius per SPI protokolą.

SPI yra sinchroninis protokolas, o tai reiškia, kad ryšys yra susietas su bendru laikrodžio signalu tarp pagrindinio ir pavaldinio. SPI gali valdyti kelis įrenginius kaip Slave per vieną perdavimo ir priėmimo liniją. Visi vergai yra prijungti prie šeimininko naudojant bendrą MISO gauti liniją kartu su DŪMAI viena bendra perdavimo linija. SCK taip pat yra įprasta laikrodžio linija tarp pagrindinio ir pavaldinio įrenginių. Vienintelis pavaldinių įrenginių skirtumas yra tas, kad kiekvienas valdomas įrenginys yra valdomas atskirai SS pasirinkite eilutę. Tai reiškia, kad kiekvienam Slave reikalingas papildomas GPIO kaištis iš Arduino plokštės, kuris veiks kaip pasirinkimo linija tam konkrečiam Slave įrenginiui.

Kai kurie pagrindiniai SPI protokolo akcentai yra išvardyti žemiau:

  • SPI yra greičiausias protokolas nei I2C ir UART
  • Nereikia pradžios ir pabaigos bitų, kaip UART, o tai reiškia, kad galimas nuolatinis duomenų perdavimas
  • Slave gali būti lengvai kreipiamasi dėl paprastos Master Slave konfigūracijos
  • Kiekvienam Slave Arduino plokštėje yra užimtas papildomas kaištis. Praktiškai 1 Master gali valdyti 4 Slave įrenginius
  • Trūksta duomenų patvirtinimo, kaip naudojamas UART
  • Kelių pagrindinių konfigūracijų negalima

I2C ryšio protokolas

„Inter Integrated Circuit“ (I2C) yra dar vienas „Arduino“ plokščių naudojamas ryšio protokolas. I2C yra sunkiausias ir sudėtingiausias protokolas, kurį galima įdiegti naudojant Arduino ir kitus įrenginius. Nepaisant sudėtingumo, jis siūlo daugybę funkcijų, kurių trūksta kituose protokoluose, pvz., keliose pagrindinės ir kelių vergų konfigūracijose. I2C leidžia prie pagrindinės Arduino plokštės prijungti iki 128 įrenginių. Tai įmanoma tik todėl, kad I2C dalijasi vienu laidu tarp visų Slave įrenginių. „Arduino“ „I2C“ naudoja adresų sistemą, o tai reiškia, kad prieš siųsdamas duomenis į „Slave“ įrenginį, „Arduino“ pirmiausia turi pasirinkti „Slave“ įrenginį, siųsdamas unikalų adresą. I2C naudoja tik du laidus, kurie sumažina bendrą Arduino kaiščių skaičių, tačiau blogoji jo pusė yra ta, kad I2C yra lėtesnis nei SPI protokolas.

Arduino analoginis kaištis I2C kaištis
A4 SDA
A5 SCL

Techninės įrangos lygiu I2C yra apribotas tik dviem laidais, vienas skirtas duomenų linijai, žinomai kaip SDA (serijiniai duomenys) o antrasis skirtas Laikrodžio linijai SCL (serijinis laikrodis). Tuščiosios eigos būsenoje tiek SDA, tiek SCL pakeliami aukštai. Kai reikia perduoti duomenis, šios linijos sumažinamos naudojant MOSFET grandinę. Naudojant I2C projektuose, privaloma naudoti traukimo rezistorius, kurių vertė paprastai yra 4,7 Kohm. Šie pakėlimo rezistoriai užtikrina, kad tiek SDA, tiek SCL linijos išliktų aukštos tuščiosios eigos paleidimo metu.

Kai kurie pagrindiniai I2C protokolų akcentai yra šie:

  • Reikalingų kaiščių skaičius yra labai mažas
  • Galima prijungti kelis Master Slaves įrenginius
  • Naudoja tik 2 laidus
  • Greitis yra lėtesnis, palyginti su SPI dėl pakeliamų rezistorių
  • Rezistoriams grandinėje reikia daugiau vietos
  • Projekto sudėtingumas didėja didėjant įrenginių skaičiui

UART ir I2C ir SPI palyginimas

protokolas UART SPI 2C
Greitis Lėčiausias Greičiausias Greičiau nei UART
Įrenginių skaičius Iki 2 4 įrenginiai Iki 128 įrenginių
Reikalingi laidai 2 (Tx, Rx) 4 (SCK, SMOKE, EYES, SS) 2 (SDA, SCL)
Dvipusis režimas Visas dvipusis režimas Visas dvipusis režimas Pusiau dvipusis
Galimas šeimininkų-vergų skaičius Vienas šeimininkas – vienas vergas Vienas šeimininkas – keli vergai Keli šeimininkai – keli vergai
Sudėtingumas Paprasta Gali lengvai valdyti kelis įrenginius Sudėtingas su įrenginių padidėjimu
Pripažinimo bitė Ne Ne Taip

Išvada

Šiame straipsnyje mes išsamiai palyginome visus tris Arduino naudojamus protokolus UART, SPI ir I2C. Svarbu žinoti visus protokolus, nes tai suteikia begalines galimybes integruoti kelis įrenginius. Suprasdami visus komunikacijos periferinius įrenginius sutaupysite laiko ir padėsite optimizuoti projektus pagal teisingą protokolą.