ESP32 Lolin32 Lite Dengan Display LCD 20×4 (serial I2C)

ESP32 Lolin32 Lite Dengan Display LCD 20×4 (serial I2C)

Berikut ini percobaan menghubungkan ESP32 Lolin32 Lite dengan display LCD 20×4. Antar muka menggunakan komunikasi serial I2C. LCD 20×4 menggunakan protokol serial, sehingga perlu modul I2C.  ESP32 menggunakan tegangan 3,3 volt, sedangkan LCD 20×4 menggunakan tegangan 5 volt, sehingga perlu level converter antara I2C di ESP32 dan I2C di modul PCF8752. Pada LCD 20×4 dipasang modul serial to paralel PCF8574 untuk menghubungkan protokol I2C ke paralel input/output pada LCD.

ESP32 Lolin-32 dari WEMOS
ESP32 Lolin-32 dari WEMOS

Berikut ini blok diagram sistem

Skema Rangkaian

Berikut ini skema rangkaian lengkap.

Skema rangkaian ESP32 Lolin32 Lite dengan LCD I2C
Skema rangkaian ESP32 Lolin32 Lite dengan LCD I2C

Arduino Nano pada rangkaian tersebut hanya berfungsi untuk memberikan tegangan 5 volt, karena pada ESP32 Lolin32 Lite tidak ada pin 5V. Jika menggunakan ESP32 Devkit mestinya lebih enak, karena di ESP32 Devkit  ada pin 5V. Tegangan 5V ini dapat diganti dengan regulator / adaptor 5V lain.

Komunikasi I2C

ESP32 tidak memiliki pin I2C yang spesifik, jadi kita dapat memilih pin mana yang dipakai sebagai pin untuk I2C (SDA dan SCL). Pada percobaan ini dipilih pin 15 untuk SDA dan pin 13 untuk SCL. Konfigurasi ini dimasukkan di software dalam bentuk parameter I2C_SDA dan I2C SCL yang didefinisikan di awal software.

Semua pin pada ESP32 termasuk pin I2C  menggunakan tegangan kerja 3 volt, sedangkan display menggunakan tegangan 5 volt. Untuk itu tegangan kerja PCF8574 disamakan dengan display LCD (5 volt), sedangkan tegangan I2C diubah dari 3 volt (di ESP32) menjadi 5 volt (di PCF8574). Komunikasi harus 2 arah, karena protokol I2C mensyaratkan slave menjawab setiap kali ada pengiriman data. Untuk itu pada jalur I2C digunakan  komponen ‘bi directional level converter‘.

Power Supply

Sumber daya ESP32 menggunakan USB charger 5 volt. Pada board ESP32 sudah ada regulator 3,3 volt yang mengubah tegangan supply USB 5 volt menjadi 3,3 volt.

Sumber daya 5 volt untuk LCD dan PCF8574 diberikan melalui sebuah modul Arduino Nano yang  dipakai. Seharusnya dapat menggunakan power supply 5 volt apa saja. Kebetulan saja yang tersedia saat ini adalah board Arduino Nano.

Software

Berikut ini software yang dipakai untuk menghasilkan tampilan.

// Demo LCD dengan ESP32 I2C
#include <LiquidCrystal_I2C.h>
// https://www.makerguides.com/character-i2c-lcd-arduino-tutorial/
// Include the libraries:
// LiquidCrystal_I2C.h: https://github.com/johnrickman/LiquidCrystal_I2C

#include <Wire.h> // Library for I2C communication
#include <LiquidCrystal_I2C.h> // Library for LCD

//LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); // Change to (0x27,16,2) for 16x2 LCD.
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 20, 4); 

#define I2C_SDA 15
#define I2C_SCL 13
#define LED_BUILTIN 22 // LED built in pada ESP32 Lolin32 Lite

