Minggu, 27 September 2026

MONITORING SUHU DAN KELEMBABAN RUANGAN BERBASIS ESP32 DAN THINGSPEAK MENGGUNAKAN WOKWI

 

 

LAPORAN PRAKTIKUM INTERNET OF THINGS (IOT)

MONITORING SUHU DAN KELEMBABAN RUANGAN BERBASIS ESP32 DAN THINGSPEAK MENGGUNAKAN WOKWI




Disusun Oleh:

Revalina Natasya Sinaga                24051204123

Muchammad Ainur Rizal                 24051204127

M. Mazidannur Jibril Murtadlo        24051204130

Akhmad Furqon Al Farid                   24051204134



BAB 1
PENDAHULUAN

1.1 Latar Belakang

Perkembangan teknologi Internet of Things (IoT) memungkinkan berbagai perangkat elektronik untuk saling terhubung dan bertukar data melalui jaringan internet. Salah satu penerapan IoT yang banyak digunakan adalah sistem monitoring lingkungan, misalnya pemantauan suhu dan kelembapan pada suatu ruangan secara jarak jauh. Sistem semacam ini bermanfaat untuk memastikan kondisi ruangan tetap berada pada batas yang aman, misalnya pada gudang penyimpanan, ruang server, maupun rumah kaca.

Pada praktikum ini dibuat sebuah simulasi sistem monitoring suhu dan kelembapan menggunakan mikrokontroler ESP32 pada platform Wokwi. ESP32 dipilih karena memiliki modul WiFi terintegrasi sehingga dapat langsung terhubung ke internet tanpa memerlukan modul tambahan. Sensor DHT22 digunakan untuk membaca nilai suhu dan kelembapan udara, kemudian hasil pembacaan tersebut ditampilkan secara lokal melalui layar LCD 16x2 berbasis komunikasi I2C.

Sistem ini juga dilengkapi dengan LED merah sebagai indikator kondisi panas. LED akan menyala apabila suhu ruangan mencapai atau melebihi ambang batas 35°C, sehingga pengguna dapat mengetahui kondisi ruangan hanya dengan melihat indikator tanpa harus membaca layar LCD. Selain ditampilkan secara lokal, data suhu dan kelembapan juga dikirim secara berkala ke platform cloud ThingSpeak melalui protokol HTTP, sehingga data dapat dipantau dari mana saja selama terhubung ke internet.

Simulasi ini dibuat untuk menerapkan materi mengenai komunikasi I2C, pembacaan sensor digital, digital output, serta komunikasi HTTP antara mikrokontroler dengan layanan cloud. Melalui praktikum ini, konsep dasar pembangunan sistem IoT sederhana dapat dipahami secara langsung mulai dari sisi perangkat keras (hardware) hingga pengiriman data ke internet.

1.2 Rumusan Masalah

  1. Bagaimana cara membaca data suhu dan kelembapan menggunakan sensor DHT22 pada ESP32?
  2. Bagaimana cara menampilkan hasil pembacaan sensor pada LCD 16x2 melalui komunikasi I2C?
  3. Bagaimana cara mengendalikan LED indikator berdasarkan ambang batas suhu tertentu?
  4. Bagaimana cara menghubungkan ESP32 ke jaringan WiFi dan mengirimkan data ke platform ThingSpeak?
  5. Bagaimana hasil simulasi sistem monitoring suhu dan kelembapan pada platform Wokwi?

1.3 Tujuan Laporan

Tujuan dari pembuatan laporan ini adalah:

  1. Memahami cara kerja sensor DHT22 dalam membaca suhu dan kelembapan udara.
  2. Memahami komunikasi I2C untuk menampilkan data pada LCD 16x2.
  3. Menerapkan digital output pada LED sebagai indikator kondisi suhu.
  4. Memahami proses koneksi ESP32 ke jaringan WiFi menggunakan pustaka WiFi.h.
  5. Menerapkan pengiriman data sensor ke layanan cloud ThingSpeak menggunakan protokol HTTP.
  6. Membuat simulasi sistem monitoring suhu dan kelembapan menggunakan ESP32 dan Wokwi.

