Senin, 12 Oktober 2026

SIMULASI IOT WOKWI ESP32 & MEMBUAT DASHBOARD DI NODE-RED MQTT

SIMULASI IOT WOKWI ESP32 & MEMBUAT DASHBOARD DI NODE-RED MQTT

Disusun Oleh Kelompok 5:

Farel Rizky Aliansi(24051204016)
Moch Septian Yudis(24051204024)
Denny Kusuma Putra(24051204027)
Brian Fawwaz Atmajaya(24051204230)

BAB I
PENDAHULUAN

1.1 Latar Belakang

Perkembangan teknologi Internet of Things (IoT) memungkinkan pemantauan data lingkungan dan pengontrolan perangkat secara jarak jauh (remote control) tanpa batasan jarak fisik. IoT memungkinkan berbagai perangkat terhubung melalui internet untuk bertukar data secara real-time. Salah satu implementasi IoT yang krusial adalah pemantauan parameter lingkungan seperti suhu dan kelembapan, yang menjadi fondasi dalam sistem otomatisasi rumah pintar (smart home), pertanian pintar (smart farming), dan pemantauan industri.

Dalam proses pengembangan sistem IoT, penggunaan mikrokontroler ESP32 sangat populer karena telah dilengkapi modul Wi-Fi dan Bluetooth terintegrasi. Namun, dalam tahap prototyping, merangkai perangkat keras secara fisik sering terkendala keterbatasan alat dan risiko kerusakan. Oleh karena itu, penggunaan simulator berbasis web seperti Wokwi menjadi solusi efisien untuk merancang dan menguji skema IoT secara virtual.

Untuk mentransmisikan data dari mikrokontroler ke antarmuka pengguna, diperlukan protokol komunikasi ringan seperti MQTT (Message Queuing Telemetry Transport). Dalam simulasi ini, data sensor yang dipublikasikan (publish) ke broker MQTT publik (Mosquitto) divisualisasikan melalui dashboard interaktif yang dibangun menggunakan platform Node-RED. Praktikum ini memberikan pemahaman komprehensif mengenai alur data IoT, mulai dari pembacaan sensor pada ESP32 di Wokwi, transmisi melalui MQTT, hingga visualisasi di Node-RED.

1.2 Rumusan Masalah

1.Bagaimana cara merancang sirkuit simulasi ESP32 dan sensor DHT22 pada platform Wokwi?

2.Bagaimana cara mengkonfigurasi koneksi Wi-Fi dan komunikasi MQTT pada program C++ ESP32?

3.Bagaimana mekanisme pembagian tugas kode pemrograman untuk sistem IoT berbasis ESP32 dan MQTT?

4.Bagaimana cara mengintegrasikan data dari broker MQTT ke dashboard Node-RED untuk divisualisasikan secara real-time?

1.3 Tujuan Laporan

1.Memahami perancangan rangkaian perangkat keras secara virtual menggunakan ESP32 dan sensor DHT22 di simulator Wokwi.

2.Mengembangkan dan memahami struktur kode program C++ yang mengintegrasikan pembacaan sensor dan transmisi data via jaringan Wi-Fi ke broker MQTT.

3.Membangun visualisasi data (dashboard) interaktif berbasis web menggunakan Node-RED yang terhubung ke broker MQTT.

1.4 Manfaat Penulisan

Manfaat penulisan laporan ini adalah memberikan pemahaman mendalam tentang arsitektur IoT mulai dari end-device (sensor), protokol komunikasi (MQTT), hingga layer aplikasi (Node-RED). Laporan ini diharapkan dapat meningkatkan keterampilan pembaca dalam merancang simulasi IoT secara virtual (Wokwi) dan membangun dashboard pemantauan data tanpa harus bergantung pada perangkat keras fisik pada tahap awal pengembangan.

BAB II
TINJAUAN PUSTAKA

2.1 Dasar Teori

