Projek ESP32 dengan LCD1602 I2C

Zarfa
4 min readFeb 28, 2021

--

Ketemu lagi temen-temen sama aku, Zarfa! Kali ini ada yang baru lagi ya tentunya. Kita bakal bikin projek ESP32 dengan menggunakan LCD, jadi nantinya kita bisa memrogram output yang dikeluarkan oleh LED. Kita juga akan melakukan modivikasi sedemikian sehingga kita menggunakan ESP32 touch sensor untuk memberikan output di LCD.

Bahannya apa ya?

Berikut bahan-bahan yang kalian butuhkan!

1. Laptop

2. LCD1602 I2C

LCD ini dapat mengeluarkan simbol dan huruf yang kita berikan pada program. Ukurannya 16x2, dengan harga sekitar 31k pada tahun 2021. Jangan lupa, minta tolong toko untuk solder LCD ini ya biar kalian tinggal pake aja tidak perlu menyolder dulu :)

3. ESP32 Dual-Mode Development Board

4. Kabel USB tipe micro USB

5. Kabel male to female, kabel female to female

Ini dia cara kerja projeknya!

  1. Sambungkan kabel seperti skema di bawah ini!

ESP32 GPIO VIN — VCC I2C LCD

ESP32 GPIO GND — GND I2C LCD

ESP32 GPIO 22 — SCL I2C LCD

ESP32 GPIO 21 — SDA I2C LCD

2. Download library LiquidCrystal_I2C yang dapat dicari di internet

3. Unzip file library, masukkan ke folder Arduino IDE installation libraries di laptop kalian, dan rename folder menjadi “LiquidCrystal_I2C”

4. Sambungkan ESP32 dengan laptop menggunakan kabel micro USB

5. Buka aplikasi arduino dan buka file baru

6. Tulis Kode seperti berikut untuk mengetahui address dan memastikan rangkaian sudah benar, lalu upload

#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);
}

7. Cek di tools -> serial monitor dan jika tidak keluar apapun, cek bagian kanan bawah angkanya harus sama dengan yang di kode. Pada kasus ini, angkanya harus 115200. Jika selesai, akan seperti ini hasilnya

8. buat file baru, lalu ketik kode sebagai berikut sebagai kode utamanya

#include <LiquidCrystal_I2C.h>// set kolom dan baris untuk LED
int lcdColumns = 16;
int lcdRows = 2;
// set GPIO untuk touch sensor
const int touchPin = 4;
// set konstanta untuk threshold
const int threshold = 20;
int touchValue;
//masukkan address yang ditampilkan di step sebelumnya
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
// set tulisan yang akan ditampilkan
String messageStatic = “Kabel Tersentuh!”;
String messageToScroll = “Sentuh Kabel! :)”;
// row: kolom dimana text akan di display
// message: message yg ingin ditampilkan
// delayTime: delay dalam perpindahan karakter
// lcdColumns: jumlah kolom dr LCD
void scrollText(int row, String message, int delayTime, int lcdColumns) {
for (int i=0; i < lcdColumns; i++) {
message = “ “ + message;
}
message = message + “ “;
for (int pos = 0; pos < message.length(); pos++) {
lcd.setCursor(0, row);
lcd.print(message.substring(pos, pos + lcdColumns));
delay(delayTime);
}
}
void setup(){
Serial.begin(115200);
delay(1000);
// inisialisasi LCD
lcd.init();
// nyalakan LCD backlight
lcd.backlight();
}
void loop(){
touchValue = touchRead(touchPin);
Serial.print(touchValue);
lcd.setCursor(0, 0);
if(touchValue < threshold){ // jika kabel di sentuh
// print text yang berkedip jika kabel disentuh
lcd.print(messageStatic);
delay(500);
lcd.clear();
delay(500);
Serial.println();
}
else {
// print text yg berjalan jika kabel tidak disentuh
scrollText(1, messageToScroll, 250, lcdColumns);
}
}

Berdasarkan kode diatas, kita dapat menghasilkan projek dimana jika kita menyentuh kabel touch sensor, maka akan keluar tulisan berkedip “Kabel Tersentuh!” dan jika kita tidak menyentuk kabel touch sensor, akan ada tulisan bergerak yang bertuliskan “Sentuh Kabel! :)”

9. Jika tulisan tidak terlihat di LCD, putar kotak biru di balik LCD dengan menggunakan obeng agar garis nyasejajar dengan angka 3. Jika masih tidak terlihat tulisannya, putarlah ke arah yang berlawanan. Kotak biru ini merupakan alat untuk mengatur contrass pada LED. Berikut penampilannya

Seperti ini nih penampilannya kalau semua kode berjalan dengan baik!

Nah jadi deh! Menggabungkan fungsi bawaan ESP32 yaitu touch sensor yang hanya ada di beberapa GPIO dengan LCD, maka kita dapat membuat program seperti diatas. Jika kalian menyentuh kabel dari touch sensor, maka nilai touch sensor akan mengecil, yang tadinya bisa mencapai 70–90 menjadi kurang dari 20 (konstanta treshold yang digunakan di kode). Hal ini dimanfaatkan dalam kode untuk mendeteksi apakah kabel sudah disentuh atau belum. Jika belum tersentuh maka LED akan menampilkan perintah untuk menyentuh kabel, dan jika kabel sudah tersentuh, maka LED akan menampilkan tulisan bahwa kabel telah tersentuh.

Selesai juga projek kita kali ini, sampai jumpa minggu depan! :)

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response