Komunikace RS485 s Arduinem: Kompletní průvodce s příklady

  • Připojení a použití modulu MAX485 k navázání komunikace RS485 s Arduinem.
  • Jak implementovat simplexní, poloduplexní a plně duplexní komunikaci pro různé potřeby.
  • Ovládání zařízení na stejné sběrnici RS485 s více Arduiny.

rs485

Sériová komunikace je jedním z nejběžnějších způsobů výměny dat mezi elektronickými zařízeními. Když se však zvětší vzdálenosti nebo se v okolí vyskytne elektromagnetické rušení, komunikační signály mohou být náchylné k chybám. Zde vstupuje do hry komunikační standard RS485, který nabízí robustní a efektivní alternativu. Arduino nám svou všestranností umožňuje plně využít tento protokol celkem jednoduchým způsobem.

V tomto článku uvidíme, jak lze implementovat komunikaci RS485 mezi několika Arduiny pomocí modulů založených na integrovaném MAX485, čipu, který převádí signály TTL (z Arduina) na RS485 a naopak. V tomto tutoriálu probereme jak základní koncepty, tak praktické příklady, které vám umožní implementovat simplexní, poloduplexní a plně duplexní komunikaci mezi mikrokontroléry Arduino, a vysvětlíme, jak můžete tento komunikační systém rozšířit tak, aby obsluhoval více zařízení v jediném sběrnice RS485.

Co je RS485?

RS485 je komunikační standard široce používaný v průmyslu, známý pro své robustnost a jeho schopnost odolat velká vzdálenost přenos, a to i v hlučném průmyslovém prostředí. Na rozdíl od jiných typů sériové komunikace, jako je RS232, umožňuje RS485 připojení více zařízení na stejnou sběrnici, takže je ideální pro aplikace průmyslové automatizace a řízení.

Tento protokol je odolný vůči elektromagnetickému šumu díky tomu, že používá a diferenciální signalizační systém, což znamená, že data jsou odesílána přes dva vodiče, A a B, což jsou verze opačného napětí. To umožňuje snadno potlačit jakýkoli šum zachycený v kabelech a zajistit integritu signálu.

Jednou z hlavních výhod RS485 je to podporuje vzdálenosti až 1200 metrů a rychlostí až 35 Mbps na krátké vzdálenosti, což z něj dělá ideální protokol pro průmyslové a řídicí aplikace v prostředích, kde je nutná dlouhá kabeláž.

Komunikační režimy RS485

pinout rs485

V komunikaci RS485 můžeme systém konfigurovat třemi různými způsoby: simplexní, poloduplexní a plně duplexní. Každý z nich má svá specifika a je realizován podle potřeb projektu.

Simplexní komunikace

V simplexním režimu probíhá komunikace pouze jedním směrem, to znamená, že jedno zařízení funguje jako emitenta a další podobné přijímač. To je užitečné v situacích, kdy chcete pouze odesílat nebo přijímat data bez potřeby zpětné vazby.

Můžeme například nastavit systém, kde Arduino načte hodnotu senzoru a odešle ji do jiného zařízení, které ji jednoduše přijme. V tomto případě, protože data putují pouze jedním směrem, lze upustit od určitých přídavných ovládacích prvků, čímž je systém jednodušší a ekonomičtější.

Half-Duplex komunikace

Většina aplikací RS485 na Arduinu je implementována v poloduplexním režimu, protože to pouze vyžaduje dva drátya umožňuje odesílat i přijímat data, i když ne současně. To znamená, že pokud jedno zařízení odesílá data, ostatní zařízení musí být v režimu příjmu a naopak.

Pro přepínání mezi režimy vysílání a příjmu použijte přídavné kolíky (RE/DE) na modulu MAX485, který budete ovládat z kódu, abyste určili, zda má zařízení v daný okamžik odesílat nebo přijímat.

Tento režim je zvláště užitečný, pokud máte na stejné sběrnici více zařízení, která spolu potřebují komunikovat, ale ne současně.

Plně duplexní komunikace

V plně duplexním režimu mohou zařízení odesílat a přijímat data současně. Chcete-li však implementovat plný duplex v RS485, dva páry kroucených drátů, což zvyšuje náklady a složitost elektroinstalace. Navíc budete potřebovat dva moduly MAX485 pro každé zařízení, abyste mohli samostatně spravovat vysílací a přijímací kanály.

