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…
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 dapat dilakukan konfigurasi sebagai berikut :
- Multiple Slaves to One Master, berbagai komponen (contoh: sensor, display, LED) ke satu master (ESP32)
- Multiple Masters Controlling The Same Slave, satu komponen ke beberapa master (ESP32)
Penjelasan Display OLED

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 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
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
Penjelasan
Secara keseluruhan, alur kerja rangkaian adalah:
- DH11 membaca suhu dan kelembaban
- BMP280 membaca suhu dan tekanan udara
- ESP32 menerima semua date tersebut, lalu diproses dan diformat
- 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.
- Display OLED Pada Arduino IDE, klik menu Sketch → Include Library → Manage Libraries

Manage Libraries
Pada kolom pencarian, ketik dan instal Adafruit SSD1306

Instal library Adafruit SSD1306
- BMP280 Pada Arduino IDE, klik menu Sketch → Include Library → Manage Libraries → BMP280 → Instal

Instal library Adafruit BMP280
- DHT11 Pada Arduino IDE, klik menu Sketch → Include Library → Manage Libraries → DHT11 → Instal

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:
- OLED akan menampilkan:
- Suhu dari DHT11 dan BMP280
- Kelembaban
- Tekanan udara dari BMP280
- 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