1.4 Manfaat Penulisan

  1. Menambah pemahaman mengenai konsep dasar Internet of Things berbasis ESP32.
  2. Memberikan pengalaman dalam membangun simulasi rangkaian menggunakan platform Wokwi.
  3. Memahami proses pembacaan sensor DHT22 dan penggunaan LCD I2C sebagai media tampilan.
  4. Mengetahui cara mengirim dan menyimpan data sensor secara online melalui ThingSpeak.
  5. Memberikan gambaran penerapan sistem monitoring suhu dan kelembapan dalam kehidupan sehari-hari.



BAB II
TINJAUAN PUSTAKA

2.1 Dasar Teori

2.1.1 ESP32 dan Konektivitas WiFi

ESP32 merupakan mikrokontroler yang dilengkapi modul WiFi dan Bluetooth terintegrasi, sehingga banyak digunakan dalam pembuatan sistem IoT. Berbeda dengan Arduino Uno yang memerlukan modul tambahan untuk terhubung ke internet, ESP32 dapat langsung tersambung ke jaringan WiFi menggunakan pustaka WiFi.h yang sudah tersedia pada Arduino IDE.

Pada simulasi ini, ESP32 dihubungkan ke jaringan WiFi bawaan Wokwi bernama "Wokwi-GUEST" yang tidak memerlukan kata sandi. Proses koneksi dilakukan pada fungsi setup() menggunakan perintah WiFi.begin(ssid, password), kemudian status koneksi diperiksa secara berulang menggunakan WiFi.status() hingga board berhasil terhubung.

2.1.2 Sensor DHT22

DHT22 adalah sensor digital yang dapat membaca nilai suhu dan kelembapan udara sekaligus dalam satu modul. Sensor ini berkomunikasi dengan mikrokontroler melalui satu jalur data (single wire) dan memiliki tingkat akurasi yang lebih baik dibandingkan DHT11, dengan rentang pengukuran suhu -40°C hingga 80°C dan kelembapan 0-100% RH.

Pembacaan sensor dilakukan menggunakan pustaka DHT.h dengan memanggil fungsi dht.readTemperature() untuk memperoleh nilai suhu dan dht.readHumidity() untuk memperoleh nilai kelembapan. Apabila pembacaan gagal, kedua fungsi tersebut akan mengembalikan nilai NaN (Not a Number) yang dapat dideteksi menggunakan fungsi isnan().

2.1.3 Komunikasi I2C dan LCD 16x2

I2C (Inter-Integrated Circuit) merupakan protokol komunikasi serial yang memungkinkan beberapa perangkat saling bertukar data hanya melalui dua jalur, yaitu SDA (data) dan SCL (clock). Pada ESP32, jalur I2C secara default menggunakan pin D21 sebagai SDA dan pin D22 sebagai SCL.

LCD 16x2 pada simulasi ini menggunakan modul I2C dengan alamat 0x27, sehingga hanya memerlukan empat jalur kabel (VCC, GND, SDA, dan SCL) dibandingkan LCD paralel biasa yang membutuhkan lebih banyak pin. Pengendalian LCD dilakukan menggunakan pustaka LiquidCrystal_I2C, dengan fungsi utama seperti lcd.init(), lcd.backlight(), lcd.setCursor(), dan lcd.print().

2.1.4 LED Sebagai Indikator Digital

LED (Light Emitting Diode) digunakan sebagai indikator visual sederhana pada sistem ini. LED dikendalikan melalui digital output menggunakan fungsi digitalWrite() yang mengatur kondisi pin menjadi HIGH (menyala) atau LOW (mati). Pada simulasi ini, LED merah akan menyala apabila suhu yang terbaca mencapai atau melebihi ambang batas panas yang telah ditentukan.

2.1.5 HTTP Client dan Platform ThingSpeak

ThingSpeak merupakan platform cloud yang digunakan untuk menyimpan dan memvisualisasikan data dari perangkat IoT. Setiap channel pada ThingSpeak memiliki Write API Key yang digunakan perangkat untuk mengirimkan data melalui permintaan HTTP GET, serta beberapa field yang dapat diisi dengan data numerik, misalnya field1 untuk suhu dan field2 untuk kelembapan.

Pengiriman data pada ESP32 dilakukan menggunakan pustaka HTTPClient.h. Perangkat menyusun sebuah URL yang memuat API key beserta nilai field, kemudian mengirimkan permintaan GET ke server ThingSpeak menggunakan http.begin(url) dan http.GET(). Proses ini dilakukan secara berkala menggunakan fungsi millis() agar pengiriman data tidak menghambat pembacaan sensor maupun tampilan LCD.