Komponenty potřebné pro komunikaci RS485 s Arduinem

K implementaci komunikačního systému RS485 na Arduinu budete potřebovat následující komponenty:

  • Jedno nebo více Arduino: Bude stačit jakýkoli model Arduino, ale v tomto tutoriálu jej použijeme Arduino UNO a Arduino MEGA jako příklady.
  • Moduly MAX485: Tyto moduly umožňují převádět signály TTL z Arduina na RS485 a naopak. Jsou velmi levné a snadno se dají najít v obchodech jako AliExpress nebo eBay.
  • Zakončovací rezistory: Na každém konci sběrnice je obvykle umístěn odpor mezi 120 ohmy, aby se zabránilo odrazům v signálu. Na krátké vzdálenosti je možné se bez nich obejít, ale v delších instalacích jsou nezbytné pro zachování integrity signálu.
  • Twisted pair kabely: Pro minimalizaci elektromagnetického rušení se doporučuje používat kroucené dvoulinky, zejména v hlučném průmyslovém prostředí.

Obecné schéma zapojení

Připojte moduly MAX485 na Arduino je docela jednoduché. Nejdůležitější piny jsou A a B, které odpovídají linkám sběrnice RS485. Tyto piny musí být připojeny ke všem zařízením na sběrnici. Modul má navíc piny RE a DE, které řídí, zda je modul v režimu přijímače nebo vysílače.

Obecně se připojení modulů k Arduinu provádí následovně:

  • VCC a GND modulu se připojují k VCC a GND na Arduinu.
  • DI (Data Input) modulu se připojuje k TX pinu Arduina, pokud má modul fungovat jako emitor.
  • RO (Receiver Output) modulu se připojuje k RX pinu Arduina, pokud má modul fungovat jako přijímač.
  • DE a RE musí být ovládány z digitálního pinu Arduino, aby bylo možné přepínat mezi režimy vysílání a příjmu.

Pokud potřebujete, aby modul fungoval pouze jako vysílač nebo přijímač, můžete RE a DE připojit přímo k HIGH nebo LOW. Pro složitější komunikaci, kde se zařízení musí přepínat mezi vysíláním a příjmem, je však nejlepší ovládat tyto piny ze softwaru.

Příklady kódů pro komunikaci RS485

Níže je uvedeno několik příkladů pokrývajících různé konfigurace komunikace s RS485 na Arduinu.

Simplexní komunikace

Kód vydavatele

Pro základní simplexní systém, kde máme pouze jednoho odesílatele a jednoho příjemce, může kód odesílatele vypadat takto:

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

Kód přijímače

Přijímač jednoduše načte data přicházející přes sériový port:

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

Half-Duplex komunikace

V tomto příkladu implementujeme poloduplexní systém, kde se zařízení střídají mezi odesíláním a přijímáním dat.

Kód učitele

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

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

Plně duplexní komunikace

Pro implementaci plně duplexní komunikace budou potřeba dva moduly MAX485 na Arduino. Každý pár modulů bude obsluhovat jednu datovou linku: jednu pro vysílání a jednu pro příjem.

Kód bude podobný jako v předchozích příkladech, ale v tomto případě by obě zařízení vždy vysílala a přijímala současně.

Rozšíření na více zařízení na RS485

RS485 má schopnost připojit až 32 zařízení na jednu sběrnici a ve speciálních případech může dosáhnout více. Díky tomu je vynikající volbou pro projekty zahrnující více mikrokontrolérů nebo zařízení. Pro identifikaci každého z nich v síti je běžné implementovat adresu nebo ID pro každé zařízení.

V tomto případě master odešle zprávu s adresou zařízení, se kterým chce komunikovat, a pouze toto zařízení bude mít na starosti zpracování zprávy a poskytnutí odpovědi.

K tomu se přidává možnost použití složitější protokoly jako je MODBUS, které umožňují vytváření vysoce efektivních a bezpečných sítí v průmyslu.

Pro domácí projekty nebo méně náročné aplikace můžete každému Arduinu jednoduše přiřadit identifikátor a nechat je reagovat pouze na zprávy pro ně určené.


Začněte konverzaci

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.