Arduino sakaru protokols

Arduino Sakaru Protokols



Sakaru protokoli ir noteikumu kopums, kas ļauj ierīcēm sazināties un apmainīties ar datiem. Šie protokoli ir ļoti nozīmīgi Arduino saziņā, jo Arduino pastāvīgi sūta un saņem datus. Šo protokolu izmantošana palīdz Arduino aptvert kļūdu noteikšanu un iespējamās kļūdu atkopšanas metodes. Šie protokoli apvieno analogās un digitālās ierīces un ļauj izstrādāt vairākus projektus.

Arduino sakaru protokoli

Izmantojot sakaru protokolus, mēs varam nosūtīt un saņemt jebkuru sensora datus Arduino.

Daži vienkārši sensori, piemēram, infrasarkanais (IR), var tieši sazināties ar Arduino, bet daži sarežģītie sensori, piemēram, Wi-Fi modulis, SD kartes modulis un žiroskops, nevar tieši sazināties ar Arduino bez sakaru protokoliem. Tāpēc šie protokoli ir neatņemama Arduino komunikācijas sastāvdaļa.







Arduino tam ir pievienotas vairākas perifērijas ierīces; starp tiem ir trīs sakaru perifērijas ierīces, ko izmanto Arduino dēļos.



Arduino sakaru protokoli

Saziņa starp dažādām elektroniskām ierīcēm, piemēram, Arduino, ir standartizēta starp šiem trim protokoliem; tas ļauj dizaineriem viegli sazināties starp dažādām ierīcēm bez saderības problēmām. Šo trīs protokolu darbība ir tāda pati, jo tie kalpo vienam un tam pašam komunikācijas mērķim, taču to ieviešana ķēdē atšķiras. Papildu šo protokolu apraksts ir apskatīts turpmāk.







UART

UART ir pazīstams kā Universāls asinhronais uztvērēja raidītājs. UART ir sērijas sakaru protokols, kas nozīmē, ka datu biti tiek pārsūtīti secīgā formā viens pēc otra. Lai iestatītu UART sakarus, mums ir vajadzīgas divas līnijas. Viens ir Arduino plates Tx (D1) tapa, bet otrais ir Arduino plates Rx (D0) tapa. Tx pin ir paredzēts datu pārsūtīšanai uz ierīcēm, un Rx pin tiek izmantots datu saņemšanai. Dažādām Arduino plāksnēm ir vairākas UART tapas.

Arduino digitālā pin UART Pin
D1 Tx
D0 Rx

Lai izveidotu seriālo saziņu, izmantojot UART portu, mums ir jāpievieno divas ierīces zemāk parādītajā konfigurācijā:



Arduino Uno viens seriālais ports ir paredzēts saziņai, ko parasti dēvē par USB portu. Kā norāda nosaukums Universal Serial Bus, tas ir seriālais ports. Izmantojot USB portu, Arduino var izveidot saziņu ar datoriem. USB ports ir savienots ar Arduino borta tapām Tx un Rx. Izmantojot šīs tapas, mēs varam savienot jebkuru ārējo aparatūru, izņemot datoru, izmantojot USB. Arduino IDE nodrošina SoftwareSerial bibliotēku (SoftwareSerial.h) kas ļauj lietotājiem izmantot GPIO tapas kā Serial Tx un Rx tapas.

  • UART ir vienkārši darbināms ar Arduino
  • UART nav nepieciešams pulksteņa signāls
  • Lai novērstu datu zudumu, pārraides ātrums ir jāiestata 10% robežās no saziņas ierīcēm
  • Izmantojot UART, nav iespējamas vairākas ierīces ar Arduino Master Slave konfigurācijā
  • UART ir pusduplekss, kas nozīmē, ka ierīces nevar pārsūtīt un saņemt datus vienlaikus
  • Tikai divas ierīces vienlaikus var sazināties ar UART protokolu

Serial Peripheral Interface (SPI)

SPI ir seriālās perifērijas saskarnes akronīms, kas ir īpaši izstrādāts mikrokontrolleru saziņai ar tiem. SPI darbojas pilna dupleksa režīmā, kas nozīmē, ka SPI var sūtīt un saņemt datus vienlaicīgi. Salīdzinot ar UART un I2C, tā ir ātrākā komunikācijas perifērijas ierīce Arduino platēs. To parasti izmanto, ja nepieciešams liels datu pārraides ātrums, piemēram, LCD displejā un Micro SD karšu lietojumprogrammās.

Arduino SPI digitālās tapas ir iepriekš definētas. Arduino Uno SPI tapas konfigurācija ir šāda:

SPI līnija GPIO ICSP galvenes tapa
SCK 13 3
MISO 12 1
DŪMU vienpadsmit 4
SS 10
  • MOSI apzīmē Master Out Slave In , MOSI ir datu pārraides līnija no galvenā uz vergu.
  • SCK ir a Pulksteņa līnija kas nosaka pārraides ātrumu un sākuma beigu raksturlielumus.
  • SS apzīmē Slave Select ; SS līnija ļauj Master izvēlēties konkrētu Slave ierīci, kad tā darbojas vairākās Slave konfigurācijās.
  • MISO apzīmē Master in Slave Out ; MISO ir datu pārraides līnija no vergu uz galveno.

