Menampilkan Data Sensor MD02 pada LCD I2C 16×2

MD02 pada LCD I2C 16x2
MD02 pada LCD I2C 16x2

Setelah sebelumnya kita belajar menggunakan USB to RS-485 dan software ModScan untuk membaca sensor MD02, kali ini kita akan mencoba hal baru! Kita akan memakai komponen MAX485 sebagai konverter RS-485 dan menampilkan datanya langsung di Serial Monitor serta LCD I2C 16×2 menggunakan Arduino IDE. Dengan ESP32 dan protokol Modbus RTU, kita bisa memantau suhu dan kelembapan secara real-time. Yuk, ikuti langkah-langkah seru ini untuk membuat proyek monitoring dengan Modbus!

Modscan : Solusi Praktis Uji Perangkat Modbus MD02

Komponen

Diagram Wiring

Keterangan :

ESP32 MAX485 MD02 Female DC Jack LCD I2C 16X2
3V3 VCC
5V VCC
GND GND GND
D4 R2 & R3
D18 R1
D19 R4
D21 SDA
D22 SCL
B B-
A A+
+ +

Implementasi

  • Menginstall Board ESP32
    • Buka File > Preferences di Arduino IDE.
    • Tambahkan URL : https://dl.espressif.com/dl/package_esp32_index.json di Additional Boards Manager URLs.
    • Pergi ke Tools > Board > Board Manager, cari ESP32 dan install.
  • Menginstall Library Modbus Master
    • Buka Sketch > Include Library > Manage Libraries.
    • Cari ModbusMaster dan klik Install.
  • Menginstall Library Liquid Crystal I2C
    • Buka Sketch > Include Library > Manage Libraries.
    • Cari LiquidCrystal I2C dan klik Install.

Kode Program


#include <ModbusMaster.h>
#include <LiquidCrystal_I2C.h>

#define MODBUS_DIR_PIN 4 // DE dan RE pin (R2 dan R3)
#define MODBUS_RO_PIN 18 // RO pin (R1)
#define MODBUS_DI_PIN 19 // DI pin (R4)
#define MODBUS_SERIAL_BAUD 9600 // Baud rate MODBUS
#define MODBUS_PARITY SERIAL_8E1 // parity Modbus

#define MODBUS_SLAVE_ID 1 // slave ID modbus
#define MODBUS_ADDRESS 0x0001 // alamat modbus yang diambil datanya
#define MODBUS_QUANTITY 2 // jumlah data yang diambil

ModbusMaster modbus;
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Pin 4 made high for Modbus transmision mode
void modbusPreTransmission() {
  delay(500);
  digitalWrite(MODBUS_DIR_PIN, HIGH);
}
// Pin 4 made low for Modbus receive mode
void modbusPostTransmission() {
  digitalWrite(MODBUS_DIR_PIN, LOW);
  delay(500);
}

void setup() {
  Serial.begin(115200);
  pinMode(MODBUS_DIR_PIN, OUTPUT);
  digitalWrite(MODBUS_DIR_PIN, LOW);

  Serial2.begin(MODBUS_SERIAL_BAUD, MODBUS_PARITY, MODBUS_RO_PIN, MODBUS_DI_PIN);
  Serial2.setTimeout(1000);
  modbus.begin(MODBUS_SLAVE_ID, Serial2);

  modbus.preTransmission(modbusPreTransmission);
  modbus.postTransmission(modbusPostTransmission);

  lcd.init();
  lcd.backlight();
}

void loop() {
  int pooling;
  int hasil[2];
  float temperature;
  float humidity;

  pooling = modbus.readInputRegisters(MODBUS_ADDRESS, MODBUS_QUANTITY);
  if (pooling == modbus.ku8MBSuccess) {
    Serial.println("Success, Data diterima:");

    hasil[0] = modbus.getResponseBuffer(0x00);
    hasil[1] = modbus.getResponseBuffer(0x01);

    temperature = hasil[0] / 100.f;
    humidity = hasil[1] / 100.f;

    lcd.setCursor(0, 0);
    lcd.print("Temp: " + String(temperature, 2) + " C");
    lcd.setCursor(0, 1);
    lcd.print("Humidity: " + String(humidity, 2) + " %");

    Serial.println("Temp: " + String(temperature));
    Serial.println("Humidity: " + String(humidity));
    Serial.println();
  } else {
    Serial.println("Gagal membaca data");
  }
  delay(1000);
}

Langkah-langkah di Arduino IDE

  • Memverifikasi Kode
    • Klik tombol Verify untuk memeriksa kesalahan pada kode.
  • Mengupload Program
    • Hubungkan ESP32 ke komputer.
    • Pilih board ESP32 Dev Module dan pilih Port yang sesuai di Arduino IDE.
    • Klik tombol Upload untuk mengunggah progam.

Hasil Akhir

FAQ

Apa itu Modbus RTU?

Modbus RTU adalah protokol komunikasi yang dipakai perangkat industri untuk berkomunikasi satu sama lain.

Kenapa pakai MAX485 TTL to RS-485 Converter?

Karena ESP32 menggunakan sinyal TTL, sedangkan sensor MD02 menggunakan RS-485. MAX485 ini yang mengubah sinyal TTL ke RS-485 supaya keduanya bisa saling berkomunikasi.

Kenapa tampilan di LCD I2C kurang jelas atau redup?

Coba atur trimpot yang ada dibelakang modul LCD. Trimpot ini untuk mengatur kontras layar. Cukup putar aja pakai obeng kecil sampai teksnya terlihat lebih jelas.

Apakah bisa menampilkan data lebih dari satu layar LCD?

Bisa banget! Kamu cukup menambah LCD I2C kedua dan menyambungkannya ke ESP32. Programnya bisa dimodifikasi untuk menampilkan data di beberapa layar.

Kesimpulan

Nah, itu dia cara mudah untuk menampilkan data dari sensor MD02 ke LCD I2C 16×2! Dengan mengikuti langkah-langkah yang sudah dibahas, kamu bisa lebih paham cara kerja sensor dan tampilan LCD. Proyek ini cocok banget buat kamu yang ingin mulai belajar tentang sensor dan pengolahan data secara langsung. Selain itu, jangan ragu untuk terus bereksperimen dengan proyek-proyek lainnya!

Leave a Reply

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