← Back to list

Belajar ESP32 #06: Serial Communication— Komunikasi data antar perangkat (I²C)

Pada artikel sebelumnya, kita sudah belajar mengatur intensitas output. Langkah selanjutnya yang tidak kalah penting adalah bagaimana cara…

Marcel Suandi Tambing · 2026-03-22 14:04 · 0 claps · 4.3 min read
#esp32 #dht11 #bmp280 #oled-display #microcontrollers
Open on Medium ↗

Belajar ESP32 #06: Serial Communication— Komunikasi data antar perangkat (I²C)

Pada artikel sebelumnya, kita sudah belajar mengatur intensitas output. Langkah selanjutnya yang tidak kalah penting adalah bagaimana cara kita dapat berkomunikasi dengan beberapa perangkat atau komponen.

Pada project kali ini, kita akan belajar bagaimana ESP32 berkomunikasi dengan beberapa perangkat atau komponen sekaligus menggunakan protokol I²C, lalu menampilkan hasil pembacaan sensor ke Display OLED. Lebih seru lagi, kita akan menggabungkan sensor DHT11 dan BMP280 dalam satu sistem yang sama.

Komponen yang Digunakan

Komponen yang digunakan pada project ini terdiri dari:

  • ESP32 Devkit V1 30 pin
  • Baseplate ESP32 V1 30 pin
  • Display OLED (0.96 inch)
  • Sensor DHT11
  • Sensor BMP280
  • Breadboard
  • Kabel jumper

Penjelasan Protokol Komunikasi

Protokol komunikasi (communication protocol) adalah protokol yang mengatur bagaimana komunikasi antar perangkat dapat terjadi. Ada 2 (dua) jenis protokol komunikasi, yaitu Parallel Communication dan Serial Communication.

Paralle Communication adalah metode komunikasi data antar perangkat secara bersamaan (multiple bit) melalui banyak jalur. Misalnya 8 bit dapat dikirimkan dalam satu waktu menggunakan 8 jalur berbeda. Kelebihannya :

  • Kecepatan transfer lebih tinggi (dalam jarak dekat)
  • Cocok untuk sistem yang membutuhkan transfer data besar secara cepat

Serial Communication adalah metode komunikasi data antar perangkat secara berurutan (bit per bit) melalui jalur tertentu. Contoh Serial Communication adalah UART, SPI, I²C. Kelebihannya :

  • Menggunakan lebih sedikit kabel
  • Lebih sederhana dalam desain
  • Cocok untuk komunikasi jarak jauh
  • Lebih tahan terhadap noise

Karena efisiensi dan kemudahannya, serial communication menjadi standar utama dalam sistem IoT dan embedded modern.

Penjelasan I²C (Inter-Integrated Circuit)

I²C (Inter-Integrated Circuit) adalah serial communication yang sangat populer di dunia embedded system.

Ciri khasnya:

  • Hanya menggunakan 2 kabel utama:
  • **SDA (Serial Data Line/Sinyal Data)
  • SCL (Serial Clock Line/Sinyal Waktu)**
  • Mendukung banyak device dalam satu jalur (multi-device)
  • Menggunakan sistem addressing (alamat) untuk membedakan perangkat

I²C Serial Communication. sumber https://randomnerdtutorials.com/esp32-i2c-communication arduino-ide/

I²C Serial Communication. sumber https://randomnerdtutorials.com/esp32-i2c-communication arduino-ide/

I²C dapat dilakukan konfigurasi sebagai berikut :

  1. Multiple Slaves to One Master, berbagai komponen (contoh: sensor, display, LED) ke satu master (ESP32)
  2. Multiple Masters Controlling The Same Slave, satu komponen ke beberapa master (ESP32)

Penjelasan Display OLED

Display OLED 0.96 inch

Display OLED 0.96 inch

Display OLED (Organic Light Emitting Diode) bekerja dengan cara memancarkan cahaya sendiri pada setiap pixel, sehingga tidak memerlukan backlight seperti LCD. Hal ini membuat tampilan lebih kontras, hemat daya, dan tetap terlihat jelas meskipun dalam kondisi gelap.

Display OLED 0.96 inch menggunakan resolusi 128x64 pixel dan berkomunikasi menggunakan protokol I²C, sehingga membutuhkan 2 pin utama pada ESP32:

  • SDA (Serial Data Line) → Sinyal Data → GPIO 21
  • SCL (Serial Clock Line) → Sinyal Waktu → GPIO 22

Dalam project ini, Display OLED berfungsi sebagai media visual utama untuk menampilkan data hasil pembacaan sensor secara real-time.

Penjelasan Sensor DHT11

Sensor DHT11

Sensor DHT11

