- Razlika između UART-a i RS485 komunikacije
- Komponente potrebne
- Kružni dijagram za daljinsku žičanu komunikaciju
- MAX485 UART-RS485 pretvarački modul
- Ethernet CAT-6E kabel
- Objašnjenje Arduino koda
- Zaključak
Već dugo koristimo razvojne ploče za mikrokontrolere poput Arduino, Raspberry Pi, NodeMCU, ESP8266, MSP430 itd. U našim malim projektima u kojima udaljenost od senzora do ploče uglavnom nije veća od nekoliko centimetara. na tim udaljenostima komunikacija između različitih senzorskih modula, releja, aktuatora i regulatora može se lako obaviti preko jednostavnih žica kratkospojnika, a da nas ne brine distorzija signala u mediju i električni šumovi koji se u njega uvlače. Ali ako gradite sustav upravljanja s ovim razvojnim pločama na udaljenosti većoj od 10 do 15 metara, tada biste trebali uzeti u obzir snagu šuma i signala, jer ako želite da vaš sustav radi pouzdano, ne možete si priuštiti gubitak podataka tijekom prijenosa.
Postoji mnogo različitih vrsta serijskih komunikacijskih protokola poput I2C i SPI koji se lako mogu implementirati s Arduinom, a danas ćemo pogledati još jedan najčešće korišten protokol nazvan RS485 koji se vrlo često koristi u industrijskim okruženjima s visokim šumom za prijenos podataka preko velika udaljenost. U ovom uputstvu naučit ćemo o komunikacijskom protokolu RS485 i kako ga implementirati s dva Arduino Nano koja imamo sa sobom te kako koristiti MAX485 RS485 u UART modul za pretvorbu. Prije smo izvršili i MAX485 komunikaciju s Arduinom, a također i MAX485 komunikaciju s Raspberry pi, također ih možete provjeriti ako vas zanima.
Razlika između UART-a i RS485 komunikacije
Većina jeftinih senzora i ostalih modula poput GPS-a, Bluetooth-a, RFID-a, ESP8266 itd. Koji se obično koriste s Arduinom, Raspberry Pi-om na tržištu koristi UART TTL komunikaciju jer zahtijevaju samo 2 žice TX (odašiljač) i RX (Prijamnik). To nije standardni komunikacijski protokol, ali to je fizički sklop kojim možete prenositi i primati serijske podatke s drugim perifernim uređajima. Podatke može prenositi / primati samo serijski, pa prvo pretvara paralelne podatke u serijske, a zatim ih prenosi.
UART je asinkroni uređaj za prijenos, stoga ne postoji signal takta za sinkronizaciju podataka između dva uređaja, već koristi bitove start i stop na početku i na kraju svakog podatkovnog paketa za označavanje ekstremiteta podataka koji se prenose. UART preneseni podaci organizirani su u pakete. Svaki paket sadrži 1 početni bit, 5 do 9 podatkovnih bitova (ovisno o UART-u), opcijski bit parnosti i 1 ili 2 zaustavna bita. Vrlo je dobro dokumentiran i široko korišten, a ima i bit parnosti koji omogućuje provjeru pogrešaka. Ali postoje neka ograničenja, jer ne može podržati više robova i više gospodara a maksimalni okvir podataka ograničen je na 9 bitova. Za prijenos podataka, brzine prijenosa podataka i Master i Slave moraju biti između 10%. Dolje je prikazan primjer kako je lik odašiljač preko UART podatkovne linije. Visoki i najniži signali mjere se prema razini GND-a, pa će pomicanje razine GND-a imati katastrofalan učinak na prijenos podataka.

S druge strane, RS485 je više industrijska komunikacija koja je razvijena za mrežu više uređaja koji se mogu koristiti na velikim udaljenostima i pri većim brzinama. Djeluje na način mjerenja diferencijalne signalizacije, a ne na mjerenju napona s GND pinom. RS485 signali lebde i svaki se signal prenosi preko Sig + linije i Signalne linije.
Prijemnik RS485 uspoređuje razliku napona između obje linije, umjesto apsolutne razine napona na signalnoj liniji. To dobro funkcionira i sprječava postojanje petlji uzemljenja, uobičajenog izvora komunikacijskih problema. Najbolji se rezultati postižu ako se Sig + i Sig-line uvijeju jer uvijanje poništava učinak elektromagnetske buke inducirane u kabelu i pruža mnogo bolju otpornost na buku koja RS485 omogućuje prijenos podataka do 1200 m dosega. Upleteni par također omogućuje da brzine prijenosa budu puno veće od onih koje su moguće kod ravnih kabela. Na malim prijenosnim udaljenostima brzine do 35Mbps mogu se ostvariti s RS485, iako će se brzina prijenosa smanjivati s udaljenošću. Na 1200 m brzine prijenosa možete koristiti samo 100 kbps brzine prijenosa. Za realizaciju ovog komunikacijskog protokola potreban vam je poseban Ethernet kabel. Postoje mnoge kategorije Ethernet kabela koje možemo koristiti poput CAT-4, CAT-5, CAT-5E, CAT-6, CAT-6A, itd. U našem uputstvu koristit ćemo CAT-6E kabel koji ima 4 upletena para 24AWG žica i može podržavati do 600MHz. Na oba kraja završava se RJ45 konektorom. Tipične razine mrežnog napona iz vodova vodova su minimalno od ± 1,5 V do maksimalno oko ± 6 V. Ulazna osjetljivost prijemnika iznosi ± 200 mV. Buka u opsegu od ± 200 mV u osnovi je blokirana zbog uobičajenog poništavanja šuma. Primjer kako se bajt (0x3E) prenosi preko dvije linije RS485 komunikacije.

