RS485 Komunikimi me Arduino: Udhëzues i plotë me shembuj

  • Lidhja dhe pĂ«rdorimi i modulit MAX485 pĂ«r tĂ« vendosur komunikimin RS485 me Arduino.
  • Si tĂ« zbatoni komunikimin simplex, gjysmĂ« dupleks dhe full-duplex pĂ«r nevoja tĂ« ndryshme.
  • Kontrolli i pajisjeve nĂ« tĂ« njĂ«jtin autobus RS485 me shumĂ« Arduinos.

rs485

Komunikimi serial është një nga mënyrat më të zakonshme të shkëmbimit të të dhënave ndërmjet pajisjeve elektronike. Megjithatë, kur distancat rriten ose mjedisi ka ndërhyrje elektromagnetike, sinjalet e komunikimit mund të jenë të prirur për gabime. Këtu hyn në lojë standardi i komunikimit RS485, duke ofruar një alternativë të fortë dhe efektive. Arduino, me shkathtësinë e tij, na lejon të përfitojmë plotësisht nga ky protokoll në një mënyrë mjaft të thjeshtë.

Në këtë artikull, ne do të shohim se si komunikimi RS485 mund të zbatohet midis disa Arduinos duke përdorur module të bazuara në MAX485 të integruar, një çip që konverton sinjalet TTL (nga Arduino) në RS485 dhe anasjelltas. Përgjatë këtij tutoriali, ne do të mbulojmë konceptet bazë dhe shembujt praktikë që do t'ju lejojnë të zbatoni komunikimin simplex, gjysmë dupleks dhe full-duplex midis mikrokontrolluesve Arduino dhe të shpjegojmë se si mund ta zgjeroni këtë sistem komunikimi për të trajtuar pajisje të shumta në një të vetme. autobus RS485.

Çfarë është RS485?

RS485 është një standard komunikimi i përdorur gjerësisht në industri, i njohur për të qëndrueshmëri dhe aftësinë e tij për të përballuar distancë e madhe transmetimi, edhe në mjedise industriale të zhurmshme. Ndryshe nga llojet e tjera të komunikimit serik, si RS232, RS485 lejon që disa pajisje të lidhen në të njëjtin autobus, duke e bërë atë ideal për automatizimin industrial dhe aplikacionet e kontrollit.

Ky protokoll është rezistent ndaj zhurmës elektromagnetike falë faktit se përdor a sistemi i sinjalizimit diferencial, që do të thotë se të dhënat dërgohen me dy tela, A dhe B, të cilët janë versione të kundërta në tension. Kjo lejon që çdo zhurmë e marrë në kabllo të anulohet lehtësisht, duke siguruar integritetin e sinjalit.

Një nga avantazhet kryesore të RS485 është se mbështet distancat deri në 1200 metra dhe shpejton deri në 35 Mbps në distanca të shkurtra, duke e bërë atë një protokoll ideal për aplikime industriale dhe të kontrollit në mjedise ku kablloja e gjatë është e nevojshme.

Mënyrat e komunikimit RS485

rs485 pinout

Në komunikimin RS485, ne mund ta konfigurojmë sistemin në tre mënyra të ndryshme: simplex, gjysmë dupleks dhe full-duplex. Secili ka veçoritë e veta dhe zbatohet sipas nevojave të projektit.

Simplex Communication

Në modalitetin simplex, komunikimi shkon vetëm në një drejtim, domethënë një pajisje vepron si transmetues dhe një tjetër si receptor. Kjo është e dobishme në situatat kur thjesht dëshironi të dërgoni ose merrni të dhëna pa pasur nevojë për komente.

Për shembull, ne mund të konfigurojmë një sistem ku një Arduino lexon një vlerë sensori dhe e dërgon atë në një pajisje tjetër që thjesht e merr atë. Në këtë rast, duke qenë se ka vetëm të dhëna që udhëtojnë në një drejtim, disa elementë shtesë kontrolli mund të shpërndahen, duke e bërë sistemin më të thjeshtë dhe më ekonomik.

