- Protokol Komunikasi Serial RS-485
- RS-485 di Arduino
- Komponen Diperlukan
- Diagram Sirkuit
- Pemrograman Arduino UNO & Arduino Nano untuk Komunikasi Serial RS485
- Mengontrol Kecerahan LED dengan Komunikasi Serial RS485
Memilih protokol komunikasi untuk komunikasi antara mikrokontroler dan perangkat periferal merupakan bagian penting dari sistem tertanam. Ini penting karena kinerja keseluruhan dari aplikasi yang disematkan bergantung pada sarana komunikasi karena terkait dengan pengurangan biaya, transfer data yang lebih cepat, jangkauan jarak jauh, dll.
Pada tutorial sebelumnya kita telah belajar tentang protokol komunikasi I2C dan protokol Komunikasi SPI di Arduino. Sekarang ada protokol komunikasi serial lain yang disebut RS-485. Protokol ini menggunakan komunikasi serial asynchronous. Keuntungan utama RS-485 adalah transfer data jarak jauh antara dua perangkat. Dan mereka paling sering digunakan di lingkungan industri yang bising listrik.
Dalam tutorial ini, kita akan belajar tentang RS-485 Komunikasi serial antara dua Arduino dan kemudian mendemonstrasikannya dengan mengontrol kecerahan LED yang terhubung ke Slave Arduino dari Master Arduino dengan mengirimkan nilai ADC melalui Modul RS-485. Potensiometer 10k digunakan untuk memvariasikan nilai ADC di Master Arduino.
Mari kita mulai dengan memahami cara kerja komunikasi Serial RS-485.
Protokol Komunikasi Serial RS-485
RS-485 adalah protokol komunikasi serial asinkron yang tidak memerlukan pulsa clock. Ini menggunakan teknik yang disebut sinyal diferensial untuk mentransfer data biner dari satu perangkat ke perangkat lainnya.
Jadi apa metode transfer sinyal diferensial ini ??
Metode sinyal diferensial bekerja dengan cara membuat tegangan diferensial dengan menggunakan tegangan 5V positif dan negatif. Ini menyediakan komunikasi Half-Duplex saat menggunakan dua kabel dan Full-Duplex membutuhkan 4 kabel merangkak.
Dengan menggunakan metode ini
- RS-485 mendukung kecepatan transfer data maksimum 30Mbps.
- Ini juga menyediakan jarak transfer data maksimum dibandingkan dengan protokol RS-232. Ini mentransfer data hingga maksimum 1200 meter.
- Keunggulan utama RS-485 dibandingkan RS-232 adalah adanya beberapa slave dengan Master tunggal sementara RS-232 hanya mendukung slave tunggal.
- Itu dapat memiliki maksimal 32 perangkat yang terhubung ke protokol RS-485.
- Keuntungan lain dari RS-485 adalah kebal terhadap kebisingan karena mereka menggunakan metode sinyal diferensial untuk mentransfer.
- RS-485 lebih cepat dibandingkan dengan protokol I2C.
RS-485 di Arduino
Untuk menggunakan RS-485 di Arduino, diperlukan modul 5V MAX485 TTL hingga RS485 yang didasarkan pada IC Maxim MAX485 karena memungkinkan komunikasi serial dalam jarak jauh 1200 meter dan dua arah. Dalam mode half duplex ini memiliki kecepatan transfer data 2. 5Mbps.
Modul 5V MAX485 TTL ke RS485 membutuhkan tegangan 5V dan menggunakan level logika 5V sehingga dapat dihubungkan dengan port serial perangkat keras mikrokontroler seperti Arduino.
Ini memiliki fitur-fitur berikut:
- Tegangan operasi: 5V
- Chip MAX485 terpasang
- Konsumsi daya yang rendah untuk komunikasi RS485
- Transceiver terbatas dengan laju perubahan tegangan
- 5.08mm pitch terminal 2P
- Kabel komunikasi RS-485 yang nyaman
- Semua pin chip yang telah diarahkan dapat dikontrol melalui mikrokontroler
- Ukuran papan: 44 x 14mm
Pin-Out dari RS-485:
Nama Pin |
Menggunakan |
VCC |
5V |
SEBUAH |
Input Penerima Non-pembalik Output Driver Non-Pembalik |
B |
Membalik Input Penerima Membalik Output Driver |
GND |
GND (0V) |
R0 |
Penerima Keluar (RX pin) |
KEMBALI |
Output Penerima (LOW-Enable) |
DE |
Output Driver (HIGH-Enable) |
DI |
Masukan Driver (pin TX) |
Modul RS-485 ini dapat dengan mudah dihubungkan dengan Arduino. Mari gunakan port serial perangkat keras Arduino 0 (RX) dan 1 (TX) (Dalam UNO, NANO). Pemrogramannya juga sederhana, cukup gunakan Serial.print () untuk menulis ke RS-485 dan Serial.Read () untuk membaca dari RS-485.
Bagian pemrograman dijelaskan nanti secara rinci tetapi pertama-tama mari kita periksa komponen dan diagram sirkuit yang diperlukan.
Komponen Diperlukan
- Arduino UNO atau Arduino NANO (2)
- MAX485 TTL ke RS485 Converter Module - (2)
- Potensiometer 10K
- Layar LCD 16x2
- LED
- Papan tempat memotong roti
- Menghubungkan Kabel
Dalam tutorial ini Arduino Uno digunakan sebagai Master dan Arduino Nano digunakan sebagai Slave. Dua Papan Arduino digunakan di sini sehingga dibutuhkan dua Modul RS-485.
Diagram Sirkuit
Koneksi Sirkuit antara RS-485 pertama dan Arduino UNO (Master):
RS-485 |
Arduino UNO |
DI |
1 (TX) |
DE KEMBALI |
8 |
R0 |
0 (RX) |
VCC |
5V |
GND |
GND |
SEBUAH |
Ke A dari Slave RS-485 |
B |
Ke B dari Slave RS-485 |
Koneksi antara RS-485 kedua dan Arduino Nano (Slave):
RS-485 |
Arduino UNO |
DI |
D1 (TX) |
DE KEMBALI |
D8 |
R0 |
D0 (RX) |
VCC |
5V |
GND |
GND |
SEBUAH |
Ke A dari Master RS-485 |
B |
Ke B dari Master RS-485 |
Koneksi Sirkuit antara LCD 16x2 dan Arduino Nano:
LCD 16x2 |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
Ke pin tengah potensiometer untuk kontrol kontras LCD |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
SEBUAH |
+ 5V |
K |
GND |
Potensiometer 10K dihubungkan ke Pin Analog A0 dari Arduino UNO untuk menyediakan input Analog dan LED dihubungkan ke pin D10 dari Arduino Nano.
Pemrograman Arduino UNO & Arduino Nano untuk Komunikasi Serial RS485
Untuk memprogram kedua papan Arduino IDE digunakan. Tapi pastikan Anda telah memilih PORT yang sesuai dari Tools-> Port and Board dari Tools-> Board.
Kode lengkap dengan Video Demo diberikan di akhir tutorial ini. Di sini kami menjelaskan bagian penting dari kode. Ada dua program dalam tutorial ini, satu untuk Arduino UNO (Master) dan lainnya untuk Arduino Nano (Slave).
Penjelasan Kode untuk Master: Arduino UNO
Di sisi Master, cukup ambil input Analog di pin A0 dengan memvariasikan potensiometer dan kemudian SerialWrite nilai-nilai tersebut ke bus RS-485 melalui Hardware Serial Ports (0,1) dari Arduino UNO.
Untuk Memulai Komunikasi Serial di Pin Serial Perangkat Keras (0,1) gunakan:
Serial.begin (9600);
Untuk membaca nilai Analog pada pin A0 dari Arduino UNO dan menyimpannya dalam penggunaan potval variabel:
int potval = analogRead (pushval);
Sebelum menuliskan nilai potensialnya ke port serial, pin DE & RE RS-485 harus HIGH yang dihubungkan ke pin 8 Arduino UNO sehingga untuk Membuat pin 8 HIGH:
digitalWrite (enablePin, HIGH);
Selanjutnya untuk meletakkan nilai-nilai tersebut di Port Serial yang terhubung dengan modul RS-485, gunakan pernyataan berikut
Serial.println (potval);
Penjelasan Kode untuk Slave: Arduino NANO
Di sisi Slave, nilai integer diterima dari Master RS-485 yang tersedia di port Serial Perangkat Keras Arduino Nano (Pin -0,1). Cukup baca nilai tersebut dan simpan dalam variabel. Nilainya berupa (0 -1023). Jadi diubah menjadi (0-255) karena teknik PWM digunakan untuk mengontrol kecerahan LED.
Kemudian AnalogWrite nilai yang dikonversi ke pin LED D10 (Ini adalah pin PWM). Jadi tergantung pada nilai PWM, kecerahan LED berubah dan juga menampilkan nilai-nilai tersebut dalam layar LCD 16x2.
Agar Slave Arduino RS-485 menerima nilai dari Master, buat saja pin DE & RE RS-485 LOW. Jadi pin D8 (enablePin) Arduino NANO dibuat RENDAH.
digitalWrite (enablePin, LOW);
Dan untuk membaca data integer yang tersedia di Port Serial dan menyimpannya dalam penggunaan variabel
int pwmval = Serial.parseInt ();
Selanjutnya, konversi nilai dari (0-1023 menjadi 0-255) dan simpan dalam variabel:
int convert = map (pwmval, 0,1023,0,255);
Selanjutnya tulis nilai analog (PWM) ke pin D10 di mana anoda LED dihubungkan:
analogWrite (ledpin, convert);
Untuk mencetak nilai PWM tersebut pada layar LCD 16x2 digunakan
lcd.setCursor (0,0); lcd.print ("PWM FROM MASTER"); lcd.setCursor (0,1); lcd.print (ubah);
Mengontrol Kecerahan LED dengan Komunikasi Serial RS485
Ketika nilai PWM diatur ke 0 menggunakan potensiometer, LED dimatikan.
Dan ketika nilai PWM diset ke 251 menggunakan potensiometer: LED DIHIDUPKAN dengan kecerahan penuh seperti yang ditunjukkan pada gambar di bawah ini:
Jadi beginilah cara RS485 dapat digunakan untuk komunikasi serial di Arduino.