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
- Bagaimana
cara membaca data suhu dan kelembapan menggunakan sensor DHT22 pada ESP32?
- Bagaimana
cara menampilkan hasil pembacaan sensor pada LCD 16x2 melalui komunikasi
I2C?
- Bagaimana
cara mengendalikan LED indikator berdasarkan ambang batas suhu tertentu?
- Bagaimana
cara menghubungkan ESP32 ke jaringan WiFi dan mengirimkan data ke platform
ThingSpeak?
- Bagaimana
hasil simulasi sistem monitoring suhu dan kelembapan pada platform Wokwi?
1.3
Tujuan Laporan
Tujuan
dari pembuatan laporan ini adalah:
- Memahami
cara kerja sensor DHT22 dalam membaca suhu dan kelembapan udara.
- Memahami
komunikasi I2C untuk menampilkan data pada LCD 16x2.
- Menerapkan
digital output pada LED sebagai indikator kondisi suhu.
- Memahami
proses koneksi ESP32 ke jaringan WiFi menggunakan pustaka WiFi.h.
- Menerapkan
pengiriman data sensor ke layanan cloud ThingSpeak menggunakan protokol
HTTP.
- Membuat
simulasi sistem monitoring suhu dan kelembapan menggunakan ESP32 dan
Wokwi.
1.4
Manfaat Penulisan
- Menambah
pemahaman mengenai konsep dasar Internet of Things berbasis ESP32.
- Memberikan
pengalaman dalam membangun simulasi rangkaian menggunakan platform Wokwi.
- Memahami
proses pembacaan sensor DHT22 dan penggunaan LCD I2C sebagai media
tampilan.
- Mengetahui
cara mengirim dan menyimpan data sensor secara online melalui ThingSpeak.
- 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