- Rozdiel medzi komunikáciou UART a RS485
- Súčasti sú povinné
- Schéma zapojenia pre káblovú komunikáciu na veľké vzdialenosti
- Prevodníkový modul MAX485 UART-RS485
- Kábel Ethernet CAT-6E
- Vysvetlenie kódu Arduino
- Záver
Vývojové dosky pre mikrokontroléry ako Arduino, Raspberry Pi, NodeMCU, ESP8266, MSP430 atď. Používame už dlho v našich malých projektoch, kde vzdialenosť medzi snímačmi a doskou väčšinou nie je väčšia ako niekoľko centimetrov a na tieto vzdialenosti sa komunikácia medzi rôznymi modulmi snímačov, relé, akčnými členmi a ovládačmi dá ľahko uskutočniť pomocou jednoduchých prepojovacích vodičov bez obáv zo skreslenia signálu v médiu a prenikania elektrických zvukov do neho. Ale ak staviate riadiaci systém s týmito vývojovými doskami na vzdialenosť väčšiu ako 10 až 15 metrov, mali by ste vziať do úvahy hluk a výkon signálu, pretože ak chcete, aby váš systém fungoval spoľahlivo, nemôžete si dovoliť stratiť údaje počas prenosu.
Existuje veľa rôznych typov sériových komunikačných protokolov ako I2C a SPI, ktoré je možné ľahko implementovať pomocou Arduina. Dnes sa pozrieme na ďalší najbežnejšie používaný protokol s názvom RS485, ktorý sa veľmi často používa v priemyselných prostrediach s vysokým šumom na prenos dát. veľká vzdialenosť. V tomto výučbe sa dozvieme o komunikačnom protokole RS485 a o tom, ako ho implementovať s dvomi Arduino Nano, ktoré máme so sebou, a ako používať konverzný modul MAX485 RS485 na UART. Predtým sme tiež uskutočňovali komunikáciu MAX485 s Arduinom a tiež komunikáciu MAX485 s Raspberry pi. Môžete si ich tiež pozrieť, ak máte záujem.
Rozdiel medzi komunikáciou UART a RS485
Väčšina lacných senzorov a ďalších modulov ako GPS, Bluetooth, RFID, ESP8266 atď., Ktoré sa bežne používajú s Arduinom, využíva Raspberry Pi na trhu komunikáciu založenú na UART TTL, pretože vyžaduje iba 2 vodiče TX (vysielač) a RX (Prijímač). Nejde o štandardný komunikačný protokol, ale o fyzický obvod, pomocou ktorého môžete vysielať a prijímať sériové údaje pomocou ďalších periférií. Môže prenášať / prijímať údaje iba sériovo, takže najskôr prevedie paralelné údaje na sériové údaje a potom ich prenesie.
UART je asynchrónne prenosové zariadenie, a preto nie je k dispozícii žiadny hodinový signál na synchronizáciu údajov medzi týmito dvoma zariadeniami, namiesto toho na začiatku a na konci každého dátového paketu označuje začiatočné a koncové bity na označenie koncov prenášaných údajov. UART prenášané dáta sú organizované do paketov. Každý paket obsahuje 1 štartovací bit, 5 až 9 dátových bitov (v závislosti od UART), voliteľný paritný bit a 1 alebo 2 stop bity. Je veľmi dobre zdokumentovaný a široko používaný a má tiež paritný bit, ktorý umožňuje kontrolu chýb. Existujú však určité obmedzenia, pretože nemôže podporovať viacerých otrokov a viacerých pánov a maximálny dátový rámec je obmedzený na 9 bitov. Pre prenos dát musia byť prenosové rýchlosti Master aj Slave medzi 10%. Ďalej je uvedený príklad toho, ako je postava vysielačom cez dátovú linku UART. Signál High and Lows sa meria proti úrovni GND, takže posunutie úrovne GND bude mať katastrofálny vplyv na prenos dát.
Na druhej strane je RS485 priemyselnejšia komunikácia vyvinutá pre sieť viacerých zariadení, ktoré je možné používať na veľké vzdialenosti aj pri vyšších rýchlostiach. Funguje skôr na základe metódy diferenciálnej signalizácie ako na meranie napätia pomocou kolíka GND. Signály RS485 plávajú a každý signál sa prenáša cez linku Sig + a linku Sig-.
Prijímač RS485 porovnáva rozdiel napätí medzi oboma vedeniami namiesto absolútnej úrovne napätia na signálnom vedení. To funguje dobre a zabráni sa existencii pozemných slučiek, častého zdroja komunikačných problémov. Najlepšie výsledky sa dosiahnu, ak sú linky Sig + a Sig- krútené, pretože krútením sa eliminuje účinok elektromagnetického šumu indukovaného v kábli a poskytuje sa oveľa lepšia imunita proti šumu, čo umožňuje sieti RS485 prenášať údaje až do 1200 m rozsahu. Krútená dvojlinka tiež umožňuje, aby boli prenosové rýchlosti oveľa vyššie, ako je to možné pri priamych kábloch. Pri malých prenosových vzdialenostiach je možné pomocou RS485 dosiahnuť rýchlosť až 35 Mbps, hoci sa prenosová rýchlosť so vzdialenosťou zníži. Pri 1 200m prenosovej rýchlosti môžete použiť iba 100kbps prenosovú rýchlosť. Na realizáciu tohto komunikačného protokolu potrebujete špeciálny ethernetový kábel. Existuje veľa kategórií ethernetových káblov, ktoré môžeme použiť, ako CAT-4, CAT-5, CAT-5E, CAT-6, CAT-6A atď. V našom výučbe budeme používať kábel CAT-6E ktorý má 4 krútené páry vodičov 24AWG a môže podporovať až 600 MHz. Na oboch koncoch je zakončený konektorom RJ45. Typické úrovne sieťového napätia od vodičov vedenia sú minimálne ± 1,5 V až maximálne asi ± 6 V. Vstupná citlivosť prijímača je ± 200 mV. Hluk v rozsahu ± 200 mV je v podstate blokovaný kvôli potlačeniu hluku v bežnom režime. Príklad toho, ako sa bajt (0x3E) prenáša cez dve linky komunikácie RS485.
Súčasti sú povinné
- 2 × modul prevodu MAX485
- 2 × Arduino Nano
- 2 × 16 * 2 alfanumerický LCD
- Potenciometre stierača 2 × 10k
- Ethernetový kábel Cat-6E
- Nepájivé pole
- Prepojovacie drôty
Schéma zapojenia pre káblovú komunikáciu na veľké vzdialenosti
Nasledujúci obrázok zobrazuje schému zapojenia vysielača a prijímača pre káblovú komunikáciu Arduino na veľké vzdialenosti. Nezabudnite, že obe obvody vysielača a prijímača vyzerajú rovnako, líši sa iba kód, ktorý je do nich zapísaný. Na ukážku používame jednu dosku ako vysielač a jednu dosku ako prijímač, ale môžeme dosky jednoducho naprogramovať tak, aby fungovali ako vysielač aj prijímač s rovnakým nastavením.
Ďalej je uvedená schéma zapojenia vyššie uvedeného obvodu.
Ako môžete vidieť vyššie, existujú dva takmer identické páry obvodov, z ktorých každý má Arduino nano, 16 * 2 alfanumerický LCD a prevodník MAX485 UART na RS485 IC pripojený na každý koniec kábla Ethernet Cat-6E cez konektor RJ45. Kábel, ktorý som použil v tomto návode, je dlhý 25 metrov. Niektoré údaje zo strany vysielača pošleme cez kábel z Nano, ktorý sa prevedie na signály RS485 cez modul MAX RS485 pracujúci v režime Master.
Na prijímacom konci pracuje modul prevodníka MAX485 ako Slave a pri počúvaní prenosu z mastera opäť prevádza prijaté dáta RS485 na štandardné signály 5V TTL UART, ktoré majú byť načítané prijímajúcim nanom a zobrazené na 16 * K nej pripojené 2 alfanumerické znaky LCD.
Prevodníkový modul MAX485 UART-RS485
Tento prevodníkový modul UART-RS485 má zabudovaný čip MAX485, čo je nízkoenergetický transceiver s obmedzenou rýchlosťou a rýchlosťou zabíjania, ktorý sa používa na komunikáciu RS-485. Pracuje na jednom zdroji + 5V a menovitý prúd je 300 μA. Funguje na poloduplexnej komunikácii na implementáciu funkcie prevodu úrovne TTL na úroveň RS-485, čo znamená, že môže vysielať alebo prijímať kedykoľvek, nie oboje, môže dosiahnuť maximálnu prenosovú rýchlosť 2,5 Mb / s. Transceiver MAX485 odoberá napájací prúd medzi 120 μA a 500 μA za nezaťažených alebo úplne naložených podmienok, keď je vodič deaktivovaný. Budič je obmedzený na skratový prúd a výstupy budiča môžu byť prostredníctvom obvodu tepelného vypnutia umiestnené na stav s vysokou impedanciou. Vstup prijímača má funkciu bezpečnú proti zlyhaniu, ktorá zaručuje logický vysoký výstup, ak je vstup otvorený.Okrem toho má silný účinok proti rušeniu. Má tiež zabudované LED diódy na zobrazenie aktuálneho stavu čipu, tj. Či je čip napájaný, alebo či vysiela alebo prijíma údaje, čo uľahčuje ladenie a použitie.
Schéma zapojenia uvedená vyššie vysvetľuje, ako je palubná jednotka MAX485 IC pripojená k rôznym komponentom, a poskytuje 0,1-palcové štandardné rozstupové lišty, ktoré sa majú, ak chcete, použiť s nepájivou doskou.
Kábel Ethernet CAT-6E
Keď uvažujeme o prenose dát na veľkú vzdialenosť, okamžite myslíme na pripojenie k internetu pomocou ethernetových káblov. V dnešnej dobe väčšinou využívame na pripojenie k internetu Wi-Fi, ale skôr sme na jeho pripojenie k internetu používali ethernetové káble smerujúce do každého osobného počítača. Hlavným dôvodom použitia týchto ethernetových káblov cez bežné vodiče je, že poskytujú oveľa lepšiu ochranu pred prenikaním šumu a skreslením signálu na veľké vzdialenosti. Majú izolačnú vrstvu chrániacu pred elektromagnetickým rušením a tiež je každý pár vodičov navzájom stočený, aby sa zabránilo tvorbe prúdovej slučky, a teda oveľa lepšia ochrana pred hlukom. Často sú zakončené 8-pinovými konektormi RJ45 na oboch koncoch. Existuje veľa kategórií ethernetových káblov, ktoré môžeme použiť, ako CAT-4, CAT-5,CAT-5E, CAT-6, CAT-6A atď. V našom výučbe použijeme kábel CAT-6E, ktorý má 4 krútené páry vodičov 24AWG a môže podporovať až 600 MHz.
Obrázok ukazuje, ako sa dvojica vodičov krúti vo vnútri izolačnej vrstvy kábla CAT-6E
Konektor RJ-45 určený pre ethernetový kábel CAT-6E
Vysvetlenie kódu Arduino
V tomto projekte používame dva Arduino Nano, jeden ako vysielač a jeden ako prijímač, z ktorých každý poháňa 16 * 2 alfanumerický LCD displej na zobrazenie výsledkov. V kóde Arduino sa teda zameriame na odosielanie údajov a zobrazenie týchto odoslaných alebo prijatých údajov na obrazovke LCD.
Pre stranu vysielača:
Začneme zahrnutím štandardnej knižnice pre riadenie LCD a deklarujeme pin D8 Arduino Nano ako výstupný pin, ktorý neskôr použijeme na deklaráciu modulu MAX485 ako vysielač alebo prijímač.
int enablePin = 8; int potval = 0; #include
Teraz prichádzame k nastavovacej časti. Vytiahneme aktivačný kolík vysoko, aby sa modul MAX485 dostal do režimu vysielača. Pretože ide o poloduplexný integrovaný obvod, nemôže vysielať a prijímať súčasne. Tiež tu inicializujeme LCD a vytlačíme uvítaciu správu.
Serial.begin (9600); // inicializuje sa sériový na prenosovú rýchlosť 9600: pinMode (enablePin, OUTPUT); lcd.začiatok (16,2); lcd.print ("OKRUH DIGEST"); lcd.setCursor (0,1); lcd.print ("vysielač Nano"); oneskorenie (3 000); lcd.clear ();
Teraz v slučke píšeme na sériové riadky neustále sa zvyšujúcu celočíselnú hodnotu, ktorá sa potom prenáša na ďalšie nano. Táto hodnota je tiež vytlačená na LCD displeji kvôli zobrazeniu a ladeniu.
Serial.print ("Sent Value ="); Serial.println (potval); // Sériový zápis POTval na zbernicu RS-485 lcd.setCursor (0,0); lcd.print („Odoslaná hodnota“); lcd.setCursor (0,1); lcd.tlač (potval); oneskorenie (1 000); lcd.clear (); potval + = 1;
Strana prijímača:
Tu opäť začneme so zahrnutím štandardnej knižnice pre riadenie LCD a deklarujeme pin D8 Arduino Nano ako výstupný pin, ktorý neskôr použijeme na deklaráciu modulu MAX485 ako vysielač alebo prijímač.
int enablePin = 8; #include
Teraz prichádzame k nastavovacej časti. Vysoko vytiahneme aktivačný kolík, aby sa modul MAX485 dostal do režimu prijímača. Pretože ide o poloduplexný integrovaný obvod, nemôže vysielať a prijímať súčasne. Tiež tu inicializujeme LCD a vytlačíme uvítaciu správu.
Serial.begin (9600); // inicializuje sa sériový na prenosovú rýchlosť 9600: pinMode (enablePin, OUTPUT); lcd.začiatok (16,2); lcd.print ("OKRUH DIGEST"); lcd.setCursor (0,1); lcd.print („Prijímač Nano“); oneskorenie (3 000); digitalWrite (enablePin, LOW); // (Pin 8 vždy NÍZKY na získanie hodnoty od Master)
Teraz v slučke skontrolujeme, či na sériovom porte niečo nie je k dispozícii, a potom údaje načítame a keďže prichádzajúce údaje sú celé číslo, analyzujeme ich a zobrazíme na pripojenom LCD.
int pwmval = Serial.parseInt (); // Príjem hodnoty INTEGER z Master cez RS-485 Serial.print ("Mám hodnotu"); Serial.println (pwmval); lcd.setCursor (0,0); lcd.print ("prijatá hodnota"); lcd.setCursor (0,1); lcd.print (pwmval); oneskorenie (1 000); lcd.clear ();
Záver
Testovacie nastavenie, ktoré sme použili pre tento projekt, je uvedené nižšie.
Kompletné fungovanie tohto projektu nájdete vo videu, na ktoré odkazujete nižšie. Táto metóda je jednou z jednoduchých a ľahko implementovateľných metód na prenos údajov na veľké vzdialenosti. V tomto projekte sme použili iba prenosovú rýchlosť 9600, ktorá je hlboko pod maximálnou prenosovou rýchlosťou, ktorú môžeme dosiahnuť s modulom MAX-485, ale táto rýchlosť je vhodná pre väčšinu snímacích modulov tam vonku a vlastne ani nepotrebujeme všetky maximálne rýchlosti pri práci s Arduinom a inými vývojovými doskami, pokiaľ nepoužívate kábel ako ethernetové pripojenie a nevyžadujete všetku šírku pásma a rýchlosť prenosu, aké môžete získať. Pohrajte sa s prenosovou rýchlosťou sami a vyskúšajte aj iné typy ethernetových káblov. Ak máte akékoľvek otázky, nechajte ich v sekcii komentárov nižšie alebo použite naše fóra. Pokúsim sa ich čo najlepšie zodpovedať. Dovtedy, adios!