Sensor DHT11 adalah salah satu sensor paling populer untuk mengukur suhu (°C) dan kelembaban udara (% RH).

Karakteristik DHT11:

  • Rentang suhu: 0–50°C
  • Rentang kelembaban: 20–90% RH

Penjelasan Sensor BMP280

Sensor BMP280

Sensor BMP280

BMP280 adalah sensor yang lebih canggih dibanding DHT11, karena mampu mengukur tekanan udara (barometric pressure) serta suhu dengan akurasi yang lebih tinggi. BMP280 menggunakan komunikasi I²C.

Karakteristik BMP280:

  • Mengukur tekanan udara (hPa)
  • Mengukur suhu (lebih akurat dari DHT11)
  • Dapat digunakan untuk mengukur ketinggian

Diagram Rangkaian

Display OLED, BMP280, DHT11

Display OLED, BMP280, DHT11

Penjelasan

Secara keseluruhan, alur kerja rangkaian adalah:

  1. DH11 membaca suhu dan kelembaban
  2. BMP280 membaca suhu dan tekanan udara
  3. ESP32 menerima semua date tersebut, lalu diproses dan diformat
  4. Display OLED menampilkan hasil secara real-time

Installing Library

Sebelum menjalankan project, kita perlu menginstall beberapa library agar ESP32 dapat berkomunikasi dengan Display OLED, DHT11, dan BMP280.

  1. Display OLED Pada Arduino IDE, klik menu Sketch → Include Library → Manage Libraries

Manage Libraries

Manage Libraries

Pada kolom pencarian, ketik dan instal Adafruit SSD1306

Instal library Adafruit SSD1306

Instal library Adafruit SSD1306

  1. BMP280 Pada Arduino IDE, klik menu Sketch → Include Library → Manage Libraries → BMP280 → Instal

Instal library Adafruit BMP280

Instal library Adafruit BMP280

  1. DHT11 Pada Arduino IDE, klik menu Sketch → Include Library → Manage Libraries → DHT11 → Instal

Instal DHT sensor library

Instal DHT sensor library

Setelah melakukan instal library, reset Arduino IDE dengan cara menutupnya dan membuka kembali.

Kode Program

Berikut program ESP32 untuk membaca sensor BMP280, DHT11 dan menampilkannya pada Display OLED.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#include <Adafruit_BMP280.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// DHT11
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

// BMP280
Adafruit_BMP280 bmp;

void setup() {
  Serial.begin(115200);

  dht.begin();

  // OLED
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println("OLED gagal");
    while(true);
  }

  // BMP280
  if (!bmp.begin(0x76)) {  
    Serial.println("BMP280 tidak ditemukan!");
    while (true);
  }

  display.clearDisplay();
  display.setTextColor(WHITE);
}

void loop() {

  float hum = dht.readHumidity();
  float tempDHT = dht.readTemperature();
  float tempBMP = bmp.readTemperature();
  float pressure = bmp.readPressure() / 100.0; // hPa

  if (isnan(hum) || isnan(tempDHT)) {
    Serial.println("Error baca DHT11");
    return;
  }

  display.clearDisplay();
  display.setTextSize(1);

  display.setCursor(0,0);
  display.println("Monitoring Udara");

  display.setCursor(0,12);
  display.print("DHT T: ");
  display.print(tempDHT);
  display.println(" C");

  display.setCursor(0,22);
  display.print("Hum  : ");
  display.print(hum);
  display.println(" %");

  display.setCursor(0,32);
  display.print("BMP T: ");
  display.print(tempBMP);
  display.println(" C");

  display.setCursor(0,42);
  display.print("Press: ");
  display.print(pressure);
  display.println(" hPa");

  display.display();

  delay(2000);
}

Hasil Project

Setelah semua terhubung dan program dijalankan:

  1. OLED akan menampilkan:
  • Suhu dari DHT11 dan BMP280
  • Kelembaban
  • Tekanan udara dari BMP280
  1. Data akan diperbarui setiap beberapa detik

[embed]

Artikel Selanjutnya

Pada artikel berikutnya kita akan mempelajari: Belajar ESP32 #07: Bluetooth — komunikasi nirkabel dengan perangkat lain.


메타데이터
post_id
8bdac070cce6
slug
belajar-esp32-04-display-menampilkan-data-pada-display-8bdac070cce6
url
https://medium.com/@marcel.suandi/belajar-esp32-04-display-menampilkan-data-pada-display-8bdac070cce6
canonical_url
https://medium.com/@marcel.suandi/belajar-esp32-04-display-menampilkan-data-pada-display-8bdac070cce6
author_url
https://medium.com/@marcel.suandi
status
ok
fetched_at
2026-06-26 21:52:29