Tutorial IoT: Kontrol Lampu Jarak Jauh Menggunakan ESP32 & Blynk
Kendalikan lampu rumah Anda dari mana saja di dunia hanya dengan smartphone — tanpa perlu konfigurasi jaringan rumit, berkat platform Blynk IoT.
Pada tutorial sebelumnya kita sudah belajar mengontrol lampu menggunakan web server bawaan ESP32 — yang hanya bisa diakses di dalam jaringan WiFi yang sama. Kali ini kita naik level: menggunakan Blynk, sebuah platform IoT cloud yang memungkinkan Anda mengontrol lampu dari mana saja di dunia, bahkan menggunakan data seluler.
Blynk menyediakan aplikasi mobile (Android & iOS) dengan tampilan drag-and-drop yang intuitif. Anda tidak perlu membangun antarmuka sendiri dari nol — cukup seret tombol ke kanvas, tentukan pin virtual, dan sistem siap digunakan.
01 Mengapa Blynk Lebih Mudah?
Berbeda dengan pendekatan web server yang mengharuskan ESP32 dan smartphone berada di jaringan yang sama (WiFi rumah), Blynk menggunakan arsitektur cloud relay. Artinya, ESP32 di rumah Anda dan smartphone Anda tidak perlu terhubung langsung — keduanya cukup terhubung ke internet, dan Blynk yang menghubungkan keduanya.
02 Cara Kerja Sistem
Konsep kunci di Blynk adalah Virtual Pin (V-Pin). Virtual pin adalah “saluran komunikasi” antara aplikasi dan ESP32 yang tidak terikat dengan pin fisik manapun. Saat Anda menekan tombol di aplikasi Blynk, nilai pada Virtual Pin berubah (misalnya dari 0 ke 1), ESP32 membaca perubahan ini dan mengontrol pin fisik relay sesuai nilai tersebut.
Berikut adalah gambaran tampilan aplikasi Blynk di smartphone Anda setelah proyek selesai dikonfigurasi:
03 Komponen yang Dibutuhkan
Komponen yang digunakan hampir sama dengan tutorial sebelumnya. Satu-satunya tambahan adalah koneksi internet (WiFi rumah), karena Blynk membutuhkan akses cloud untuk berfungsi.
04 Setup Akun & Proyek Blynk
Sebelum menyentuh kabel dan solder, Anda perlu menyiapkan sisi software terlebih dahulu. Langkah ini dilakukan sepenuhnya melalui browser dan smartphone.
Kunjungi blynk.cloud dan daftar akun baru menggunakan email Anda. Blynk menyediakan paket Free yang sudah cukup untuk proyek ini (mendukung hingga 5 device dan beberapa widget dasar).
Di dashboard Blynk, klik + New Template. Isi nama (misal: “Smart Lamp”), pilih hardware “ESP32”, dan koneksi “WiFi”. Klik Save.
Buka tab Datastreams dalam template, klik + New Datastream → Virtual Pin. Buat V0 (Integer, 0–1) untuk tombol, V1 (Integer, 0–255) untuk slider kecerahan, dan V2 (String) untuk tampilan status.
Klik + New Device → From Template. Pilih template yang baru dibuat. Setelah itu, Blynk akan menampilkan BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN — salin dan simpan ketiga nilai ini, karena akan dimasukkan ke dalam kode ESP32.
Unduh aplikasi “Blynk IoT” (bukan Blynk Legacy) dari Play Store atau App Store. Login menggunakan akun yang sama, buka device yang baru dibuat, lalu atur tampilan dashboard sesuai selera dengan menambahkan widget Button, Slider, dan Value Display.
BlynkSimpleEsp32.h dari Blynk Library versi 1.0.0 ke atas.
05 Rangkaian Hardware
Koneksi hardware antara ESP32 dan modul relay sangat sederhana. Modul relay bertindak sebagai “saklar elektronik” yang dikontrol oleh sinyal 3.3V dari ESP32 untuk mengalihkan arus listrik AC 220V ke lampu.
| Pin ESP32 | Terhubung ke | Keterangan |
|---|---|---|
| GPIO 26 | IN (Relay) | Sinyal kontrol relay (LOW = aktif) |
| VIN / 5V | VCC (Relay) | Tegangan suplai modul relay |
| GND | GND (Relay) | Ground bersama |
| COM (Relay) | Kabel fase 220V masuk | Terminal common relay |
| NO (Relay) | Kabel fase ke lampu | Normally Open — arus mengalir saat relay aktif |
06 Kode Program Lengkap
Sebelum mengupload kode, pastikan Anda sudah menginstal library Blynk melalui Library Manager di Arduino IDE (cari “Blynk” by Volodymyr Shymanskyy, instal versi terbaru). Ganti nilai BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, BLYNK_AUTH_TOKEN, serta SSID dan password WiFi Anda.
// ==================================================== // Kontrol Lampu ESP32 + Blynk IoT // Ganti nilai di bawah ini sesuai akun Blynk Anda // ==================================================== #define BLYNK_TEMPLATE_ID "TMPLxxxxxxxx" #define BLYNK_TEMPLATE_NAME "Smart Lamp" #define BLYNK_AUTH_TOKEN "YourAuthTokenHere" #include <WiFi.h> #include <BlynkSimpleEsp32.h> // ---- Kredensial WiFi ---- const char* ssid = "NAMA_WIFI_ANDA"; const char* password = "PASSWORD_WIFI"; // ---- Pin GPIO ---- const int RELAY_PIN = 26; // Pin kontrol relay const int PWM_PIN = 25; // Pin PWM untuk dimmer (opsional) // ---- Status lampu ---- bool lampState = false; int brightness = 255; // ------------------------------------------------ // Virtual Pin V0: Tombol ON/OFF // Tipe: Button (mode SWITCH, 0=OFF, 1=ON) // ------------------------------------------------ BLYNK_WRITE(V0) { int value = param.asInt(); // 1 = tekan, 0 = lepas if (value == 1) { lampState = true; digitalWrite(RELAY_PIN, LOW); // Aktifkan relay (active-low) Blynk.virtualWrite(V2, "MENYALA"); // Update status di app Serial.println("[Blynk] Lampu: MENYALA"); } else { lampState = false; digitalWrite(RELAY_PIN, HIGH); // Nonaktifkan relay Blynk.virtualWrite(V2, "MATI"); Serial.println("[Blynk] Lampu: MATI"); } } // ------------------------------------------------ // Virtual Pin V1: Slider Kecerahan (0–255) // Hanya aktif jika lampu sedang menyala // ------------------------------------------------ BLYNK_WRITE(V1) { brightness = param.asInt(); if (lampState) { // Tulis nilai PWM (0–255) ke pin dimmer analogWrite(PWM_PIN, brightness); Serial.print("[Blynk] Kecerahan: "); Serial.println(brightness); } } // ------------------------------------------------ // Callback saat koneksi Blynk berhasil/ulang // ------------------------------------------------ BLYNK_CONNECTED() { // Sinkronisasi status dari server saat reconnect Blynk.syncVirtual(V0); Blynk.syncVirtual(V1); Serial.println("[Blynk] Terhubung ke server!"); } // ------------------------------------------------ // Setup awal // ------------------------------------------------ void setup() { Serial.begin(115200); // Inisialisasi pin pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, HIGH); // Mulai dalam kondisi MATI ledcSetup(0, 5000, 8); // Channel 0, freq 5kHz, resolusi 8-bit ledcAttachPin(PWM_PIN, 0); // Pasang pin PWM ke channel 0 // Hubungkan ke Blynk (WiFi + cloud sekaligus) Blynk.begin(BLYNK_AUTH_TOKEN, ssid, password); Serial.println("[Setup] ESP32 siap!"); } // ------------------------------------------------ // Loop utama // ------------------------------------------------ void loop() { Blynk.run(); // Jalankan loop Blynk (wajib ada) }
ESP32 Dev Module di Arduino IDE, pilih port COM yang sesuai, lalu klik Upload. Setelah upload selesai, buka Serial Monitor (baud 115200) untuk memantau koneksi. Jika berhasil, Anda akan melihat pesan “Terhubung ke server!” dan status device di aplikasi Blynk berubah menjadi Online.
07 Fitur Lanjutan: Timer & Automasi
Salah satu keunggulan Blynk adalah widget Automation yang memungkinkan Anda menjadwalkan lampu menyala dan mati secara otomatis tanpa perlu mengubah kode sama sekali — semuanya dikonfigurasi langsung dari aplikasi.
Membuat Jadwal Otomatis
Buka aplikasi Blynk → Menu → Automation → klik +. Atur kondisi “When time is 18:00 every weekday” dan aksi “Set V0 to 1”. Tambahkan automasi kedua untuk mematikan lampu pada pukul 23:00. Tidak ada perubahan kode yang diperlukan — ESP32 akan menerima perintah dari server Blynk secara otomatis.
Notifikasi Push
Tambahkan baris berikut di dalam fungsi BLYNK_WRITE(V0) untuk mengirim notifikasi push ke smartphone saat status lampu berubah:
// Tambahkan di dalam BLYNK_WRITE(V0): if (value == 1) { Blynk.logEvent("lamp_on", "Lampu dinyalakan!"); } else { Blynk.logEvent("lamp_off", "Lampu dimatikan."); } // Catatan: Buat Event "lamp_on" dan "lamp_off" // di menu Events pada Template Blynk Anda.
08 FAQ — Pertanyaan Umum
BLYNK_CONNECTED() dengan Blynk.syncVirtual() di dalam kode, setiap kali ESP32 terhubung kembali ke Blynk (setelah reboot atau koneksi putus), ia akan otomatis meminta status terbaru dari server dan memulihkan kondisi lampu sesuai yang terakhir disimpan.





Users Today : 125
Users Yesterday : 48
This Month : 1149
This Year : 9516
Total Users : 152273
Views Today : 203
Total views : 428532