Komunikimi Half-Duplex

Shumica e aplikacioneve RS485 në Arduino zbatohen në modalitetin gjysmë dupleks sepse kjo kërkon vetëm dy tela, dhe ju lejon të dërgoni dhe të merrni të dhëna, edhe pse jo njëkohësisht. Kjo do të thotë, nëse një pajisje dërgon të dhëna, pajisjet e tjera duhet të jenë në modalitetin e pritjes dhe anasjelltas.

Për të kaluar ndërmjet mënyrave të transmetimit dhe marrjes, përdorni kunjat shtesë (RE/DE) në modulin MAX485, të cilin do ta kontrolloni nga kodi për të përcaktuar nëse pajisja duhet të dërgojë ose marrë në çdo kohë të caktuar.

Kjo mënyrë është veçanërisht e dobishme nëse keni shumë pajisje në të njëjtin autobus që duhet të komunikojnë me njëra-tjetrën, por jo njëkohësisht.

Komunikimi Full-Duplex

Në modalitetin full-duplex, pajisjet mund të dërgojnë dhe marrin të dhëna në të njëjtën kohë. Megjithatë, për të implementuar full-duplex në RS485, dy palë tela të përdredhur, gjë që rrit koston dhe kompleksitetin e instalimeve elektrike. Për më tepër, do t'ju duhen dy module MAX485 për secilën pajisje për të menaxhuar veçmas kanalet e transmetimit dhe të marrjes.

Komponentët e kërkuar për komunikimin RS485 me Arduino

Për të zbatuar një sistem komunikimi RS485 në Arduino, do t'ju nevojiten komponentët e mëposhtëm:

  • NjĂ« ose mĂ« shumĂ« Arduinos: Çdo model Arduino do tĂ« bĂ«jĂ«, por nĂ« kĂ«tĂ« tutorial ne do tĂ« pĂ«rdorim Arduino UNO dhe Arduino MEGA si shembuj.
  • Modulet MAX485: KĂ«to module ju lejojnĂ« tĂ« konvertoni sinjalet TTL nga Arduino nĂ« RS485 dhe anasjelltas. Ato janĂ« shumĂ« tĂ« lira dhe tĂ« lehta pĂ«r t'u gjetur nĂ« dyqane si AliExpress ose eBay.
  • Rezistenca e pĂ«rfundimit: NjĂ« rezistencĂ« prej 120 ohms zakonisht vendoset nĂ« çdo skaj tĂ« autobusit pĂ«r tĂ« shmangur reflektimet nĂ« sinjal. NĂ« distanca tĂ« shkurtra, Ă«shtĂ« e mundur tĂ« bĂ«het pa to, por nĂ« instalimet mĂ« tĂ« gjata ato janĂ« thelbĂ«sore pĂ«r tĂ« ruajtur integritetin e sinjalit.
  • Kabllot me çifte tĂ« pĂ«rdredhura: Rekomandohet pĂ«rdorimi i kabllove me çifte tĂ« pĂ«rdredhura pĂ«r tĂ« minimizuar ndĂ«rhyrjet elektromagnetike, veçanĂ«risht nĂ« mjedise industriale me zhurmĂ«.

Diagrami i përgjithshëm i lidhjes

Lidhni modulet MAX485 për një Arduino është mjaft e thjeshtë. Kunjat më të rëndësishme janë A dhe B, të cilat korrespondojnë me linjat e autobusëve RS485. Këto kunja duhet të lidhen me të gjitha pajisjet në autobus. Për më tepër, moduli ka kunjat RE dhe DE që kontrollojnë nëse moduli është në modalitetin marrës ose transmetues.

