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.


Bëhu i pari që komenton

Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.