Komunikácia RS485 s Arduino: Kompletný sprievodca s príkladmi

  • Pripojenie a použitie modulu MAX485 na nadviazanie komunikácie RS485 s Arduino.
  • Ako implementovať simplexnú, poloduplexnú a plne duplexnú komunikáciu pre rôzne potreby.
  • Ovládanie zariadení na rovnakej zbernici RS485 s viacerými Arduinos.

rs485

Sériová komunikácia je jedným z najbežnejších spôsobov výmeny údajov medzi elektronickými zariadeniami. Keď sa však zväčšia vzdialenosti alebo sa v prostredí vyskytne elektromagnetické rušenie, komunikačné signály môžu byť náchylné na chyby. Tu vstupuje do hry komunikačný štandard RS485, ktorý ponúka robustnú a efektívnu alternatívu. Arduino nám svojou všestrannosťou umožňuje plne využiť výhody tohto protokolu pomerne jednoduchým spôsobom.

V tomto článku uvidíme, ako možno implementovať komunikáciu RS485 medzi niekoľkými Arduinos pomocou modulov založených na integrovanom MAX485, čipe, ktorý konvertuje signály TTL (z Arduina) na RS485 a naopak. V tomto návode sa budeme zaoberať základnými konceptmi a praktickými príkladmi, ktoré vám umožnia implementovať simplexnú, poloduplexnú a plne duplexnú komunikáciu medzi mikrokontrolérmi Arduino, a vysvetlíme, ako môžete rozšíriť tento komunikačný systém tak, aby ovládal viacero zariadení v jednom. zbernica RS485.

Čo je RS485?

RS485 je komunikačný štandard široko používaný v priemysle, známy pre svoje robustnosť a jeho schopnosť odolávať veľká vzdialenosť prenos, a to aj v hlučnom priemyselnom prostredí. Na rozdiel od iných typov sériovej komunikácie, ako je RS232, umožňuje RS485 pripojenie viacerých zariadení na rovnakú zbernicu, vďaka čomu je ideálny pre aplikácie priemyselnej automatizácie a riadenia.

Tento protokol je odolný voči elektromagnetickému šumu vďaka tomu, že využíva a diferenciálny signalizačný systém, čo znamená, že údaje sa odosielajú cez dva vodiče, A a B, ktoré sú opačné verzie v napätí. To umožňuje jednoduché potlačenie akéhokoľvek šumu zachyteného v kábloch, čím sa zabezpečí integrita signálu.

Jednou z hlavných výhod RS485 je to podporuje vzdialenosti až 1200 metrov a dosahuje rýchlosť až 35 Mbps na krátke vzdialenosti, čo z neho robí ideálny protokol pre priemyselné a riadiace aplikácie v prostrediach, kde je potrebná dlhá kabeláž.

Komunikačné režimy RS485

pinout rs485

V komunikácii RS485 môžeme systém nakonfigurovať tromi rôznymi spôsobmi: simplex, poloduplex a plne duplex. Každý z nich má svoje špecifiká a je realizovaný podľa potrieb projektu.

Simplexná komunikácia

V simplexnom režime komunikácia prebieha iba jedným smerom, to znamená, že jedno zariadenie funguje ako vysielač a ďalšie podobné prijímač. To je užitočné v situáciách, keď chcete iba odosielať alebo prijímať dáta bez potreby spätnej väzby.

Môžeme napríklad nastaviť systém, v ktorom Arduino načíta hodnotu senzora a odošle ju do iného zariadenia, ktoré ju jednoducho prijme. V tomto prípade, keďže dáta putujú len jedným smerom, je možné upustiť od určitých prídavných ovládacích prvkov, vďaka čomu je systém jednoduchší a hospodárnejší.

Half-Duplex komunikácia

Väčšina aplikácií RS485 na Arduine je implementovaná v polovičnom duplexnom režime, pretože to len vyžaduje dva drôtya umožňuje odosielať aj prijímať dáta, aj keď nie súčasne. To znamená, že ak jedno zariadenie odosiela dáta, ostatné zariadenia musia byť v režime príjmu a naopak.

Ak chcete prepínať medzi režimami vysielania a príjmu, použite prídavné kolíky (RE/DE) na module MAX485, ktorý budete ovládať z kódu, aby ste určili, či má zariadenie v danom čase odosielať alebo prijímať.

Tento režim je obzvlášť užitočný, ak máte na rovnakej zbernici viacero zariadení, ktoré spolu potrebujú komunikovať, ale nie súčasne.

Plne duplexná komunikácia

