Modbus RTU + ESP32: Baca Sensor 4-20mA ke Serial Monitor
Tutorial menghubungkan ESP32 sebagai Modbus Master untuk membaca data sensor 4-20mA dari modul converter Modbus RTU dan menampilkannya di Serial Monitor Arduino IDE

Sampai artikel sebelumnya, kamu sudah bisa membaca data Modbus RTU lewat Modbus Poll di laptop. Tapi untuk membangun sistem IoT yang benar-benar mandiri — bisa dipasang di lapangan, mengirim data ke cloud, atau jadi bagian dari dashboard — kamu butuh mikrokontroler yang bisa membaca data Modbus RTU secara langsung, tanpa perlu laptop terus menerus terhubung.
Di sinilah ESP32 masuk. Artikel ini akan memandu kamu menghubungkan ESP32 sebagai Modbus Master, membaca data dari modul converter 4-20mA to Modbus RTU, dan menampilkan hasilnya langsung di Serial Monitor Arduino IDE.
📌 Bagian dari seri Panduan Lengkap Modbus RTU. Pastikan kamu sudah paham wiring RS-485 dan cara setting Slave Address sebelum lanjut ke artikel ini.
Kenapa ESP32 untuk Proyek Modbus RTU?
ESP32 jadi pilihan populer di kalangan hobbyist maupun engineer untuk proyek retrofit IoT karena:
- Murah dibanding PLC atau gateway komersial
- Built-in WiFi dan Bluetooth — memudahkan kirim data ke cloud/dashboard setelah dibaca dari Modbus
- Multiple UART/Serial port — bisa dipakai untuk komunikasi RS-485 sekaligus debugging lewat Serial Monitor
- Komunitas dan library besar — termasuk library Modbus RTU siap pakai, tidak perlu menulis protokol dari nol
Yang Kamu Butuhkan
Hardware:
- ESP32 development board (DevKit v1 atau sejenis)
- Modul konverter RS-485 to TTL dengan auto direction control (misalnya modul converter 4-20mA to Modbus RTU yang sudah dilengkapi antarmuka RS-485 auto-flow)
- Kabel jumper
- Sensor 4-20mA (opsional — bisa simulasi dengan modul yang punya mode test)

Software:
- Arduino IDE dengan board manager ESP32 sudah terinstall
- Library ModbusMaster (oleh Doc Walker) — bisa diinstall lewat Library Manager di Arduino IDE
Langkah 1: Wiring ESP32 ke Modul RS-485
Modul RS-485 to TTL yang dipakai di tutorial ini punya 3 pin utama: VCC, GND, RO (Receiver Output), dan DI (Driver Input), ditambah dua terminal A dan B untuk koneksi ke jalur RS-485. Modul ini sudah dilengkapi auto direction control, jadi tidak perlu pin DE/RE tambahan.
Koneksi ke ESP32 (contoh menggunakan UART2):
| Pin Modul RS-485 | Pin ESP32 |
|---|---|
| VCC | 3.3V atau 5V (cek spesifikasi modul) |
| GND | GND |
| RO | GPIO 16 (RX2) |
| DI | GPIO 17 (TX2) |
| A, B | Sambungkan ke jalur RS-485 menuju modul converter/sensor |
💡 Karena modul converter yang dipakai sudah auto direction control, kamu tidak perlu menyambungkan atau mengatur pin DE/RE terpisah di kode program — cukup RO dan DI seperti komunikasi serial biasa.

Langkah 2: Install Library ModbusMaster
Di Arduino IDE, buka Sketch → Include Library → Manage Libraries, cari “ModbusMaster” (oleh Doc Walker), lalu klik Install.
Langkah 3: Kode Program Dasar
Berikut contoh kode dasar untuk membaca satu Holding Register dari perangkat Modbus RTU dengan Slave Address 1:
#include <ModbusMaster.h>
#define RXD2 16
#define TXD2 17
ModbusMaster node;
void setup() {
Serial.begin(115200);
Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);
node.begin(1, Serial2); // Slave Address 1
}
void loop() {
uint8_t result;
result = node.readHoldingRegisters(0, 1); // Baca 1 register mulai dari address 0
if (result == node.ku8MBSuccess) {
uint16_t rawValue = node.getResponseBuffer(0);
float mA = rawValue / 100.0; // Sesuaikan faktor konversi dengan datasheet modul
Serial.print("Nilai mentah: ");
Serial.print(rawValue);
Serial.print(" | Nilai mA: ");
Serial.println(mA, 2);
} else {
Serial.print("Gagal membaca. Error code: ");
Serial.println(result, HEX);
}
delay(1000);
}
Penjelasan bagian penting:
- node.begin(1, Serial2) — angka 1 adalah Slave Address perangkat target, sesuaikan dengan setting perangkat kamu
- Serial2.begin(9600, …) — baud rate harus sama persis dengan setting perangkat Modbus RTU kamu
- node.readHoldingRegisters(0, 1) — membaca 1 register mulai dari address 0 (ingat konsep offset yang dibahas di artikel Troubleshooting)
- Faktor pembagi 100.0 perlu disesuaikan dengan datasheet modul converter kamu — beberapa modul pakai faktor berbeda
Langkah 4: Upload dan Verifikasi di Serial Monitor
- Sambungkan ESP32 ke laptop lewat USB
- Pilih board dan port yang sesuai di Arduino IDE
- Upload kode program
- Buka Serial Monitor (Ctrl+Shift+M), set baud rate ke 115200 (sesuai Serial.begin di kode)
Kamu akan melihat nilai mentah dan nilai mA muncul setiap 1 detik.
Kalau muncul “Gagal membaca. Error code: …”, cek ulang wiring, baud rate, dan Slave Address — prinsip diagnosisnya sama persis dengan yang dibahas di artikel Troubleshooting Modbus RTU.
Langkah Selanjutnya: Dari Serial Monitor ke Dashboard
Setelah data berhasil terbaca di Serial Monitor, langkah alami berikutnya adalah mengirim data itu ke platform yang lebih visual — misalnya Node-RED untuk membangun dashboard real-time, atau ke cloud platform untuk monitoring jarak jauh.
➡️ Tutorial lengkapnya ada di artikel selanjutnya: Integrasi Modbus RTU ke Node-RED: Step by Step.
Rangkuman
ESP32 sebagai Modbus Master memungkinkan kamu membangun sistem pembacaan sensor 4-20mA yang mandiri, tanpa bergantung pada laptop. Empat langkah kuncinya: wiring modul RS-485 to TTL ke ESP32, install library ModbusMaster, tulis kode program dengan Slave Address dan baud rate yang sesuai, lalu verifikasi hasilnya di Serial Monitor.
Praktik Langsung dengan Hardware Asli
Kode di atas paling optimal kalau langsung dipraktikkan dengan modul converter asli, supaya kamu bisa sesuaikan faktor konversi dan Slave Address dengan kondisi nyata.
🔧 Belum punya modul converter untuk praktik? Cek modul 4-20mA to Modbus RTU di Tokopedia: tokopedia.com/bisaioti — setiap pembelian dapat akses bonus ke kelas praktik “Batch Pendiri” di bisaioti.com/lab, termasuk contoh kode ESP32 yang sudah disesuaikan dengan modul ini.
🎓 Mau dipandu langsung dari wiring sampai kode ESP32 jalan tanpa trial-error sendiri? Gabung kelas “Dari Sensor Industri ke Dashboard: Baca Data 4-20mA via Modbus RTU” di bisaioti.com/lab.




