LCD I2C dengan ESP32 Menggunakan IDE Arduino

Shafa Amarsya Madyaratri
4 min readFeb 17, 2020

--

Hello readers!

Pada artikel kali ini aku ingin berbagi pengalaman ketika mencoba menggunakan LCD 16x2 I2C dengan merangkainya pada ESP32 dan memprogram menggunakan IDE Arduino.

Komponen dan Alat

Pada projek ini aku menggunakan alat-alat berikut:

  1. Board ESP32 DOIT DEVKIT V1
  2. I2C Liquid Crystal Display (LCD) 16×2
  3. Kabel jumper
  4. Breadboard
  5. Kabel micro-USB to USB 2.0/3.0
Tampak Depan LCD
Tampak Belakang LCD

Skema

sumber : randomnerdtutorials.com

LCD menggunakan komunikasi I2C. Proses wiring-nya cukup sederhana. ESP32 memiliki pin default untuk I2C yaitu SDA (GPIO 21) dan SCL (GPIO 22). Pin Ground (GND) pada ESP32 dihubungkan juga dengan pin Ground pada LCD. Kemudian terakhir, VIN dari ESP32 dihubungkan pada pin VCC di LCD. Skema tersebut terlihat seperti gambar dibawah ini apabila dirangkai pada breadboard:

Perangkaian Skema pada Breadboard

Install Library pada Arduino IDE

Sebelum bisa menggunakan LCD kita perlu mengunduh terlebih dahulu library Liquid Crystal I2C.

Library LiquidCrystal

Buka Arduino IDE, pada menu bar klik Sketch>Include Library>Manage Libraries… kemudian lakukan search library LiquidCrystal oleh Arduino dan Adafruit pada search bar dan klik ‘install’.

Kode Memperoleh Alamat LCD

Sebelum mencoba menuliskan beberapa kalimat pada LCD, terlebih dahulu ada baiknya kita mengecek apakah LCD telah terhubung dengan baik pada ESP32 serta memperoleh alamatnya. Gunakan kode berikut untuk memperoleh alamat LCD:

/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/

#include <Wire.h>

void setup() {
Wire.begin();
Serial.begin(115200);
Serial.println("\nI2C Scanner");
}

void loop() {
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
nDevices++;
}
else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16) {
Serial.print("0");
}
Serial.println(address,HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
}
else {
Serial.println("done\n");
}
delay(5000);
}

Kemudian hubungkan ESP32 dengan kabel microUSB ke perangkat, serta lakukan upload kode tersebut. Setelah upload selesai, buka serial monitor IDE Arduino pada 115200 baud untuk melihat alamat LCD:

I2C Device Scanner

Pada gambar serial monitor tersebut kita mengetahui bahwa perangkat I2C ditemukan pada alamat 0x27. Alamat ini kemudian kita gunakan untuk memprogram LCD guna menuliskan hal-hal yang kita inginkan.

Kode Menuliskan “Hello, World!”

Setelah memperoleh alamat LCD, kemudian aku mencoba untuk menuliskan “Hello, World!” pada LCD menggunakan kode berikut:

/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/

#include <LiquidCrystal_I2C.h>

// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;

// set LCD address, number of columns and rows
// if you don't know your display address, run an I2C scanner sketch
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);

void setup(){
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
}

void loop(){
// set cursor to first column, first row
lcd.setCursor(0, 0);
// print message
lcd.print("Hello, World!");
delay(1000);
// clears the display to print new message
lcd.clear();
// set cursor to first column, second row
lcd.setCursor(0,1);
lcd.print("Hello, World!");
delay(1000);
lcd.clear();
}

Berikut adalah hasilnya, tulisan “Hello, World!” muncul dan berpindah setiap satu detik pada baris pertama dan kedua LCD secara bergantian sesuai dengan delay yang telah dinyatakan pada kode:

Hello, World!
Hello, World! 2.0

Awalnya, aku mengira bahwa tulisan tersebut tidak berhasil dicetak pada layar LCD-ku karena tidak muncul pada layar. Ternyata daya yang dimiliki LCD ku kurang kuat sehingga perlu memutar potensiometer di bagian belakang LCD dengan obeng, barulah layar LCD menjadi kontras dan terlihat menampilkan cetakan “Hello, World!” pada layar.

Sekian pengalaman dari projekku kali ini. Semoga bermanfaat. Sampai jumpa kembali!

--

--

Shafa Amarsya Madyaratri

Information System & Technology Student at Institut Teknologi Bandung