1. Apa Itu Blynk?
Blynk adalah platform IoT as-a-service yang dirancang untuk memudahkan pengembangan aplikasi mobile yang terhubung dengan perangkat keras seperti ESP32, Arduino, Raspberry Pi, dan berbagai mikrokontroler lainnya. Dengan Blynk, kamu bisa membuat dashboard mobile untuk monitoring sensor dan mengontrol perangkat dari jarak jauh tanpa perlu membangun infrastruktur server sendiri.
Platform ini menyediakan solusi end-to-end: mulai dari firmware library untuk mikrokontroler, cloud server yang menangani komunikasi, hingga mobile app builder dengan drag-and-drop widget. Artinya, kamu bisa fokus pada logika perangkat keras tanpa perlu khawatir soal networking stack atau backend server.
Blynk awalnya diluncurkan pada tahun 2015 dan telah digunakan oleh jutaan developer di seluruh dunia. Platform ini tersedia dalam versi gratis (Free Plan) dan berbayar (Essential, Professional, Enterprise) dengan fitur yang semakin lengkap.
Fitur Utama Blynk
| Fitur | Deskripsi |
|---|---|
| Blynk.Cloud | Cloud server yang menghubungkan perangkat ke aplikasi mobile dan web |
| Blynk.App (Mobile) | Builder drag-and-drop untuk membuat dashboard IoT di iOS & Android |
| Blynk.Console | Panel web untuk manajemen perangkat, template, dan analytics |
| Blynk Library | Library Arduino yang mendukung ESP32, ESP8266, Arduino, dan board lainnya |
| Automations | Rule engine bawaan untuk membuat otomasi berdasarkan kondisi sensor |
| Over-The-Air (OTA) | Update firmware perangkat dari jarak jauh tanpa kabel USB |
Free Plan vs Paid Plan
Blynk menyediakan beberapa tier langganan. Berikut perbandingannya:
| Fitur | Free | Essential | Professional |
|---|---|---|---|
| Jumlah Perangkat | 3 | 50 | Unlimited |
| Datastream Rate | 10 data/detik | 100 data/detik | 1000 data/detik |
| Template | 2 template | Unlimited | Unlimited |
| Web Dashboard | Ya (terbatas) | Ya (lengkap) | Ya (lengkap + custom) |
| Automations | 2 automations | 10 automations | Unlimited |
| OTA Update | β | Ya | Ya |
| Event Logging | 1 jam terakhir | 7 hari | 90 hari |
Untuk belajar dan proyek sederhana, Free Plan sudah sangat cukup. Kamu hanya perlu upgrade ke plan berbayar jika membutuhkan lebih dari 3 perangkat atau fitur OTA update.
2. Setup Blynk Cloud & Mobile App
Langkah pertama menggunakan Blynk adalah membuat akun dan mengonfigurasi template project di Blynk.Console (web). Setelah itu, kamu akan mengunduh aplikasi Blynk di smartphone untuk memantau dan mengontrol perangkatmu.
Langkah 1: Membuat Akun Blynk
- Buka browser dan kunjungi https://blynk.cloud
- Klik "Register" atau "Sign Up"
- Masukkan email dan password, lalu verifikasi akun
- Login ke Blynk.Console β ini adalah panel manajemen utama
Langkah 2: Membuat Template
Template adalah konfigurasi dasar untuk perangkatmu. Di dalam template, kamu mendefinisikan datastream, dashboard widget, dan firmware yang akan digunakan.
- Di Blynk.Console, klik "Templates" di sidebar kiri
- Klik "+ New Template"
- Isi nama template (contoh: "IoT Suhu Monitor")
- Pilih Hardware: "ESP32"
- Di tab "Datastream", tambahkan datastream baru:
- Type: Virtual Pin
- Pin: V0 (untuk suhu)
- Pin: V1 (untuk kelembaban)
- Data type: Double
- Di tab "Web Dashboard", tambahkan widget sesuai kebutuhan
- Klik "Save"
Langkah 3: Membuat Device
- Klik "Search" atau "Devices" di sidebar
- Klik "+ New Device"
- Pilih "From Template" lalu pilih template yang sudah dibuat
- Copy Device Info yang berisi: BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN
BLYNK_AUTH_TOKEN adalah kunci akses ke perangkatmu. Jangan pernah membagikannya secara publik atau memasukkannya ke repository GitHub publik. Gunakan environment variable atau file config yang tidak di-commit.
Langkah 4: Install Aplikasi Blynk di Smartphone
- Buka Google Play Store (Android) atau App Store (iOS)
- Cari "Blynk" dan install aplikasinya
- Login dengan akun yang sama dengan Blynk.Console
- Di tab Devices, kamu akan melihat device yang sudah dibuat
- Klik device tersebut untuk membuka dashboard mobile
Sekarang akun Blynk sudah siap digunakan. Langkah selanjutnya adalah menghubungkan ESP32 dengan platform ini.
3. ESP32 + Blynk: Mengirim Data Sensor
Sekarang kita akan menghubungkan ESP32 dengan Blynk dan mengirim data sensor DHT11 (suhu & kelembaban) ke dashboard. Pastikan kamu sudah menginstall library Blynk dan DHT di Arduino IDE.
Install Library yang Dibutuhkan
Di Arduino IDE, buka Sketch β Include Library β Manage Libraries dan cari:
- Blynk oleh Blynk Inc. β versi terbaru
- DHT sensor library oleh Adafruit β untuk sensor DHT11/DHT22
- Adafruit Unified Sensor β dependency dari library DHT
Kode Program: Mengirim Suhu & Kelembaban
Copy kode berikut ke Arduino IDE. Ganti nilai BLYNK_AUTH_TOKEN dengan token yang kamu dapatkan dari Blynk.Console.
// =============================================
// Blynk IoT: Mengirim Data Sensor DHT11
// Board: ESP32 DevKit v1
// =============================================
#define BLYNK_TEMPLATE_ID "TMPL_XXXXXXX"
#define BLYNK_TEMPLATE_NAME "IoT Suhu Monitor"
#define BLYNK_AUTH_TOKEN "MasukkanAuthTokenDisini"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// Koneksi WiFi
char ssid[] = "NamaWiFi";
char pass[] = "PasswordWiFi";
// Pin & konfigurasi sensor DHT11
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Timer untuk mengirim data secara berkala
BlynkTimer timer;
// Fungsi untuk membaca & mengirim data sensor
void kirimDataSensor() {
float suhu = dht.readTemperature(); // Celsius
float kelembaban = dht.readHumidity();
// Cek apakah pembacaan berhasil
if (isnan(suhu) || isnan(kelembaban)) {
Serial.println("Gagal membaca sensor DHT11!");
return;
}
// Kirim data ke Blynk Virtual Pin
Blynk.virtualWrite(V0, suhu); // Suhu β V0
Blynk.virtualWrite(V1, kelembaban); // Kelembaban β V1
// Tampilkan di Serial Monitor
Serial.print("Suhu: ");
Serial.print(suhu);
Serial.print("Β°C | Kelembaban: ");
Serial.print(kelembaban);
Serial.println("%");
}
// Fungsi ini dijalankan saat tombol di app ditekan
// Virtual Pin V2 berfungsi sebagai tombol refresh
BLYNK_WRITE(V2) {
int pinValue = param.asInt();
if (pinValue == 1) {
kirimDataSensor();
Blynk.logEvent("manual_refresh");
}
}
void setup() {
Serial.begin(115200);
dht.begin();
// Koneksi ke Blynk Cloud
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Atur timer: kirim data setiap 2 detik
timer.setInterval(2000L, kirimDataSensor);
Serial.println("ESP32 terhubung ke Blynk!");
}
void loop() {
Blynk.run(); // Jalankan Blynk
timer.run(); // Jalankan timer
}
Penjelasan Kode
| Bagian | Fungsi |
|---|---|
BLYNK_TEMPLATE_ID |
ID unik template di Blynk.Cloud, diperoleh dari Device Info |
BLYNK_AUTH_TOKEN |
Token autentikasi perangkat, unik untuk setiap device |
Blynk.virtualWrite(V0, value) |
Mengirim data ke Virtual Pin V0 yang terhubung ke widget di app |
BlynkTimer |
Timer non-blocking untuk menjalankan fungsi secara berkala |
BLYNK_WRITE(V2) |
Callback yang dipanggil saat nilai Virtual Pin V2 berubah dari app |
Blynk.run() |
Memelihara koneksi ke Blynk Cloud, harus dipanggil di loop() |
Virtual Pin di Blynk (V0, V1, V2, ...) adalah "jalur komunikasi" antara perangkat dan dashboard. Kamu bebas menentukan apa yang dikirim melalui pin mana β yang penting harus konsisten antara kode firmware dan konfigurasi widget di dashboard.
Langkah Upload & Monitoring
- Pilih board: Tools β Board β ESP32 Dev Module
- Pilih port USB yang terdeteksi
- Upload kode ke ESP32
- Buka Serial Monitor (115200 baud) untuk memverifikasi koneksi
- Buka aplikasi Blynk di smartphone β nilai Gauge harus berubah sesuai suhu aktual
4. Widget Blynk: Gauge, LCD, Terminal, Notification
Blynk menyediakan berbagai widget yang bisa ditambahkan ke dashboard mobile maupun web. Berikut penjelasan widget paling sering digunakan dalam proyek IoT.
4.1 Gauge Widget
Gauge adalah widget berbentuk lingkaran yang menampilkan nilai numerik dalam rentang tertentu. Cocok untuk menampilkan suhu, kelembaban, tegangan baterai, atau parameter lainnya.
Cara menambahkan Gauge:
- Buka dashboard device di Blynk app
- Klik tombol "+" untuk menambah widget
- Pilih "Gauge" dari daftar widget
- Klik widget untuk mengonfigurasi:
- Datastream: Pilih V0 (suhu)
- Title: "Suhu Ruangan"
- Min Value: 0
- Max Value: 50
- Unit: "Β°C"
4.2 Value Display / LCD Widget
LCD widget menampilkan data dalam format teks digital mirip layar LCD. Cocok untuk menampilkan beberapa nilai sekaligus secara ringkas.
// Mengirim data ke LCD widget
// Format: "Suhu:25.3Β°C\nKelembaban:68%"
String lcdText = "Suhu:" + String(suhu, 1) + "Β°C\n";
lcdText += "Kelembaban:" + String(kelembaban, 1) + "%";
Blynk.virtualWrite(V3, lcdText);
Di dashboard, LCD widget dihubungkan ke Virtual Pin V3. Kamu bisa menampilkan hingga 16 karakter per baris.
4.3 Terminal Widget
Terminal adalah widget teks dua arah yang memungkinkan komunikasi antara perangkat dan pengguna melalui aplikasi. Pengguna bisa mengirim perintah, dan perangkat bisa mengirim pesan log.
// Mengirim pesan ke Terminal
Blynk.virtualWrite(V4, String(">> Suhu aktual: ") + String(suhu) + "\n");
// Menerima perintah dari Terminal
BLYNK_WRITE(V4) {
String perintah = param.asStr();
if (perintah == "status") {
Blynk.virtualWrite(V4, ">> Sistem aktif\n");
}
else if (perintah == "reset") {
ESP.restart();
}
else {
Blynk.virtualWrite(V4, ">> Perintah tidak dikenali\n");
Blynk.virtualWrite(V4, ">> Ketik 'status' atau 'reset'\n");
}
}
4.4 Notification Widget
Notification widget mengirim push notification ke smartphone saat kondisi tertentu terpenuhi. Kamu bisa mengirim notifikasi dari kode firmware.
// Kirim notifikasi jika suhu melebihi batas
if (suhu > 35.0) {
Blynk.logEvent("suhu_tinggi",
String("Suhu mencapai ") + String(suhu, 1) + "Β°C! Cek ruangan.");
}
// Kirim notifikasi jika kelembaban rendah
if (kelembaban < 30.0) {
Blynk.logEvent("kelembaban_rendah",
"Kelembaban di bawah 30%. Aktifkan humidifier!");
}
Untuk menggunakan Blynk.logEvent(), kamu harus membuat event terlebih dahulu di Blynk.Console β Template β tab "Events". Buat event dengan kode "suhu_tinggi" dan "kelembaban_rendah", lalu atur tingkat notifikasi (Critical, Error, Warning, Info).
Ringkasan Widget
| Widget | Fungsi | Contoh Penggunaan |
|---|---|---|
| Gauge | Visualisasi numerik berbentuk lingkaran | Suhu, tekanan, tegangan baterai |
| LCD | Menampilkan data teks digital | Status sistem, timestamp terakhir update |
| Terminal | Komunikasi teks dua arah | Perintah remote, log system |
| Notification | Push notification ke smartphone | Alert suhu tinggi, deteksi gerakan |
| Button | Kontrol ON/OFF atau trigger aksi | Nyalakan lampu, reset sistem |
| Slider | Input rentang nilai kontinu | Atur kecepatan kipas, brightness LED |
| History | Chart riwayat data (time series) | Grafik suhu 24 jam terakhir |
5. Kontrol Perangkat via Blynk (Button, Slider, Automations)
Salah satu keunggulan utama Blynk adalah kemampuan mengontrol perangkat dari jarak jauh melalui aplikasi mobile. Berikut cara menggunakan Button, Slider, dan Automations.
5.1 Button Widget β Kontrol ON/OFF
Button widget mengirim nilai biner (0 atau 1) ke Virtual Pin. Kamu bisa menghubungkannya ke relay untuk menyalakan/mematikan lampu, kipas, atau perangkat lainnya.
// =============================================
// Kontrol Relay via Button Blynk
// =============================================
#define BLYNK_TEMPLATE_ID "TMPL_XXXXXXX"
#define BLYNK_TEMPLATE_NAME "Smart Relay"
#define BLYNK_AUTH_TOKEN "TokenDisini"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define RELAY_PIN 26 // Pin GPIO yang terhubung ke relay
char ssid[] = "NamaWiFi";
char pass[] = "PasswordWiFi";
BlynkTimer timer;
// Callback saat tombol di app ditekan
BLYNK_WRITE(V0) {
int state = param.asInt();
digitalWrite(RELAY_PIN, state);
if (state == 1) {
Serial.println("Relay: ON");
Blynk.virtualWrite(V1, "Lampu Menyala");
} else {
Serial.println("Relay: OFF");
Blynk.virtualWrite(V1, "Lampu Mati");
}
}
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Default OFF
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run();
}
Konfigurasi Button widget di dashboard:
- Datastream: V0
- Mode: Switch (toggle) atau Push (momentary)
- Labels: ON / OFF
5.2 Slider Widget β Atur Nilai Kontinu
Slider memungkinkan pengguna mengatur nilai dalam rentang tertentu. Cocok untuk mengatur kecepatan kipas (PWM), brightness LED, atau setpoint suhu AC.
// =============================================
// Kontrol Brightness LED via Slider
// =============================================
#define LED_PIN 16 // Pin GPIO untuk LED PWM
// Callback saat slider digeser
BLYNK_WRITE(V2) {
int brightness = param.asInt(); // Nilai 0-255
analogWrite(LED_PIN, brightness);
Serial.print("Brightness: ");
Serial.println(brightness);
}
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
ledcSetup(0, 5000, 8); // Channel 0, 5kHz, 8-bit
ledcAttachPin(LED_PIN, 0);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run();
}
Di dashboard, konfigurasi Slider:
- Datastream: V2
- Min: 0
- Max: 255
- Step: 1
- Label: "Brightness"
5.3 Automations β Otomasi Berbasis Kondisi
Blynk menyediakan fitur Automations yang memungkinkan kamu membuat rule otomasi tanpa coding tambahan di mikrokontroler. Automasi dijalankan di cloud Blynk.
Contoh Automasi:
| Nama Automasi | Kondisi | Aksi |
|---|---|---|
| Auto Fan ON | Suhu (V0) > 30Β°C | Set V2 (Relay Kipas) = 1 |
| Auto Fan OFF | Suhu (V0) < 25Β°C | Set V2 (Relay Kipas) = 0 |
| Night Mode | Jam > 22:00 | Set V3 (LED) = 50% brightness |
| Alert Suhu | Suhu (V0) > 40Β°C | Kirim push notification |
Cara membuat Automasi:
- Buka Blynk.Console β pilih Device
- Klik tab "Automations"
- Klik "+ New Automation"
- Atur kondisi (IF) dan aksi (THEN)
- Simpan dan aktifkan automasi
Kamu bisa menggabungkan automasi di cloud dengan logika di firmware. Misalnya, firmware mengirim data sensor, sementara Blynk Cloud memutuskan kapan harus menyalakan relay berdasarkan threshold yang sudah diatur di dashboard.
6. Blynk 2.0 vs Blynk Legacy
Banyak tutorial lama di internet masih menggunakan Blynk Legacy (versi 0.x) yang sudah discontinued sejak Desember 2022. Sangat penting untuk memahami perbedaannya agar tidak mengalami kebingungan saat mengikuti tutorial.
| Aspek | Blynk Legacy (v0.x) | Blynk 2.0 (New) |
|---|---|---|
| Status | β Discontinued / Mati | β Aktif & dikembangkan |
| Server | blynk-cloud.com | blynk.cloud |
| Library | #include <BlynkSimpleEsp32.h> (lama) |
#include <BlynkSimpleEsp32.h> (baru, perlu Template ID) |
| Autentikasi | Hanya Auth Token | Template ID + Auth Token |
| Konfigurasi | Hardcoded di widget app | Datastream di Cloud Console |
| Web Dashboard | β Tidak tersedia | β Tersedia (gratis) |
| Automations | β | β Built-in |
| Mobile Builder | Drag & drop di app | Widget dikonfigurasi dari Cloud |
| Free Device Limit | 2 device (perubahan pin tanpa batas) | 3 device (dengan fitur lebih lengkap) |
Jika kamu menemukan tutorial yang menggunakan variabel BLYNK_AUTH_TOKEN tanpa BLYNK_TEMPLATE_ID, itu adalah kode untuk Blynk Legacy yang sudah tidak berfungsi. Selalu pastikan tutorial yang kamu ikuti menggunakan Blynk 2.0 dengan Template ID.
Cara Migrasi dari Blynk Legacy ke Blynk 2.0
- Daftar akun baru di blynk.cloud (jika belum punya)
- Buat Template baru di Blynk.Console
- Definisikan Datastream (Virtual Pin) yang sesuai dengan kode lama
- Buat Device dari Template tersebut
- Update kode firmware: tambahkan
#define BLYNK_TEMPLATE_IDdan#define BLYNK_TEMPLATE_NAMEsebelum#include - Ganti Auth Token lama dengan yang baru
- Rebuild dashboard di app/mobile dengan widget baru
- Upload kode baru ke ESP32
7. Web Dashboard Blynk
Blynk 2.0 menyediakan Web Dashboard yang bisa diakses dari browser komputer tanpa perlu aplikasi mobile. Ini sangat berguna untuk monitoring dari laptop atau desktop saat bekerja.
Mengakses Web Dashboard
- Buka blynk.cloud dan login
- Klik "Devices" di sidebar kiri
- Pilih device yang ingin kamu pantau
- Klik tab "Web Dashboard"
Menambahkan Widget ke Web Dashboard
Di Web Dashboard, klik tombol "Edit Dashboard" lalu drag widget dari panel kiri ke area dashboard:
- Gauge: Untuk menampilkan nilai suhu, kelembaban, dll.
- Line Chart: Grafik data real-time dari Virtual Pin
- Table: Menampilkan data dalam format tabel
- Switch: Toggle ON/OFF untuk relay atau perangkat
- Slider: Atur nilai dalam rentang tertentu
- Terminal: Kirim dan terima pesan teks dari perangkat
- Label: Tampilkan status teks dari perangkat
Web Dashboard vs Mobile App
| Fitur | Web Dashboard | Mobile App |
|---|---|---|
| Aksesibilitas | Browser (PC/Laptop) | iOS & Android |
| Widget Builder | Drag & drop (terbatas) | Drag & drop (lebih lengkap) |
| Push Notification | β | β |
| Data Sharing | Ya, via link | Ya, via invite |
| Cocok untuk | Monitoring di kerja, presentasi | Monitoring mobile, notifikasi |
Di Web Dashboard, kamu bisa membuat halaman terpisah untuk setiap kategori perangkat. Misalnya, satu halaman untuk monitoring ruangan tamu, satu lagi untuk monitoring kebun, sehingga dashboard tidak terlalu ramai.
8. Proyek: Smart Home Control via Blynk
Sekarang kita akan menggabungkan semua pengetahuan yang sudah dipelajari menjadi sebuah proyek lengkap: Smart Home Control yang bisa mengontrol lampu, kipas, dan memonitor suhu & kelembaban ruangan melalui Blynk.
Hardware yang Dibutuhkan
| Komponen | Jumlah | Fungsi |
|---|---|---|
| ESP32 DevKit v1 | 1 | Microcontroller utama |
| Sensor DHT11 / DHT22 | 1 | Mengukur suhu & kelembaban |
| Relay Module 2 Channel | 1 | Kontrol lampu & kipas |
| LED (opsional) | 2 | Indikator status |
| Resistor 220Ξ© | 2 | Limiter arus LED |
| Kabel jumper | - | Interkoneksi komponen |
| Breadboard | 1 | Prototyping |
Skema Koneksi
| Komponen | Pin di ESP32 |
|---|---|
| DHT11 Data | GPIO 4 |
| Relay 1 (Lampu) | GPIO 26 |
| Relay 2 (Kipas) | GPIO 27 |
| LED Indikator 1 | GPIO 16 |
| LED Indikator 2 | GPIO 17 |
Kode Program Lengkap
// =============================================
// Proyek: Smart Home Control via Blynk
// Monitor Suhu + Kontrol Lampu & Kipas
// Board: ESP32 DevKit v1
// =============================================
#define BLYNK_TEMPLATE_ID "TMPL_XXXXXXX"
#define BLYNK_TEMPLATE_NAME "Smart Home Control"
#define BLYNK_AUTH_TOKEN "MasukkanAuthTokenDisini"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// ----- Koneksi WiFi -----
char ssid[] = "NamaWiFi";
char pass[] = "PasswordWiFi";
// ----- Pin Konfigurasi -----
#define DHTPIN 4
#define DHTTYPE DHT11
#define RELAY_LAMPU 26
#define RELAY_KIPAS 27
#define LED_LAMPU 16
#define LED_KIPAS 17
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
// ----- Status Perangkat -----
bool statusLampu = false;
bool statusKipas = false;
// =============================================
// FUNGSI: Kirim Data Sensor ke Blynk
// =============================================
void kirimDataSensor() {
float suhu = dht.readTemperature();
float kelembaban = dht.readHumidity();
if (isnan(suhu) || isnan(kelembaban)) {
Serial.println("[ERROR] Gagal baca DHT11!");
return;
}
// Kirim ke Virtual Pin
Blynk.virtualWrite(V0, suhu); // Gauge Suhu
Blynk.virtualWrite(V1, kelembaban); // Gauge Kelembaban
// Kirim format teks untuk LCD widget
String displayText = "T:" + String(suhu, 1) + "C ";
displayText += "H:" + String(kelembaban, 1) + "%\n";
displayText += "Lampu:" + String(statusLampu ? "ON" : "OFF");
displayText += " Kipas:" + String(statusKipas ? "ON" : "OFF");
Blynk.virtualWrite(V5, displayText); // LCD Widget
// Log ke Serial
Serial.print("[DATA] Suhu=");
Serial.print(suhu);
Serial.print("C | H=");
Serial.print(kelembaban);
Serial.print("% | Lampu=");
Serial.print(statusLampu ? "ON" : "OFF");
Serial.print(" | Kipas=");
Serial.println(statusKipas ? "ON" : "OFF");
// Kirim notifikasi jika suhu terlalu tinggi
if (suhu > 35.0) {
Blynk.logEvent("suhu_tinggi",
String("Suhu mencapai ") + String(suhu, 1) +
"Β°C! Pertimbangkan nyalakan kipas.");
}
// Kirim notifikasi jika kelembaban terlalu rendah
if (kelembaban < 30.0) {
Blynk.logEvent("kelembaban_rendah",
"Kelembaban di bawah 30%!");
}
}
// =============================================
// KONTROL: Tombol Lampu (V2)
// =============================================
BLYNK_WRITE(V2) {
statusLampu = param.asInt();
digitalWrite(RELAY_LAMPU, statusLampu);
digitalWrite(LED_LAMPU, statusLampu);
Serial.print("[KONTROL] Lampu: ");
Serial.println(statusLampu ? "ON" : "OFF");
}
// =============================================
// KONTROL: Tombol Kipas (V3)
// =============================================
BLYNK_WRITE(V3) {
statusKipas = param.asInt();
digitalWrite(RELAY_KIPAS, statusKipas);
digitalWrite(LED_KIPAS, statusKipas);
Serial.print("[KONTROL] Kipas: ");
Serial.println(statusKipas ? "ON" : "OFF");
}
// =============================================
// KONTROL: Slider Brightness LED (V4)
// =============================================
BLYNK_WRITE(V4) {
int brightness = param.asInt();
analogWrite(LED_LAMPU, brightness);
Serial.print("[SLIDER] LED Brightness: ");
Serial.println(brightness);
}
// =============================================
// SETUP
// =============================================
void setup() {
Serial.begin(115200);
Serial.println("\n[SYSTEM] Smart Home Control v1.0");
Serial.println("[SYSTEM] Memulai inisialisasi...");
// Inisialisasi pin output
pinMode(RELAY_LAMPU, OUTPUT);
pinMode(RELAY_KIPAS, OUTPUT);
pinMode(LED_LAMPU, OUTPUT);
pinMode(LED_KIPAS, OUTPUT);
// Default semua OFF
digitalWrite(RELAY_LAMPU, LOW);
digitalWrite(RELAY_KIPAS, LOW);
digitalWrite(LED_LAMPU, LOW);
digitalWrite(LED_KIPAS, LOW);
// Mulai sensor DHT
dht.begin();
Serial.println("[SYSTEM] Sensor DHT11 siap");
// Koneksi ke Blynk Cloud
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
Serial.println("[SYSTEM] Terhubung ke Blynk Cloud!");
// Timer: kirim data sensor setiap 3 detik
timer.setInterval(3000L, kirimDataSensor);
}
// =============================================
// LOOP
// =============================================
void loop() {
Blynk.run();
timer.run();
}
Mapping Virtual Pin
| Virtual Pin | Jenis | Fungsi |
|---|---|---|
| V0 | Output (perangkat β app) | Data suhu (Gauge) |
| V1 | Output (perangkat β app) | Data kelembaban (Gauge) |
| V2 | Input (app β perangkat) | Kontrol lampu (Switch) |
| V3 | Input (app β perangkat) | Kontrol kipas (Switch) |
| V4 | Input (app β perangkat) | Atur brightness LED (Slider) |
| V5 | Output (perangkat β app) | Status teks (LCD Widget) |
Testing & Verifikasi
- Upload kode ke ESP32 dan buka Serial Monitor
- Pastikan ESP32 terhubung ke WiFi dan Blynk Cloud
- Buka Blynk app di smartphone
- Uji tombol Lampu β relay dan LED indikator harus menyala/mati
- Uji tombol Kipas β relay kedua dan LED indikator harus menyala/mati
- Geser slider brightness β kecerahan LED harus berubah
- Periksa Gauge suhu & kelembaban β harus update setiap 3 detik
- Gunakan blow dryer di dekat DHT11 untuk memicu notifikasi suhu tinggi
Relay digunakan untuk mengontrol perangkat bertegangan AC (220V). Jika kamu menghubungkan lampu atau kipas AC, SELALU pastikan kabel sudah dipasang dengan benar dan aman. Jika ragu, konsultasikan dengan teknisi listrik. Untuk percobaan pertama, gunakan LED atau buzzer sebagai beban testing.
Ekspansi Proyek
Setelah proyek dasar berfungsi, kamu bisa menambahkan fitur:
- Sensor LDR: Otomasi lampu berdasarkan cahaya ambient
- PIR Motion Sensor: Deteksi gerakan untuk keamanan
- Relay tambahan: Kontrolζ΄ε€ perangkat (AC, pompa air, dsb)
- OTA Update: Update firmware dari jarak jauh (plan berbayar)
- Scheduling: Jadwal otomatis untuk lampu & kipas
9. Quiz: Uji Pemahamanmu!
Setelah membaca tutorial di atas, jawablah 5 pertanyaan berikut untuk menguji pemahamanmu tentang Blynk IoT: