MATERI PEMBELAJARAN KKA KELAS XI
Dasar Internet of Things (IoT): Mengenal Perangkat, Alur Data, dan Praktik Coding ESP32
Memahami bagaimana perangkat elektronik dapat membaca data, mengolah informasi, dan memberikan respons secara otomatis melalui teknologi Internet of Things.
A. Pendahuluan: Mengapa Kita Perlu Mempelajari IoT?
Pernahkah kamu melihat lampu yang dapat dikendalikan menggunakan smartphone? Pernahkah kamu melihat alat penyiram tanaman otomatis, kamera keamanan yang dapat dipantau dari jarak jauh, atau alat pemantau suhu ruangan yang menampilkan informasi secara langsung?
Teknologi tersebut merupakan contoh penerapan Internet of Things atau IoT. Teknologi ini memungkinkan perangkat fisik mengumpulkan data, bertukar informasi, dan menjalankan tindakan berdasarkan program atau perintah tertentu.
IoT semakin banyak digunakan dalam kehidupan sehari-hari dan dunia kerja. Perusahaan dapat memanfaatkan sensor untuk memantau kondisi mesin, petani dapat memantau kelembapan lahan, sedangkan pengelola gedung dapat memantau kondisi lingkungan ruangan.
Dalam pembelajaran Koding dan Kecerdasan Artifisial, IoT penting dipelajari karena menggabungkan beberapa kemampuan, yaitu memahami perangkat digital, membaca data, menyusun algoritma, menulis program, dan memecahkan masalah.
Setelah mempelajari materi ini, kamu diharapkan mampu memahami konsep dasar IoT, mengenali komponen penyusunnya, menjelaskan alur data, serta membuat simulasi sederhana menggunakan ESP32 dan sensor melalui aplikasi Wokwi.
B. Pengertian Internet of Things (IoT)
Internet of Things (IoT) adalah konsep teknologi yang menghubungkan berbagai perangkat fisik dengan jaringan sehingga perangkat tersebut dapat mengumpulkan, mengirimkan, menerima, atau bertukar data.
Perangkat IoT dapat berupa sensor, lampu, kamera, mesin produksi, kendaraan, alat rumah tangga, dan berbagai perangkat elektronik lainnya.
Perangkat tersebut dapat bekerja secara otomatis berdasarkan program yang telah dibuat. Pada sistem tertentu, data juga dapat dikirim melalui Internet ke server atau cloud sehingga pengguna dapat memantaunya dari perangkat lain.
Contoh Sederhana IoT
Sebuah lampu dipasang dengan sensor gerak. Ketika sensor mendeteksi seseorang memasuki ruangan, sistem memproses informasi tersebut dan menyalakan lampu.
Ketika tidak ada gerakan selama waktu tertentu, sistem dapat mematikan lampu secara otomatis.
Contoh tersebut menunjukkan bahwa perangkat tidak hanya menerima perintah langsung dari manusia. Perangkat juga dapat membaca keadaan lingkungan dan mengambil tindakan berdasarkan algoritma.
Perbedaan Perangkat Biasa dan Perangkat IoT
| Perangkat Biasa | Perangkat Berbasis IoT |
|---|---|
| Umumnya bekerja berdasarkan pengoperasian langsung. | Dapat bekerja otomatis berdasarkan data dan program. |
| Informasi biasanya dilihat langsung pada perangkat. | Data dapat dikirim ke sistem lain melalui jaringan. |
| Tidak selalu memiliki koneksi jaringan. | Dapat menggunakan Wi-Fi atau jaringan komunikasi lain. |
| Contoh: kipas angin dengan sakelar biasa. | Contoh: kipas yang dapat dipantau atau dikendalikan melalui aplikasi. |
C. Komponen Utama dalam Sistem IoT
Sebuah sistem IoT umumnya terdiri atas beberapa komponen yang saling bekerja sama. Setiap komponen memiliki fungsi berbeda.
1. Sensor
Sensor adalah komponen yang digunakan untuk mendeteksi atau mengukur kondisi lingkungan dan mengubahnya menjadi data yang dapat dibaca oleh perangkat elektronik.
Contoh sensor:
- Sensor suhu untuk membaca temperatur.
- Sensor kelembapan untuk mengukur kelembapan udara atau tanah.
- Sensor cahaya untuk mendeteksi intensitas cahaya.
- Sensor gerak untuk mendeteksi pergerakan.
- Sensor jarak untuk mengukur jarak suatu objek.
2. Mikrokontroler
Mikrokontroler adalah perangkat elektronik yang dapat menjalankan program, menerima data dari sensor, mengolah informasi, dan mengendalikan komponen lainnya.
Salah satu contoh mikrokontroler yang banyak digunakan untuk pembelajaran IoT adalah ESP32.
3. Aktuator atau Output
Aktuator merupakan perangkat yang menghasilkan tindakan fisik berdasarkan sinyal kendali dari sistem.
Contohnya:
- LED sebagai indikator cahaya.
- Buzzer sebagai indikator suara.
- Motor untuk menghasilkan gerakan.
- Relay untuk mengendalikan rangkaian listrik.
4. Jaringan Komunikasi
Jaringan digunakan untuk menghubungkan perangkat dengan perangkat lain atau server. Teknologi yang dapat digunakan antara lain Wi-Fi, Bluetooth, Ethernet, dan jaringan seluler.
5. Server atau Cloud
Server atau cloud dapat digunakan untuk menerima, menyimpan, dan mengelola data yang dikirimkan oleh perangkat IoT.
6. Dashboard atau Aplikasi
Dashboard merupakan tampilan yang membantu pengguna melihat informasi dari sistem. Informasi dapat berupa angka suhu, grafik, status perangkat, atau pemberitahuan.
| Komponen | Fungsi | Contoh |
|---|---|---|
| Sensor | Membaca kondisi lingkungan. | DHT22 |
| Mikrokontroler | Mengolah data dan menjalankan program. | ESP32 |
| Aktuator | Memberikan tindakan fisik. | LED, buzzer, motor |
| Jaringan | Mengirim dan menerima informasi. | Wi-Fi |
| Server | Menyimpan atau mengelola data. | Cloud server |
| Dashboard | Menampilkan informasi kepada pengguna. | Web atau aplikasi |
D. Memahami Alur Data dalam Sistem IoT
Alur data adalah urutan perjalanan informasi dari sumber data hingga digunakan oleh sistem untuk menghasilkan suatu tindakan atau informasi.
Pada sistem monitoring suhu, alur data dimulai ketika sensor membaca kondisi lingkungan. Data kemudian diterima oleh mikrokontroler dan diproses menggunakan program.
Penjelasan Tahapan Alur Data
- Input: sensor membaca informasi dari lingkungan.
- Pengiriman data: sensor memberikan data kepada mikrokontroler.
- Processing: mikrokontroler menjalankan program untuk mengolah data.
- Decision: algoritma menentukan keputusan berdasarkan kondisi tertentu.
- Output: sistem mengaktifkan perangkat atau menampilkan informasi.
Sensor membaca suhu ruangan sebesar 36°C. Data diterima ESP32. Program memeriksa nilai tersebut dan menemukan bahwa suhu melebihi batas 35°C. Sistem kemudian mengaktifkan LED dan buzzer sebagai tanda peringatan.
E. Penerapan IoT dalam Kehidupan dan Dunia Kerja
1. Bidang Pendidikan
Sekolah dapat menggunakan sistem IoT untuk memantau suhu laboratorium, mengendalikan lampu otomatis, atau memantau penggunaan fasilitas tertentu.
2. Bidang Pertanian
Petani dapat menggunakan sensor kelembapan tanah untuk mengetahui kondisi lahan. Data tersebut dapat membantu menentukan kapan tanaman membutuhkan penyiraman.
3. Bidang Industri
Perusahaan manufaktur dapat menggunakan sensor untuk memantau suhu mesin, getaran, atau kondisi lingkungan produksi.
4. Bidang Pergudangan
Gudang penyimpanan makanan atau produk tertentu dapat menggunakan sensor untuk memantau suhu dan kelembapan ruangan.
5. Bidang Transportasi
Teknologi IoT dapat digunakan untuk memantau lokasi kendaraan, kondisi armada, dan informasi operasional lainnya.
6. Bidang Rumah Tangga
Perangkat rumah pintar dapat membantu mengendalikan lampu, kipas, kamera, dan perangkat elektronik lainnya.
Contoh Alur Kerja di Dunia Kerja
Petugas membutuhkan informasi suhu ruang server agar dapat mengetahui apabila kondisi ruangan mengalami peningkatan suhu.
- Sensor mengukur suhu ruangan.
- ESP32 membaca hasil pengukuran.
- Program menentukan status suhu.
- LED dan buzzer memberikan peringatan lokal.
- Pada sistem yang lebih lengkap, data dikirim ke server.
- Petugas memantau informasi melalui dashboard.
F. Hal yang Perlu Diperhatikan dalam Penggunaan IoT
Penggunaan perangkat yang terhubung ke jaringan juga memiliki risiko. Karena itu, sistem IoT perlu memperhatikan keamanan dan keandalan.
- Gunakan kata sandi yang kuat untuk jaringan dan perangkat.
- Jangan membagikan kata sandi Wi-Fi atau token akses kepada orang lain.
- Batasi akses ke dashboard dan server.
- Pastikan data yang dikirim tidak dimanfaatkan oleh pihak yang tidak berwenang.
- Periksa kondisi perangkat dan sensor secara berkala.
- Jangan menganggap data sensor selalu benar. Data perlu diperiksa apabila hasil pembacaannya tidak wajar.
G. Praktik Coding IoT: Membuat Sistem Monitoring Suhu dengan ESP32
Setelah memahami konsep dan komponen IoT, sekarang kita akan membuat sebuah proyek sederhana.
Proyek yang dibuat adalah Smart Room Temperature Monitoring System, yaitu sistem simulasi untuk membaca suhu dan kelembapan ruangan menggunakan sensor DHT22.
Sistem akan mengolah data suhu menggunakan algoritma. Jika suhu meningkat, LED akan menyala. Jika suhu terlalu tinggi, buzzer akan aktif.
Smart Room Temperature Monitoring System
Perangkat:- ESP32 DevKit
- Sensor DHT22
- LED
- Resistor 220 ohm
- Buzzer aktif
Wokwi Simulator dan Code Editor.
1. Di Mana Kita Melakukan Praktik Coding?
Kita akan menggunakan aplikasi bernama Wokwi. Wokwi merupakan simulator elektronik yang berjalan melalui browser. Artinya, siswa tidak harus membeli ESP32 atau sensor fisik untuk mencoba program awal.
Buka alamat berikut:
Wokwi digunakan untuk membuat rangkaian virtual, menulis kode, menjalankan simulasi, dan mengamati hasil program.
2. Mengenal Tempat Menulis Kode
Setelah membuat proyek ESP32, perhatikan bagian-bagian yang tersedia.
| Bagian | Fungsi |
|---|---|
| Code Editor | Tempat menulis dan mengedit kode program. |
| Circuit Diagram | Tempat menyusun komponen dan kabel virtual. |
| Start Simulation | Menjalankan simulasi perangkat dan kode. |
| Serial Monitor | Melihat informasi yang ditampilkan program. |
| Library Manager atau libraries.txt | Mengelola library tambahan yang dibutuhkan program. |
Kode program ditulis pada Code Editor, biasanya di file bernama sketch.ino. Bukan di Serial Monitor dan bukan di Circuit Diagram.
3. Cara Membuat Proyek ESP32 di Wokwi
- Buka browser pada laptop atau komputer.
- Kunjungi situs Wokwi.
- Pilih menu membuat proyek baru.
- Pilih template ESP32 atau ESP32 DevKit.
- Tunggu sampai editor proyek terbuka.
- Pastikan terdapat file sketch.ino.
- Kenali area Code Editor dan Circuit Diagram.
4. Mengenal Komponen Praktik
A. ESP32
ESP32 adalah mikrokontroler yang akan menjadi pusat pengolahan data. Perangkat ini menerima informasi dari sensor dan menjalankan kode yang kita buat.
B. DHT22
DHT22 merupakan sensor yang dapat membaca suhu dan kelembapan udara.
C. LED
LED digunakan sebagai indikator visual untuk menunjukkan kondisi suhu.
D. Buzzer
Buzzer digunakan sebagai indikator suara ketika suhu berada pada kondisi sangat panas.
5. Menambahkan Komponen pada Wokwi
Pada Circuit Diagram, tambahkan komponen berikut melalui fitur pencarian atau penambahan komponen:
- ESP32 DevKit.
- DHT22.
- LED.
- Resistor.
- Buzzer aktif.
6. Menghubungkan Komponen
Hubungan Sensor DHT22 dengan ESP32
| Pin DHT22 | Pin ESP32 |
|---|---|
| VCC | 3V3 |
| SDA / DATA | GPIO 15 |
| NC | Tidak dihubungkan |
| GND | GND |
Hubungan LED dengan ESP32
| Bagian LED | Hubungan |
|---|---|
| Anoda / kaki positif | GPIO 2 melalui resistor 220 ohm. |
| Katoda / kaki negatif | GND. |
Hubungan Buzzer dengan ESP32
| Bagian Buzzer | Hubungan |
|---|---|
| Positif (+) | GPIO 4. |
| Negatif (-) | GND. |
ESP32 menggunakan logika 3,3 volt. Jangan memberikan tegangan 5 volt langsung ke pin GPIO. LED harus menggunakan resistor pembatas arus. Untuk praktik dengan perangkat fisik, periksa kembali pin dan karakteristik board yang digunakan.
H. Belajar Dasar Coding Sebelum Membuat Program IoT
Sebelum membuat program lengkap, kita perlu memahami beberapa dasar pemrograman. Tujuannya agar kamu tidak hanya menyalin kode, tetapi memahami fungsi setiap perintah.
1. Mengenal Struktur Program Arduino
Program ESP32 pada praktik ini ditulis menggunakan bahasa C++ dengan struktur Arduino.
void setup() {
}
void loop() {
}
Penjelasan:
- void: menunjukkan fungsi yang tidak mengembalikan nilai.
- setup(): dijalankan satu kali ketika perangkat mulai aktif.
- loop(): dijalankan berulang kali selama perangkat aktif.
- { } menunjukkan awal dan akhir blok program.
setup() adalah tahap persiapan sebelum bekerja, sedangkan loop() adalah kegiatan utama yang terus dilakukan berulang kali.
2. Praktik Pertama: Menampilkan Tulisan
Kita akan mencoba program paling sederhana. Program ini hanya menampilkan tulisan pada Serial Monitor.
Tempat praktik: Wokwi, file sketch.ino.
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println("BELAJAR IoT KELAS XI");
delay(1000);
}
Penjelasan Setiap Kode
Serial.begin(115200); digunakan untuk memulai komunikasi serial antara ESP32 dan Serial Monitor. Angka 115200 adalah kecepatan komunikasi.
Serial.println("BELAJAR IoT KELAS XI"); digunakan untuk menampilkan tulisan pada Serial Monitor.
delay(1000); digunakan untuk memberikan jeda selama 1.000 milidetik atau satu detik.
Tanda titik koma (;) digunakan untuk mengakhiri instruksi tertentu dalam C++.
Cara Menjalankan
- Masukkan kode pada sketch.ino.
- Tekan Start Simulation.
- Buka Serial Monitor.
- Amati tulisan yang muncul.
BELAJAR IoT KELAS XI
BELAJAR IoT KELAS XI
BELAJAR IoT KELAS XI
Tulisan akan muncul berulang kali dengan jeda sekitar satu detik.
3. Praktik Kedua: Mengenal Variabel
Variabel adalah tempat untuk menyimpan data yang digunakan dalam program.
Contoh kode:
int suhu = 28;
float kelembapan = 65.5;
String status = "NORMAL";
Penjelasan
- int: tipe data untuk bilangan bulat.
- float: tipe data untuk angka desimal.
- String: tipe data untuk menyimpan teks.
- suhu: nama variabel untuk menyimpan suhu.
- =: operator penugasan untuk memberikan nilai kepada variabel.
Contohnya, int suhu = 28; berarti kita membuat variabel bernama suhu dan mengisinya dengan angka 28.
Praktik Menampilkan Variabel
int suhu = 28;
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.print("Suhu ruangan: ");
Serial.print(suhu);
Serial.println(" C");
delay(1000);
}
Penjelasan
- Serial.print() menampilkan informasi tanpa langsung berpindah ke baris berikutnya.
- Serial.println() menampilkan informasi kemudian berpindah ke baris berikutnya.
- suhu merupakan variabel yang menyimpan nilai 28.
Suhu ruangan: 28 C
Suhu ruangan: 28 C
Suhu ruangan: 28 C
Coba ubah angka 28 menjadi 35. Jalankan kembali program dan perhatikan perubahan hasilnya.
4. Praktik Ketiga: Mengenal Percabangan IF dan ELSE
IF dan ELSE digunakan untuk membuat keputusan berdasarkan kondisi tertentu.
Contohnya, sistem harus memeriksa apakah suhu lebih besar dari 30°C.
int suhu = 32;
void setup() {
Serial.begin(115200);
if (suhu > 30) {
Serial.println("KONDISI PANAS");
} else {
Serial.println("KONDISI NORMAL");
}
}
void loop() {
}
Penjelasan
- if (suhu > 30) memeriksa apakah suhu lebih besar dari 30.
- > berarti lebih besar dari.
- else dijalankan apabila kondisi IF tidak terpenuhi.
KONDISI PANAS
Karena nilai suhu adalah 32, kondisi lebih besar dari 30 terpenuhi.
Coba ubah nilai suhu menjadi 25. Hasil yang diharapkan adalah KONDISI NORMAL.
5. Praktik Keempat: Mengendalikan LED
Sekarang kita akan mencoba mengendalikan komponen output. LED akan menyala dan mati secara bergantian.
const int ledPin = 2;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Penjelasan Setiap Kode
- const int ledPin = 2; menentukan GPIO 2 sebagai pin LED.
- pinMode(ledPin, OUTPUT); mengatur pin sebagai output.
- digitalWrite(ledPin, HIGH); mengirimkan sinyal HIGH untuk menyalakan LED.
- digitalWrite(ledPin, LOW); mengirimkan sinyal LOW untuk mematikan LED.
- delay(1000); memberikan jeda satu detik.
LED menyala selama satu detik, kemudian mati selama satu detik. Proses tersebut berulang.
I. Praktik Kelima: Membaca Data Sensor DHT22
Setelah memahami dasar program, variabel, percabangan, dan output, sekarang kita akan membaca data dari sensor.
1. Apa Itu Library?
Library adalah kumpulan kode siap pakai yang membantu programmer menggunakan fungsi tertentu tanpa harus menulis seluruh kode dari awal.
Untuk membaca sensor DHT22, proyek ini menggunakan library DHTesp.
2. Menambahkan Library DHTesp di Wokwi
- Buka proyek ESP32 di Wokwi.
- Cari Library Manager atau file libraries.txt.
- Tambahkan library DHTesp.
- Pastikan library tersedia dalam proyek.
- Kembali ke sketch.ino.
Jika menggunakan file libraries.txt, isi file tersebut dengan:
DHTesp
Perlu diingat bahwa nama library ditulis pada libraries.txt, sedangkan kode program ditulis pada sketch.ino.
3. Kode Membaca Sensor DHT22
#include "DHTesp.h"
const int dhtPin = 15;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(dhtPin, DHTesp::DHT22);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.print("Suhu: ");
Serial.print(data.temperature);
Serial.println(" C");
Serial.print("Kelembapan: ");
Serial.print(data.humidity);
Serial.println(" %");
delay(2000);
}
4. Penjelasan Setiap Kode Sensor
A. Memanggil Library
#include "DHTesp.h"
Perintah include digunakan untuk memasukkan library DHTesp agar program dapat menggunakan fungsi yang berhubungan dengan sensor.
B. Menentukan Pin Sensor
const int dhtPin = 15;
Artinya, pin data sensor DHT22 akan dihubungkan ke GPIO 15 pada ESP32.
C. Membuat Objek Sensor
DHTesp dhtSensor;
Baris ini membuat objek bernama dhtSensor. Objek tersebut akan digunakan untuk mengakses fungsi dari library DHTesp.
D. Menyiapkan Sensor
dhtSensor.setup(dhtPin, DHTesp::DHT22);
Perintah ini mengatur sensor DHT22 agar menggunakan pin data yang sudah ditentukan, yaitu GPIO 15.
E. Membaca Data
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Perintah tersebut mengambil hasil pembacaan sensor. Hasil pembacaan disimpan dalam variabel data.
F. Mengambil Nilai Suhu
data.temperature
Digunakan untuk mengambil nilai suhu yang dibaca oleh sensor.
G. Mengambil Nilai Kelembapan
data.humidity
Digunakan untuk mengambil nilai kelembapan udara.
H. Jeda Pembacaan
delay(2000);
Program menunggu dua detik sebelum melakukan pembacaan sensor berikutnya.
5. Cara Menguji Sensor di Wokwi
- Pastikan sensor DHT22 sudah terpasang.
- Pastikan pin data sensor terhubung ke GPIO 15.
- Pastikan library DHTesp sudah ditambahkan.
- Masukkan kode pembacaan sensor.
- Tekan Start Simulation.
- Buka Serial Monitor.
- Klik komponen DHT22 pada diagram.
- Ubah nilai suhu atau kelembapan melalui pengaturan komponen.
- Amati perubahan informasi pada Serial Monitor.
Suhu: 28.00 C
Kelembapan: 60.00 %
Suhu: 28.00 C
Kelembapan: 60.00 %
Angka di atas hanya contoh. Hasil sebenarnya mengikuti nilai sensor yang sedang diatur pada simulasi.
Nilai suhu dan kelembapan berasal dari sensor DHT22 virtual pada Wokwi. Ini berbeda dengan potensiometer yang hanya menghasilkan input analog dan tidak benar-benar mengukur suhu.
J. Praktik Utama: Membuat Sistem Monitoring Suhu Ruangan
Sekarang kita akan menggabungkan seluruh materi yang sudah dipelajari menjadi satu program lengkap.
Sistem akan membaca suhu dan kelembapan, memeriksa kondisi suhu, menentukan status ruangan, kemudian mengendalikan LED dan buzzer.
1. Menentukan Aturan Sistem
| Kondisi Suhu | Status | LED | Buzzer |
|---|---|---|---|
| Di bawah 30°C | NORMAL | Mati | Mati |
| 30°C sampai 35°C | PANAS | Menyala | Mati |
| Di atas 35°C | SANGAT PANAS | Menyala | Aktif |
Aturan tersebut merupakan batas simulasi untuk pembelajaran. Batas operasional sebenarnya perlu disesuaikan dengan kebutuhan ruangan dan perangkat.
2. Memahami Algoritma Sebelum Coding
Sebelum menulis kode, kita dapat menyusun algoritma dalam bentuk langkah sederhana.
- Mulai program.
- Siapkan sensor dan output.
- Baca suhu dan kelembapan.
- Periksa apakah data sensor valid.
- Jika suhu lebih dari 35°C, tentukan status SANGAT PANAS.
- Jika suhu minimal 30°C dan tidak lebih dari 35°C, tentukan PANAS.
- Jika suhu kurang dari 30°C, tentukan NORMAL.
- Atur LED dan buzzer.
- Tampilkan informasi.
- Ulangi pembacaan.
3. Diagram Alur Program
4. Kode Program Lengkap
Sekarang buka file sketch.ino pada Wokwi. Hapus kode sebelumnya dan masukkan seluruh kode berikut.
#include "DHTesp.h"
// 1. MENENTUKAN PIN
const int dhtPin = 15;
const int ledPin = 2;
const int buzzerPin = 4;
// 2. MEMBUAT OBJEK SENSOR
DHTesp dhtSensor;
// 3. MENYIAPKAN VARIABEL
float suhu = 0;
float kelembapan = 0;
String status = "BELUM DIKETAHUI";
void setup() {
// Memulai komunikasi serial
Serial.begin(115200);
// Mengatur pin output
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
// Mengatur sensor DHT22
dhtSensor.setup(dhtPin, DHTesp::DHT22);
// Menampilkan informasi awal
Serial.println("================================");
Serial.println("SMART ROOM MONITORING SYSTEM");
Serial.println("KKA KELAS XI");
Serial.println("================================");
}
void loop() {
// 4. INPUT: MEMBACA DATA SENSOR
TempAndHumidity data = dhtSensor.getTempAndHumidity();
suhu = data.temperature;
kelembapan = data.humidity;
// 5. MEMERIKSA VALIDITAS DATA
if (isnan(suhu) || isnan(kelembapan)) {
Serial.println("ERROR: DATA SENSOR TIDAK TERBACA");
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
delay(2000);
return;
}
// 6. PROCESS: MENENTUKAN KONDISI SUHU
if (suhu > 35) {
status = "SANGAT PANAS";
digitalWrite(ledPin, HIGH);
digitalWrite(buzzerPin, HIGH);
} else if (suhu >= 30) {
status = "PANAS";
digitalWrite(ledPin, HIGH);
digitalWrite(buzzerPin, LOW);
} else {
status = "NORMAL";
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
}
// 7. OUTPUT: MENAMPILKAN DATA
Serial.println();
Serial.println("HASIL PEMANTAUAN RUANGAN");
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.println(" C");
Serial.print("Kelembapan: ");
Serial.print(kelembapan);
Serial.println(" %");
Serial.print("Status: ");
Serial.println(status);
Serial.print("LED: ");
if (suhu >= 30) {
Serial.println("MENYALA");
} else {
Serial.println("MATI");
}
Serial.print("BUZZER: ");
if (suhu > 35) {
Serial.println("AKTIF");
} else {
Serial.println("NONAKTIF");
}
Serial.println("--------------------------------");
// 8. JEDA SEBELUM PEMBACAAN BERIKUTNYA
delay(2000);
}
5. Penjelasan Lengkap Setiap Bagian Kode
A. Memanggil Library
#include "DHTesp.h"
Kode tersebut memanggil library DHTesp. Library diperlukan agar program dapat membaca data dari sensor DHT22 menggunakan fungsi yang sudah disediakan.
B. Menentukan Pin Perangkat
const int dhtPin = 15;
const int ledPin = 2;
const int buzzerPin = 4;
Ketiga baris tersebut menentukan pin yang digunakan oleh masing-masing komponen.
- GPIO 15 digunakan untuk data sensor DHT22.
- GPIO 2 digunakan untuk LED.
- GPIO 4 digunakan untuk buzzer.
C. Membuat Objek Sensor
DHTesp dhtSensor;
Baris ini membuat objek bernama dhtSensor. Objek tersebut digunakan untuk menjalankan fungsi yang tersedia dalam library DHTesp.
D. Menyiapkan Variabel
float suhu = 0;
float kelembapan = 0;
String status = "BELUM DIKETAHUI";
Variabel suhu menyimpan hasil pengukuran suhu. Variabel kelembapan menyimpan hasil pengukuran kelembapan. Variabel status menyimpan keterangan kondisi ruangan.
E. Fungsi setup()
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
dhtSensor.setup(dhtPin, DHTesp::DHT22);
}
Fungsi setup() dijalankan satu kali ketika ESP32 mulai aktif.
- Serial.begin(115200) memulai komunikasi serial.
- pinMode(ledPin, OUTPUT) mengatur LED sebagai output.
- pinMode(buzzerPin, OUTPUT) mengatur buzzer sebagai output.
- dhtSensor.setup() menyiapkan sensor DHT22.
F. Fungsi loop()
void loop() {
}
Fungsi loop() menjalankan proses utama secara berulang. Karena itu, sistem dapat membaca suhu dan kelembapan berkali-kali.
G. Membaca Data Sensor
TempAndHumidity data = dhtSensor.getTempAndHumidity();
suhu = data.temperature;
kelembapan = data.humidity;
Baris pertama mengambil data dari sensor. Hasil pembacaan disimpan pada variabel data.
Selanjutnya, data.temperature digunakan untuk mengambil nilai suhu, sedangkan data.humidity digunakan untuk mengambil nilai kelembapan.
H. Memeriksa Validitas Data
if (isnan(suhu) || isnan(kelembapan)) {
Serial.println("ERROR: DATA SENSOR TIDAK TERBACA");
digitalWrite(ledPin, LOW);
digitalWrite(buzzerPin, LOW);
delay(2000);
return;
}
Bagian ini memeriksa apakah data yang diterima merupakan angka yang valid.
- isnan() digunakan untuk memeriksa nilai yang bukan angka.
- || berarti ATAU.
- Jika data tidak valid, sistem menampilkan pesan kesalahan.
- LED dan buzzer dimatikan.
- return menghentikan proses loop saat itu.
I. Menentukan Status Suhu
if (suhu > 35) {
status = "SANGAT PANAS";
} else if (suhu >= 30) {
status = "PANAS";
} else {
status = "NORMAL";
}
Bagian ini merupakan inti pengambilan keputusan.
- Jika suhu lebih dari 35, status SANGAT PANAS.
- Jika suhu minimal 30 dan tidak lebih dari 35, status PANAS.
- Jika suhu kurang dari 30, status NORMAL.
Urutan pemeriksaan penting. Program memeriksa suhu lebih dari 35 terlebih dahulu agar kondisi sangat panas tidak salah dikategorikan.
J. Mengendalikan LED dan Buzzer
digitalWrite(ledPin, HIGH);
digitalWrite(buzzerPin, HIGH);
digitalWrite() digunakan untuk mengirimkan sinyal digital ke pin output.
- HIGH mengaktifkan output.
- LOW menonaktifkan output.
Pada proyek ini, LED menyala ketika suhu minimal 30°C. Buzzer aktif ketika suhu lebih dari 35°C.
K. Menampilkan Informasi
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.println(" C");
Perintah tersebut menampilkan nilai suhu pada Serial Monitor. Program juga menampilkan kelembapan, status ruangan, LED, dan buzzer.
L. Mengulang Pembacaan
delay(2000);
Program memberikan jeda dua detik sebelum melakukan pembacaan sensor berikutnya.
6. Cara Menjalankan Program Lengkap
- Buka proyek ESP32 di Wokwi.
- Pastikan DHT22 terhubung ke GPIO 15.
- Pastikan LED terhubung ke GPIO 2 melalui resistor.
- Pastikan buzzer terhubung ke GPIO 4.
- Pastikan library DHTesp sudah ditambahkan.
- Buka file sketch.ino.
- Masukkan seluruh kode program lengkap.
- Tekan Start Simulation.
- Buka Serial Monitor.
- Klik sensor DHT22 untuk mengubah nilai suhu.
- Amati perubahan status dan output.
7. Contoh Hasil Pengujian
| Suhu | Status | LED | Buzzer |
|---|---|---|---|
| 25°C | NORMAL | MATI | MATI |
| 29°C | NORMAL | MATI | MATI |
| 30°C | PANAS | MENYALA | MATI |
| 32°C | PANAS | MENYALA | MATI |
| 35°C | PANAS | MENYALA | MATI |
| 36°C | SANGAT PANAS | MENYALA | AKTIF |
| 40°C | SANGAT PANAS | MENYALA | AKTIF |
8. Contoh Tampilan Serial Monitor
Ketika suhu berada pada 32°C dan kelembapan 60%, contoh informasi yang diharapkan adalah:
================================
SMART ROOM MONITORING SYSTEM
KKA KELAS XI
================================
HASIL PEMANTAUAN RUANGAN
Suhu: 32.00 C
Kelembapan: 60.00 %
Status: PANAS
LED: MENYALA
BUZZER: NONAKTIF
--------------------------------
Angka suhu dan kelembapan dapat berbeda sesuai nilai yang diatur pada sensor virtual.
K. Apakah Program Ini Sudah Menjadi IoT yang Terhubung Internet?
Proyek yang telah dibuat sudah mempraktikkan dasar sistem berbasis IoT, yaitu pembacaan sensor, pengolahan data, pengambilan keputusan, dan pengendalian output.
Namun, versi program saat ini masih merupakan sistem monitoring lokal. Data ditampilkan melalui Serial Monitor dan belum dikirim ke server atau dashboard melalui Internet.
Agar dapat dipantau dari smartphone atau laptop lain, sistem dapat dikembangkan dengan menambahkan koneksi Wi-Fi dan layanan penerima data.
Contoh Pengembangan Sistem
Pada tahap lanjutan, ESP32 dapat diatur agar mengirimkan data sensor melalui Wi-Fi ke server. Server kemudian menyimpan data dan menyediakan informasi untuk dashboard.
Dengan sistem tersebut, petugas dapat melihat suhu ruangan dari perangkat lain tanpa harus berada di dekat ESP32.
Jangan menyamakan tampilan Serial Monitor dengan dashboard Internet. Serial Monitor hanya menampilkan informasi secara lokal. Pengiriman data ke server membutuhkan program jaringan dan layanan penerima data.
L. Kesalahan yang Sering Terjadi Saat Praktik Coding IoT
| Masalah | Penyebab yang Mungkin | Solusi |
|---|---|---|
| Program tidak dapat dijalankan. | Kesalahan penulisan kode atau library belum tersedia. | Periksa kode dan pastikan DHTesp sudah ditambahkan. |
| Sensor tidak terbaca. | Pin data salah atau sensor belum dikonfigurasi. | Periksa GPIO 15 dan konfigurasi DHT22. |
| LED tidak menyala. | Pin atau sambungan LED tidak sesuai. | Periksa GPIO 2, resistor, dan GND. |
| Buzzer tidak aktif. | Sambungan atau jenis buzzer tidak sesuai. | Periksa GPIO 4, polaritas, dan jenis buzzer. |
| Serial Monitor kosong. | Simulasi belum berjalan atau komunikasi serial belum dimulai. | Periksa Serial.begin(115200) dan jalankan simulasi. |
M. Tugas Praktik dan Aktivitas Siswa
Setelah mempelajari materi dan mencoba program, kerjakan aktivitas berikut. Tugas dirancang agar kamu benar-benar memahami proses pembuatan sistem, bukan hanya menyalin kode.
Tugas 1: Mengenal Aplikasi Wokwi
- Buka situs Wokwi.
- Buat proyek ESP32.
- Tunjukkan bagian Code Editor.
- Tunjukkan bagian Circuit Diagram.
- Tunjukkan Serial Monitor.
- Jelaskan fungsi setiap bagian.
Tugas 2: Praktik Coding Dasar
- Buat program untuk menampilkan nama kelompok.
- Buat variabel bernama suhu.
- Isi variabel suhu dengan angka 28.
- Tampilkan nilai suhu pada Serial Monitor.
- Ubah nilai suhu menjadi 35.
- Catat perbedaan hasilnya.
Tugas 3: Praktik Membaca Sensor
- Tambahkan sensor DHT22 pada proyek.
- Hubungkan sensor ke ESP32.
- Tambahkan library DHTesp.
- Masukkan program pembacaan sensor.
- Jalankan simulasi.
- Catat hasil suhu dan kelembapan.
Tugas 4: Memodifikasi Algoritma
Ubah program sehingga memiliki tiga kondisi berikut:
| Suhu | Status |
|---|---|
| Di bawah 28°C | DINGIN |
| 28°C sampai 33°C | NORMAL |
| Di atas 33°C | PANAS |
Tampilkan status tersebut pada Serial Monitor. Pastikan kondisi batas suhu tidak saling tumpang tindih.
Tugas 5: Analisis Alur Data
- Dari mana data suhu berasal?
- Komponen apa yang menerima data sensor?
- Di bagian mana data diolah?
- Bagaimana program menentukan status ruangan?
- Perangkat apa yang menjadi output?
- Apakah program sudah mengirim data ke server?
- Apa yang harus ditambahkan agar data dapat dipantau melalui Internet?
Tugas 6: Studi Kasus Dunia Kerja
Sebuah perusahaan memiliki gudang penyimpanan barang. Petugas ingin mengetahui kondisi suhu dan kelembapan gudang agar dapat melakukan pemantauan secara berkala.
Buat rancangan sederhana sistem IoT untuk membantu perusahaan tersebut.
Rancangan harus memuat:
- Nama sistem yang dibuat.
- Masalah yang ingin diselesaikan.
- Sensor yang diperlukan.
- Mikrokontroler yang digunakan.
- Alur data sistem.
- Output atau tindakan yang dihasilkan.
- Manfaat sistem bagi perusahaan.
N. Pertanyaan Pemahaman Materi
- Apa yang dimaksud dengan Internet of Things?
- Apa fungsi sensor dalam sistem IoT?
- Apa fungsi mikrokontroler ESP32?
- Apa perbedaan input dan output?
- Apa fungsi sensor DHT22?
- Apa fungsi Serial Monitor?
- Apa kegunaan variabel dalam program?
- Apa perbedaan setup() dan loop()?
- Apa fungsi IF dan ELSE?
- Apa kegunaan digitalWrite()?
- Bagaimana alur data dari sensor sampai output?
- Mengapa data sensor perlu diperiksa validitasnya?
- Apa perbedaan monitoring lokal dan monitoring melalui Internet?
- Bagaimana IoT dapat membantu pekerjaan manusia?
O. Contoh Jawaban dan Pembahasan
Berikut contoh jawaban sebagai bahan pemeriksaan dan pembelajaran mandiri.
1. Apa yang dimaksud dengan IoT?
IoT adalah konsep teknologi yang menghubungkan perangkat fisik dengan jaringan sehingga perangkat dapat mengumpulkan, mengirimkan, dan bertukar data.
2. Apa fungsi sensor?
Sensor digunakan untuk membaca atau mendeteksi kondisi lingkungan, kemudian menghasilkan data yang dapat diproses oleh sistem.
3. Apa fungsi ESP32?
ESP32 berfungsi sebagai mikrokontroler yang menerima data sensor, menjalankan program, mengolah informasi, dan mengendalikan output.
4. Apa fungsi DHT22?
DHT22 digunakan untuk membaca suhu dan kelembapan udara.
5. Apa fungsi Serial Monitor?
Serial Monitor digunakan untuk menampilkan informasi yang dikirimkan program melalui komunikasi serial.
6. Apa fungsi IF dan ELSE?
IF dan ELSE digunakan untuk membuat keputusan berdasarkan kondisi tertentu.
7. Bagaimana alur data pada proyek?
Sensor DHT22 membaca suhu dan kelembapan, ESP32 menerima data, program mengolah informasi, algoritma menentukan status, kemudian LED dan buzzer memberikan respons.
8. Apakah program sudah mengirim data ke server?
Belum. Program utama masih menampilkan data melalui Serial Monitor. Untuk mengirim data ke server, diperlukan tambahan program komunikasi jaringan dan layanan penerima data.
P. Rangkuman Pembelajaran
Internet of Things merupakan teknologi yang memungkinkan perangkat fisik mengumpulkan, mengolah, dan bertukar data melalui jaringan.
Sebuah sistem IoT dapat melibatkan sensor, mikrokontroler, aktuator, jaringan komunikasi, server, dan dashboard.
Dalam praktik ini, ESP32 digunakan sebagai mikrokontroler, DHT22 sebagai sensor suhu dan kelembapan, sedangkan LED dan buzzer digunakan sebagai output.
Siswa juga telah mempelajari dasar coding, mulai dari struktur program, variabel, Serial Monitor, percabangan IF dan ELSE, hingga membaca data sensor dan mengendalikan perangkat.
Hal terpenting dalam praktik IoT adalah memahami bagaimana data diperoleh, diterima, diolah, digunakan untuk mengambil keputusan, dan menghasilkan tindakan.
- Memahami konsep dasar IoT.
- Mengenali komponen penyusun IoT.
- Memahami alur data.
- Menggunakan aplikasi Wokwi.
- Mengenal ESP32 dan sensor DHT22.
- Menulis kode dasar menggunakan C++ Arduino.
- Membaca data sensor.
- Menerapkan algoritma IF dan ELSE.
- Mengendalikan LED dan buzzer.
- Menganalisis hasil simulasi.
Q. Penutup: Dari Belajar Coding Menjadi Pemecah Masalah
Mempelajari IoT bukan hanya tentang mengenal perangkat elektronik atau menulis kode program. Lebih dari itu, kamu sedang belajar bagaimana teknologi dapat digunakan untuk menyelesaikan masalah nyata.
Ketika membuat sistem monitoring suhu, kamu belajar menghubungkan sensor dengan mikrokontroler, mengolah data menggunakan algoritma, dan menghasilkan respons berdasarkan kondisi tertentu.
Kemampuan tersebut dapat menjadi dasar untuk mengembangkan proyek yang lebih kompleks, seperti smart farming, smart home, pemantauan mesin industri, sistem keamanan, dan berbagai solusi digital lainnya.
Mulailah dari memahami dasar, mencoba program sederhana, menemukan kesalahan, memperbaikinya, kemudian mengembangkan sistem secara bertahap.
Programmer yang baik bukan hanya mampu menulis kode, tetapi juga mampu memahami masalah dan membuat teknologi yang memberikan manfaat.

0 Comments