Monitoring Suhu & Kelembaban 4–20 mA Menggunakan ESP32 via RS485 (Modbus RTU)

Tujuan Praktikum

Mahasiswa mampu:

  1. Memahami karakteristik sensor industri Autonics WD1-C (4–20 mA)
  2. Menggunakan converter Analog→RS485 secara benar dan aman
  3. Membaca data Modbus RTU di ESP32
  4. Mengonversi data digital → arus (mA) → suhu (°C) & kelembaban (%RH)

Peringatan Penting

  • ❌ ESP32 tidak boleh membaca 4–20 mA langsung
  • ✅ Gunakan converter Analog→RS485 untuk keamanan & keandalan industri
  • ⚠️ Pastikan ground common antar perangkat

Dasar Teori Singkat

  • Autonics WD1-C: sensor suhu & kelembaban output 4–20 mA (masing-masing kanal)
  • Waveshare Analog to RS485 (12-bit): mengubah arus menjadi data digital (mode 4–20 mA: nilai dalam µA, 4000–20000) via Modbus RTU
  • ESP32: bertindak sebagai Modbus Master (UART/TTL)

Arsitektur Sistem

Arsitektur

 

 

 

Alat dan Bahan

NoAlat / Bahan
1ESP32 Dev Board
2Autonics WD1-C (Suhu & Kelembaban, 4–20 mA)
3Waveshare Analog to RS485 (12-bit)
4Converter RS485 to TTL
5Power Supply 24 VDC
6Kabel & multimeter

Wiring Detail

Autonics WD1-C → Waveshare

(Periksa label terminal WD1-C Anda; umumnya terpisah per kanal)

Wiring sensor – Monitoring Suhu & Kelembaban 4

WD1-CWaveshare
OUT Temp + (4–20 mA)IN1+
OUT Temp −IN1−
OUT RH + (4–20 mA)IN2+
OUT RH −IN2−
Power Sensor24 VDC

Catatan: Jika modul Waveshare hanya 1 kanal, lakukan praktikum bergantian (Temp lalu RH).

Waveshare → RS485 to TTL

WaveshareRS485-TTL
AA
BB
GNDGND

Rs485-ttl → ESP32

RS485-TTLESP32
TXGPIO 16 (RX2)
RXGPIO 17 (TX2)
GNDGND

Konfigurasi Modbus (Waveshare)

  • Slave ID: 1
  • Baudrate: 9600
  • Parity: None
  • Stop Bit: 1
  • Mode: Modbus RTU

Peta Register (Contoh Umum)

Sesuaikan dengan datasheet modul Waveshare Anda

KanalRegisterResolusi
CH1 (Temp)0x0000 (FC04)4000–20000 µA
CH2 (RH)0x0001 (FC04)4000–20000 µA

Konversi Data

  1. Raw (µA) → Arus (mA) = Raw ÷ 1000
    Rumus1
  2. Arus → Nilai Fisik (Contoh Umum WD1-C)

Rumus2 – Monitoring Suhu & Kelembaban 4

Program ESP32 (Arduino IDE)

#include <ModbusMaster.h>

#define RX_PIN 16 // GPIO16 = RX2, sambung ke TX modul RS485-TTL
#define TX_PIN 17 // GPIO17 = TX2, sambung ke RX modul RS485-TTL

#define DE_PIN 5 // pin for RS485 direction control (optional)

ModbusMaster modbus;

void setup() {

  Serial.begin(9600);

  Serial2.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);

  pinMode(DE_PIN, OUTPUT); // set DE pin as output (if using)

  digitalWrite(DE_PIN, LOW); // set DE pin low (if using)

}

void loop() {

  uint16_t rawTemp, rawHum;

  // Baca input register dari slave 1

  modbus.begin(1, Serial2); // set slave ID to 1 and use Serial2 as the communication port

  uint8_t rc = modbus.readInputRegisters (0, 2); // baca 2 input register (FC04) mulai alamat 0

  if (rc == modbus.ku8MBSuccess) {

    rawTemp = modbus.getResponseBuffer(0);

    rawHum  = modbus.getResponseBuffer(1);

    float mA_temp = rawTemp /1000.0 ;

    float mA_hum  = rawHum /1000.0;

    float tempC = (mA_temp - 4.0) / 16.0 * 79.9 - 19.9;

    float humRH = (mA_hum - 4.0) / 16.0 * 99.9;

    Serial.print("Temperature: ");

    Serial.print(tempC);

    Serial.println(" C");

    Serial.print("Humidity: ");

    Serial.print(humRH);

    Serial.println(" %RH");




  } else {

    Serial.print("Slave 1: Error reading holding register: ");

    Serial.println(rc);

  }/*




*/

   

  delay(1000); // delay for 1 second

}

