Tutorial ESP32 – Komunikasi I2C pada ESP 32

ARSAFAMILY.COM – Sedikit membahas tentang pertanyaan para pengguna pemula

Bisa gak sih menguhubungkan perangkat yang memakai komunikasi I2C ke ESP32, kan pin SDA dan SCL nya masing-masing cuma hanya ada satu ???

Ternyata jawabannya bisa cuuyyyy

Caranya ya dibuat percabangan saja di pin SDA dan SCL nya, kali ini kita akan mencoba untuk memakai dua perangkat yang memakai komunikasi I2C bersama, yaitu memakai sensor BMP280 dan LCD 16×2 I2C.

Rangkai BMP280 dan LCD 16×2 I2C dengan ESP32 seperti gambar di bawah

Lah kok bisa ???

Lihat gambar di atas bro, jalurnya SDA dan SCL nya memang cuma satu, namun ternyata I2C bisa berkomunikasi lewat jalur yang sama namun dengan alamat yang berbeda, contohny BMP280 alamatnya adalah 0x76 sedangkan LCD 16×2 I2C alamatnya adalah 0x27.

Lanjut, upload kode di bawah ini

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>

#define BMP_SCK  (13)
#define BMP_MISO (12)
#define BMP_MOSI (11)
#define BMP_CS   (10)

Adafruit_BMP280 bmp;

int kolom = 16;
int baris = 2;

LiquidCrystal_I2C lcd(0x27, kolom, baris);  

String TeksBergerak = "MULTIDISIPLIN SMART-X ITB";

void setup(){
  Serial.begin(9600);
  lcd.init();                      
  lcd.backlight();
  while ( !Serial ) delay(100);
  unsigned status;
  status = bmp.begin(0x76);
  if (!status)
  { while (1) delay(10); }

  bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, Adafruit_BMP280::SAMPLING_X2, Adafruit_BMP280::SAMPLING_X16, Adafruit_BMP280::FILTER_X16, Adafruit_BMP280::STANDBY_MS_500);
}

void loop(){
  TulisanBergerak(0, TeksBergerak, 300, kolom);
}

void TulisanBergerak(int row, String message, int delayTime, int kolom) {
  for (int i=0; i < kolom; i++) {
    message = " " + message;  
  }
  message = message + " ";
  for (int pos = 0; pos < message.length(); pos++) {
    lcd.setCursor(0, row);
    lcd.print(message.substring(pos, pos + kolom));
    lcd.setCursor(0, 1);
    lcd.print("Suhu : ");
    lcd.setCursor(7, 1);
    lcd.print(bmp.readTemperature());
    lcd.setCursor(13, 1);
    lcd.print("C");
    delay(delayTime);
  }
}

Supaya ada manis-manisnya, kita buat contoh running text dan suhu hasil pengukuran oleh sensor BMP280 yang akan ditampilkan pada LCD 16×2. Untuk video hasilnya dapat dilihat di bawah

Sekian penjelasan singkat kali ini