Komunikasi Modbus RTU ESP32 ke Modbus Poll Menggunakan Converter TTL to RS485

Pendahuluan

Modbus RTU adalah protokol komunikasi industri yang banyak digunakan untuk menghubungkan perangkat seperti PLC, sensor, dan mikrokontroler dalam sistem otomasi. ESP32, sebagai mikrokontroler yang mendukung berbagai protokol komunikasi, dapat digunakan sebagai slave atau master dalam sistem Modbus RTU.

esp32 modbus rtu

Dalam panduan ini, kita akan membahas cara menghubungkan ESP32 ke software Modbus poll/slave  menggunakan converter TTL to RS485. Modbus Poll adalah software yang sering digunakan untuk menguji komunikasi Modbus dengan perangkat slave.sedangkan modbus slave digunakan untuk menguji komunikasi modbus dengan master

Ads Jadwal Training bisaioti Offline
NoMateriTanggalWaktuHargaLokasiViewAction
1IOT PLC SCADA Siemens7-8 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
2IOT PLC SCADA Omron14 - 15 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
3IOT PLC SCADA Schneider21-22 Juni 202508.00 -16.002000000SurabayaSilabusDaftar Sekarang
4IOT PLC SCADA Allen Bradley28-29 Juni 202508.00-16.002000000SurabayaSilabusDaftar Sekarang

Peralatan yang Dibutuhkan

Sebelum memulai, pastikan Anda memiliki perangkat berikut:

  1. ESP32 (sebagai perangkat Modbus RTU slave atau master)
  2. Converter TTL to RS485 (untuk mengubah sinyal ESP32 ke RS485)
  3. USB to RS485 Adapter (untuk menghubungkan ke komputer)
  4. Modbus Poll/Slave Software (untuk menguji komunikasi)
  5. Resistor 120Ω (opsional, jika diperlukan untuk terminasi)
  6. Jumper wire (untuk koneksi antara ESP32 dan converter TTL to RS485)

Diagram Koneksi ESP32 ke Converter TTL to RS485
esp32 to converter

Berikut adalah koneksi dasar antara ESP32 dan converter TTL to RS485:

  • ESP32 RX (GPIO 16) → TX pada Converter TTL to RS485
  • ESP32 TX (GPIO 17) → RX pada Converter TTL to RS485
  • ESP32 DE/RE (GPIO 4) → DE/RE pada Converter TTL to RS485
  • GND ESP32 → GND Converter TTL to RS485

Koneksi antara USB to RS485 Adapter ke converter TTL to RS485:
esp32 - ttl-usb1

  • A (USB to RS485 Adapter) → A (Converter TTL to RS485)
  • B (USB to RS485 Adapter) → B (Converter TTL to RS485)

Instalasi Modbus Poll dan Pengaturan Komunikasi

  1. Unduh dan instal Modbus Poll dari website resminya.
  2. Hubungkan USB to RS485 Adapter ke komputer.
  3. Cek nomor COM Port yang digunakan dengan membuka Device Manager di Windows.
  4. Buka Modbus Poll/Slave dan buat koneksi baru dengan parameter berikut:
    • Protocol: Modbus RTU
    • Port: (Pilih COM yang sesuai)
    • Baudrate: 9600 (atau sesuaikan dengan kode ESP32)
    • Data Bits: 8
    • Parity: None
    • Stop Bits: 1

Kode Program ESP32 untuk Komunikasi Modbus RTU

1. Instalasi Library ModbusRTU

Sebelum memulai coding, pastikan Anda menginstal library ModbusRTU di Arduino IDE:

  1. Buka Arduino IDE
  2. Pergi ke Library Manager (Ctrl + Shift + I)
  3. Cari “ModbusRTU” dan instal

2. Kode Program ESP32 sebagai Modbus RTU as slave

ESP32 Sebagai Master

#include "DFRobot_RTU.h"

#include <HardwareSerial.h>

#define RX_PIN 17  // RX ke RS485

#define TX_PIN 16  // TX ke RS485

#define SLAVE_ID 1 // ID dari Slave (sesuaikan dengan device atau software yang digunakan)