Rumus Konversi (Mode 4–20 mA)

Pada modul Waveshare Modbus RTU Analog Input yang diset ke mode 4–20 mA, nilai register sudah dalam satuan mikroampere (µA), misalnya 12000 = 12,000 mA. Karena itu:

  1. Arus (mA) = Raw ÷ 1000
  2. Nilai fisik = (mA − 4) ÷ 16 × (Rangemax − Rangemin) + Rangemin

Untuk WD1-C dengan range suhu −19,9 s.d. 60,0 °C: span = 79,9 °C. Pada 12 mA: (12 − 4) ÷ 16 × 79,9 − 19,9 = 20,05 °C. Untuk kelembapan 0–99,9 %RH pada 12 mA: 49,95 %RH. Nilai 0–4095 hanya muncul jika modul diset ke mode kode mentah (raw code).

Deteksi Sensor Putus atau Rusak

Keuntungan 4–20 mA adalah kondisi kabel putus bisa dibedakan dari nilai nol. Tambahkan pemeriksaan sebelum konversi:

if (mA_temp < 3.8) {
  Serial.println("ALARM: sensor suhu putus / tidak terhubung");
} else if (mA_temp > 20.5) {
  Serial.println("ALARM: arus di atas range (short / sensor rusak)");
} else {
  // lanjutkan konversi ke °C
}

Jika Memakai Modul MAX485 Manual (Pin DE/RE)

Modul RS485–TTL otomatis tidak memerlukan pin DE. Jika memakai modul MAX485 dengan pin DE/RE, library ModbusMaster harus diberi tahu kapan mengaktifkan pemancar:

#define DE_PIN 5

void preTransmission()  { digitalWrite(DE_PIN, HIGH); }
void postTransmission() { digitalWrite(DE_PIN, LOW); }

// di setup():
modbus.begin(1, Serial2);
modbus.preTransmission(preTransmission);
modbus.postTransmission(postTransmission);

Verifikasi dengan Modbus Poll

  1. Sambungkan modul Waveshare ke laptop lewat USB–RS485.
  2. Modbus Poll: Serial RTU, 9600 baud, 8 data bit, None parity, 1 stop bit.
  3. Read/Write Definition: Slave ID 1, Function 04 Read Input Registers, Address 0, Quantity 2.
  4. Bandingkan nilai di Modbus Poll dengan nilai raw yang dicetak ESP32. Keduanya harus sama; jika berbeda, periksa slave ID dan alamat register.

Tugas Praktikum

  1. Verifikasi nilai dengan Modbus Poll
  2. Bandingkan hasil Modbus Poll vs ESP32
  3. Ubah range suhu/RH sesuai datasheet WD1-C
  4. Analisis resolusi 12-bit & error

Kesalahan Umum

  • A/B RS485 terbalik → No response
  • Slave ID/baud beda → Timeout/CRC error
  • Ground tidak common → Data tidak stabil

Kesimpulan

  • Sistem aman & industrial-grade
  • ESP32 tidak menyentuh analog
  • Siap dikembangkan ke PLC / SCADA / IIoT

Pengembangan Lanjutan

  • Logging ke MQTT / Node-RED
  • Integrasi PLC Siemens/Omron
  • Isolator RS485 untuk lingkungan bising
  • Kalibrasi & alarm threshold

 

Baca Juga:
— Training ESP32 Berbasis IoT: Pelatihan Praktis Pemula hingga Mahir
— Training IoT Profesional: Pelatihan Praktis & Bersertifikat

Baca juga: ESP32: Panduan Komprehensif untuk Pemula hingga Ahli (IoT, Pemrograman, & Proyek) untuk memahami roadmap lengkap belajar ESP32 dari dasar hingga proyek IoT.

Related Articles

Tinggalkan Balasan

Chat Langsung dengan Kami
Staff bisaioti 1 — +62 823-3306-4821 E-Course, Offline Course, Hardware & Teknis IoT/OT Staff bisaioti 2 — +62 823-3306-4821 Training Korporat & Toko Hardware