V plne duplexnom režime môžu zariadenia odosielať a prijímať dáta súčasne. Ak však chcete implementovať plný duplex na RS485, dva páry točených drôtov, čo zvyšuje náklady a zložitosť elektroinštalácie. Okrem toho budete potrebovať dva moduly MAX485 pre každé zariadenie na samostatné spravovanie vysielacích a prijímacích kanálov.

Komponenty potrebné na komunikáciu RS485 s Arduino

Na implementáciu komunikačného systému RS485 na Arduino budete potrebovať nasledujúce komponenty:

  • Jedno alebo viac Arduino: Bude stačiť akýkoľvek model Arduino, ale v tomto návode ho použijeme Arduino UNO a Arduino MEGA ako príklady.
  • Moduly MAX485: Tieto moduly umožňujú konvertovať TTL signály z Arduina na RS485 a naopak. Sú veľmi lacné a ľahko sa dajú nájsť v obchodoch ako AliExpress alebo eBay.
  • Zakončovacie odpory: Rezistor medzi 120 ohmami je zvyčajne umiestnený na každom konci zbernice, aby sa zabránilo odrazom v signáli. Na krátke vzdialenosti sa bez nich zaobídete, no pri dlhších inštaláciách sú nevyhnutné pre zachovanie integrity signálu.
  • Twisted pair káble: Odporúča sa používať krútené dvojlinky, aby sa minimalizovalo elektromagnetické rušenie, najmä v hlučnom priemyselnom prostredí.

Všeobecná schéma zapojenia

Pripojte moduly MAX485 na Arduino je celkom jednoduché. Najdôležitejšie piny sú A a B, ktoré zodpovedajú linkám zbernice RS485. Tieto kolíky musia byť pripojené ku všetkým zariadeniam na zbernici. Modul má navyše piny RE a DE, ktoré ovládajú, či je modul v režime prijímača alebo vysielača.

Vo všeobecnosti sa moduly pripájajú k Arduinu takto:

  • VCC a GND modulu sa pripájajú k VCC a GND na Arduine.
  • DI (Data Input) modulu sa pripája k TX kolíku Arduina, ak má modul fungovať ako emitor.
  • RO (Receiver Output) modulu sa pripája k RX pinu Arduina, ak má modul fungovať ako prijímač.
  • DE a RE musia byť ovládané z digitálneho pinu Arduino, aby ste mohli prepínať medzi režimami vysielania a príjmu.

Ak potrebujete, aby modul fungoval iba ako vysielač alebo prijímač, môžete RE a DE pripojiť priamo na HIGH alebo LOW. Pri zložitejšej komunikácii, kde musí zariadenie prepínať medzi vysielaním a prijímaním, je však najlepšie ovládať tieto piny zo softvéru.

Príklady kódov pre komunikáciu RS485

Nižšie je uvedených niekoľko príkladov pokrývajúcich rôzne komunikačné konfigurácie s RS485 na Arduine.

Simplexná komunikácia

Kód vydavateľa

Pre základný simplexný systém, kde máme iba jedného odosielateľa a jedného príjemcu, môže kód odosielateľa vyzerať takto:

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

Kód prijímača

Prijímač jednoducho načíta údaje prichádzajúce cez sériový port:

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

Half-Duplex komunikácia

V tomto príklade implementujeme poloduplexný systém, kde zariadenia striedavo odosielajú a prijímajú dáta.

Kód učiteľa

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); } }

Otrocký kód

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); } }

Plne duplexná komunikácia

Na implementáciu plne duplexnej komunikácie budú potrebné dva moduly MAX485 na Arduino. Každý pár modulov bude spracovávať jednu dátovú linku: jednu na vysielanie a jednu na príjem.

Kód bude podobný ako v predchádzajúcich príkladoch, ale v tomto prípade by obe zariadenia vždy vysielali a prijímali súčasne.

Rozšírenie na viacero zariadení cez RS485

RS485 má možnosť pripojiť až 32 zariadení na jednu zbernicu a v špeciálnych prípadoch môže dosiahnuť viac. Vďaka tomu je vynikajúcou voľbou pre projekty zahŕňajúce viacero mikrokontrolérov alebo zariadení. Na identifikáciu každého z nich v sieti je bežné implementovať adresu alebo ID pre každé zariadenie.

V tomto prípade master odošle správu s adresou zariadenia, s ktorým chce komunikovať, a iba toto zariadenie bude mať na starosti spracovanie správy a poskytnutie odpovede.

K tomu sa pridáva možnosť využitia zložitejšie protokoly ako napríklad MODBUS, ktoré umožňujú vytváranie vysoko efektívnych a bezpečných sietí v tomto odvetví.

Pri domácich projektoch alebo menej náročných aplikáciách môžete každému Arduinu jednoducho priradiť identifikátor a nechať ho reagovať len na správy určené pre nich.


Buďte prvý komentár

Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.