Sadržaj
Sadržaj
RS485 je način na koji uređaji komuniciraju putem dugačkih žica. On prenosi iste serijske podatke koje vaš Arduino već šalje, ali na udaljenosti od stotina metara i kroz električne smetnje koje bi "zbunile" normalnu vezu. Ovaj vodič pokriva kako to funkcionira, kako ga ožičiti i kada ga koristiti.
Što je RS485?
RS485 je standard za žičanu serijsku komunikaciju. Definira kako se podaci kreću preko para žica, tako da uređaji mogu pouzdano komunicirati putem dugačkih kabela.
Naći ćete ga u tvornicama, mjeračima energije, HVAC sustavima, kontrolerima zgrada i industrijskim senzorima. To je uobičajen odgovor kada su uređaji previše udaljeni za I2C ili SPI, te kada Wi-Fi ili Bluetooth nisu dovoljno pouzdani. Većina RS485 uređaja koristi protokol nazvan Modbus povrh njega.
Mikrokontroler ne može izravno pokretati RS485 sabirnicu. Potreban mu je primopredajni čip (transceiver) između njegovih UART pinova i kabela. Solderedov RS-485 transceiver breakout koristi SN65176B i ima vijčane stezaljke za žice sabirnice.
Zašto koristiti RS485 umjesto obične serijske komunikacije?
Normalna UART veza funkcionira na udaljenosti od najviše nekoliko metara. RS485 ispravlja tri stvari koje se prve pokvare na dugačkom kabelu:
- Udaljenost. Do 1200 m pri nižim brzinama prijenosa podataka.
- Smetnje. Motori, releji i mrežne instalacije pored kabela ne kvare podatke.
- Broj uređaja. Do 32 standardna uređaja dijele jedan par žica.
| Komunikacija | Najbolje za |
|---|---|
| UART | Kratku serijsku komunikaciju između uređaja |
| I2C | Senzore i module unutar jednog uređaja |
| SPI | Brzu komunikaciju na kratke udaljenosti |
| Wi-Fi | Bežične mrežne projekte |
| RS485 | Dugačke žičane senzorske i upravljačke mreže |
Naš vodič za I2C protokol i SPI vodič pokrivaju komunikaciju na kratke udaljenosti.
Kako radi RS485?
RS485 koristi diferencijalnu signalizaciju. Dvije žice, označene kao A i B, uvijek nose suprotne signale. Prijamnik ignorira napon na svakoj žici i čita samo razliku između njih.
Smetnje iz obližnjeg motora jednako utječu na obje žice, pa razlika ostaje ista i podaci prolaze. Zato su RS485 kabeli upredene parice: uvijanje drži dvije žice izložene istim smetnjama.
- Mikrokontroler šalje UART podatke.
- RS485 primopredajnik pretvara ih u diferencijalni signal na A i B.
- Signal putuje kabelom.
- Prijamni primopredajnik pretvara ga natrag u UART podatke.
- Drugi uređaj čita podatke.
Većina RS485 postava je poludupleksna (half-duplex): samo jedan uređaj priča u isto vrijeme. Primopredajnik ima pin za omogućavanje upravljačkog programa (DE) koji vaš kod postavlja na visoko za prijenos i na nisko za slušanje.
Osnovno o RS485 ožičenju