void setup() {
  Wire.begin(I2C_SDA, I2C_SCL);
  // Initiate the LCD:
  lcd.init();
  lcd.backlight();
  Serial.begin(115200);
  Serial.println("\nLCD Test");
  pinMode(LED_BUILTIN, OUTPUT);
}
int counter = 0;
void loop() {

  // Print 'Hello World!' on the first line of the LCD:

  lcd.setCursor(0, 0);
  lcd.print("Elektrologi");
  lcd.setCursor(0, 1);
  lcd.print("iptek.web.id");
  lcd.setCursor(0, 2);
  lcd.print("ESP32 Lolin32 Lite");
  lcd.setCursor(0, 3);
  lcd.print("31 Januari 2021");

  lcd.setCursor(12, 0); 
  lcd.print(counter);

  Serial.print("Send data: ");
  Serial.println(counter);
  delay(500);

  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);
  counter++;
}

Hasil

ESP32 dan LCD 20x4
ESP32 dan LCD 20×4

Referensi

11 thoughts on “ESP32 Lolin32 Lite Dengan Display LCD 20×4 (serial I2C)

  1. Assalamualaikum saya mu bertanya dong. Saya sedang melakukan project menggunakan esp32 lolin32 lite. Project ini menggunakan bmp 180. Untuk mengkoneksikan esp32 saya dengan scl dan sda ke port berapa ya? Terimakasih

    1. Wa alaikum salam.
      ESP32 port SCL dan SDA dapat diatur di software.
      kodenya yang bagian ini:

      #define I2C_SDA 15
      #define I2C_SCL 13
      #define LED_BUILTIN 22 // LED built in pada ESP32 Lolin32 Lite

      void setup() {
      Wire.begin(I2C_SDA, I2C_SCL);

  2. assalamualaikum om. saya lagi sedang membuat project menggunakan LCD, saya ingin bertanya mengenai wirring menghubungkan LCD dengan ESP32 lolin32 lite nya seperti apa? mudah2an om mau membantu. terimakasih om

    1. wa alaikum salam.
      Wiring antara LCD dengan ESP32 menggunakan pin I2C: SDA dan SCL.
      Penentuan pin tersebut diatur dengan software.
      berikut ini baris yang mengaturnya:

      #define I2C_SDA 15
      #define I2C_SCL 13
      #define LED_BUILTIN 22 // LED built in pada ESP32 Lolin32 Lite

      void setup() {
      Wire.begin(I2C_SDA, I2C_SCL);

      Kode tersebut artinya:
      – pin 15 di ESP32 jadi SDA, jadi pin SDA dari LCD dihubungkan ke pin 15 di ESP32
      – pin 13 di ESP32 jadi SCL, jadi pin SCL dari LCD dihubungkan ke pin 13 di ESP32

      1. Kalau untuk penyusunan komponennya seperti apa ya om? saya masih bingung cara menambahkan tegangan di ESP32 Lolin32 Lite. kalau diliat dari gambar menggunakan tambahan arduino, nah cara menggabungkan keduanya gmna om? terimakasihh om

  3. saya lagi ada project lcd 16×2 pake esp32 lolin32 lite ini om, tapi kenapa tulisan yg muncul di lcd nya itu pudar ya om jadi gak keliatan jelas gitu tulisannya. terimakasih sebelumnya om

    1. LCD 16×2 diberi power supply berapa volt? LCD itu perlu 5 volt, namun ESL32 tegangannya 3 volt, sehingga pada rangkaian yg saya buat ada level converter.
      Kemungkinan lain kontrasnya belum diatur.

  4. Mau nanya om, sebelumnya makasih post nya sangat membantu, mau nanya untuk board lain, apakah SDA SCL bisa juga diatur seperti contoh diatas, atau harus pake SDA SCL bawaan ya? Saya pake ESP32 yang umum dipasaran, mungkin DevKit atau NodeMCU, tq om

    1. Semua board ESP32 dapat diatur pin SDA dan SCLnya dari program. Devkit, NodeMCU tidak masalah.

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.