DENGAN TAMPILAN LCD I2C DAN AKSES WEBSERVER LOKAL BERBASIS ESP32
| Fatkhur Rozaq | 24051204026 |
| Ahmad Arkanul Falah Al Khalimi | 24051204033 |
| Abdan Isa Ghaffara | 24051204235 |
PENDAHULUAN
1.1 Latar Belakang
Pada penerapan ADC yang dibahas pada proyek sebelumnya, pembacaan tegangan analog dan penampilan hasilnya dilakukan sepenuhnya secara manual melalui perhitungan matematis dan pengendalian pin digital satu per satu. Pendekatan tersebut efektif untuk memahami prinsip dasar ADC, namun kurang efisien ketika mikrokontroler harus berinteraksi dengan modul peripheral yang memiliki protokol komunikasi kompleks, seperti sensor suhu-kelembapan digital, layar LCD berantarmuka I2C, maupun modul jaringan nirkabel.
Untuk kebutuhan tersebut, komunitas open source telah menyediakan pustaka (library) siap pakai yang membungkus detail protokol komunikasi ke dalam fungsi-fungsi sederhana. Sensor DHT11/DHT22 misalnya menggunakan komunikasi 1-wire dengan pembedaan bit berdasarkan lebar sinyal yang membutuhkan deteksi timing sangat akurat; hal ini telah ditangani oleh pustaka DHT sensor library sehingga pengguna cukup memanggil dht.readTemperature() dan dht.readHumidity(). Demikian pula layar LCD karakter yang secara asli memerlukan banyak jalur data paralel dapat dikendalikan hanya dengan dua jalur (SDA dan SCL) melalui modul I2C dan pustaka LiquidCrystal_I2C.
Proyek ini mengintegrasikan ketiga jenis peripheral tersebut ke dalam satu sistem monitoring: sensor DHT22 sebagai sumber data, LCD I2C sebagai tampilan lokal, dan modul ESP32 yang sekaligus berperan sebagai mikrokontroler utama dan Access Point yang menghosting halaman web sederhana untuk menampilkan data yang sama secara nirkabel. Dengan demikian, proyek ini menjadi kelanjutan langsung dari saran yang diajukan pada laporan Proyek 2, yaitu penggunaan sensor fisik serta penambahan layar tampilan yang lebih informatif.
1.2 Rumusan Masalah
- Bagaimana cara membaca data suhu dan kelembapan dari sensor DHT22 menggunakan pustaka DHT sensor library pada ESP32?
- Bagaimana menampilkan hasil pembacaan sensor pada layar LCD 16x2 melalui antarmuka I2C menggunakan pustaka LiquidCrystal_I2C?
- Bagaimana mengonfigurasi ESP32 sebagai Access Point serta menghosting halaman web sederhana yang menampilkan data sensor secara berkala?
- Bagaimana memverifikasi konsistensi data antara Serial Monitor, layar LCD, dan halaman web pada platform simulasi Wokwi?
1.3 Tujuan
- Memahami cara kerja komunikasi 1-wire pada sensor DHT22 melalui pustaka siap pakai, tanpa perlu menangani timing sinyal secara manual.
- Mengimplementasikan tampilan data sensor pada LCD I2C menggunakan pustaka LiquidCrystal_I2C.
- Membangun webserver lokal pada ESP32 dalam mode Access Point untuk menyajikan data sensor melalui halaman HTML sederhana.
- Melakukan simulasi dan pengujian sistem secara terintegrasi pada platform Wokwi.
1.4 Manfaat
- Manfaat akademis: memberikan pemahaman praktis mengenai pemanfaatan pustaka pihak ketiga untuk menyederhanakan komunikasi dengan peripheral yang kompleks, sejalan dengan materi Modul 3 mengenai library peripheral input output.
- Manfaat praktis: menghasilkan purwarupa sistem monitoring lingkungan yang dapat diakses baik secara lokal (LCD) maupun nirkabel (halaman web), yang dapat dikembangkan lebih lanjut menjadi sistem pemantauan jarak jauh.
- Manfaat metodologis: menunjukkan bahwa integrasi beberapa peripheral (sensor, tampilan, jaringan) dapat divalidasi terlebih dahulu melalui simulasi sebelum diimplementasikan pada perangkat keras sesungguhnya.
1.5 Batasan Masalah
- Sensor yang digunakan adalah DHT22 hasil simulasi Wokwi, bukan sensor fisik sesungguhnya, sehingga nilai suhu dan kelembapan diatur melalui panel simulasi.
- Layar yang digunakan adalah LCD karakter 16x2 dengan modul I2C pada alamat 0x27.
- ESP32 dikonfigurasi sebagai Access Point tanpa keamanan tambahan (mode terbuka atau dengan kata sandi sederhana) hanya untuk keperluan demonstrasi.
- Verifikasi akses webserver dilakukan melalui data yang tercatat pada Serial Monitor, karena akses langsung dari browser komputer ke jaringan Access Point ESP32 pada simulasi Wokwi standar memerlukan fitur jembatan jaringan tambahan.
TINJAUAN PUSTAKA
2.1 Library Peripheral pada Mikrokontroler
Modul peripheral siap pakai yang dijual secara umum dapat digolongkan menjadi beberapa jenis, antara lain sensor, display, aktuator, buzzer/sound, relay, modul komunikasi, dan modul penyimpanan. Setiap jenis modul umumnya memiliki protokol komunikasi tersendiri, seperti komunikasi 1-wire pada sensor DHT, I2C pada LCD dan berbagai sensor lain, maupun SPI pada modul SD Card. Alih-alih mengimplementasikan protokol tersebut dari awal berdasarkan datasheet, pengembang modern umumnya memanfaatkan pustaka (library) yang telah dipublikasikan secara terbuka di repositori seperti GitHub dan dapat dipasang langsung melalui Library Manager pada Arduino IDE.
2.2 Sensor DHT22
DHT22 (dikenal pula sebagai AM2302) adalah sensor suhu dan kelembapan digital yang berkomunikasi melalui satu jalur data (1-wire) dengan mikrokontroler. Perbedaan bit data '0' dan '1' ditentukan dari lebar sinyal yang dikirimkan sensor, sehingga pembacaan manual membutuhkan deteksi timing yang sangat akurat pada level mikrodetik. Beberapa spesifikasi umum sensor DHT11/DHT22 meliputi tegangan kerja 3,5-5,5 V, arus pengukuran sekitar 0,3 mA dan arus siaga sekitar 60 µA, rentang suhu 0-50°C, rentang kelembapan 20-90%, resolusi 16 bit untuk suhu dan kelembapan, serta akurasi sekitar ±1°C dan ±1%. Kompleksitas timing tersebut ditangani oleh pustaka DHT sensor library, sehingga pembacaan cukup dilakukan melalui pemanggilan fungsi readTemperature() dan readHumidity().
2.3 LCD Karakter dengan Antarmuka I2C
LCD karakter 16x2 secara asli membutuhkan lebih dari sepuluh jalur data dan kontrol untuk dapat dioperasikan. Modul konverter I2C yang dipasang pada bagian belakang LCD memungkinkan pengendalian layar hanya melalui dua jalur, yaitu SDA (data) dan SCL (clock), pada satu alamat I2C tertentu (umumnya 0x27 atau 0x3F). Pustaka LiquidCrystal_I2C menyediakan fungsi seperti init(), backlight(), setCursor(), dan print() sehingga tampilan teks dapat diatur tanpa perlu memahami urutan sinyal kontrol LCD secara rinci.
2.4 ESP32 sebagai Access Point dan Webserver
ESP32 merupakan mikrokontroler dengan modul WiFi dan Bluetooth terintegrasi, yang mampu beroperasi baik sebagai klien (station) maupun sebagai titik akses (Access Point/AP). Dalam mode AP, ESP32 memancarkan jaringan WiFi sendiri sehingga perangkat lain dapat terhubung langsung tanpa memerlukan router eksternal. Pustaka WiFi.h menyediakan fungsi WiFi.softAP() untuk mengaktifkan mode tersebut, sedangkan pustaka WebServer.h memungkinkan ESP32 menjalankan server HTTP sederhana yang merespons permintaan browser dengan halaman HTML, sebagaimana lazim digunakan pada aplikasi seperti kunci pintu otomatis maupun panel pemantauan berbasis web.
2.5 Komponen yang Digunakan
| No | Nama Komponen | Jumlah | Spesifikasi / Fungsi |
|---|---|---|---|
| 1 | ESP32 DevKit V1 | 1 | Mikrokontroler utama; menjalankan pembacaan sensor, kendali LCD, dan webserver Access Point |
| 2 | Sensor DHT22 | 1 | Sensor suhu dan kelembapan digital, komunikasi 1-wire |
| 3 | LCD 16x2 + modul I2C | 1 | Tampilan lokal hasil pembacaan sensor, alamat I2C 0x27 |
| 4 | Kabel jumper | secukupnya | Penghubung antarkomponen |
| 5 | Breadboard | 1 | Papan rangkai tanpa solder |
| 6 | Wokwi Simulator | - | Simulasi rangkaian, sensor, dan program secara virtual |
| 7 | Visual Studio Code + Arduino CLI | - | Penulisan dan kompilasi kode program |
Tabel 2.1 Daftar komponen dan perangkat lunak yang digunakan
PERANCANGAN DAN PEMBAHASAN
3.1 Rancangan Rangkaian
Sensor DHT22 dihubungkan dengan pin VCC ke 3V3 dan pin GND ke GND ESP32, sedangkan pin DATA dihubungkan ke pin GPIO4 sebagai jalur komunikasi 1-wire. LCD I2C dihubungkan dengan VCC ke pin 5V (atau VIN), GND ke GND, SDA ke pin GPIO21, dan SCL ke pin GPIO22 sesuai jalur I2C bawaan ESP32 DevKit. Konfigurasi selengkapnya disajikan pada Tabel 3.1.
| Pin ESP32 | Komponen | Keterangan |
|---|---|---|
| 3V3 | VCC DHT22 | Catu daya sensor |
| GND | GND DHT22 & GND LCD I2C | Titik referensi bersama |
| GPIO4 | DATA DHT22 | Jalur komunikasi 1-wire |
| 5V / VIN | VCC LCD I2C | Catu daya modul LCD |
| GPIO21 (SDA) | SDA LCD I2C | Jalur data I2C |
| GPIO22 (SCL) | SCL LCD I2C | Jalur clock I2C |
Tabel 3.1 Konfigurasi sambungan antara ESP32 dan komponen
3.2 Cara Kerja Sistem
- Pada saat dinyalakan, ESP32 menginisialisasi sensor DHT22, layar LCD, serta mengaktifkan jaringan WiFi dalam mode Access Point menggunakan WiFi.softAP().
- ESP32 menjalankan webserver pada port 80 dan mendaftarkan halaman utama ("/") yang akan menampilkan data sensor terbaru setiap kali diakses.
- Setiap dua detik, ESP32 membaca suhu dan kelembapan dari DHT22 melalui fungsi readTemperature() dan readHumidity().
- Apabila pembacaan valid, nilai suhu dan kelembapan diperbarui pada variabel global, dicetak ke Serial Monitor, dan ditampilkan pada layar LCD.
- Ketika ada permintaan dari browser ke alamat IP Access Point (192.168.4.1), ESP32 mengirimkan halaman HTML berisi nilai suhu dan kelembapan terakhir, dengan tag meta refresh yang memperbarui halaman secara otomatis setiap tiga detik.
3.3 Program
Berikut adalah kode program yang dijalankan pada ESP32, menggabungkan pembacaan sensor DHT22, tampilan LCD I2C, dan webserver Access Point.
#include <WiFi.h>
#include <WebServer.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define DHT_PIN 4
DHT dht(DHT_PIN, DHT22);
LiquidCrystal_I2C lcd(0x27, 16, 2);
const char* ap_ssid = "ESP32_Monitor";
const char* ap_password = "12345678";
WebServer server(80);
float suhu = 0, kelembapan = 0;
void handleRoot() {
String html = "<!DOCTYPE html><html><head><meta charset='UTF-8'>";
html += "<meta http-equiv='refresh' content='3'>";
html += "<title>Monitoring DHT22</title></head><body>";
html += "<h1>Monitoring Suhu & Kelembapan</h1>";
html += "<p>Suhu: " + String(suhu, 1) + "°C</p>";
html += "<p>Kelembapan: " + String(kelembapan, 1) + " %</p>";
html += "</body></html>";
server.send(200, "text/html", html);
}
void setup() {
Serial.begin(115200);
dht.begin();
lcd.init();
lcd.backlight();
WiFi.softAP(ap_ssid, ap_password);
Serial.print("Access Point aktif, IP: ");
Serial.println(WiFi.softAPIP());
server.on("/", handleRoot);
server.begin();
Serial.println("Web server dimulai");
}
void loop() {
server.handleClient();
static unsigned long lastRead = 0;
if (millis() - lastRead > 2000) {
lastRead = millis();
float s = dht.readTemperature();
float k = dht.readHumidity();
if (isnan(s) || isnan(k)) {
Serial.println("Sensor Rusak");
} else {
suhu = s;
kelembapan = k;
Serial.print("Suhu: ");
Serial.print(suhu, 1);
Serial.print(" C\tKelembapan: ");
Serial.print(kelembapan, 1);
Serial.println(" %");
lcd.setCursor(0, 0);
lcd.print("Suhu: ");
lcd.print(suhu, 1);
lcd.print((char)223);
lcd.print("C ");
lcd.setCursor(0, 1);
lcd.print("RH : ");
lcd.print(kelembapan, 1);
lcd.print(" % ");
}
}
}3.4 Berkas libraries.txt pada Wokwi
Agar proyek dapat dikompilasi pada Wokwi, pustaka pihak ketiga harus dituliskan pada berkas libraries.txt sebagai berikut:
DHT sensor library Adafruit Unified Sensor LiquidCrystal I2C
Pustaka WiFi.h dan WebServer.h tidak perlu dituliskan karena sudah tersedia secara bawaan pada framework ESP32.
3.5 Hasil Pengujian
Pengujian dilakukan dengan mengubah nilai suhu dan kelembapan pada panel simulasi sensor DHT22 di Wokwi, kemudian membandingkan nilai yang tercatat pada Serial Monitor, ditampilkan pada LCD, dan disajikan pada halaman web. Hasil pengujian disajikan pada Tabel 3.2.
| No | Suhu diatur (°C) | Kelembapan diatur (%) | Serial Monitor | Tampilan LCD | Halaman Web |
|---|---|---|---|---|---|
| 1 | 24,0 | 40,0 | Suhu: 24.0 C Kelembapan: 40.0 % | Sesuai | Sesuai |
| 2 | 27,2 | 55,0 | Suhu: 27.2 C Kelembapan: 55.0 % | Sesuai | Sesuai |
| 3 | 30,5 | 62,0 | Suhu: 30.5 C Kelembapan: 62.0 % | Sesuai | Sesuai |
| 4 | 18,3 | 80,0 | Suhu: 18.3 C Kelembapan: 80.0 % | Sesuai | Sesuai |
Tabel 3.2 Hasil pengujian konsistensi data pada tiga jenis tampilan
3.6 Analisis
- Konsistensi data. Nilai suhu dan kelembapan yang tercatat pada Serial Monitor, ditampilkan pada LCD, dan disajikan pada halaman web menunjukkan hasil yang konsisten, karena ketiganya bersumber dari variabel global suhu dan kelembapan yang sama serta diperbarui pada siklus pembacaan yang sama.
- Pembaruan halaman web. Tag meta refresh dengan interval tiga detik dipilih agar sedikit lebih lambat daripada interval pembacaan sensor (dua detik), sehingga saat halaman dimuat ulang, nilai yang ditampilkan sudah pasti merupakan hasil pembacaan terbaru.
- Efisiensi penggunaan pustaka. Dibandingkan proyek ADC sebelumnya yang menangani seluruh logika secara manual, penggunaan pustaka DHT sensor library, LiquidCrystal_I2C, WiFi.h, dan WebServer.h secara signifikan menyederhanakan kode program meskipun sistem yang dibangun melibatkan tiga jenis peripheral sekaligus.
- Keterbatasan verifikasi jaringan. Wokwi mensimulasikan modul WiFi ESP32 termasuk mode Access Point, namun akses langsung dari browser pada komputer pengguna ke jaringan tersebut memerlukan fitur jembatan jaringan tambahan seperti Wokwi Gateway. Tanpa fitur tersebut, keberhasilan webserver tetap dapat diverifikasi melalui pesan "Access Point aktif" dan "Web server dimulai" pada Serial Monitor.
- Potensi kegagalan sensor. Baris isnan(s) || isnan(k) pada program berfungsi menangkap kondisi pembacaan gagal (misalnya akibat gangguan waktu 1-wire), sehingga sistem mencetak "Sensor Rusak" alih-alih menampilkan nilai yang tidak valid pada LCD maupun halaman web.
PENUTUP
4.1 Kesimpulan
- Sensor DHT22 berhasil dibaca oleh ESP32 menggunakan pustaka DHT sensor library, tanpa perlu menangani protokol komunikasi 1-wire secara manual.
- Data suhu dan kelembapan berhasil ditampilkan pada layar LCD 16x2 melalui antarmuka I2C menggunakan pustaka LiquidCrystal_I2C dengan hanya dua jalur data.
- ESP32 berhasil dikonfigurasi sebagai Access Point yang menghosting webserver lokal, menyajikan data sensor yang sama melalui halaman HTML yang diperbarui otomatis.
- Pengujian menunjukkan konsistensi data antara Serial Monitor, LCD, dan halaman web, yang membuktikan bahwa integrasi ketiga peripheral berjalan sebagaimana dirancang.
- Simulasi pada Wokwi efektif untuk memvalidasi logika program, meskipun verifikasi akses webserver dari browser eksternal memiliki keterbatasan pada mode simulasi standar.
4.2 Saran
- Menambahkan fitur logging data ke SD Card melalui komunikasi SPI, sebagaimana dibahas pada Modul 3, agar riwayat pembacaan sensor dapat disimpan.
- Mengganti mode Access Point dengan mode Station agar ESP32 dapat terhubung ke jaringan WiFi yang sudah ada dan diakses dari perangkat mana pun pada jaringan tersebut.
- Menggunakan format data JSON pada endpoint webserver agar halaman dapat diperbarui melalui JavaScript (AJAX) tanpa perlu memuat ulang seluruh halaman.
- Melakukan pengujian pada perangkat keras ESP32 dan sensor DHT22 sesungguhnya untuk memvalidasi hasil simulasi serta mengamati pengaruh derau sinyal pada komunikasi 1-wire.
- Memanfaatkan fitur jembatan jaringan seperti Wokwi Gateway agar webserver dapat diakses langsung dari browser komputer pengguna selama proses simulasi.
DAFTAR PUSTAKA
Adafruit Industries. (2024). DHT sensor library [Pustaka perangkat lunak]. Diakses dari https://github.com/adafruit/DHT-sensor-library
Espressif Systems. (2024). ESP32 Arduino core: WiFi dan WebServer library reference. Diakses dari https://docs.espressif.com
Kurniawan, N. Y. (2026). Modul 3: Library peripheral input output [Materi perkuliahan]. Universitas Negeri Surabaya.
Marco Schwartz. (2024). LiquidCrystal_I2C library [Pustaka perangkat lunak]. Diakses dari https://github.com/marcoschwartz/LiquidCrystal_I2C
Saha, D. (2024). DHT11 Arduino library (v2.1.0). Diakses dari https://github.com/dhrubasaha08/DHT11
Wokwi. (2026). ESP32 simulator dan Wokwi Gateway. Diakses pada 20 September 2026, dari https://wokwi.com
LAMPIRAN
Tidak ada komentar:
Posting Komentar