- A na A, B na B. Svaki uređaj se spaja na iste dvije linije.
- Dijelite uzemljenje. Provedite žicu uzemljenja uz par kako bi svaki uređaj imao istu referencu.
- Koristite sabirnicu, a ne zvijezdu. Provedite jedan kabel od uređaja do uređaja. Nemojte granati dugačke kabele iz središnje točke.
- Terminirajte oba kraja. Na dugačkim trasama, postavite otpornik od 120 Ω preko A i B na prvom i zadnjem uređaju. Solderedov breakout ima jedan na ploči, uključen kratkospojnikom JP2.
- Zamijenite A i B ako ništa ne radi. Proizvođači ih označavaju nedosljedno.
Neke mreže također trebaju bias otpornike za držanje linija u poznatom stanju kada nitko ne priča. Kratke postave na stolu obično rade i bez njih.
RS485, Modbus i protokoli
RS485 definira samo električni signal. Ne govori ništa o tome što bajtovi znače. Modbus RTU je najčešći protokol koji radi povrh njega: on definira format poruke, adrese uređaja i način čitanja registra.
Zamislite RS485 kao cestu, a Modbus kao prometna pravila. RS485 mjerač energije gotovo uvijek koristi Modbus, pa za njegovo čitanje trebate oboje: primopredajnik za cestu i Modbus biblioteku za pravila.
RS485 vs RS232 vs UART
| Značajka | UART | RS232 | RS485 |
|---|---|---|---|
| Najbolje za | Kratke veze mikrokontrolera | Stare serijske uređaje | Dugačke žičane mreže |
| Uređaji | Obično 2 | Obično 2 | Do 32 standardna opterećenja |
| Udaljenost | Kratka | Srednja | Do 1200 m |
| Otpornost na smetnje | Niska | Srednja | Visoka |
| Uobičajena upotreba | Moduli i otklanjanje grešaka | Starija serijska oprema | Senzori, mjerači, automatizacija |
UART je format podataka. RS232 i RS485 su dva načina da se oni prenesu dalje. RS232 koristi jednu žicu po smjeru referiranu na uzemljenje, što ograničava udaljenost. RS485 koristi diferencijalni par, zbog čega ide dalje i povezuje više uređaja.
Možete li koristiti RS485 s Arduinom, ESP32 i Raspberry Pi?
Da, sa sva tri. Svaki spaja svoje UART pinove na primopredajnik, a primopredajnik se spaja na sabirnicu.
RS485 s Arduino kompatibilnim pločicama
Spojite TX pločice na D pin primopredajnika, RX na R, i jedan digitalni pin na DE i NRE povezane zajedno. Dvije pločice i dva primopredajnika dovoljni su za učenje osnova i isprobavanje jednostavnih Modbus eksperimenata.
Solderedov breakout radi na 5 V, tako da se izravno spaja s pločicom od 5 V. "Make your own NULA" set omogućuje vam da ga sami zalemite iz dijelova.
RS485 s ESP32
ESP32 može čitati RS485 sabirnicu i slati podatke preko Wi-Fi-ja na MQTT, zapisnik ili Home Assistant. To ga čini mostom između žičanih industrijskih uređaja i bežičnog sustava.
ESP32 ima dodatne hardverske UART-ove, tako da sabirnica ne blokira USB serijski port. Jedini dodatni korak je prebacivanje DE oko svake poruke:
// Pošalji jedan redak preko RS485 s ESP32
HardwareSerial rs485(1); // dodatni hardverski UART
const int RX_PIN = 14; // na R pin primopredajnika
const int TX_PIN = 13; // na D pin primopredajnika
const int DE_PIN = 12; // na DE i NRE, povezane zajedno
void setup() {
rs485.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);
pinMode(DE_PIN, OUTPUT);
digitalWrite(DE_PIN, LOW); // slušaj po zadanim postavkama
}
void loop() {
digitalWrite(DE_PIN, HIGH); // preuzmi sabirnicu
rs485.println("Hello");
rs485.flush(); // čekaj dok zadnji bajt ne napusti
digitalWrite(DE_PIN, LOW); // oslobodi sabirnicu
delay(1000);
}
Bez flush(), kod oslobađa sabirnicu dok se zadnji bajtovi još šalju, pa se oni gube.
Provjerite napon. ESP32 radi na 3.3 V. Solderedov breakout radi na 5 V, a njegov R izlaz može narasti blizu 5 V. Postavite djelilo napona ili pretvarač razine između R i RX pina ESP32.
NULA Mini ESP32-C6 ima Wi-Fi 6 i Bluetooth, što ga čini dobrim mostom između RS485 i bežične mreže.
RS485 s Raspberry Pi
Najjednostavniji način je USB-na-RS485 adapter, koji se prikazuje kao serijski port. Također možete koristiti RS485 HAT ili primopredajnik na UART pinovima Pi-ja s istim pretvaranjem razine od 3.3 V kao kod ESP32. Pi tada pokreće nadzornu ploču, bazu podataka ili Node-RED i Home Assistant.
Ideje za praktične RS485 projekte
ESP32 RS485 na MQTT most
Pristupajte RS485 uređajima s ESP32 i objavite svako očitanje na MQTT. Home Assistant ih preuzima kao i svaki drugi senzor. Naš ESPHome MQTT vodič pokriva bežičnu stranu.
Nadzorna ploča za mjerač energije
Većina DIN-šinskih mjerača energije ima RS485 Modbus port. Očitajte napon, struju i ukupnu energiju te ih prikažite na e-paper ekranu pored kutije s osiguračima. Inkplate 10 ima ekran od 9.7 inča i ESP32, pa sam čita mjerač i iscrtava nadzornu ploču.
Senzorska mreža na velike udaljenosti
Postavite mali čvor na svaki daleki kraj zgrade, svaki sa svojim senzorom, i spojite ih sve na jedan RS485 kabel. Vodootporni DS18B20 odgovara za cijevi, spremnike i vanjska mjerenja.
NULA DeepSleep ESP32-S3 troši vrlo malo struje između očitanja, što odgovara čvorovima koji se bude, izvještavaju i spavaju.
Industrijski zapisivač podataka
Raspberry Pi pristupa svakom mjeraču i kontroleru na sabirnici i pohranjuje očitanja u bazu podataka. Dodajte Grafanu i moći ćete vidjeti mjesec dana podataka na prvi pogled. Naše Raspberry Pi ideje za projekte sadrže još više primjera za Pi.
Praćenje staklenika ili radionice
Ožičite senzore temperature i vlage po cijelom stakleniku ili radionici preko RS485, gdje Wi-Fi ne dopire. Prikazujte vrijednosti na e-paper ekranu u boji koji ostaje čitljiv cijeli dan.
Česte pogreške kod RS485
- A i B zamijenjeni. Ništa ne prolazi. Zamijenite ih i pokušajte ponovno.
- Zvijezda ožičenje. Refleksije iz svakog kraka kvare podatke. Koristite jednu kontinuiranu sabirnicu.
- Nema terminacije na dugačkim trasama. Postavite 120 Ω na oba kraja, i to samo na krajevima.
- Miješanje RS485 i Modbusa. Radna sabirnica još uvijek treba pravi protokol za čitanje mjerača.
- Nema primopredajnika. UART pinovi ne mogu izravno pokretati RS485 sabirnicu.
- Neusklađenost napona. Izlaz 5 V primopredajnika može oštetiti 3.3 V pin.
- Duplirane Modbus adrese. Dva uređaja odgovaraju odjednom i oba su odgovora nečitljiva.
- Pretpostavka da je bežično lakše. Kroz betonske zidove ili pored strojeva, kabel je često manje posla.
Kada koristiti RS485?
- uređaji su udaljeni desetke ili stotine metara
- kabel prolazi blizu motora, releja ili mrežnih instalacija
- nekoliko uređaja treba dijeliti jednu žičanu mrežu
- veza mora raditi svaki put
- projekt čita industrijske senzore, mjerače ili kontrolere
- Wi-Fi ili Bluetooth ne dopire ili se gubi
Kada ne koristiti RS485?
- svi uređaji se nalaze u jednom kućištu
- I2C, SPI ili UART već obavljaju posao
- projekt je jednostavna konstrukcija na stolu
- treba vam vrlo brza lokalna komunikacija
- projekt mora biti bežičan
Zašto je Soldered odlično mjesto za početak gradnje žičanih komunikacijskih projekata
Projekt može započeti s dvije pločice i dva primopredajnika na stolu, a zatim narasti u ESP32 most, Raspberry Pi zapisivač ili Inkplate nadzornu ploču. Soldered proizvodi pločice, senzore, zaslone i alate za otklanjanje grešaka za svaki korak.
Kada UART strana stvara probleme, USB-Cereal vam daje serijsku konzolu na USB-C uređaju putem njegovih pomoćnih pinova, bez potrebe za headerima ili rastavljanjem.
Često postavljana pitanja
Što je RS485?
Standard za žičanu serijsku komunikaciju za pouzdanu komunikaciju putem dugačkih kabela. Čest je u industrijskoj automatizaciji, senzorima, mjeračima, kontrolerima i sustavima zgrada.
Je li RS485 protokol?
Ne u potpunosti. Definira samo električni signal. Protokoli kao što je Modbus RTU rade povrh njega.
Kako radi RS485?
Šalje podatke kao diferencijalni signal na dvije žice, A i B. Prijamnik čita razliku između njih, što poništava većinu električnih smetnji.
Za što se koristi RS485?
Industrijska automatizacija, Modbus mreže, mjerači energije, HVAC, senzori na velike udaljenosti, kontrola pristupa, nadzor okoliša i kontrola strojeva.
Koja je razlika između RS485 i RS232?
RS232 povezuje dva uređaja na kratkim do srednjim udaljenostima. RS485 povezuje mnogo uređaja na jednoj sabirnici, na većim udaljenostima i na mjestima s više smetnji.
Koja je razlika između RS485 i UART?
UART je format serijskih podataka koje mikrokontroler proizvodi. RS485 prenosi te podatke putem dugačkih kabela, koristeći primopredajnik na svakom kraju.
Može li Arduino koristiti RS485?
Da, uz RS485 primopredajni modul. Arduino komunicira s primopredajnikom putem UART-a, a primopredajnik pokreće sabirnicu.
Može li ESP32 koristiti RS485?
Da, putem hardverskog UART-a i primopredajnika. Promijenite razinu napona prijamne linije ako primopredajnik radi na 5 V. ESP32 je koristan kada podaci trebaju doći i do Wi-Fi-ja, MQTT-a ili Home Assistanta.
Može li Raspberry Pi koristiti RS485?
Da, putem USB-na-RS485 adaptera, RS485 HAT-a ili primopredajnika na njegovim UART pinovima. Pogodan je za zapisivanje podataka, nadzorne ploče i Modbus automatizaciju.
Je li RS485 bolji od I2C?
Za dugačke kabele i mjesta sa smetnjama, da. I2C je bolji za kratke veze između dijelova unutar jednog uređaja.