2.2 Komponen

Komponen yang digunakan dalam simulasi sistem ini beserta fungsinya adalah sebagai berikut.

Komponen

Jumlah

Fungsi

ESP32 DevKit V1

1

Mengontrol seluruh sistem dan menyediakan konektivitas WiFi

Sensor DHT22

1

Membaca suhu dan kelembapan udara

LCD 16x2 (I2C)

1

Menampilkan hasil pembacaan suhu dan kelembapan secara lokal

LED Merah

1

Indikator kondisi suhu panas

Resistor

1

Membatasi arus pada LED (220 Ω)

 

 

BAB III
PEMBAHASAN

3.1 Penjelasan Simulasi

3.1.1 Rangkaian Simulasi

Rangkaian sistem monitoring suhu dan kelembapan dibuat menggunakan ESP32 DevKit V1 pada platform Wokwi. Sensor DHT22 digunakan untuk membaca kondisi udara, LCD I2C digunakan sebagai tampilan lokal, dan LED merah digunakan sebagai indikator kondisi panas. Konfigurasi rangkaian yang digunakan adalah sebagai berikut.

-  Sensor DHT22: pin VCC terhubung ke 3V3 ESP32, GND terhubung ke GND, dan pin SDA (data) terhubung ke pin digital D4 sebagai jalur pembacaan sensor.

-  LCD I2C 16x2: pin GND terhubung ke GND, VCC terhubung ke 5V, SDA terhubung ke pin D21, dan SCL terhubung ke pin D22 sesuai jalur I2C bawaan ESP32.

-  LED Merah: pin anoda terhubung ke pin digital D13 melalui resistor 220 Ω untuk membatasi arus, sedangkan pin katoda terhubung ke GND.

Berikut tampilan simulasi rangkaian pada Wokwi.

Gambar 3.1. Tampilan simulasi rangkaian pada Wokwi

Konfigurasi rangkaian di atas ditulis dalam format diagram.json pada Wokwi sebagai berikut.

{

  "version": 1,

  "author": "Anonymous",

  "editor": "wokwi",

  "parts": [

     { "type": "wokwi-esp32-devkit-v1", "id": "esp", "top": 0, "left": 0, "attrs": {} },

     { "type": "wokwi-dht22", "id": "dht1", "top": -140, "left": -100, "attrs": {} },

     {

     "type": "wokwi-lcd1602",

     "id": "lcd1",

     "top": -140,

     "left": 100,

     "attrs": { "pins": "i2c" }

     },

     { "type": "wokwi-led", "id": "led1", "top": 120, "left": 140, "attrs": { "color": "red" } },

     { "type": "wokwi-resistor", "id": "r1", "top": 100, "left": 80, "attrs": { "value": "220" } }

  ],

  "connections": [

     [ "esp:3V3", "dht1:VCC", "red", [ "v0" ] ],

     [ "esp:GND.1", "dht1:GND", "black", [ "v0" ] ],

     [ "esp:D4", "dht1:SDA", "green", [ "v0" ] ],

     [ "esp:GND.2", "lcd1:GND", "black", [ "v0" ] ],

     [ "esp:5V", "lcd1:VCC", "red", [ "v0" ] ],

     [ "esp:D21", "lcd1:SDA", "blue", [ "v0" ] ],

     [ "esp:D22", "lcd1:SCL", "yellow", [ "v0" ] ],

     [ "esp:D13", "r1:1", "red", [ "v0" ] ],

     [ "r1:2", "led1:A", "red", [ "v0" ] ],

     [ "esp:GND.3", "led1:C", "black", [ "v0" ] ]

  ],

  "dependencies": {}

}

 

3.1.2 Cara Kerja Sistem

1. ESP32 melakukan inisialisasi komunikasi Serial dengan kecepatan 115200 baud, mengatur pin LED sebagai output, serta menginisialisasi sensor DHT22 dan LCD I2C.

2. ESP32 mencoba menyambungkan diri ke jaringan WiFi "Wokwi-GUEST" menggunakan WiFi.begin(), sementara LCD menampilkan status "Konek WiFi...".

3. Setelah berhasil terhubung, LCD menampilkan pesan "WiFi Connected!" sebelum masuk ke tampilan utama.