•Internet of Things (IoT): Arsitektur teknologi yang menghubungkan berbagai perangkat fisik (perangkat keras) ke jaringan internet, memungkinkan perangkat untuk berkomunikasi, mengirimkan data, dan menerima perintah kontrol secara jarak jauh.

•Protokol MQTT: MQTT (Message Queuing Telemetry Transport) adalah protokol komunikasi ringan berbasis pengiriman pesan publish/subscribe. Dalam sistem ini, terdapat sebuah "Broker" (seperti Mosquitto) yang mendistribusikan pesan dari pengirim (Publisher, misalnya ESP32) kepada penerima (Subscriber, misalnya Node-RED) berdasarkan "Topik" (contoh: /Thinkitive/temp).

• Non-Blocking Delay (millis()): Sebuah teknik pemrograman pada mikrokontroler yang menggunakan fungsi pewaktuan internal (millis()) alih-alih delay(). Hal ini memungkinkan mikrokontroler melakukan tugas lain sambil menunggu waktu yang ditentukan (misalnya jeda pengiriman data), menjaga kelancaran program terutama dalam menangani koneksi jaringan dan MQTT.

2.2 Komponen

No.Nama Perangkat / KomponenFungsi Utama Dalam Sistem
1.ESP32Berfungsi sebagai unit pemroses utama yang membaca data dari sensor dan mengirimkannya ke broker MQTT melalui jaringan Wi-Fi virtual Wokwi.
2.Sensor DHT22Sensor suhu dan kelembapan digital yang berfungsi membaca parameter lingkungan di sekitarnya.
3.Broker MQTT (Mosquitto)Server perantara publik (test.mosquitto.org) yang menerima, mengelola, dan mendistribusikan aliran pesan data (suhu dan kelembapan) antara ESP32 dan Node-RED.
4.Simulator WokwiPlatform berbasis web untuk menyimulasikan perangkat keras (ESP32 dan DHT22) dan menjalankan kode program C++ lengkap dengan koneksi internet virtual (Wokwi-GUEST).koneksi internet virtual (Wokwi-GUEST).
5.Node-REDAlat pemrograman berbasis visual yang digunakan untuk membangun dashboard antarmuka (user interface), berlangganan (subscribe) pada topik MQTT, dan menampilkan data secara grafis (gauge/chart).

BAB III
PEMBAHASAN

3.1 Penjelasan Simulasi

Simulasi ini menggunakan mikrokontroler ESP32 yang membaca data dari sensor suhu dan kelembapan DHT22 di platform Wokwi. Data tersebut kemudian ditransmisikan menuju dashboard Node-RED.

•Pembacaan Sensor: ESP32 dikonfigurasi untuk membaca nilai suhu dan kelembapan dari pin data DHT22 (GPIO 15) setiap 2 detik.

•Koneksi Jaringan: ESP32 terhubung ke internet melalui akses Wi-Fi virtual bawaan Wokwi (Wokwi-GUEST).

•Pengiriman Data (Publish): Data yang terbaca dikonversi menjadi tipe String. ESP32 (bertindak sebagai MQTT Client) mengirim data (publish) suhu ke topik MQTT spesifik (misal: /Thinkitive/temp) dan data kelembapan ke topik lain (misal: /Thinkitive/hum) melalui server broker test.mosquitto.org pada port 1883.

•Visualisasi Data (Subscribe): Di platform Node-RED, node MQTT In dikonfigurasi untuk berlangganan (subscribe) pada topik yang sama dengan yang dikirim ESP32. Data yang diterima kemudian diteruskan ke node dashboard (seperti Gauge atau Chart) untuk ditampilkan secara real-time kepada pengguna.

A. Rangkaian Simulator Wokwi

Rangkaian fisik yang disimulasikan pada platform Wokwi terdiri dari board mikrokontroler ESP32 DevKit V1 dan Sensor Suhu & Kelembapan DHT22 dengan rincian wiring sebagai berikut:

Koneksi Sensor DHT22 ke ESP32:

•Pin VCC (Power) DHT22 terhubung ke pin 3.3V (atau 5V) pada ESP32.