Komponente potrebne
- 2 × MAX485 pretvarački modul
- 2 × Arduino Nano
- 2 × 16 * 2 alfanumerički LCD
- 2 × 10k potenciometri brisača
- Ethernet kabel Cat-6E
- Breadboardi
- Jumper žice
Kružni dijagram za daljinsku žičanu komunikaciju
Slika dolje prikazuje shemu kruga odašiljača i prijamnika za Arduinoovu žičanu komunikaciju na velike udaljenosti. Imajte na umu da i sklopovi odašiljača i prijemnika izgledaju identično, jedino što se razlikuje je kôd upisan u njega. Također za demonstraciju koristimo jednu ploču kao odašiljač i jednu ploču kao prijemnik, ali ploče možemo lako programirati da rade i kao odašiljač i kao prijemnik s istim postavkama
Dijagram povezivanja za gornji krug također je dat u nastavku.


Kao što gore možete vidjeti, postoje dva gotovo identična para sklopova, od kojih svaki ima Arduino nano, 16 * 2 alfanumerički LCD i MAX485 IC pretvarača UART u RS485 spojen na svaki kraj Ethernet Cat-6E kabela putem RJ45 konektora. Kabel koji sam koristio u tutorialu dugačak je 25 m. Poslat ćemo neke podatke sa strane odašiljača preko kabela iz Nano-a koji se pretvara u RS485 signale putem MAX RS485 modula koji radi u glavnom načinu rada.
Na kraju prijema, pretvarački modul MAX485 radi kao slave, i slušajući prijenos od Master-a, opet pretvara RS485 podatke koje je primio u standardne 5V TTL UART signale koje čita Nano koji ih prima i prikazuje na 16 * 2 alfanumerička LCD zaslona povezana s njim.
MAX485 UART-RS485 pretvarački modul
Ovaj modul pretvarača UART-RS485 ima ugrađeni čip MAX485 koji je primopredajnik male snage i ograničene brzine koji se koristi za RS-485 komunikaciju. Radi na jednom napajanju + 5V, a nazivna struja je 300 μA. Radi na poludupleksnoj komunikaciji kako bi implementirao funkciju pretvaranja razine TTL u razinu RS-485, što znači da može ili prenositi ili primati bilo koje vrijeme, a ne oboje, može postići maksimalnu brzinu prijenosa od 2,5 Mb / s. Prijemnik MAX485 crpi napajajuću struju između 120μA i 500μA u neopterećenim ili potpuno opterećenim uvjetima kada je vozač onemogućen. Pogonitelj je ograničen strujom kratkog spoja i izlazi pogona mogu se postaviti u stanje visoke impedancije kroz krug toplinskog isključivanja. Ulaz prijemnika ima značajku sigurnu u kvaru koja jamči visoki logički izlaz ako je ulaz prekinut.Uz to ima snažne performanse protiv smetnji. Također ima ugrađene LED diode za prikaz trenutnog stanja čipa, tj. Napaja li se čip ili njegov prijenos ili prijem podataka što olakšava otklanjanje pogrešaka i upotrebu.

Gore navedena shema shema objašnjava kako je ugrađeni MAX485 IC povezan s raznim komponentama i pruža 0,1-inčne standardne zaglavlja za razmak koja se koriste s pločom, ako želite.
Ethernet CAT-6E kabel
Kad pomislimo na prijenos podataka na velike udaljenosti, odmah pomislimo na povezivanje s internetom putem Ethernet kabela. Danas uglavnom koristimo Wi-Fi za internetsku vezu, no ranije smo koristili Ethernet kabele koji su išli na svako osobno računalo kako bismo ga povezali s internetom. Glavni razlog iza kojih se koriste ovi Ethernet kabeli preko normalnih žica je taj što pružaju puno bolju zaštitu od uvlačenja buke i izobličenja signala na velikim udaljenostima. Preko izolacijskog sloja imaju zaštitnu jaknu koja štiti od elektromagnetskih smetnji, a također je svaki par žica uvijen zajedno kako bi se spriječilo stvaranje strujnih petlji, a time i mnogo bolja zaštita od buke. Često se završavaju 8-polnim RJ45 konektorima na oba kraja. Postoje mnoge kategorije Ethernet kabela koje možemo koristiti poput CAT-4, CAT-5,CAT-5E, CAT-6, CAT-6A, itd. U našem uputstvu koristit ćemo CAT-6E kabel koji ima 4 upletena para 24AWG žica i može podržavati do 600 MHz.
Slika koja prikazuje kako je par žica uvijeno unutar izolacijskog sloja CAT-6E kabela

