Pada praktikum ini menunjukkan penggunaan LED sebagai contoh dari digital output. LED digunakan sebagai media pembelajaran awal karena mudah diamati menyala ketika mendapat logika HIGH dan mati ketika mendapat logika LOW. Namun, konsep yang sama dapat diterapkan pada berbagai jenis aktuator lain. Dalam praktik IoT, keluaran digital dari ESP32 tidak hanya digunakan untuk menyalakan LED, tetapi juga dapat dihubungkan ke relay, solenoid, motor, pompa air, atau perangkat listrik rumah tangga seperti lampu AC, kipas, dan sistem pengunci pintu ataupun lainnya. Dengan demikian, pengendalian LED dalam praktikum ini berfungsi sebagai dasar pemahaman bahwa melalui aplikasi web dapat memberikan sinyal digital yang menjadi perintah untuk mengaktifkan atau menonaktifkan perangkat lain yang lebih kompleks, sehingga konsep kendali digital yang dipelajari dapat diimplementasikan secara langsung pada berbagai aplikasi IoT di dunia nyata.
A. Skematik Rangkaian

Gambar 1. Skematik Rangkaian Digital Input/Ouput
Pada rangkaian tersebut, kaki anoda (positif) LED dihubungkan ke salah satu pin GPIO ESP32 (GPIO 22), yang berfungsi sebagai output untuk memberikan sinyal logika HIGH atau LOW. Sementara itu, kaki katoda (negatif) LED dihubungkan ke pin GND. Ketika GPIO bernilai HIGH, arus mengalir dari pin output ke LED sehingga LED menyala, dan ketika bernilai LOW, arus berhenti sehingga LED mati.
B. Koding Mikrokontroler (Arduino IDE)




B. Koding Aplikasi WEB

Gambar 2. Halaman Web ON/OFF
Pada antarmuka aplikasi web, ketika pengguna menekan tombol ON atau OFF, aplikasi web akan mengirimkan perintah ke mikrokontroler melalui protokol MQTT. Secara teknis, tampilan ini dibangun dalam file index.html menggunakan Bootstrap untuk mengatur layout dan tampilan tombol, sedangkan jQuery digunakan untuk menangani event klik pada tombol sehingga dapat memanggil fungsi JavaScript. Logika komunikasi MQTT ditempatkan dalam file websockets.js, yang memanfaatkan library Paho MQTT (mqttws31.js) untuk membuat koneksi WebSocket ke broker MQTT, melakukan publish pesan (misalnya 1 untuk ON dan 0 untuk OFF), serta mengatur koneksi dan callback jika diperlukan. Sementara itu, parameter koneksi seperti host, port, topic, dan opsi useTLS, username, dan password didefinisikan secara terpisah di dalam file config.js agar pengaturan broker mudah diganti tanpa mengubah kode utama.
index.html


websocket.js



config.js