•Pin SDA / DATA (Signal) DHT22 terhubung ke pin GPIO 15 pada ESP32.

•Pin GND (Ground) DHT22 terhubung ke bus GND (Ground) pada ESP32.

Indikator Tambahan (LED Onboard):

•Pin GPIO 2 ESP32 dikonfigurasi sebagai output digital (indikator status onboard).

Skema Diagram Rangkaian

B. Konfigurasi Pada Broker MQTT & Node-RED Dashboard

Broker MQTT:

•Broker Server: test.mosquitto.org

•Port: 1883

•Topik Suhu (Publish): /Thinkitive/temp (atau /ThinkIOT/temp)

•Topik Kelembapan (Publish): /Thinkitive/hum (atau /ThinkIOT/hum)

•Topik Pesan Sistem: /ThinkIOT/Publish dan /ThinkIOT/Subscribe

Dashboard Node-RED:

•MQTT In Node 1: Dihubungkan ke server test.mosquitto.org:1883 dengan topik /Thinkitive/temp, lalu diteruskan ke node UI Gauge/Chart (Label: Temperature, Satuan: °C).

•MQTT In Node 2: Dihubungkan ke server test.mosquitto.org:1883 dengan topik /Thinkitive/hum, lalu diteruskan ke node UI Gauge/Chart (Label: Humidity, Satuan: %).

C. Alur Kerja Sistem (Workflow)

[ Start Simulasi Wokwi ]
│
▼
[ Inisialisasi Serial (115200) & Pin Sensor GPIO 15 ]
│
▼
[ Hubungkan ESP32 ke Wi-Fi "Wokwi-GUEST" ]
│
▼
[ Connect ke Broker MQTT (test.mosquitto.org:1883) ]
│
┌───────┴────────────────────────────────────────┐
│ Publish Pesan awal "Welcome" & Subscribe Topik │
└───────┬────────────────────────────────────────┘
│
▼ <─────────────────────────────────────────┐
[ Cek Koneksi MQTT (Fungsi reconnect jika terputus) ] │
│ │
▼ │ Loop Utama
[ Apakah Sudah Mencapai Interval 2 Detik (millis)? ] │ (Berulang)
├─── TIDAK ──> [ Lanjutkan client.loop() ] ───────┤
│ │
└─── YA │
│ │
▼ │
[ Baca Data Suhu & Kelembapan dari DHT22 ] │
│ │
▼ │
[ Publish Topik /Thinkitive/temp & /Thinkitive/hum ] │
│ │
▼ │
[ Tampilkan Data pada Serial Monitor ESP32 ] │
│ │
▼ │
[ Node-RED Menerima Data & Perbarui Tampilan Gauge ] ──┘

C. Pembahasan Program

1.Deklarasi Pustaka dan Variabel Global Pada Bagian ini menyiapkan fondasi program dengan memuat library WiFi.h, PubSubClient.h (untuk MQTT), dan DHTesp.h. Konstanta pin sensor (GPIO 15), kredensial Wi-Fi (Wokwi-GUEST), alamat broker MQTT (test.mosquitto.org), serta variabel penampung data (temp, hum) dan penanda waktu (lastMsg) dideklarasikan di sini. Objek klien jaringan (espClient) dan klien MQTT (client) diinisialisasi.

2.Logika Jaringan dan Koneksi MQTT Berisi fungsi-fungsi untuk mengelola konektivitas:

•setup_wifi(): Mengatur ESP32 sebagai Station dan mencoba terhubung ke jaringan Wi-Fi hingga mendapatkan IP Address.

•callback(): Fungsi respons (event-handler) yang aktif saat ESP32 menerima pesan dari topik yang ia ikuti (subscribe), mencetak pesan ke Serial Monitor.

•reconnect(): Fungsi krusial (watchdog) yang berjalan saat koneksi MQTT terputus. Fungsi ini membuat ID klien acak, mencoba menyambung ulang (reconnect) setiap 5 detik, serta melakukan publish salam "Welcome" dan subscribe topik jika berhasil terhubung.

