Tutorial IoT: Kontrol Lampu Jarak Jauh Menggunakan ESP32 & Blynk

• Tutorial IoT · Blynk + ESP32

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.

// arsitektur komunikasi blynk
📱
Blynk App
Smartphone
Blynk Cloud
blynk.cloud
ESP32
Di rumah Anda
💡
Relay + Lampu
Perangkat fisik
💡 Keunggulan utama Blynk: Bisa diakses dari jaringan mana pun (WiFi kantor, data seluler, WiFi kafe) selama smartphone dan ESP32 terhubung ke internet. Ini yang membedakannya dari pendekatan web server lokal.

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.

// pemetaan virtual pin dalam proyek ini
V0
Button Widget
Tombol ON/OFF lampu utama
V1
Slider Widget
Kecerahan (0–255) via PWM
V2
Value Display
Status lampu (ON/OFF)
V3
Timer Widget
Jadwal otomatis nyala/mati

Berikut adalah gambaran tampilan aplikasi Blynk di smartphone Anda setelah proyek selesai dikonfigurasi:

Smart Lamp
● ONLINE
Lampu Ruang Tamu · V0
ON
OFF
Kecerahan · V1
178
Status · V2
MENYALA

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.

ESP32 Dev Board
1 buah · ~Rp 55.000
🔌
Modul Relay 5V
1 buah · ~Rp 12.000
💡
Lampu AC 220V
1 buah
🔋
Adaptor 5V/1A
1 buah · ~Rp 20.000
🧩
Kabel Jumper
Secukupnya · ~Rp 10.000
📱
Smartphone
Android / iOS

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.

01
Buat akun Blynk gratis

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).

02
Buat Template baru

Di dashboard Blynk, klik + New Template. Isi nama (misal: “Smart Lamp”), pilih hardware “ESP32”, dan koneksi “WiFi”. Klik Save.

03
Tambahkan Datastream

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.

04
Buat Device dari Template

Klik + New Device → From Template. Pilih template yang baru dibuat. Setelah itu, Blynk akan menampilkan BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKENsalin dan simpan ketiga nilai ini, karena akan dimasukkan ke dalam kode ESP32.

05
Install aplikasi Blynk di smartphone

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.

⚠️ Perhatian: Pastikan Anda menggunakan Blynk IoT (versi baru) — bukan Blynk Classic / Blynk Legacy yang sudah tidak lagi didukung. Library yang digunakan di kode bawah ini adalah 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
⚠️ Keselamatan Listrik: Tegangan AC 220V sangat berbahaya. Pastikan kabel fase dan netral sudah dalam kondisi terlepas dari sumber listrik saat Anda merangkai komponen. Gunakan selongsong heat-shrink atau isolasi yang baik pada setiap sambungan kabel AC.

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.

esp32_blynk_lamp.ino Arduino / C++
// ====================================================
// 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)
}
Cara Upload: Pilih board 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:

snippet — notifikasi push Arduino / C++
// 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

Apakah Blynk gratis untuk selamanya? +
Blynk menyediakan paket Free yang sudah mencukupi untuk proyek ini — termasuk hingga 5 device, beberapa widget dasar, dan automasi terbatas. Jika Anda ingin fitur lebih canggih seperti dashboard web, histori data, atau lebih banyak device, tersedia paket berbayar mulai dari beberapa dolar per bulan.
ESP32 bisa dikontrol jika WiFi rumah mati? +
Tidak. Jika WiFi rumah mati, ESP32 tidak bisa terhubung ke Blynk Cloud sehingga tidak bisa menerima perintah dari luar. Sebagai solusinya, Anda bisa menambahkan tombol fisik manual yang langsung terhubung ke relay sebagai fallback.
Bagaimana jika ESP32 reboot atau listrik mati? +
Karena ada fungsi 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.
Bisakah dikontrol oleh lebih dari satu pengguna? +
Ya! Di Blynk Anda bisa menambahkan anggota ke dalam organisasi (Organization Members), sehingga pasangan atau anggota keluarga lain bisa mengontrol lampu yang sama dari smartphone mereka masing-masing.
Apakah bisa diintegrasikan dengan Google Assistant? +
Blynk sendiri belum memiliki integrasi langsung dengan Google Assistant. Namun Anda bisa menggunakan layanan IFTTT sebagai perantara: buat Applet di IFTTT yang menghubungkan Google Assistant dengan Blynk Webhook, sehingga perintah suara seperti “Ok Google, nyalakan lampu” akan meneruskan sinyal ke Blynk dan akhirnya ke ESP32 Anda.
#ESP32 #Blynk #IoT #SmartHome #Arduino #OtomatisasiRumah #KontrolLampuJarakJauh #WiFi #BlynkIoT

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *