Internet of Things (IoT)

Semakin populer beberapa tahun terakhir, terutama karena banyak perangkat pintar di sekitar kita yang berbasis mikro-kontroler seperti ESP32, ESP8266, Arduino, dan lain-lain.
Bagi kamu yang baru mulai belajar, ESP32 adalah pilihan yang sangat tepat. Modul ini sudah punya WiFi + Bluetooth, performanya jauh lebih cepat dibanding Arduino, dan harganya tetap terjangkau.

Pada artikel ini, kita akan belajar 3 proyek IoT paling dasar yang wajib dicoba oleh pemula:

  1. Membaca suhu & kelembaban menggunakan DHT11/DHT22
  2. LED blinking

Semua proyek ini bisa dijadikan fondasi sebelum masuk ke IoT yang lebih kompleks seperti mengirim data ke database, menyambungkan ke Firebase, MQTT, atau dashboard.

Apa Itu ESP32?

ESP32 adalah mikrokontroler murah namun sangat powerful. Keunggulannya:

  • WiFi 2.4 GHz
  • Bluetooth & BLE
  • Banyak pin GPIO
  • Bisa diprogram pakai Arduino IDE
  • Sangat cocok untuk IoT

1. Menghubungkan Sensor Suhu & Kelembaban DHT11 / DHT22

DHT adalah sensor sederhana yang bisa membaca suhu dan kelembaban sekaligus.
DHT11 lebih murah tapi kurang akurat; DHT22 lebih sensitif dan lebih baik untuk proyek serius.

Wiring DHT11/DHT22 ke ESP32
DHT ESP32
VCC 3.3V
GND GND
Data GPIO 4 (atau pin bebas)
Kode ESP32 untuk DHT11 / DHT22
#include <DHT.h>

#define DHTPIN 4 // Pin data sensor
#define DHTTYPE DHT22 // Ganti ke DHT11 jika pakai DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(115200);
dht.begin();
}

void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();

Serial.print("Suhu: ");
Serial.print(temperature);
Serial.print("°C | Kelembaban: ");
Serial.print(humidity);
Serial.println("%");

delay(1000);
}

2. LED Blinking

Sebelum mempelajari sensor-sensor lain, semua pemula wajib memulai dengan LED blinking.
Ini melatih kita mengenal digitalWrite, pinMode, dan delay.

Wiring LED ke ESP32
  • Kaki panjang = anoda → GPIO 2
  • Kaki pendek = katoda → GND
  • Tambahkan resistor 220 ohm
Kode LED Blinking
int ledPin = 2;

void setup() {
pinMode(ledPin, OUTPUT);
}

void loop() {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}