Memilih protokol komunikasi untuk komunikasi antara mikrokontroler dan perangkat periferal adalah bagian penting dari sistem embedded microcontroller. Show Ini penting karena kinerja keseluruhan dari aplikasi yang diprogramkan tergantung pada sarana komunikasi yang terkait dengan pengurangan biaya, transfer data yang lebih cepat, jangkauan jarak jauh dan lain – lain. Dalam tutorial sebelumnya kita telah belajar tentang protokol komunikasi I2C dan protokol komunikasi SPI pada pemrograman Arduino. Untuk saat terdapat protokol komunikasi serial yang dapat diaplikasikan juga di Arduino yang disebut dengan komunikasi RS-485. Protokol ini menggunakan komunikasi serial asinkronus. Keuntungan utama dari RS-485 adalah transfer data jarak jauh yang mencapai 1200 meter antara dua perangkat (master dan slave). Dan pengaplikasian banyak di dunia industri otomotif, manufacture, aeorospace, kereta api, dan lain sebagainya. Pada artikel ini akan dibahas tentang cara mengakses komunikasi RS-485 antara dua Arduino untuk mengendalikan kecerahan LED (fading 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. RS-485 Protokol Komunikasi SerialRS-485 adalah protokol komunikasi serial asinkron yang tidak memerlukan pulsa clock. Komunikasi ini menggunakan teknik yang disebut sinyal diferensial untuk mentransfer data biner dari satu perangkat ke perangkat lainnya. Jadi apa yang dimaksud dengan metode transfer sinyal diferensial? Metode sinyal diferensial bekerja dengan membuat tegangan diferensial dengan menggunakan 5V positif dan negatif. Ini menyediakan komunikasi Half-Duplex saat menggunakan dua kabel dan Full-Duplex membutuhkan 4 kabel merangkak . Keuntugan menggunakan metode ini antara lain :
Perbedaan antara Modbus dan RS485MODBUS merupakan protokol komunikasi berstandar internasional untuk pertukaran data antar perangkat (master-slave) dari berbagai vendor yang berbeda yang biasanya digunakan untuk keperluan industri. RS485 merupakan interface fisik, hanya perangkat keras atau hardware saja. Dalam keadaan normal, 2 perangkat master dan slave saling mengirimkan data secara 2 arah melalui protokol MODBUS. Jenis dari Protokol MODBUS antara lain MODBUS RTU, MODBUS ASCII, dan MODBUS TCP 3 mode. Untuk interface perangkat keras yang berupa fisik yang sering digunakan yaitu port komunikasi serial jenis RS232, RS422, dan RS485. Dan MODBUS TCP adalah untuk mengikuti tren perkembangan dunia saat ini, dan apa pun dapat dihubungkan dengan jaringan Ethernet atau Internet untuk mengirim data atau IOT. Sehingga MODBUS TCP mode sebagai interface perangkat keras dari mode ini yaitu port Ethernet, yang dimana merupakan port yang ada pada setiap komputer. RS-485 untuk penggunaan di ArduinoUntuk menggunakan RS-485 di Arduino, modul yang disebut 5V MAX485 TTL ke RS485 yang didasarkan pada Maxim MAX485 IC diperlukan karena memungkinkan komunikasi serial jarak jauh 1.200 meter dan dua arah. Dalam mode setengah dupleks ia 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. RS-485 ini memiliki fitur sebagai berikut:
Pin-Out dari RS-485:
Modul RS-485 ini dapat dengan mudah dihubungkan dengan Arduino. Gunakan port serial Arduino pada pin 0 (RX) dan 1 (TX) (pada arduino UNO, NANO). Pemrogramannya juga sederhana cukup gunakan Serial.print () untuk menulis ke RS-485 dan Serial.Read () untuk membaca dari RS-485. Baca juga : Tutorial Arduino mengakses module Rotary Encoder Komponen yang Dibutuhkan
Diagram rangkaian antar ArduinoWiring antar Arduino UNO Master dan Slave menggunakan RS-485:
Wiring antara LCD 16×2 dan Arduino Uno:
Pemrograman Arduino UNO & Arduino Nano untuk Komunikasi Serial RS485 Untuk pemrograman kedua papan, Arduino IDE digunakan. Tetapi pastikan Anda telah memilih PORT yang sesuai dari Tools -> Port dan Board dari Tools -> Board. Di sisi Master, cukup ambil input Analog di pin A0 dengan memvariasikan potensiometer dan SerialWrite nilai-nilai tersebut ke bus RS-485 melalui Port Serial Perangkat Keras (0,1) ke sisi Slave. Kode Program Master RS485
//Program master RS485 int Pin_enable = 8; int potensio = A0; int hasilbacapotensio =00 ; void setup() { Serial.begin(9600); pinMode(Pin_enable, OUTPUT); pinMode(potensio,INPUT); delay(10); digitalWrite(Pin_enable, HIGH); } void loop() { int hasilbacapotensio = analogRead(potensio); Serial.println(hasilbacapotensio); delay(100); }
Kode Program Slave RS485
#include <LiquidCrystal_PCF8574.h> #include <Wire.h> int enablePin = 8; LiquidCrystal_PCF8574 lcd(0x20); // dapat dicek menggunakan i2c scanner atau i2c finder void setup(){ Serial.begin(9600); //lcd setup lcd.begin(16, 2); // initialize the lcd lcd.setBacklight(255); lcd.setCursor(00, 00); lcd.print("nyebarilmu.com"); lcd.setCursor(00, 1); lcd.print(" RS485"); delay(3000); lcd.clear(); pinMode(enablePin, OUTPUT); delay(10); digitalWrite(enablePin, LOW); } void loop() { while (Serial.available()) //jika ada data yang masuk { lcd.clear(); int pwm = Serial.parseInt(); //data berupa interger dari master RS485 int konvert = map(pwm,00,1023,00,255); //pengubahan nilai dari 0-1023 ke nilai 0-255 lcd.setCursor(00,00); lcd.print("PWM DARI MASTER"); lcd.setCursor(00,1); lcd.print(konvert); //tampilkan nilai delay(100); } }
Incoming search terms: |