RJ-45 konektor namijenjen CAT-6E Ethernet kabelu
Objašnjenje Arduino koda
U ovom projektu koristimo dva Arduino Nano, jedan kao odašiljač i Jedan kao prijamnik, svaki koji vozi 16-alfanumerički LCD za prikaz rezultata. Dakle, u Arduino kodu usredotočit ćemo se na slanje podataka i prikazivanje poslanih ili primljenih podataka na LCD zaslon.
Za stranu odašiljača:
Počinjemo s uključivanjem standardne biblioteke za upravljanje LCD-om i deklariramo D8 pin Arduino Nano-a kao izlazni pin koji ćemo kasnije koristiti za proglašenje MAX485 modula kao odašiljača ili prijamnika.
int enablePin = 8; int potval = 0; #include
Sada dolazimo do dijela za postavljanje. Povući ćemo visoko osigurač kako bismo modul MAX485 prebacili u način rada odašiljača. Kako je riječ o poludupleksnom IC-u, stoga ne može istovremeno slati i primati. Ovdje ćemo također inicijalizirati LCD i ispisati poruku dobrodošlice.
Serial.begin (9600); // inicijalizira serijski na brzini prijenosa 9600: pinMode (enablePin, OUTPUT); lcd.početak (16,2); lcd.print ("DIGEST CIRCUIT"); lcd.setCursor (0,1); lcd.print ("Odašiljač Nano"); kašnjenje (3000); lcd.clear ();
Sada u petlji zapisujemo kontinuirano rastuću cijelu vrijednost na serijske linije koja se zatim prenosi na drugi nano. Ova se vrijednost također ispisuje na LCD-u za prikaz i uklanjanje pogrešaka.
Serial.print ("Poslana vrijednost ="); Serial.println (potval); // Serijski zapis POTval na RS-485 Bus lcd.setCursor (0,0); lcd.print ("Poslana vrijednost"); lcd.setCursor (0,1); lcd.tisak (potval); kašnjenje (1000); lcd.clear (); potval + = 1;

Strana prijemnika:
Ovdje opet započinjemo s uključivanjem standardne knjižnice za upravljanje LCD-om i deklariramo D8 pin Arduino Nano-a kao izlazni pin koji ćemo kasnije koristiti za deklariranje MAX485 modula kao odašiljača ili prijamnika.
int enablePin = 8; #include
Sada dolazimo do dijela za postavljanje. Povući ćemo pin za omogućavanje kako bismo MAX485 modul prebacili u način rada prijemnika. Kako je riječ o poludupleksnom IC-u, stoga ne može istovremeno slati i primati. Ovdje ćemo također inicijalizirati LCD i ispisati poruku dobrodošlice.
Serial.begin (9600); // inicijalizira serijski na brzini prijenosa 9600: pinMode (enablePin, OUTPUT); lcd.početak (16,2); lcd.print ("DIGEST CIRCUIT"); lcd.setCursor (0,1); lcd.print ("Receiver Nano"); kašnjenje (3000); digitalWrite (enablePin, LOW); // (Pin 8 uvijek LOW za primanje vrijednosti od Master-a)
Sada u petlji provjeravamo postoji li nešto dostupno na serijskom priključku, a zatim čitamo podatke, a budući da su dolazni podaci cijeli broj, raščlanjujemo ih i prikazujemo na povezanom LCD-u.
int pwmval = Serial.parseInt (); // primanje INTEGER vrijednosti od Master-a putem RS-485 Serial.print ("Dobio sam vrijednost"); Serial.println (pwmval); lcd.setCursor (0,0); lcd.print ("Primljena vrijednost"); lcd.setCursor (0,1); lcd.ispis (pwmval); kašnjenje (1000); lcd.clear ();

Zaključak
Postavljanje testa koje smo koristili za ovaj projekt možete pronaći u nastavku.

Cjelovit rad ovog projekta možete pronaći u videu dolje povezanom. Ova metoda je jedna od jednostavnih i jednostavnih metoda za prijenos podataka na velike udaljenosti. U ovom smo projektu koristili samo brzinu prijenosa od 9600, što je znatno ispod maksimalne brzine prijenosa koju možemo postići s MAX-485 modulom, ali ta je brzina prikladna za većinu tamošnjih modula senzora i zapravo nam nije potrebna sve maksimalne brzine tijekom rada s Arduinom i drugim razvojnim pločama, osim ako ne koristite kabel kao ethernet vezu i ako vam je potrebna sva propusnost i brzina prijenosa koje možete dobiti. Pokušajte sami s brzinom prijenosa i pokušajte i s drugim vrstama ethernet kabela. Ako imate bilo kakvih pitanja, ostavite ih u odjeljku za komentare u nastavku ili se poslužite našim forumima, a ja ću se potruditi odgovoriti na njih. Do tada, adios!