4. Pada fungsi loop(), ESP32 membaca nilai suhu dan kelembapan dari sensor DHT22 menggunakan dht.readTemperature() dan dht.readHumidity().

5. Apabila hasil pembacaan bernilai NaN (gagal dibaca), sistem mencetak pesan "Gagal membaca sensor!" pada Serial Monitor dan mengulang proses pembacaan.

6. Jika suhu yang terbaca lebih besar atau sama dengan 35°C (BATAS_PANAS), LED merah dinyalakan (HIGH). Jika tidak, LED dipadamkan (LOW).

7. LCD baris pertama selalu menampilkan nilai suhu dalam derajat Celsius, sedangkan baris kedua menampilkan status "PANAS!" apabila suhu melewati ambang batas, atau menampilkan nilai kelembapan apabila kondisi masih normal.

8. Setiap 15 detik (ditentukan oleh variabel timerDelay), ESP32 menyusun URL permintaan HTTP yang memuat Write API Key ThingSpeak beserta nilai suhu (field1) dan kelembapan (field2), kemudian mengirimkannya menggunakan http.GET().

9. Jika pengiriman berhasil, ESP32 mencetak pesan "Data terkirim ke ThingSpeak!" pada Serial Monitor, dan proses pembacaan sensor akan terus berulang.

3.1.3 Hasil dan Pembahasan

Berdasarkan logika program yang dibuat, nilai suhu yang dibaca oleh sensor DHT22 menentukan kondisi LED dan tampilan pada baris kedua LCD. Program menggunakan perintah berikut untuk menentukan kondisi panas:

if (suhu >= BATAS_PANAS) { digitalWrite(LED_PIN, HIGH); }

Dengan ambang batas 35°C, sistem memiliki dua kondisi utama. Ketika suhu berada di bawah 35°C, LED dalam keadaan mati dan LCD menampilkan nilai suhu beserta kelembapan sebagai kondisi normal. Sebaliknya, ketika suhu mencapai atau melebihi 35°C, LED menyala dan baris kedua LCD berganti menampilkan tulisan "Status: PANAS!" sebagai peringatan.

Kondisi Suhu

LED

Tampilan LCD Baris 2

Status

< 35°C

Mati

Kelembapan (%)

Normal

>= 35°C

Menyala

"Status: PANAS!"

Panas

Selain ditampilkan pada LCD, data suhu dan kelembapan juga dikirim ke channel ThingSpeak setiap 15 detik sehingga dapat dipantau secara online dalam bentuk grafik pada field1 (suhu) dan field2 (kelembapan). Berikut dokumentasi hasil simulasi yang telah dilakukan.

               Gambar 3.2 Hasil simulasi pada kondisi normal

Gambar 3.3 Hasil simulasi pada kondisi panas

 

Gambar 3.4 Data suhu dan kelembapan pada dashboard ThingSpeak

 

3.2 Program

Berikut kode program yang digunakan dalam simulasi monitoring suhu dan kelembapan berbasis ESP32 dan ThingSpeak.

#include <WiFi.h>

#include <HTTPClient.h>

#include <DHT.h>

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

 

#define DHT_PIN 4

#define DHT_TYPE DHT22

#define LED_PIN 13      // Pin LED merah indikator panas

#define BATAS_PANAS 35.0 // Batas suhu dianggap panas (°C)

 

DHT dht(DHT_PIN, DHT_TYPE);

LiquidCrystal_I2C lcd(0x27, 16, 2);

 

const char* ssid = "Wokwi-GUEST";

const char* password = "";

 

// GANTI DENGAN WRITE API KEY THINGSPEAK KAMU

String apiKey = "L5865G9P4G0EZ7P6";

 

unsigned long lastTime = 0;

unsigned long timerDelay = 15000;

 

void setup() {

  Serial.begin(115200);

  pinMode(LED_PIN, OUTPUT);

  dht.begin();

 

  lcd.init();

  lcd.backlight();

  lcd.setCursor(0, 0);

  lcd.print("Konek WiFi...");

 

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

     delay(500);

     Serial.print(".");

  }

 

  Serial.println("\nWiFi Terhubung!");

  lcd.clear();

  lcd.setCursor(0, 0);

  lcd.print("WiFi Connected!");

  delay(1500);

  lcd.clear();

}

 