Në përgjithësi, lidhja e moduleve me Arduino bëhet si më poshtë:

  • VCC dhe GND e modulit lidhen me VCC dhe GND nĂ« Arduino.
  • DI (Hyrja e tĂ« dhĂ«nave) e modulit lidhet me pinin TX tĂ« Arduino nĂ«se moduli do tĂ« veprojĂ« si njĂ« emetues.
  • RO (Dalja e MarrĂ«sit) e modulit lidhet me pinin RX tĂ« Arduino nĂ«se moduli do tĂ« veprojĂ« si marrĂ«s.
  • DE dhe RE duhet tĂ« kontrollohen nga njĂ« pin dixhital Arduino pĂ«r tĂ« kaluar midis mĂ«nyrave tĂ« transmetimit dhe marrjes.

Nëse ju nevojitet vetëm moduli që të funksionojë si dërgues ose marrës, mund të lidhni RE dhe DE direkt me LARTË ose LOW. Megjithatë, për komunikime më komplekse ku pajisja duhet të kalojë ndërmjet transmetimit dhe marrjes, është mirë që këto kunja të kontrollohen nga softueri.

Shembuj kodesh për komunikimin RS485

Më poshtë janë disa shembuj që mbulojnë konfigurimet e ndryshme të komunikimit me RS485 në Arduino.

Simplex Communication

Kodi i lëshuesit

Për një sistem bazë simplex ku kemi vetëm një dërgues dhe një marrës, kodi për dërguesin mund të duket si ky:

void setup() { Serial.begin(9600); } void loop() { Serial.write(analogRead(0)); delay(500); }

Kodi i marrësit

Marrësi thjesht do të lexojë të dhënat që vijnë përmes portës serike:

void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { int data = Serial.read(); Serial.println(data); } }

Komunikimi Half-Duplex

Në këtë shembull, ne implementojmë një sistem gjysmë dupleks ku pajisjet alternojnë mes dërgimit dhe marrjes së të dhënave.

Kodi i mësuesit

const int reDePin = 2; void setup() { pinMode(reDePin, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(reDePin, HIGH); Serial.write('H'); delay(100); digitalWrite(reDePin, LOW); if (Serial.available()) { int data = Serial.read(); Serial.println(data); } }

Kodi i skllevërve

const int reDePin = 2; void setup() { pinMode(reDePin, OUTPUT); Serial.begin(9600); } void loop() { digitalWrite(reDePin, LOW); if (Serial.available()) { int data = Serial.read(); delay(100); digitalWrite(reDePin, HIGH); Serial.write(data + 1); } }

Komunikimi Full-Duplex

Për të zbatuar komunikimin full-duplex, do të nevojiten dy module MAX485 për Arduino. Çdo palë modulesh do të trajtojë një linjë të dhënash: një për transmetim dhe një për marrjen.

Kodi do të jetë i ngjashëm me shembujt e mëparshëm, por në këtë rast të dyja pajisjet gjithmonë do të transmetojnë dhe marrin njëkohësisht.

Zgjerimi në pajisje të shumta në RS485

RS485 ka aftësinë për të lidhur deri në 32 pajisje në një autobus të vetëm dhe në raste të veçanta mund të arrijë më shumë. Kjo e bën atë një zgjedhje të shkëlqyer për projektet që përfshijnë shumë mikrokontrollues ose pajisje. Për të identifikuar secilën prej tyre në rrjet, është e zakonshme të zbatohet një adresë ose ID për secilën pajisje.

Në këtë rast, master do të dërgojë një mesazh me adresën e pajisjes me të cilën dëshiron të komunikojë dhe vetëm ajo pajisje do të jetë përgjegjëse për përpunimin e mesazhit dhe dhënien e përgjigjes.

Kësaj i shtohet mundësia e përdorimit protokolle më komplekse të tilla si MODBUS, të cilat lejojnë krijimin e rrjeteve shumë efikase dhe të sigurta në industri.

Për projektet e shtëpisë ose aplikacionet më pak kërkuese, thjesht mund t'i caktoni një identifikues secilit Arduino dhe t'i bëni ata t'u përgjigjen vetëm mesazheve të destinuara për ta.