Project 6: ESP32 - Multiple Devices - Asyrofi

Senin, 01 Maret 2021

Project 6: ESP32 - Multiple Devices

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.


    Daftar Komponen

    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.


    Gambar Percobaan

    Gambar 1. Rangkaian pada Breadboard
    

    Gambar 2. Sensor Water Level
    


        


Gambar 3. Sensor saat Dicelupkan Tidak Terlalu Dalam



    Gambar 4. Sensor saat Dicelupkan Cukup Dalam

    

    Video Percobaan

    

    
    Analisis

    Pada project kali ini, terdapat berbagai pengalaman baru selama pengerjaan project ini. Pertama, saya mengetahui bahwa pin default I2C pada ESP32 dapat diubah yaitu dengan library Wire.h. Kedua, sebelumnya saya menggunakan 3V pada LCD dan hasilnya redup, setelah memasang dengan VIN (5V) pada project ini, hasil pada LCD menjadi lebih terang dan jelas. Ketiga, lebih aman menggunakan breadboard daripada langsung ke ESP32 karena ada sedikit hubungan pendek pada ESP32 saya yang menyebabkan LCD jadi error namun masih dapat diatasi.

Tidak ada komentar:

Posting Komentar

Post Bottom Ad