ESP32 I2C Master(DHT11) and Slave(LCD) (I2C Communication Between Two ESP32)

Tujuan

  1. Memahami konsep komunikasi I2C antara dua ESP32.
  2. Menggunakan sensor DHT11 untuk membaca suhu dan kelembaban dengan ESP32 master.
  3. Mengirim data ke ESP32 slave untuk ditampilkan pada LCD I2C.

Komunikasi I2C (Inter-Integrated Circuit)

I2C adalah protokol komunikasi serial yang umum digunakan untuk mentransfer data antara perangkat dengan kecepatan tinggi, menggunakan hanya dua jalur: SDA (Serial Data) untuk transmisi data, dan SCL (Serial Clock) sebagai sinkronisasi data.

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
  • Master: Perangkat yang mengontrol aliran data dan mengirimkan perintah, dalam hal ini ESP32 pertama yang membaca data dari sensor DHT11.
  • Slave: Perangkat yang menerima data dari master dan merespons perintah, yaitu ESP32 kedua yang akan menampilkan data sensor di LCD I2C.

I2C memungkinkan komunikasi multi-master dan multi-slave dengan pengalamatan perangkat, sehingga ESP32 master dapat mengirim data suhu dan kelembaban yang dibaca ke ESP32 slave.

Sensor DHT11

DHT11 adalah sensor sederhana dan terjangkau yang mengukur suhu dan kelembaban. Sensor ini berkomunikasi secara digital dan menghasilkan data yang dapat dibaca langsung oleh mikrokontroler seperti ESP32 master.

LCD I2C

LCD I2C adalah layar dengan modul yang memungkinkan komunikasi melalui protokol I2C, sehingga hanya membutuhkan dua pin (SDA dan SCL) untuk koneksi. Pada skenario ini, ESP32 slave akan menampilkan data suhu dan kelembaban yang diterima dari master di LCD.

ESP32 I2C Master(DHT11) and Slave(LCD) (I2C Communication Between Two ESP32)

Alat dan Bahan

  1. 2 x ESP32
  2. 1 x Sensor DHT11
  3. 1 x LCD I2C (16×2)
  4. Kabel jumper
  5. Breadboard (opsional)

Langkah Kerja

  1. Setup Perangkat Keras

  1. Setup Software di Arduino IDE
  1. Konfigurasi ESP32 Master (Pembaca Sensor DHT11)
    • Instal library DHT untuk DHT11.
    • Program berikut membaca suhu dan kelembaban dari sensor DHT11, kemudian mengirim data tersebut ke ESP32 slave melalui I2C.
#include <Wire.h>

#include <DHT.h>

#define DHTPIN 12

#define DHTTYPE DHT11

#define SLAVE_ADDRESS 9

DHT dht(DHTPIN, DHTTYPE);

void setup() {

  Serial.begin(115200);

  Wire.begin(21, 22); // Mengatur pin I2C untuk komunikasi antar ESP32

  dht.begin();

}

void loop() {

  float temperature = dht.readTemperature();

  float humidity = dht.readHumidity();

  if (isnan(temperature) || isnan(humidity)) {

    Serial.println("Gagal membaca sensor DHT11");

    return;

  }

  // Mengirim data ke ESP32 Slave melalui I2C

  Wire.beginTransmission(SLAVE_ADDRESS);

  Wire.write((int)temperature);

  Wire.write((int)humidity);

  Wire.endTransmission();

  Serial.print("Suhu: ");

  Serial.print(temperature);

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

  Serial.print(humidity);

  Serial.println(" %");

  delay(2000);

}
  1. Konfigurasi ESP32 Slave (Penerima Data dan LCD I2C)
    • Instal library Wire dan LiquidCrystal_I2C untuk LCD.
    • Program berikut menerima data dari master dan menampilkannya di LCD I2C.
#include <Wire.h>

#include <LiquidCrystal_PCF8574.h>

// Inisialisasi LCD dengan instance kedua I2C

TwoWire I2C_LCD = TwoWire(1); // Inisialisasi TwoWire instance kedua

LiquidCrystal_PCF8574 lcd(0x27); // Alamat LCD I2C

int temperature = 0;

int humidity = 0;

void setup() {

Wire.begin(9); // Inisialisasi sebagai slave dengan alamat 8

Wire.onReceive(receiveEvent); // Register event untuk menerima data

Serial.begin(115200);

  // Inisialisasi I2C kedua untuk LCD

I2C_LCD.begin(18, 19); // Pin I2C untuk komunikasi dengan LCD

lcd.begin(16, 2, I2C_LCD); // Menghubungkan LCD ke I2C kedua

lcd.setBacklight(255); // Menyalakan backlight

lcd.clear();  

}

void loop() {

Serial.print("Temperature: ");

    Serial.print(temperature);

    Serial.print(" C, Humidity: ");

    Serial.print(humidity);

    Serial.println(" %");

 // Menampilkan data yang diterima di LCD

  lcd.setCursor(0, 0);

  lcd.print("Temp: ");

  lcd.print(temperature);

  lcd.print(" C");

  lcd.setCursor(0, 1);

  lcd.print("Hum: ");

  lcd.print(humidity);

  lcd.print(" %");

delay(2000); // Tunda 2 detik sebelum memperbarui tampilan

}

void receiveEvent(int bytes) {

if (Wire.available() >= 2) { // Pastikan ada setidaknya dua byte yang diterima

temperature = Wire.read(); // Baca suhu

humidity = Wire.read(); // Baca kelembaban

}

}

Pengujian

  1. Pastikan kedua ESP32 terhubung dengan benar melalui I2C (SDA dan SCL).
  2. Upload kode ke masing-masing ESP32.
  3. Monitor hasil di LCD I2C yang terhubung ke ESP32 slave. Pastikan nilai suhu dan kelembaban dari DHT11 muncul dengan benar.

Analisis Hasil

Jika konfigurasi berhasil, data suhu dan kelembaban dari sensor DHT11 akan ditampilkan secara berkala di LCD I2C yang terhubung ke ESP32 slave.

Proyek ini menunjukkan bagaimana dua ESP32 dapat berkomunikasi menggunakan protokol I2C untuk mengukur data dari sensor dan menampilkan informasi di layar.

Related Articles

Leave a Reply

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

Daftar Sekarang