void loop() {

  float suhu = dht.readTemperature();

  float kelembapan = dht.readHumidity();

 

  if (isnan(suhu) || isnan(kelembapan)) {

     Serial.println("Gagal membaca sensor!");

     return;

  }

 

  // Cek kondisi suhu untuk menyalakan lampu

  if (suhu >= BATAS_PANAS) {

     digitalWrite(LED_PIN, HIGH); // Lampu LED menyala

  } else {

     digitalWrite(LED_PIN, LOW);  // Lampu LED mati

  }

 

  // Tampilan di LCD

  lcd.setCursor(0, 0);

  lcd.print("Suhu: ");

  lcd.print(suhu, 1);

  lcd.print((char)223);

  lcd.print("C   ");

 

  lcd.setCursor(0, 1);

  if (suhu >= BATAS_PANAS) {

     lcd.print("Status: PANAS!  ");

  } else {

     lcd.print("Hum : ");

     lcd.print(kelembapan, 1);

     lcd.print("%   ");

  }

 

  // Pengiriman data ke ThingSpeak per 15 detik

  if ((millis() - lastTime) > timerDelay) {

     if (WiFi.status() == WL_CONNECTED) {

     HTTPClient http;

     String url = "http://api.thingspeak.com/update?api_key=" + apiKey + "&field1=" + String(suhu) + "&field2=" + String(kelembapan);

    

     http.begin(url);

     int httpCode = http.GET();

     if (httpCode > 0) {

     Serial.println("Data terkirim ke ThingSpeak!");

     }

     http.end();

     }

     lastTime = millis();

  }

}




BAB IV
PENUTUP

4.1 Kesimpulan

Berdasarkan simulasi yang telah dibuat, dapat disimpulkan bahwa ESP32 dapat digunakan untuk membaca data suhu dan kelembapan dari sensor DHT22, menampilkannya secara lokal melalui LCD I2C, serta mengendalikan LED sebagai indikator kondisi panas berdasarkan ambang batas 35°C. Selain itu, ESP32 juga mampu terhubung ke jaringan WiFi dan mengirimkan data sensor secara berkala ke platform ThingSpeak menggunakan protokol HTTP, sehingga data dapat dipantau secara daring (online).

Melalui simulasi ini, konsep komunikasi I2C, pembacaan sensor digital, digital output, koneksi WiFi, serta pengiriman data ke layanan cloud dapat diterapkan secara terintegrasi dalam satu sistem IoT sederhana yang memiliki manfaat nyata, misalnya untuk pemantauan suhu ruangan dari jarak jauh.

4.2 Saran

Untuk pengembangan selanjutnya, simulasi ini dapat dikembangkan dengan menambahkan buzzer sebagai peringatan tambahan saat suhu mencapai kondisi kritis, atau menambahkan lebih dari satu ambang batas suhu agar indikator yang diberikan lebih detail. Sistem juga dapat dikembangkan dengan memanfaatkan fitur notifikasi pada ThingSpeak (ThingSpeak React) untuk mengirimkan peringatan otomatis melalui email ketika suhu melewati batas tertentu. Selain itu, pengujian pada perangkat keras (hardware) asli disarankan untuk memastikan sistem bekerja sesuai dengan hasil simulasi pada Wokwi.

 



DAFTAR PUSTAKA

Adafruit. (n.d.). DHT sensor library. Arduino Library Reference. https://github.com/adafruit/DHT-sensor-library 

Arduino. (n.d.). WiFi.h — WiFi Library for ESP32. https://www.arduino.cc/reference/en/libraries/wifi/ 

Arduino. (n.d.). HTTPClient Library. https://www.arduino.cc/reference/en/libraries/httpclient/

Espressif Systems. (n.d.). ESP32 Arduino Core Documentation. https://docs.espressif.com/projects/arduino-esp32/ 

Marco Schwartz. (n.d.). LiquidCrystal_I2C Library. https://github.com/johnrickman/LiquidCrystal_I2C 

MathWorks. (n.d.). ThingSpeak for IoT Projects. https://thingspeak.mathworks.com/

Modul Praktikum. (2026). Internet of Things: Komunikasi Sensor dan Cloud pada Mikrokontroler. Materi Praktikum Mikrokontroler.

Wokwi. (n.d.). Wokwi Documentation. https://docs.wokwi.com/ 

 

LAMPIRAN

Gambar 3.5 Dokumentasi Praktikum

 

Tidak ada komentar:

Posting Komentar