// Gunakan UART1 untuk komunikasi RS485

HardwareSerial mySerial(1);

DFRobot_RTU modbus(&mySerial);

void setup() {

    Serial.begin(115200);

    mySerial.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);  // Sesuaikan baudrate dengan Slave

    Serial.println("Modbus RTU Master Initialized.");

}

void loop() {

    uint16_t data[2];  // Buffer untuk menyimpan nilai dari register slave

    // Membaca Holding Register dari Slave 

    uint8_t status = modbus.readInputRegister(SLAVE_ID, 8, data, 2);

   

    if (status == 0) {  // Jika pembacaan berhasil

        int data1 = data[0];  // data dari modbus slave

        int data2 = data[1];  // data dari modbus slave

        Serial.print("Data1 : ");

        Serial.println(data1);

        Serial.print("Data2 : ");

        Serial.println(data2);

    } else {

        Serial.println("Failed to read from Slave");

    }

    delay(2000);  // Jeda sebelum pembacaan berikutnya

}

ESP32 sebagai Slave

#include <ModbusRTUSlave.h>
#include <HardwareSerial.h>

#define RX_PIN 17  // RX ke RS485

#define TX_PIN 16  // TX ke RS485

#define SLAVE_ID 1 // ID Slave Modbus

HardwareSerial mySerial(1);

ModbusRTUSlave modbus(mySerial);

uint16_t holdingRegs[10]; // Buffer register

void setup() {

    Serial.begin(115200);

    mySerial.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);  // Sesuaikan baudrate

    // Perbaikan: Gunakan 3 parameter untuk fungsi begin()

    modbus.begin(SLAVE_ID, 9600, SERIAL_8N1);  

    modbus.configureHoldingRegisters(holdingRegs, 10); // 10 register

    Serial.println("Modbus RTU Slave Initialized.");

}

void loop() {

    modbus.poll();

    // Simulasi perubahan data setiap 5 detik

    static uint32_t lastUpdate = 0;

    if (millis() - lastUpdate > 5000) {

        lastUpdate = millis();

        holdingRegs[0] = random(20, 30); // Suhu

        holdingRegs[1] = random(50, 70); // Kelembaban

        Serial.print("Update Data - Temp: ");

        Serial.print(holdingRegs[0]);

        Serial.print("°C, Hum: ");

        Serial.print(holdingRegs[1]);

        Serial.println("%");

    }

}
 

3. Pengujian dengan Modbus Poll/Slave

  1. Jalankan Modbus Poll/Slave
  2. Buka menu “Connection” → “Connect” dan pastikan komunikasi berhasil
  3. Buka menu “Read/Write Definition” untuk membaca register dari ESP32
  4. Masukkan parameter berikut:
    • Address: 1
    • Function: 03 (Read Holding Registers)
    • Start Address: 0
    • Quantity: 10
  5. Jika konfigurasi benar, Modbus Poll akan menampilkan data dari ESP32

Troubleshooting

Jika komunikasi gagal, periksa beberapa hal berikut:

  • Pastikan baudrate di kode ESP32 dan Modbus Poll/Slave sama
  • Cek koneksi kabel, terutama A dan B pada RS485
  • Gunakan resistor terminasi 120Ω jika jaringan RS485 panjang
  • Gunakan Serial Monitor Arduino IDE untuk mengecek apakah ESP32 berjalan dengan benar

Kesimpulan

Dalam panduan ini, kita telah membahas bagaimana cara menghubungkan ESP32 dengan Modbus Poll/Slave menggunakan komunikasi Modbus RTU melalui RS485. Dengan konfigurasi yang tepat, ESP32 dapat berfungsi sebagai slave Modbus RTU dan berkomunikasi dengan perangkat lain seperti komputer atau PLC.

Panduan ini sangat berguna bagi engineer dan pengembang IoT yang ingin mengimplementasikan komunikasi Modbus RTU dalam proyek industri dan otomasi. Jika Anda memiliki pertanyaan atau kendala, silakan tinggalkan komentar di bawah!

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Sekarang