Arduino ryšiai

Arduino duomenų perdavimo ryšius galima skirstyti į dvi grupes:

Lygiagretus ryšiai

Lygiagretus ryšys tarp Arduino ir periferinių įrenginių per įvesties/išvesties prievadus yra idealus sprendimas trumpesniems atstumams iki kelių metrų. Tačiau kitais atvejais, kai reikia užmegzti ryšį tarp dviejų įrenginių didesniais atstumais, lygiagretus ryšys negalimas. Lygiagrečios sąsajos vienu metu perduoda kelis bitus. Paprastai jiems reikalingos duomenų magistralės – perduodamos aštuoniais, šešiolika ar daugiau laidų. Duomenys perduodami didžiulėmis, dūžtančiomis 1 ir 0 bangomis.

Lygiagretusis bendravimas tikrai turi savo privalumų. Tai greitesnė duomenų duomenų perdavimo opcija  nei serijinė ir itin paprastai naudojama, bei lengvai įdiegiama. Tačiau tam reikia daug įvesties/išvesties (I/O) pin‘ų. Todėl dažnai pirmenybę teikiame serijiniam ryšiui, aukodami potencialų greitį, tam kad išsaugotume kuo daugiau laisvų pin jungčių.

Serijiniai ryšiai

Dauguma Arduino plokščių šiandien yra gaminamos su keletų skirtingų sistemų skirtų serijiniam duomenų perdavimui.

Kuri iš minėtų sistemų bus naudojama pasirenkama pagal keletą veiksnių:

  • Su kiek įrenginių turi mikrovaldiklis keistis duomenimis?
  • Kaip greitai turi būti keičiamasi duomenimis?
  • Koks atstumas tarp šių įrenginių?
  • Ar reikia duomenis siųsti ir gauti vienu metu?

Vienas iš svarbiausių dalykų, susijusių su serijiniu ryšiu, yra protokolas, kurio reikia griežtai laikytis. Tai yra taisyklių rinkinys, kuris turi būti taikomas taip, kad įrenginiai galėtų teisingai interpretuoti duomenis, kuriais jie keičiasi. Laimei, Arduino tuo pasirūpina automatiškai, kad programuotojo/vartotojo darbas sumažėtų iki paprasto rašymo (siunčiami duomenys) ir skaitymo (gaunami duomenys).

Serijinių ryšių tipai

Serijiniai ryšiai gali būti skirstomi:

  • Sinchroniniai – įrenginiai naudoja tą patį laikrodį, o jų laikas yra sinchronizuojamas tarpusavyje.
  • Asinchroniniai – įrenginiai turi savo laikrodžius o jų sužadinimas priklauso nuo išvesties.

Nesunku sužinoti, ar įrenginys yra sinchroninis, ar ne. Jei visiems prijungtiems įrenginiams suteikiamas tas pats laikrodis, jie yra sinchroniniai. Jei nėra laikrodžio linijos, ji yra asinchroninė. Pavyzdžiui, UART (Universal Asynchronous Receiver Transmitter) modulis yra asinchroninis.

Asinchroninis nuoseklusis protokolas turi keletą integruotų taisyklių. Šios taisyklės yra ne kas kita, kaip mechanizmai, padedantys užtikrinti patikimą, be klaidų vykstantį duomenų perdavimą. Šie mechanizmai, kuriuos gauname norėdami išvengti išorinio laikrodžio signalo, yra:

Sinchronizacijos bitai

Sinchronizavimo bitai yra du arba trys specialūs bitai, perduodami su kiekvienu duomenų paketu. Jie yra pradžios ir pabaigos bitai. Pagal savo pavadinimą šie bitai žymi atitinkamai paketo pradžią ir pabaigą.  Visada yra tik vienas pradžios bitas, bet sustabdymo bitų skaičių galima konfigūruoti į vieną arba du (nors paprastai paliekamas vienas).  Pradinis bitas visada rodomas tuščiosios eigos duomenų linija, einančiomis nuo 1 iki 0, o sustabdymo bitas (-ai) grįš į tuščiosios eigos būseną, laikant eilutę ties 1.

Sinchronizacijos bitas

Duomenų bitai

Duomenų kiekį kiekviename pakete galima nustatyti į bet kokį dydį nuo 5 iki 9 bitų. Žinoma, standartinis duomenų dydis yra jūsų pagrindinis 8 bitų baitas, tačiau ir kiti dydžiai gali būti naudojami. 7 bitų duomenų paketas gali būti efektyvesnis nei 8, ypač jei tik perkeliate 7 bitų ASCII simbolius.

Lygybės bitai

Vartotojas gali pasirinkti, ar turi būti lygybės bitas, ar ne, o jei taip, ar jis turi būti nelyginis, ar lyginis. Lygybės bitas yra 0, jei 1 skaičius tarp duomenų bitų yra lyginis. Nelyginis paritetas yra priešingas. 

Sparta

Sąvoka „bod rate“ naudojama per sekundę perduodamų bitų skaičiui [bps] žymėti. Atminkite, kad tai nurodo bitus, o ne baitus. Paprastai pagal protokolą reikalaujama, kad kiekvienas baitas būtų perduotas kartu su keliais valdymo bitais. Tai reiškia, kad vienas baitas nuosekliajame duomenų sraute gali būti sudarytas iš 11 bitų. Pavyzdžiui, jei perdavimo sparta yra 300 bps, per sekundę galima perduoti daugiausia 37 ir mažiausiai 27 baitus.

Pavyzdys

Įkėlę „Arduino“ eskizą į „Arduino“, viršutiniame dešiniajame „Arduino IDE“ skyriuje atidarykite serijinio monitoriaus paiešką.

Įveskite bet ką į viršutinį serijinio monitoriaus laukelį ir klaviatūroje paspauskite send arba enter. Tai nusiųs baitų seriją į Arduino.

Šis kodas grąžina viską, ką gauna kaip įvestį. Šis kodas privers „Arduino“ pateikti išvestį, atsižvelgiant į pateiktą įvestį.

void setup() {    

Serial.begin(9600); //nustatoma serijinė biblioteka pirkiriamas dažnis 9600

}  

void loop() {    

if(Serial.available()) //patikrinama ar baitų skaičius gali būti nuskaitomas  

{       

Serial.write(Serial.read()); //atspausdinamas gaunamas tekstas  

 }

}


Socialiniai tinklai
Pasiekite mūsų bendruomenę socialinėje erdvėje
Siekiame suburti tvirta ir draugiška bendruomene socialiniuose tinkluose, kuri bus pasiekiama ir atvira visiems.
Facebook
Youtube
Github
Codepen
LinkedIn
Instagram
Bendruomenė
Arduinopagalba.lt
Nesvarbu ar tu ieškai informacijos ar nori ją perduoti, mūsų bendruomenėje laukiami visi. Siekiame, kad projektas ne tik teiktų informaciją, bet ir padėtų surasti bendraminčius.
Prisijungti