LAPORAN PRAKTIKUM
RANCANG BANGUN SISTEM SMART
CLASSROOM DAN OTOMATISASI AKSES PINTU BERBASIS ESP32 DENGAN VISUALISASI LCD I2C
TERINTEGRASI PLATFORM THINGSBOARD CLOUD
Disusun oleh :
Ahmad Aura Syahrul Muharrom 24051204203
Jeehan Kamila Muzaky 24051204122
Yudhi D Bakkara 24051204174
Miuvanida Klandistin 24051204208
BAB I
PENDAHULUAN
1.1 Latar Belakang
Internet of Things (IoT) memungkinkan berbagai
perangkat elektronik saling terhubung, mengumpulkan data, dan bertukar
informasi melalui jaringan internet. Dalam penerapannya pada lingkungan
akademis dan fasilitas cerdas (smart building), ekosistem IoT
membutuhkan platform IoT Cloud yang berfungsi sebagai broker komunikasi, pusat
pengolahan data, serta antarmuka visualisasi telemetri. Namun, dalam realitas
industri, sebagian besar platform IoT komersial (seperti Tuya dan Blynk)
menetapkan skema berbayar (subscription) atau sangat membatasi fitur
dasar pada versi uji coba (free trial).
Sebagai solusi atas keterbatasan tersebut, ThingsBoard
hadir sebagai platform IoT open-source yang andal. ThingsBoard
menyediakan opsi Community Edition maupun layanan ThingsBoard Cloud yang
mendukung protokol standar IoT seperti MQTT, CoAP, dan HTTP. Protokol MQTT
(Message Queuing Telemetry Transport) menjadi pilihan utama karena sifatnya
yang ringan (lightweight), menggunakan arsitektur Publish/Subscribe,
serta sangat efisien untuk perangkat dengan daya dan bandwidth terbatas.
Pada praktikum ini, dikembangkan sebuah proyek
terintegrasi Smart Classroom & Otomatisasi Akses Pintu berbasis
mikrokontroler ESP32, sensor suhu/kelembaban DHT22, sensor jarak ultrasonik
HC-SR04, aktuator Servo Motor, Buzzer, dan display layar LCD 16x2 I2C.
Praktikum mencakup pendaftaran dan konfigurasi device pada ThingsBoard Cloud
menggunakan autentikasi MQTT Basic, pengujian pengiriman payload JSON
multi-parameter dari PC menggunakan aplikasi MQTT Client (MQTTX), serta
integrasi simulasi hardware pada platform Wokwi secara real-time.
1.2 Rumusan Masalah
- Bagaimana cara membuat dan mengonfigurasi
device baru serta kredensial MQTT Basic pada platform ThingsBoard Cloud?
- Bagaimana cara melakukan pengujian
pengiriman data telemetri berformat JSON multi-parameter dari PC ke
ThingsBoard Cloud menggunakan aplikasi MQTT Client?
- Bagaimana cara mengintegrasikan simulasi
Wokwi (ESP32, sensor DHT22, HC-SR04, LCD 16x2 I2C, Servo, dan Buzzer) ke
ThingsBoard Cloud melalui protokol MQTT?
- Bagaimana cara memverifikasi pembaruan data
telemetri suhu, kelembaban, jarak, status pintu, dan kondisi ruangan
secara real-time pada dashboard ThingsBoard Cloud?
1.3 Tujuan
- Memahami konsep dasar platform IoT Cloud,
kendala komersialisasi platform, serta arsitektur protokol MQTT.
- Mampu mengonfigurasi device dan kredensial
autentikasi MQTT Basic pada ThingsBoard Cloud.
- Mampu mengirimkan data telemetri berformat
JSON multi-parameter dari PC menggunakan aplikasi MQTT Client.
- Mampu menyusun kode program C++ pada Wokwi
untuk mengontrol sistem Smart Classroom dan menghubungkan ESP32 ke
ThingsBoard Cloud via MQTT.
- Mampu memverifikasi masuknya data telemetri
multi-parameter di tab Latest Telemetry ThingsBoard Cloud.
1.4 Manfaat
- Menambah pemahaman mendalam mengenai
arsitektur komunikasi Publish/Subscribe pada protokol MQTT.
- Memberikan keterampilan praktis dalam
mengelola device dan kredensial pada platform IoT Cloud.
- Melatih kemampuan debugging komunikasi data
IoT baik melalui aplikasi MQTT Client PC maupun simulasi mikrokontroler.
- Memberikan pengalaman pembuatan sistem IoT
interaktif dengan tampilan antarmuka lokal (LCD) dan indikator aktuator
fisik (Servo & Buzzer) menggunakan Wokwi secara virtual.
BAB II
TINJAUAN PUSTAKA
2.1 Dasar Teori
2.1.1 Platform IoT Cloud dan
Realitas Industri
Sebagian besar platform IoT di dunia merupakan entitas
komersial yang menarik biaya penggunaan. Fasilitas free trial yang
disediakan umumnya sangat dibatasi pada fungsi-fungsi dasar. Solusi alternatif
untuk mengatasi keterbatasan ini adalah menginstal platform IoT open-source
di server lokal (seperti ThingsBoard, OpenBalena, Node-RED) atau memanfaatkan
broker MQTT publik/layanan Cloud gratisan.
2.1.2 Protokol MQTT
MQTT (Message Queuing Telemetry Transport) adalah
protokol komunikasi jaringan berbasis arsitektur Publish/Subscribe. Perangkat
bertindak sebagai client yang mengirimkan data (publish) atau
menerima data (subscribe) melalui perantara bernama broker. ThingsBoard
bertindak sebagai broker sekaligus server IoT Cloud. Pengiriman data telemetri
pada ThingsBoard menggunakan topik standar: v1/devices/me/telemetry dengan isi
data (payload) berformat JSON (JavaScript Object Notation).
2.1.3 Autentikasi MQTT Basic pada
ThingsBoard
ThingsBoard mendukung berbagai metode otentikasi
perangkat, salah satunya adalah MQTT Basic. Metode ini memerlukan tiga
parameter utama agar client diizinkan terhubung ke broker:
- Client ID:
Identitas unik perangkat.
- User Name: Nama
pengguna akses perangkat.
- Password: Kata
sandi otentikasi.
2.1.4 ESP32, Sensor DHT22, dan
Sensor Ultrasonik HC-SR04
ESP32 adalah mikrokontroler yang dilengkapi dengan
modul Wi-Fi dan Bluetooth terintegrasi, menjadikannya ideal untuk aplikasi IoT.
Sensor DHT22 merupakan sensor digital untuk mengukur suhu (°C) dan kelembaban
udara (%) dengan tingkat akurasi yang presisi. Sensor Ultrasonik HC-SR04
berfungsi mengukur jarak objek dengan memanfaatkan gelombang suara pantul untuk
mendeteksi keberadaan orang di dekat akses pintu.
2.1.5 LCD 16x2 I2C, Servo Motor,
dan Buzzer
Layar LCD 16x2 dengan modul I2C (Inter-Integrated
Circuit) berfungsi menampilkan status operasional sistem dan data sensor secara
lokal menggunakan dua jalur komunikasi (SDA dan SCL). Servo Motor SG90
bertindak sebagai aktuator pembuka/penutup pintu otomatis berdasarkan deteksi
jarak atau kondisi darurat suhu panas. Buzzer memberikan peringatan audio (beep)
saat pintu beroperasi atau terjadi indikasi bahaya suhu tinggi.
2.1.6 Wokwi Simulator dan MQTTX
Wokwi adalah platform simulator elektronik online yang
memungkinkan pengujian mikrokontroler ESP32, sensor, dan koneksi jaringan
virtual (Wi-Fi Wokwi-GUEST) secara real-time. Sedangkan MQTTX adalah aplikasi
MQTT Client GUI untuk melatih pengiriman dan penerimaan pesan MQTT dari PC ke
broker.
2.2 Perangkat dan Software yang Digunakan
|
No |
Perangkat / Software |
Jumlah |
Fungsi |
|
1 |
ThingsBoard Cloud |
1 Akun |
Server IoT Cloud, Broker MQTT, dan visualisasi telemetri |
|
2 |
MQTT Client (MQTTX) |
1 Aplikasi |
Alat uji coba pengiriman payload JSON dari PC via MQTT |
|
3 |
Wokwi Simulator |
1 Platform |
Simulator rangkaian fisik dan eksekusi kode C++ Arduino |
|
4 |
ESP32 DevKit V1 |
1 Perangkat Virtual |
Mikrokontroler utama pemproses data dan pengirim MQTT |
|
5 |
Sensor DHT22 |
1 Perangkat Virtual |
Sensor pengukur suhu dan kelembaban udara |
|
6 |
Sensor HC-SR04 |
1 Perangkat Virtual |
Sensor ultrasonik pengukur jarak keberadaan orang |
|
7 |
Servo Motor SG90 |
1 Perangkat Virtual |
Aktuator otomatisasi pembuka/penutup pintu |
|
8 |
LCD 16x2 I2C |
1 Perangkat Virtual |
Display informasi status lingkungan dan pintu secara lokal |
|
9 |
Buzzer |
1 Perangkat Virtual |
Indikator suara peringatan dan alur akses pintu |
BAB III
PEMBAHASAN
3.1 Deskripsi Praktikum dan Alur Kerja
Sistem praktikum Smart Classroom ini bertujuan untuk
mengintegrasikan pengumpulan data telemetri multi-sensor (suhu, kelembaban,
jarak), otomatisasi akses pintu (Servo), serta visualisasi lokal (LCD I2C) dan
Cloud (ThingsBoard Cloud) melalui protokol MQTT.
Alur kerja sistem secara keseluruhan meliputi:
- Pendaftaran device uts dan pembuatan
kredensial MQTT Basic di ThingsBoard Cloud.
- Pengujian jalur komunikasi dari PC dengan
mengirimkan JSON multi-parameter {"suhu":25.5,
"kelembaban":60, "jarak_cm":35,
"status":"PERSON_NEAR",
"pintu":"OPEN"} via topik v1/devices/me/telemetry
menggunakan MQTTX.
- Eksekusi kode program di Wokwi untuk
menghubungkan ESP32 ke Wi-Fi Wokwi-GUEST dan broker
mqtt.thingsboard.cloud.
- Pembacaan berkala sensor DHT22 dan HC-SR04,
eksekusi gerakan Servo dan LCD, penyusunan string JSON, serta publish data
telemetri ke ThingsBoard Cloud secara berkala.
3.2 Konfigurasi Parameter Kredensial & Topik MQTT
|
Parameter |
Nilai Konfigurasi |
Keterangan |
|
Server Broker |
mqtt.thingsboard.cloud |
Alamat Server Cloud ThingsBoard |
|
Port MQTT |
1883 |
Port komunikasi MQTT non-TLS |
|
Device Name |
uts |
Nama perangkat pada ThingsBoard |
|
Credentials Type |
MQTT Basic |
Metode autentikasi kredensial |
|
Client ID |
workshopsyahrul |
Identitas unik client |
|
Username |
TiIOT |
Username akses perangkat |
|
Password |
12345678 |
Password akses perangkat |
|
MQTT Topic |
v1/devices/me/telemetry |
Topik publikasi telemetri ThingsBoard |
3.3 Program
Program lengkap C++ yang digunakan pada simulasi Wokwi
adalah sebagai berikut:
|
#include
<WiFi.h> #include
<PubSubClient.h> #include
<DHTesp.h> #include
<Wire.h> #include
<LiquidCrystal_I2C.h> #include
<ESP32Servo.h> // Deklarasi
Pin Hardware const int
DHT_PIN = 15; const int
TRIG_PIN = 5; const int
ECHO_PIN = 18; const int
SERVO_PIN = 13; const int
BUZZER_PIN = 12; //
Inisialisasi Objek DHTesp dht; LiquidCrystal_I2C
lcd(0x27, 16, 2); Servo
doorServo; //
Konfigurasi Wi-Fi & Kredensial ThingsBoard Cloud const char*
ssid = "Wokwi-GUEST"; const char*
password = ""; const char*
mqtt_server = "mqtt.thingsboard.cloud"; const char*
mqtt_clid =
"workshopsyahrul"; const char*
mqtt_user = "TiIOT"; const char*
mqtt_pass = "12345678"; const char*
mqtt_topic =
"v1/devices/me/telemetry"; WiFiClient
espClient; PubSubClient
client(espClient); unsigned
long lastMsg = 0; // Fungsi
Membaca Sensor Ultrasonik HC-SR04 float
readDistance() { digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); long duration = pulseIn(ECHO_PIN, HIGH); return (duration * 0.034 / 2); } //
Menghubungkan ESP32 dengan Wi-Fi void
setup_wifi() { delay(10); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password, 6); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nWiFi
connected"); Serial.print("IP address: "); Serial.println(WiFi.localIP()); } // Menjaga
koneksi MQTT dan melakukan reconnect jika terputus void
reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT
connection..."); if (client.connect(mqtt_clid, mqtt_user,
mqtt_pass)) { Serial.println("Thingsboard is
Connected !!"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5
seconds"); delay(5000); } } } void setup()
{ Serial.begin(115200); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); pinMode(BUZZER_PIN, OUTPUT); // Inisialisasi Servo Pintu doorServo.attach(SERVO_PIN); doorServo.write(0); // Pintu Tertutup (0
derajat) // Inisialisasi LCD I2C Wire.begin(21, 22); lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Smart Class IoT"); lcd.setCursor(0, 1); lcd.print("Initializing..."); delay(2000); lcd.clear(); // Inisialisasi Sensor DHT22 dht.setup(DHT_PIN, DHTesp::DHT22); setup_wifi(); client.setServer(mqtt_server, 1883); } void loop()
{ if (!client.connected()) { reconnect(); } client.loop(); // Pengiriman data non-blocking berkala unsigned long now = millis(); if (now - lastMsg > 3000) { lastMsg = now; // Membaca data sensor DHT22 &
HC-SR04 TempAndHumidity data =
dht.getTempAndHumidity(); float temp = data.temperature; float hum = data.humidity; float dist = readDistance(); String statusRuang = "NORMAL"; String statusPintu = "CLOSED"; // Logika Otomatisasi Akses Pintu &
Peringatan Suhu Panas if (dist < 50.0 || temp > 30.0) { doorServo.write(90); // Pintu Terbuka
(90 derajat) statusPintu = "OPEN"; if (temp > 30.0) { statusRuang =
"WARNING_HOT"; tone(BUZZER_PIN, 1000, 200); } else { statusRuang =
"PERSON_NEAR"; tone(BUZZER_PIN, 2000, 100); } } else { doorServo.write(0); // Pintu Tertutup
(0 derajat) statusPintu = "CLOSED"; noTone(BUZZER_PIN); } // Pembaruan Tampilan Layar LCD Lokal lcd.setCursor(0, 0); lcd.print("T:"); lcd.print(temp, 1); lcd.print("C H:"); lcd.print(hum, 0); lcd.print("% "); lcd.setCursor(0, 1); lcd.print("D:"); lcd.print((int)dist); lcd.print("cm P:"); lcd.print(statusPintu); lcd.print(" "); // Menyusun Payload Berformat JSON
Multi-Parameter String publishPayload = "{"; publishPayload +=
"\"suhu\":" + String(temp, 2) + ","; publishPayload +=
"\"kelembaban\":" + String(hum, 1) + ","; publishPayload +=
"\"jarak_cm\":" + String(dist, 1) + ","; publishPayload +=
"\"status\":\"" + statusRuang +
"\","; publishPayload +=
"\"pintu\":\"" + statusPintu + "\""; publishPayload += "}"; // Mempublikasikan data ke ThingsBoard
Cloud client.publish(mqtt_topic,
publishPayload.c_str()); // Cetak log ke Serial Monitor
Serial.println("========================================"); Serial.print("Suhu : "); Serial.print(temp, 2);
Serial.println(" C"); Serial.print("Kelembaban : "); Serial.print(hum, 1);
Serial.println(" %"); Serial.print("Jarak Pintu : ");
Serial.print(dist, 1); Serial.println(" cm"); Serial.print("Status Pintu: ");
Serial.println(statusPintu); Serial.print("Status Ruang: ");
Serial.println(statusRuang); Serial.print("Payload JSON: ");
Serial.println(publishPayload); Serial.println("Status Transmisi:
PUBLISHED OK");
Serial.println("========================================\n"); } } |
3.4 Penjelasan Kode Program
- Library: WiFi.h
mengelola koneksi Wi-Fi ESP32, PubSubClient.h menangani protokol MQTT,
DHTesp.h membaca data sensor DHT22, LiquidCrystal_I2C.h mengendalikan
antarmuka layar LCD, dan ESP32Servo.h menggerakkan Servo Motor.
- Setup Wi-Fi (setup_wifi):
Mengoperasikan Wi-Fi ESP32 pada mode Station (WIFI_STA) untuk terhubung ke
access point virtual Wokwi-GUEST.
- Koneksi MQTT (reconnect): Fungsi
ini memeriksa status koneksi ke mqtt.thingsboard.cloud. Otentikasi
dilakukan menggunakan fungsi client.connect(mqtt_clid, mqtt_user,
mqtt_pass) sesuai kredensial MQTT Basic.
- Logika Otomatisasi & Pembacaan Sensor: Sensor
ultrasonik menghitung jarak objek. Jika jarak < 50 cm atau suhu >
30°C, Servo berputar 90° (pintu terbuka) dan Buzzer berbunyi singkat. LCD
lokal memperbarui tampilan suhu, kelembaban, jarak, dan status pintu.
- Konstruksi Payload JSON: Data
sensor dan status sistem disusun membentuk format JSON kaya
{"suhu":XX.XX,"kelembaban":YY.Y,"jarak_cm":ZZ.Z,"status":"...","pintu":"..."}
lalu dikirimkan ke topik v1/devices/me/telemetry.
3.5 Langkah-Langkah Kerja Praktikum & Hasil
Pengujian
Langkah 1: Membuat Device di ThingsBoard Cloud
- Buka browser dan login ke akun ThingsBoard
Cloud.
- Navigasi ke menu Entities > Devices >
klik tombol + (Add new device).
- Beri nama device uts.
- Pilih Next: Credentials, aktifkan MQTT
Basic, lalu masukkan Client ID (workshopsyahrul), Username (TiIOT), dan
Password (12345678).
- Simpan device.

Gambar 3.2: Tampilan Konfigurasi
Device Credentials (uts) di ThingsBoard Cloud.
Langkah 2: Uji Pengiriman Data dari PC via MQTT Client
- Buka aplikasi MQTTX di PC.
- Buat profil koneksi baru menuju
mqtt.thingsboard.cloud port 1883 menggunakan Client ID workshopsyahrul,
Username TiIOT, dan Password 12345678.
- Klik Connect.
- Masukkan topik v1/devices/me/telemetry dan
isi payload JSON: {"suhu":25.5, "kelembaban":60,
"jarak_cm":35, "status":"PERSON_NEAR",
"pintu":"OPEN"}.
- Klik Publish/Send.
- Buka ThingsBoard Cloud pada menu Devices
> uts > tab Latest Telemetry dan pastikan seluruh key-value
parameter masuk secara sempurna.

Gambar 3.3: Pengiriman Payload JSON
via MQTTX PC dan Hasil Verifikasi Telemetri di ThingsBoard Cloud.
Langkah 3: Pengiriman Data dari Wokwi ke ThingsBoard
Cloud
- Buka proyek Wokwi Smart Classroom ESP32.
- Masukkan kode program C++ yang memuat
kredensial ThingsBoard ke dalam file sketch.ino.
- Tekan tombol Start Simulation.
- Amati Serial Monitor hingga muncul pesan
WiFi connected dan Thingsboard is Connected !!.
- Geser slider sensor jarak HC-SR04 atau suhu
DHT22 di Wokwi, amati pergerakan Servo Motor, perubahan teks LCD, serta
perubahan angka secara real-time pada tab Latest Telemetry di ThingsBoard
Cloud.

Gambar 3.4: Tampilan Simulasi Wokwi
Smart Classroom ESP32, Pergerakan Servo/LCD, dan Log Serial Monitor.
3.6 Hasil Pengujian
|
No |
Skenario Pengujian |
Aksi / Input Data |
Hasil yang Diharapkan |
Status |
|
1 |
Pembuatan Device |
Menambahkan device uts & kredensial MQTT Basic |
Device terdaftar di ThingsBoard Cloud |
Berhasil |
|
2 |
Uji MQTTX PC |
Publish JSON multi-parameter via MQTTX |
Data suhu, kelembaban, jarak_cm, status, dan pintu masuk di tab Latest
Telemetry |
Berhasil |
|
3 |
Koneksi Wokwi |
Jalankan simulasi Wokwi ESP32 |
Serial Monitor mencetak Thingsboard is Connected !! |
Berhasil |
|
4 |
Otomatisasi Pintu & LCD |
Ubah jarak HC-SR04 < 50 cm pada Wokwi |
Servo bergerak 90° (pintu terbuka), LCD menampilkan P:OPEN, dan data
telemetri terbarui di ThingsBoard |
Berhasil |
3.7 Link Simulasi Wokwi
https://wokwi.com/projects/477346393160138753
BAB IV
PENUTUP
4.1 Kesimpulan
Berdasarkan praktikum implementasi platform IoT Cloud
ThingsBoard berbasis protokol MQTT yang telah dilaksanakan, dapat disimpulkan
bahwa pendaftaran dan konfigurasi perangkat uts pada ThingsBoard Cloud berhasil
dilakukan dengan menerapkan skema autentikasi MQTT Basic. Pengujian awal
pengiriman data telemetri berformat JSON dari PC menggunakan aplikasi MQTTX
membuktikan bahwa jalur komunikasi dan server ThingsBoard telah siap menerima
data telemetri pada topik v1/devices/me/telemetry.
Integrasi sistem Smart Classroom berbasis
mikrokontroler ESP32, sensor suhu/kelembaban DHT22, sensor jarak ultrasonik
HC-SR04, Servo Motor, Buzzer, dan display LCD 16x2 I2C juga berjalan sukses, di
mana data kondisi lingkungan dan status akses pintu berhasil ditampilkan secara
lokal serta dipublikasikan secara berkala ke platform Cloud secara real-time.
Selain itu, praktikum ini membuktikan karakteristik dasar protokol MQTT yang
membatasi penggunaan satu Client ID hanya untuk satu koneksi aktif pada satu waktu.
Oleh karena itu, aplikasi MQTTX di PC harus dinonaktifkan (disconnected)
saat simulasi Wokwi dijalankan guna menghindari terjadinya konflik koneksi (session
taken over).
4.2 Saran
- Untuk pengembangan praktikum selanjutnya,
dapat ditambahkan konfigurasi Dashboard Widget (seperti Gauge, Timeseries
Chart, dan Digital Switch) pada ThingsBoard Cloud agar visualisasi data
telemetri menjadi lebih interaktif.
- Sistem dapat dikembangkan lebih lanjut
dengan memanfaatkan fitur Rule Chain dan RPC (Remote Procedure Call) pada
ThingsBoard untuk mengirimkan perintah balik (Two-Way MQTT) guna
mengontrol pembukaan pintu secara jarak jauh dari server.
- Apabila ingin menguji pengiriman data dari
PC dan Wokwi secara bersamaan, disarankan untuk membuat dua device
terpisah dengan Client ID yang berbeda pada ThingsBoard Cloud agar tidak
terjadi bentrok koneksi.
DAFTAR PUSTAKA
Kurniawan,
Nyoman Yudi. Modul 05: Mencoba Platform IOT Cloud Siap Pakai dengan Wokwi.
Materi Mata Kuliah Internet of Things.
ThingsBoard.
ThingsBoard Documentation: Device Attributes and Telemetry. https://thingsboard.io/docs/.
Wokwi.
Wokwi Documentation: ESP32 Wi-Fi & MQTT Integration. https://docs.wokwi.com.
EMQX.
MQTTX: Cross-platform MQTT 5.0 Desktop Client. https://mqttx.app.
Tidak ada komentar:
Posting Komentar