3.Inisialisasi Perangkat Keras dan Eksekusi Utama Fungsi setup() dan loop() merupakan inti program:

•setup(): Menginisialisasi komunikasi Serial (115200 bps), memanggil setup_wifi(), mengkonfigurasi server MQTT (client.setServer), mendaftarkan fungsi callback(), dan mengatur pin DHT22.

•loop(): Fungsi utama berulang yang pertama kali memastikan kestabilan koneksi MQTT dengan memanggil reconnect() dan client.loop(). Untuk menghindari penundaan yang memblokir program, fungsi millis() digunakan. Setiap interval 2 detik, data suhu dan kelembapan diambil (dht.getTempAndHumidity()), dikonversi menjadi String, dicetak ke Serial Monitor, dan yang terpenting, dipublikasikan (publish) ke masing-masing topik MQTT (/Thinkitive/temp dan /Thinkitive/hum).

4.Fungsi setup() dan loop():

•pinMode(..., OUTPUT) memastikan bahwa pin GPIO 18 dan 19 siap mengeluarkan arus tegangan untuk menyalakan LED.

•Blynk.begin(auth, ssid, pass, "blynk.cloud", 80) melakukan prosedur jabat tangan (handshake) ke server Blynk melalui port 80.

•Blynk.run() pada fungsi loop() harus terus dieksekusi tanpa tertahan penundaan (delay()) agar komunikasi data tetap stabil dan responsif.

3.2 Program

Berikut adalah kode program lengkap yang digunakan dalam proyek implementasi sistem IoT ini:

#include <WiFi.h>
#include <PubSubClient.h>
#include <DHTesp.h>

// ============================================================================
// ORANG 1: DEKLARASI PUSTAKA DAN VARIABEL GLOBAL
// ============================================================================
const int DHT_PIN = 15;
DHTesp dht;

const char* ssid = "Wokwi-GUEST"; // Wi-Fi SSID simulasi Wokwi
const char* password = ""; // Password Wi-Fi (kosong)
const char* mqtt_server = "test.mosquitto.org"; // Mosquitto MQTT Server URL

WiFiClient espClient;
PubSubClient client(espClient);

unsigned long lastMsg = 0;
float temp = 0;
float hum = 0;

// ============================================================================
// ORANG 2: LOGIKA JARINGAN DAN KONEKSI MQTT
// ============================================================================
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}

void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}

void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
String clientId = "ESP32Client-";
clientId += String(random(0xffff), HEX);

if (client.connect(clientId.c_str())) {
Serial.println("Connected");
client.publish("/ThinkIOT/Publish", "Welcome");
client.subscribe("/ThinkIOT/Subscribe");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}

// ============================================================================
// ORANG 3: INISIALISASI PERANGKAT KERAS DAN EKSEKUSI UTAMA
// ============================================================================
void setup() {
pinMode(2, OUTPUT);
Serial.begin(115200);

setup_wifi();

client.setServer(mqtt_server, 1883);
client.setCallback(callback);

dht.setup(DHT_PIN, DHTesp::DHT22);
}

void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();

unsigned long now = millis();
if (now - lastMsg > 2000) { // Perintah publish data setiap 2 detik (2000 ms)
lastMsg = now;

TempAndHumidity data = dht.getTempAndHumidity();

String tempStr = String(data.temperature, 2);
client.publish("/Thinkitive/temp", tempStr.c_str()); // Publish topik suhu

String humStr = String(data.humidity, 1);
client.publish("/Thinkitive/hum", humStr.c_str()); // Publish topik kelembapan

Serial.print("Temperature: ");
Serial.println(tempStr);
Serial.print("Humidity: ");
Serial.println(humStr);
}
}

BAB IV
PENUTUP

4.1 Kesimpulan

Berdasarkan hasil perancangan, pengujian, dan pembahasan yang telah dilakukan pada praktikum ini, dapat ditarik beberapa kesimpulan sebagai berikut:

1.Keberhasilan Integrasi: Simulasi IoT berbasis Wokwi ESP32, broker MQTT (Mosquitto), dan platform Node-RED berhasil dirancang dan diintegrasikan dengan baik. Sistem mampu mentransmisikan data lingkungan secara real-time menuju dashboard.

2.Efisiensi Kode: Pembagian kode menjadi blok deklarasi, blok penanganan jaringan, dan blok eksekusi utama memudahkan proses kolaborasi dan pemecahan masalah (troubleshooting).

3.Pewaktuan Non-Blocking: Penggunaan fungsi millis() terbukti krusial dalam menjaga kelancaran operasi ESP32, memastikan koneksi jaringan dan polling sensor (setiap 2 detik) berjalan paralel tanpa saling menghentikan.

4.Fleksibilitas MQTT & Node-RED: Protokol MQTT terbukti sangat ringan dan responsif, sementara Node-RED menyediakan antarmuka visual yang sangat cepat (Rapid Application Development) untuk membangun dashboard pemantauan tanpa pemrograman front-end kompleks.

4.2 Saran

Untuk pengembangan dan penyempurnaan praktikum atau penelitian selanjutnya, disarankan beberapa hal sebagai berikut:

1.Implementasi Perangkat Keras Asli: Mengingat simulasi virtual bebas dari gangguan kelistrikan, pengujian langsung dengan ESP32 dan sensor DHT22 fisik sangat disarankan untuk memahami manajemen daya dan noise sinyal Wi-Fi.

2.Keamanan Data: Menggunakan broker publik tanpa autentikasi (seperti test.mosquitto.org) rentan terhadap intersepsi data. Disarankan mengimplementasikan broker private dengan username/password dan SSL/TLS untuk keamanan jaringan, terutama jika proyek naik ke level produksi.

3.Kontrol Dua Arah: Dashboard Node-RED dapat dikembangkan lebih lanjut tidak hanya untuk membaca (monitoring), tetapi juga menambahkan komponen switch/button (mengirim data) untuk menyalakan indikator LED (aktuasi) pada ESP32, menjadikan sistem bersifat monitoring & control.

DAFTAR PUSTAKA

Cameron, N. (2023). ESP32 Formats and Communication: Application of Communication Protocols with ESP32 Microcontroller. Apress. https://doi.org/10.1007/978-1-4842-9720-9

Espressif Systems. (2023). ESP32 Series Datasheet (Version 4.1). Espressif Systems Co., Ltd. https://www.espressif.com/en/products/socs/esp32

Hagino, T. (2021). Practical Node-RED Programming: Learn Powerful Visual Programming Techniques and Best Practices for the Web and IoT. Packt Publishing.

Mosquitto. (2023). Eclipse Mosquitto: An Open Source MQTT Broker. Eclipse Foundation. https://mosquitto.org/

O'Leary, N. (2023). PubSubClient Library Documentation. GitHub Repository. https://github.com/knolleary/pubsubclient

OASIS Open. (2019). MQTT Version 5.0 Specification. OASIS Standard. https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html

Oner, V. O. (2021). Developing IoT Projects with ESP32: Automate Your Home or Business with Inexpensive Wi-Fi Devices. Packt Publishing.

Pratama, I. P. A. E. (2019). Handbook Internet of Things (IoT): Teori, Pemrograman, dan Implementasi. Informatika Bandung.

Salam, M. A., & Aribowo, W. (2024). Monitoring dan Kendali Charger Accu Berbasis Node-RED. Jurnal Teknik Elektro, 13(1), 14–19. https://doi.org/10.26740/jte.v13n1.p14-19

Wokwi. (2024). Wokwi Simulator Documentation: ESP32 WiFi and IoT Simulation. Wokwi Ltd. https://docs.wokwi.com/

LAMPIRAN

Link Vidio:

https://drive.google.com/file/d/1CnTNNj6s7vhgOkiuwMt24uDBZax9OnyL/view?usp=sharing

Tidak ada komentar:

Posting Komentar