Viens no galvenajiem SPI protokola akcentiem ir Master-Slave konfigurācija. Izmantojot SPI, vienu ierīci var definēt kā galveno, lai kontrolētu vairākas Slave ierīces. Master pilnībā kontrolē Slave ierīces, izmantojot SPI protokolu.

SPI ir sinhronais protokols, kas nozīmē, ka saziņa ir saistīta ar kopēju pulksteņa signālu starp galveno un slaveno ierīci. SPI var kontrolēt vairākas ierīces kā vergu, izmantojot vienu pārraides un saņemšanas līniju. Visi vergi ir savienoti ar galveno, izmantojot kopīgu MISO saņemt līniju kopā ar DŪMU viena kopēja pārraides līnija. SCK ir arī kopējā pulksteņa līnija starp Master un Slave ierīcēm. Vienīgā atšķirība vergu ierīcēs ir tā, ka katru vergu ierīci kontrolē atsevišķi SS izvēlieties līniju. Tas nozīmē, ka katram Slave ir nepieciešama papildu GPIO tapa no Arduino plates, kas darbosies kā izvēles līnija konkrētajai Slave ierīcei.

Tālāk ir norādīti daži no galvenajiem SPI protokola aspektiem:

  • SPI ir ātrākais protokols nekā I2C un UART
  • Nav nepieciešami sākuma un beigu biti, piemēram, UART, kas nozīmē, ka ir iespējama nepārtraukta datu pārraide
  • Slave var viegli uzrunāt, pateicoties vienkāršai Master Slave konfigurācijai
  • Katram Slave uz Arduino plates ir aizņemta papildu tapa. Praktiski 1 Master var vadīt 4 Slave ierīces
  • Trūkst datu apstiprinājuma, kā tas tiek izmantots UART
  • Vairāku galveno konfigurācija nav iespējama

I2C sakaru protokols

Inter Integrated Circuit (I2C) ir vēl viens sakaru protokols, ko izmanto Arduino plates. I2C ir visgrūtākais un sarežģītākais protokols, ko ieviest ar Arduino un citām ierīcēm. Neskatoties uz sarežģītību, tas piedāvā vairākas funkcijas, kuru trūkst citos protokolos, piemēram, vairāku galveno un vairāku vergu konfigurācijās. I2C ļauj pieslēgt līdz 128 ierīcēm ar galveno Arduino plati. Tas ir iespējams tikai tāpēc, ka I2C koplieto vienu vadu starp visām Slave ierīcēm. Arduino I2C izmanto adrešu sistēmu, kas nozīmē, ka pirms datu nosūtīšanas uz Slave ierīci Arduino vispirms ir jāizvēlas Slave ierīce, nosūtot unikālu adresi. I2C izmanto tikai divus vadus, kas samazina kopējo Arduino tapu skaitu, taču tā sliktā puse ir tā, ka I2C ir lēnāks nekā SPI protokols.

Arduino analogā tapa I2C tapa
A4 SDA
A5 SCL

Aparatūras līmenī I2C ir ierobežots tikai ar diviem vadiem, no kuriem viens ir paredzēts datu līnijai, kas pazīstama kā SDA (sērijas dati) un otrais pulksteņa līnijai SCL (sērijas pulkstenis). Dīkstāves stāvoklī gan SDA, gan SCL tiek pacelti augstu. Kad dati ir jāpārsūta, šīs līnijas tiek samazinātas, izmantojot MOSFET shēmu. Izmantojot I2C projektos, ir obligāti jāizmanto uzvilkšanas rezistori, kuru vērtība parasti ir 4,7 Kohm. Šie uzvilkšanas rezistori nodrošina, ka gan SDA, gan SCL līnijas paliek augstu tukšgaitā.

Daži no galvenajiem I2C protokolu akcentiem ir:

  • Nepieciešamo tapu skaits ir ļoti mazs
  • Var pievienot vairākas Master Slaves ierīces
  • Izmanto tikai 2 vadus
  • Ātrums ir lēnāks, salīdzinot ar SPI, pateicoties uzvilkšanas rezistori
  • Rezistoriem ķēdē ir nepieciešams vairāk vietas
  • Projekta sarežģītība palielinās, palielinoties ierīču skaitam

Salīdzinājums starp UART vs I2C vs SPI

Protokols UART SPI 2C
Ātrums Lēnākais Ātrākais Ātrāk nekā UART
Ierīču skaits Līdz 2 4 ierīces Līdz 128 ierīcēm
Nepieciešami vadi 2 (Tx, Rx) 4 (SCK, SMOKE, EYES, SS) 2 (SDA, SCL)
Dupleksais režīms Pilns dupleksais režīms Pilns dupleksais režīms Pusduplekss
Iespējamais Master-Slave skaits Viens saimnieks – viens vergs Viens saimnieks — vairāki vergi Vairāki saimnieki-vairāki vergi
Sarežģītība Vienkārši Var viegli vadīt vairākas ierīces Komplekss ar ierīču pieaugumu
Atzinības bits

Secinājums

Šajā rakstā mēs esam aptvēruši visu trīs Arduino izmantoto protokolu UART, SPI un I2C visaptverošu salīdzinājumu. Ir svarīgi zināt visus protokolus, jo tas sniedz bezgalīgas iespējas integrēt vairākas ierīces. Visu sakaru perifērijas ierīču izpratne ietaupīs laiku un palīdzēs optimizēt projektus atbilstoši pareizajam protokolam.