Tugas Sistem Embedded
Penulis: Asyrofi
Halo semua. Pada tulisan kali ini, saya akan menjelaskan bagaimana membuat project dengan ESP32 dengan I2C LCD dan Sensor Water Level.
Mohon maaf sebelumnya berhubung sensor yang seharusnya digunakan seperti BMP atau BME saat saya ingin memesan belum tersedia dan jika ingin memesan kembali hanya BME / BMP harga ongkirnya cukup mahal bisa mencapai lebih dari 100rb dari Bandung ke Kalimantan Timur hanya untuk satu sensor.
Pada project ini, I2C LCD yang akan digunakan adalah yang berukuran 16 x 2 dan akan menampilkan hasil sensor water level pada layarnya. Oke, sebelum memulai, persiapkan dahulu komponen dan perangkat yang akan digunakan.
Berikut adalah daftar komponen dan perangkat yang akan digunakan:
1. Mikrokontroller ESP32 (1 buah)
2. Breadboard (1 buah)
3. Kabel Micro-USB (1 buah)
4. Kabel jumper male - female (7 buah)
5. Kabel jumper male - male (2 buah)
6. LCD I2C 16 x 2 (1 buah)
7. Sensor water level (1 buah)
Alur Kerja Project
Saat ESP dinyalakan, maka LCD dan sensor akan ikut menyala dan layar LCD menampilkan nilai pembacaan dari sensor water level.
Kode Program beserta Penjelasannya
1. Mengubah default pin I2C
Untuk mengubah default pin I2C pada ESP32 yang mulanya SDA: GPIO21 dan SCL: GPIO22 dapat dibuah dengan cara.
#define I2C_SDA <nomorPin> Contoh: #define I2C_SDA 32
#define I2C_SCL <nomorPin> Contoh: #define I2C_SCL 33
Kemudian pada bagian setup() tambahkan Wire.begin(I2C_SDA, I2C_SCL);
2. Program secara keseluruhan
Pertama kita panggil library yang akan digunakan yaitu <LiquidCrystal_I2C.h> untuk LCD dan <Wire.h> untuk mengatur I2C. Karena kita ingin mengubah default I2C pinnya, maka define I2C_SDA dan I2C_SCL serta untuk sensorPin. Setelah itu inisialisasi juga variabel baris dan kolom pada LCD. Setelah itu panggil fungsi LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows) dan masukkan juga pesan untuk LCD pada variabel messageStatic
Lanjut pada bagian setup(), beri Serial.begin(9600) untuk pembacaan pada serial monitor. Wire.begin(I2C_SDA, I2C_SCL) untuk mengubah pin default I2C. Untuk mereset LCD ke frekuensi terendah agar tidak terjadi error gunakan Wire.setClock(10000). Kemudian Inisialisasi LCD dengan lcd.init() dan untuk menyalakan backlight LCD gunakan lcd.backlight().
Pada bagian loop() kita atur bagian atas kiri dengan messageStatic yang telah diinisialisasi sebelumnya dan dibawahnya kita tampilkan hasil dari pembacaan sensor water level. Untuk mempermudah, kita buat fungsi khusus untuk melakukan pembacaan nilai air dan mengonversikan dalam bentuk persentase.
Tidak ada komentar:
Posting Komentar