Tutorial Blynk ESP32: Mengendalikan LED, Relay, dan Sensor dari Ponsel
Tutorial Blynk ESP32: buat template dan datastream (V0, V1), ambil auth token, kendalikan LED dan relay, tampilkan grafik data sensor, kirim peringatan, dan pakai BlynkTimer.
Blynk dan ESP32 adalah cara tercepat untuk mengendalikan sebuah board dari mana saja di dunia tanpa harus membuat aplikasi ponsel sendiri. Blynk IoT memberimu server cloud tempat ESP32 terhubung (Blynk.Cloud), aplikasi ponsel tempat kamu menyusun dashboard dengan drag and drop, dan dashboard web. Ketika kamu mengetuk sakelar di ponsel, perintahnya lebih dulu pergi ke cloud, lalu dari sana ke ESP32; suhu yang diukur ESP32 kembali lewat jalur yang sama dan muncul di ponselmu sebagai angka dan grafik. Ponsel dan board-mu tidak harus berada di rumah yang sama: semuanya tetap jalan meski ponselmu memakai data seluler.
Di panduan ini kamu akan membuat proyek yang berfungsi dari nol: membuka akun Blynk.Cloud, mendefinisikan template dan datastream (V0, V1, V2, V3), mengambil auth token perangkat, menginstal library, mengendalikan LED dan relay dari ponsel, menampilkan grafik data sensor DHT11, dan menerima notifikasi di ponsel ketika suhu naik. Kamu juga akan belajar kenapa sebaiknya tidak memakai delay() dan apa yang dilakukan BlynkTimer sebagai gantinya, cara menghitung batas pesan paket gratis, kenapa kode peninggalan Blynk lama tidak bisa dikompilasi, dan cara mengatasi error koneksi yang paling sering muncul.

Apa itu Blynk IoT dan bagaimana cara kerjanya?
Dengan Blynk, ESP32 dan ponselmu tidak pernah terhubung langsung satu sama lain; keduanya terhubung ke Blynk.Cloud dan server-lah yang mengantar pesannya. Ketika ESP32 menyala, ia bergabung ke Wi-Fi, lalu terhubung ke server Blynk dan memperkenalkan diri dengan auth token-nya. Data mengalir lewat virtual pin (V0–V255): virtual pin bukan kaki sungguhan di ESP32, melainkan saluran data bernomor antara kodemu dan aplikasi. Sakelar di aplikasi menulis 1 ke V1, fungsi BLYNK_WRITE(V1) di kodemu menangkapnya lalu mengaktifkan relay; ketika kodemu menjalankan Blynk.virtualWrite(V2, 24.5), gauge di ponselmu ikut diperbarui. Inilah bagian-bagian dasarnya:
| Konsep | Fungsinya | Contoh di panduan ini |
|---|---|---|
| Template | Resep bersama untuk perangkat sejenis: datastream, dashboard, dan event | ESP32 Home |
| Datastream | Saluran data yang terikat ke sebuah virtual pin, dengan tipe dan rentang tetap | V2: Suhu, Double, 0–50 °C |
| Perangkat (Device) | Board sungguhan yang dibuat dari template; masing-masing punya datanya sendiri | ESP32 di ruang tamu |
| Auth token | Kunci identitas rahasia perangkat; kodemu memakainya untuk terhubung ke cloud | Baris BLYNK_AUTH_TOKEN |
| Widget | Elemen dashboard seperti sakelar, gauge, dan grafik | Button, Gauge, SuperChart |
| Event | Peringatan yang mengirim notifikasi dan dicatat di timeline | yuksek_sicaklik |
Perbedaan Blynk lama dan Blynk IoT yang baru
Sebagian besar video dan sketch Blynk di internet dibuat untuk versi lama (Blynk Legacy), yang sudah tidak berfungsi. Platform baru diluncurkan pada Mei 2021; aplikasi lama ditarik dari toko aplikasi pada Juni 2022, dan server cloud lama dimatikan untuk selamanya pada 31 Desember 2022. Jadi token dari proyek lama, poin energi yang dulu kamu beli, atau alamat blynk-cloud.com tidak ada gunanya sekarang; kamu perlu membangun ulang proyeknya di platform baru. Kabar baiknya, sebagian besar kode ESP32 (BLYNK_WRITE, virtualWrite, BlynkTimer) tetap sama.
| Fitur | Blynk lama (Legacy) | Blynk IoT (baru) |
|---|---|---|
| Di mana proyek diatur? | Semuanya dalam satu proyek di aplikasi ponsel | Template dan datastream di Blynk.Console (web), dashboard di ponsel dan web |
| Auth token | Satu per proyek, dikirim lewat email | Satu per perangkat, ditampilkan di halaman perangkat |
| Model harga | Widget dibeli dengan poin energi | Paket bulanan dengan batas perangkat, pesan, dan fitur |
| Bagian atas sketch | Cukup satu baris char auth[] | BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN wajib ada |
| Notifikasi | Blynk.notify() dan Blynk.email() | Event didefinisikan di template dan dipicu dengan Blynk.logEvent() |
| Server | blynk-cloud.com, port 80 atau 8080 (sudah dimatikan) | blynk.cloud, port 80, atau 443 dengan SSL |
| Dashboard web | Tidak ada | Ada (Blynk.Console) |
| Server lokal | Server Java open source bisa di-host sendiri | Tidak ada server lokal pribadi; server lama sudah tidak diperbarui |
Daftar komponen dan pengkabelan
Untuk proyek ini kamu akan memakai board pengembangan ESP32, modul relay 5 V, sensor suhu dan kelembapan DHT11, LED opsional dengan resistor 220 Ω, breadboard, dan kabel jumper. Untuk LED, LED biru bawaan board di GPIO 2 sudah cukup; kalau kamu menambahkan LED eksternal, nilai resistornya bisa dicari dengan kalkulator resistor LED. Cek juga susunan pin board-mu di alat diagram pin; di sebagian board pin 5 V berlabel VIN, di board lain 5V.






| Komponen | Pin komponen | Pin ESP32 | Catatan |
|---|---|---|---|
| LED (opsional) | Kaki panjang (+) | GPIO 2 | Lewat resistor 220 Ω; kaki pendek ke GND |
| Modul relay | VCC | VIN / 5V | Pin ini berisi sekitar 5 V ketika diberi daya lewat USB |
| Modul relay | GND | GND | Ground bersama |
| Modul relay | IN | GPIO 26 | Untuk modul aktif LOW, atur ROLE_AKTIF_LOW = true di kode |
| DHT11 | VCC | 3V3 | Bekerja pada 3,3–5,5 V |
| DHT11 | DATA | GPIO 4 | Sensor tanpa modul butuh pull-up 10 kΩ; versi modul sudah memilikinya di board |
| DHT11 | GND | GND | Ground bersama |
Langkah 1: Buat akun Blynk.Cloud dan template
- Di komputermu, buka blynk.cloud, daftar akun gratis dengan alamat emailmu, lalu atur kata sandimu lewat tautan di email yang kamu terima.
- Di menu kiri, buka Developer Zone > My Templates lalu klik + New Template.
- Beri nama template (misalnya ESP32 Home), pilih ESP32 sebagai hardware dan WiFi sebagai jenis koneksi, lalu buat template-nya.
- Nilai BLYNK_TEMPLATE_ID dan BLYNK_TEMPLATE_NAME yang tampil di halaman template akan dimasukkan ke kodemu; untuk sekarang cukup ingat letaknya.
- Kalau wizard Quickstart muncul ketika kamu mendaftar, kamu boleh melewatinya; di panduan ini kita mengerjakan setiap langkah secara manual supaya kamu tahu kegunaan setiap pengaturan.
Langkah 2: Definisikan datastream (V0, V1, V2, V3)
Datastream adalah kartu identitas sebuah virtual pin: menentukan pin yang mana, tipe datanya (Integer untuk bilangan bulat, Double untuk desimal, String untuk teks), nilai minimum dan maksimum, satuan, dan berapa angka desimal yang ditampilkan. Buka template dalam mode edit, masuk ke tab Datastreams, pilih + New Datastream > Virtual Pin, lalu buat empat saluran ini:
| Virtual pin | Nama | Tipe data | Min – Maks | Satuan dan desimal | Widget |
|---|---|---|---|---|---|
| V0 | LED | Integer | 0 – 1 | Tidak ada | Button / Switch |
| V1 | Relay | Integer | 0 – 1 | Tidak ada | Button / Switch |
| V2 | Suhu | Double | 0 – 50 | °C, #.# | Gauge, SuperChart |
| V3 | Kelembapan | Double | 0 – 100 | %, # | Gauge, SuperChart |
Langkah 3: Buat perangkat dan ambil auth token
Template adalah resep, perangkat adalah board sungguhan yang dibuat dari resep itu. Di menu kiri buka Devices, klik + New Device, pilih template ESP32 Home dengan From template, lalu beri nama perangkatnya. Setelah perangkat dibuat, muncul konfigurasi tiga baris: BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN. Salin baris-baris ini; kamu juga bisa menemukannya nanti di bagian Device Info di halaman perangkat (di sebagian versi antarmuka disebut Developer Tools).
Langkah 4: Instal library Blynk di Arduino IDE
- Kalau paket board ESP32 belum terinstal di Arduino IDE, instal dulu; langkah-langkahnya ada di Apa Itu ESP32?
- Buka Library Manager, ketik Blynk di kotak pencarian, lalu instal library resmi Blynk karya Volodymyr Shymanskyy. Kalau ditanya soal dependensi, pilih Install all.
- Untuk sensornya, instal DHT sensor library dari Adafruit dan library Adafruit Unified Sensor yang dibutuhkannya dari tempat yang sama. Kalau ada kendala, lihat panduan Cara Instal Library Arduino.
- Pilih ESP32 Dev Module di Tools > Board, sambungkan board dengan kabel USB yang bisa mengirim data, lalu pilih port yang benar.
- Library ini dilengkapi contoh siap pakai: File > Examples > Blynk > Boards_WiFi > ESP32_WiFi adalah bentuk paling sederhana dari sketch pertama di bawah.
Sketch pertama: menyalakan dan mematikan LED dari ponselmu (V0)
Di kode di bawah, ganti tiga baris teratas dengan baris yang kamu salin dari halaman perangkatmu, lalu ganti nama dan kata sandi Wi-Fi dengan milikmu. Tiga baris #define ini harus ada sebelum baris #include; library mencari nilai-nilai ini ketika kompilasi dan memunculkan error kompilasi kalau tidak menemukannya.
1// Bu üç satırı Blynk.Console'daki cihaz sayfasından kopyala / copy these three lines from the device page in Blynk.Console
2#define BLYNK_TEMPLATE_ID "TMPLxxxxxxxx"
3#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
4#define BLYNK_AUTH_TOKEN "CihazTokeniniBurayaYapistir"
5
6#define BLYNK_PRINT Serial // bağlantı günlüğünü Seri Monitör'e yaz / print the connection log to the Serial Monitor
7
8#include <WiFi.h>
9#include <WiFiClient.h>
10#include <BlynkSimpleEsp32.h>
11
12char ssid[] = "AgAdi"; // Wi-Fi adın (yalnız 2,4 GHz) / your Wi-Fi name (2.4 GHz only)
13char pass[] = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
14
15const int LED_PIN = 2; // çoğu DevKit'te dahili LED / onboard LED on most DevKits
16
17// Uygulama V0'a her değer yazdığında çalışır / runs every time the app writes a value to V0
18BLYNK_WRITE(V0) {
19 int deger = param.asInt(); // anahtar: 0 ya da 1 / switch: 0 or 1
20 digitalWrite(LED_PIN, deger);
21 Serial.print("V0 = ");
22 Serial.println(deger);
23}
24
25// Buluta her bağlanışta son V0 değerini iste / ask for the last V0 value on every connection
26BLYNK_CONNECTED() {
27 Blynk.syncVirtual(V0);
28}
29
30void setup() {
31 Serial.begin(115200);
32 pinMode(LED_PIN, OUTPUT);
33 Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); // Wi-Fi'ye ve Blynk.Cloud'a bağlan / connect to Wi-Fi and Blynk.Cloud
34}
35
36void loop() {
37 Blynk.run(); // gelen komutları işler, bağlantıyı canlı tutar / handles commands, keeps the link alive
38}| Baris | Fungsinya |
|---|---|
| BLYNK_PRINT Serial | Membuat library mencetak langkah-langkah koneksinya ke Serial Monitor; sangat berguna ketika mencari masalah |
| BLYNK_WRITE(V0) | Fungsi yang otomatis berjalan ketika aplikasi atau dashboard web mengirim nilai ke V0 |
| param.asInt() | Mengubah nilai yang masuk menjadi bilangan bulat; pakai asFloat() untuk desimal dan asStr() untuk teks |
| BLYNK_CONNECTED() | Berjalan sekali setiap kali koneksi berhasil |
| Blynk.syncVirtual(V0) | Meminta nilai terakhir V0 dari server, sehingga LED kembali ke keadaan sebelumnya meski board restart |
| Blynk.begin(...) | Menghubungkan ke Wi-Fi dan Blynk.Cloud; menunggu sampai terhubung |
| Blynk.run() | Memproses perintah yang masuk dan menjaga koneksi tetap hidup; harus dipanggil di loop tanpa jeda apa pun |
Setelah meng-upload kode dan membuka Serial Monitor di 115200 baud, kamu akan melihat baris seperti “Connecting to AgAdi”, “Connected to WiFi”, alamat IP, “Connecting to blynk.cloud:80”, dan akhirnya “Ready (ping: 45ms).” secara berurutan. Begitu baris Ready muncul, perangkat tampil sebagai Online di Blynk.Console. Pada koneksi pertama kamu mungkin juga melihat baris yang diawali “Redirecting to”; library otomatis pindah ke server regional tempat akunmu berada, dan itu normal.
Menyiapkan dashboard ponsel dan web
Kodenya sudah siap, sekarang mari pasang tombol-tombolnya. Di Blynk, dashboard ponsel dan dashboard web dirancang terpisah; karena keduanya memakai datastream yang sama, perubahan yang kamu buat dari salah satunya langsung muncul di yang lain.
- Instal aplikasi Blynk IoT di ponselmu (bukan Blynk lama atau Blynk Legacy) dan masuk dengan akun yang sama.
- Nyalakan Developer Mode di halaman profilmu, lalu ketuk template ESP32 Home di Developer Zone.
- Ketuk kanvas kosong untuk menambahkan widget: masing-masing satu Button atau Switch untuk V0 dan V1, Gauge atau Labeled Value untuk V2 dan V3, dan SuperChart untuk riwayat.
- Ketuk setiap widget dan pilih datastream yang sesuai di pengaturannya; V2 dan V3 bisa dimasukkan bersamaan ke SuperChart. Perubahan tersimpan otomatis.
- Untuk dashboard web, edit template di Blynk.Console, seret dan lepas widget di tab Web Dashboard, pilih datastream dari ikon roda gigi setiap widget, lalu klik Save.
- Di aplikasi, ketuk nama perangkatmu dan coba sakelarnya: LED di GPIO 2 seharusnya langsung menyala dan Serial Monitor mencetak “V0 = 1”.
Relay dan sensor: membaca tanpa delay() dengan BlynkTimer
Aturan emas Blynk: loop() hanya boleh berisi Blynk.run() dan timer.run(). Kalau kamu menaruh delay(2000) di loop, ESP32 tidak bisa melihat perintah dari ponselmu selama waktu itu dan sakelar merespons terlambat; jeda yang sangat lama membuat server menganggap perangkat offline. Lebih parah lagi, kalau Blynk.virtualWrite() langsung ditaruh di loop, ESP32 mencoba mengirim ratusan pesan per detik; server membatasi perangkat itu dan kuota pesan bulananmu cepat habis. Solusinya adalah BlynkTimer, yang bekerja dengan prinsip millis(): ia memanggil fungsi pilihanmu pada interval pilihanmu, dan loop tetap bebas di antaranya. Ide ini kami jelaskan lengkap di Arduino millis() vs delay().
Kode di bawah mengendalikan relay dengan V1, mengirim suhu yang dibaca DHT11 ke V2 dan kelembapan ke V3 setiap 60 detik, lalu memicu event notifikasi ketika suhu naik di atas 30 °C. Untuk cara kerja sensornya, lihat Sensor Suhu dan Kelembapan DHT11.
1#define BLYNK_TEMPLATE_ID "TMPLxxxxxxxx"
2#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
3#define BLYNK_AUTH_TOKEN "CihazTokeniniBurayaYapistir"
4#define BLYNK_PRINT Serial
5
6#include <WiFi.h>
7#include <WiFiClient.h>
8#include <BlynkSimpleEsp32.h>
9#include <DHT.h>
10
11char ssid[] = "AgAdi";
12char pass[] = "Sifre123";
13
14const int ROLE_PIN = 26; // röle modülünün IN pini / relay module IN pin
15const int DHT_PIN = 4; // DHT11 veri pini / DHT11 data pin
16const bool ROLE_AKTIF_LOW = true; // çoğu modül LOW'da çeker / most modules switch on with LOW
17
18DHT dht(DHT_PIN, DHT11); // DHT22 kullanıyorsan DHT22 yaz / write DHT22 if you use a DHT22
19BlynkTimer timer; // delay() yerine zamanlayıcı / a timer instead of delay()
20bool alarmGitti = false; // aynı bildirimin tekrarını önler / stops the same alert repeating
21
22void roleYaz(bool acik) {
23 if (ROLE_AKTIF_LOW) digitalWrite(ROLE_PIN, acik ? LOW : HIGH);
24 else digitalWrite(ROLE_PIN, acik ? HIGH : LOW);
25}
26
27// V1: uygulamadaki röle anahtarı / relay switch in the app
28BLYNK_WRITE(V1) {
29 roleYaz(param.asInt() == 1);
30}
31
32// Elektrik gidip gelince rölenin son durumunu geri al / restore the relay state after a power cut
33BLYNK_CONNECTED() {
34 Blynk.syncVirtual(V1);
35}
36
37// Zamanlayıcının çağırdığı fonksiyon / the function called by the timer
38void sensorGonder() {
39 float sicaklik = dht.readTemperature();
40 float nem = dht.readHumidity();
41 if (isnan(sicaklik) || isnan(nem)) {
42 Serial.println("DHT okunamadi / DHT read failed");
43 return;
44 }
45 Blynk.virtualWrite(V2, sicaklik); // V2: sıcaklık (°C) / temperature (°C)
46 Blynk.virtualWrite(V3, nem); // V3: nem (%) / humidity (%)
47
48 // 30 °C'yi geçince tek bildirim, 28 °C'nin altında yeniden kur / one alert above 30 °C, re-arm below 28 °C
49 if (sicaklik > 30.0 && !alarmGitti) {
50 Blynk.logEvent("yuksek_sicaklik", String("Sicaklik / Temp: ") + sicaklik + " C");
51 alarmGitti = true;
52 } else if (sicaklik < 28.0) {
53 alarmGitti = false;
54 }
55}
56
57void setup() {
58 Serial.begin(115200);
59 pinMode(ROLE_PIN, OUTPUT);
60 roleYaz(false); // açılışta röle kapalı / relay off at boot
61 dht.begin();
62 Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
63 timer.setInterval(60000L, sensorGonder); // 60 saniyede bir ölç ve gönder / measure and send every 60 seconds
64}
65
66void loop() {
67 Blynk.run();
68 timer.run(); // loop'ta delay() ya da virtualWrite olmasın / no delay() or virtualWrite in loop
69}Baris timer.setInterval(60000L, sensorGonder) memanggil fungsi itu setiap 60.000 milidetik; huruf L di ujungnya menandai angka itu sebagai long. Untuk pekerjaan sekali jalan, pakai timer.setTimeout(), misalnya untuk menyalakan relay lalu mematikannya 5 detik kemudian. Satu objek BlynkTimer menampung sampai 16 timer, lebih dari cukup untuk sebagian besar proyek. Pengecekan isnan() mencegah nilai NaN yang tidak bermakna sampai ke cloud ketika sensor gagal dibaca. Flag alarmGitti dan selisih antara ambang 30 dan 28 °C (histeresis) mencegah notifikasi baru di setiap pembacaan ketika suhu naik-turun di sekitar 30 °C.
Menampilkan data sensor di grafik
Ada dua syarat supaya grafik terisi: ESP32 harus mengirim data dengan virtualWrite, dan datastream harus menyimpan riwayat. Kalau Last Value dipilih untuk riwayat di pengaturan datastream, server hanya menyimpan nilai terakhir dan tidak ada grafik yang digambar; opsi rata-rata per menit (1 Minute AVG) sudah cukup untuk grafik. Di paket gratis, riwayat disimpan selama 1 minggu, dan penyimpanan data mentah (RAW) hanya untuk paket berbayar. Di SuperChart kamu bisa berpindah rentang waktu seperti jam, hari, dan minggu, serta melihat suhu dan kelembapan dalam dua warna di grafik yang sama. Karena data datang setiap 60 detik, titik-titik pertama butuh beberapa menit untuk muncul; jangan buru-buru menurunkan intervalnya ke 1 detik, alasannya akan kamu lihat di bagian paket gratis.
Mengirim notifikasi: event dan Blynk.logEvent()
Di Blynk baru, notifikasi bekerja lewat event. Kamu mendefinisikan event-nya dulu di template, lalu memicunya di kode dengan Blynk.logEvent(); Blynk mencatat event itu di timeline perangkat dan, tergantung pengaturannya, mengirim notifikasi push atau email ke ponselmu. Deskripsi event boleh sampai 300 karakter, tetapi karena buffer kirim library kecil, sebaiknya buat singkat saja.
- Buka template dalam mode edit dan pindah ke tab Events & Notifications.
- Klik + Create Event, beri nama event seperti “Suhu tinggi”, dan atur kode event-nya menjadi yuksek_sicaklik. Kode ini hanya boleh berisi huruf, angka, dan garis bawah, dan harus sama persis dengan teks di sketch-mu.
- Pilih Warning sebagai jenis event; Info, Warning, dan Critical menentukan seberapa serius peringatannya. Pastikan opsi timeline menyala supaya event muncul di aplikasi.
- Di tab Notifications, nyalakan notifikasi, pilih akunmu sendiri sebagai penerima, serta push dan email sebagai saluran; kalau mau, batasi notifikasi menjadi satu per jam.
- Klik Save di template dan konfirmasi pembaruan perangkat. Jangan lupa mengizinkan notifikasi untuk aplikasi Blynk IoT di ponselmu.
| Batas | Nilai |
|---|---|
| Event per perangkat per hari (logEvent) | 100 |
| Jeda antara dua event dengan jenis yang sama | Minimal 1 detik |
| Jeda antara dua notifikasi (push, email) | Minimal 5 detik |
| Deskripsi event | Sampai 300 karakter |
| Laju permintaan per perangkat | Sampai 50 per detik |
| Panjang nilai String | Sampai 1024 byte |
Batas paket gratis: cara menghitung jumlah pesan
Paket gratis Blynk cukup untuk belajar dan proyek kecil, tetapi proyek yang dibuat tanpa memahami batasnya bisa mendadak diam di tengah bulan. Per Oktober 2026, halaman harga Blynk mencantumkan nilai berikut untuk paket gratis: 5 perangkat, 1 pengguna, 100.000 pesan perangkat per bulan, riwayat data 1 minggu, 10 template, 5 event per template, 1 webhook, dan 5 otomatisasi. Batas-batas ini sudah beberapa kali berubah dalam beberapa tahun terakhir; sebelum membuat proyek jangka panjang, cek nilai terbarunya di halaman harga Blynk atau di pengaturan paket akunmu. Yang paling banyak memakan kuota adalah perintah virtualWrite, syncVirtual, dan logEvent yang dikirim perangkatmu, dan setiap satu virtualWrite dihitung satu pesan. Satu bulan berisi sekitar 2.592.000 detik, jadi hitungannya sederhana:
| Interval kirim | 1 datastream (30 hari) | 2 datastream (30 hari) | Muat dalam batas 100.000? |
|---|---|---|---|
| 2 detik | 1.296.000 | 2.592.000 | Tidak |
| 10 detik | 259.200 | 518.400 | Tidak |
| 30 detik | 86.400 | 172.800 | Satu nilai muat, dua tidak |
| 60 detik | 43.200 | 86.400 | Muat, tetapi dengan dua nilai cadangannya tipis |
| 5 menit | 8.640 | 17.280 | Muat dengan mudah |
Koneksi yang tidak macet ketika Wi-Fi tidak ada
Blynk.begin() memang mudah, tetapi punya kelemahan: kalau koneksi Wi-Fi atau Blynk gagal dibuat, ia menunggu selamanya di dalam setup() dan bagian lain board tidak pernah berjalan. Di proyek yang harus tetap bekerja ketika internet putus, seperti termostat atau sistem penyiraman, kamu sebaiknya mengelola koneksinya sendiri. Kerangka di bawah memulai Wi-Fi tanpa menunggu, hanya menerapkan pengaturan dengan Blynk.config(), dan mengecek koneksi setiap 10 detik; sementara itu pekerjaan lokal yang kamu tambahkan ke timer tetap berjalan tanpa bergantung pada internet.
1#define BLYNK_TEMPLATE_ID "TMPLxxxxxxxx"
2#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
3#define BLYNK_AUTH_TOKEN "CihazTokeniniBurayaYapistir"
4#define BLYNK_PRINT Serial
5
6#include <WiFi.h>
7#include <WiFiClient.h>
8#include <BlynkSimpleEsp32.h>
9
10char ssid[] = "AgAdi";
11char pass[] = "Sifre123";
12
13BlynkTimer timer;
14
15// Wi-Fi varsa ama Blynk bağlı değilse yeniden dene / retry Blynk when Wi-Fi is up but Blynk is not
16void baglantiKontrol() {
17 if (WiFi.status() == WL_CONNECTED && !Blynk.connected()) {
18 Serial.println("Blynk'e yeniden baglaniliyor / reconnecting to Blynk");
19 Blynk.connect(3000); // en fazla 3 saniye bekle / wait at most 3 seconds
20 }
21}
22
23void setup() {
24 Serial.begin(115200);
25 WiFi.mode(WIFI_STA);
26 WiFi.begin(ssid, pass); // beklemeden başlat / start without waiting
27 Blynk.config(BLYNK_AUTH_TOKEN); // yalnız ayarla, bağlanmayı bekleme / configure only, don't block
28 timer.setInterval(10000L, baglantiKontrol); // 10 saniyede bir kontrol / check every 10 seconds
29}
30
31void loop() {
32 if (Blynk.connected()) {
33 Blynk.run();
34 }
35 timer.run(); // yerel işler internet yokken de çalışır / local tasks keep running offline
36}ESP32 mencoba tersambung ulang ke Wi-Fi sendiri ketika koneksinya putus; kode hanya menyambung ulang ke Blynk setelah Wi-Fi kembali. Kalau kamu ingin datamu terenkripsi, cukup sertakan BlynkSimpleEsp32_SSL.h sebagai ganti BlynkSimpleEsp32.h; koneksinya lalu memakai TLS di port 443, bukan 80, dan juga bisa menembus blokir port di sebagian jaringan sekolah atau kantor. Kalau kamu tidak mau menulis detail Wi-Fi langsung di kode, contoh Blynk.Edgent > Edgent_ESP32 dari library memungkinkanmu memasukkan nama jaringan dan kata sandi dari aplikasi Blynk IoT di ponsel; dengan cara ini auth token diberikan otomatis ketika perangkat ditambahkan, dan kode bisa diperbarui lewat udara (OTA). Kode yang sama juga berjalan di board ESP8266: untuk NodeMCU, cukup pakai ESP8266WiFi.h dan BlynkSimpleEsp8266.h.
Blynk dengan Raspberry Pi Pico W dan MicroPython
Blynk bukan hanya untuk ESP32. Kalau kamu memakai MicroPython di Raspberry Pi Pico W, kamu cukup menyalin file tunggal BlynkLib.py dari library Python Blynk ke Pico dengan Thonny. Perlu diingat, library ini sudah tidak dikembangkan aktif dan Blynk menyarankan API MQTT-nya untuk proyek baru; meski begitu, library ini tetap bisa diandalkan untuk belajar dan proyek sederhana. Kode di bawah mengendalikan LED bawaan Pico W dengan V0 dan mengirim pembacaan sensor suhu internal chip ke V2 sekali per menit. Buat perangkat terpisah untuk Pico W di Blynk.Console dan pakai token-nya. Kalau kamu baru mengenal MicroPython, Dasar-Dasar MicroPython adalah tempat yang bagus untuk mulai.
1import network, time
2from machine import Pin, ADC
3import BlynkLib # BlynkLib.py Pico'da olmalı / BlynkLib.py must be on the Pico
4
5WIFI_SSID = "AgAdi"
6WIFI_PASS = "Sifre123"
7BLYNK_AUTH = "PicoTokeniniBurayaYapistir"
8
9led = Pin("LED", Pin.OUT) # Pico W dahili LED / Pico W onboard LED
10sensor = ADC(4) # yongadaki sıcaklık sensörü / on-chip temperature sensor
11
12wlan = network.WLAN(network.STA_IF)
13wlan.active(True)
14wlan.connect(WIFI_SSID, WIFI_PASS)
15while not wlan.isconnected():
16 time.sleep(0.5)
17print("IP:", wlan.ifconfig()[0])
18
19blynk = BlynkLib.Blynk(BLYNK_AUTH, insecure=True) # 80 portu, TLS'siz / port 80, no TLS
20
21@blynk.on("V0")
22def v0_yazildi(value): # uygulamadaki anahtar / switch in the app
23 led.value(int(value[0]))
24
25@blynk.on("connected")
26def baglandi(ping):
27 print("Blynk hazir / ready, ping:", ping, "ms")
28 blynk.sync_virtual(0) # son V0 değerini iste / ask for the last V0 value
29
30son = time.ticks_ms()
31while True:
32 blynk.run()
33 if time.ticks_diff(time.ticks_ms(), son) >= 60000: # 60 saniyede bir / every 60 seconds
34 son = time.ticks_ms()
35 volt = sensor.read_u16() * 3.3 / 65535
36 sicaklik = 27 - (volt - 0.706) / 0.001721
37 blynk.virtual_write(2, round(sicaklik, 1)) # V2: sıcaklık / temperatureDi contoh ini koneksi dibuat tanpa enkripsi di port 80 dengan insecure=True; ini opsi yang paling hemat memori dan setara dengan BlynkSimpleEsp32.h di ESP32. Kalau parameter ini dihapus, library mencoba memakai TLS di port 443. Alasan kita mengukur waktu dengan ticks_ms di loop, bukan dengan time.sleep(), sama seperti di sisi Arduino: kalau blynk.run() tidak sering dipanggil, perintah jadi terlambat dan koneksinya putus. Sensor suhu internal chip bisa meleset beberapa derajat dari suhu ruangan; sambungkan DHT11 atau DS18B20 untuk pengukuran sungguhan.
Ide proyek dengan Blynk
- Colokan pintar: nyalakan dan matikan lampu meja atau kipas dari mana saja di dunia dengan relay; untuk pengkabelan relay, lihat Apa Itu Modul Relay?
- Penyiraman tanaman jarak jauh: jalankan pompa ketika sensor kelembapan tanah melaporkan tanah kering, dan pantau tingkat kelembapannya di grafik.
- Rumah kaca pintar: nyalakan kipas ketika suhu dan kelembapan naik dan terima notifikasi ketika nilainya melewati ambang; detailnya di Proyek Rumah Kaca Pintar.
- Alarm maling: kirim notifikasi kritis ke ponselmu dengan logEvent ketika sensor gerak PIR mendeteksi seseorang.
- Peringatan kebocoran gas: ketika sensor gas MQ-2 melewati ambangnya, bunyikan buzzer dan buat ponselmu ikut berbunyi.
- Stasiun cuaca: bandingkan suhu, kelembapan, dan tekanan dari BME280 di grafik mingguan.
- Pemantau pintu dan jendela: lihat di aplikasi apakah ada pintu yang tertinggal terbuka dengan reed switch.
Error umum dan solusinya
| Gejala atau pesan | Penyebab | Solusi |
|---|---|---|
| “Please specify your BLYNK_TEMPLATE_ID and BLYNK_TEMPLATE_NAME” ketika kompilasi | Barisnya tidak ada, ditulis sesudah #include, atau masih memakai BLYNK_DEVICE_NAME lama | Taruh tiga baris #define di paling atas, sebelum include; ganti DEVICE_NAME menjadi TEMPLATE_NAME |
| “'class BlynkWifi' has no member named 'notify'” ketika kompilasi | Perintah Blynk.notify() dari kode Blynk lama | Buat event di template dan pakai Blynk.logEvent() |
| “Invalid auth token” di Serial Monitor | Token tidak ada atau salah disalin, perangkat sudah dihapus, atau masih memakai token Blynk lama | Salin ulang token dari halaman perangkat tanpa spasi di awal atau akhir |
| Tidak ada apa-apa setelah baris “Connecting to AgAdi” | Board tidak bisa bergabung ke Wi-Fi: jaringan 5 GHz, kata sandi salah, atau sinyal lemah | Pakai jaringan 2,4 GHz; detailnya ada di panduan Wi-Fi ESP32 |
| “Connecting to blynk.cloud:80” terus berulang atau “Login timeout” | Jaringan tidak punya internet, atau jaringan sekolah atau kantor memblokir koneksinya | Coba hotspot ponsel; pakai port 443 dengan BlynkSimpleEsp32_SSL.h |
| “Heartbeat timeout”, perangkat sering Offline | delay() yang lama atau perulangan yang memblokir di loop, catu daya lemah | Pindahkan jeda ke BlynkTimer, pakai kabel dan adaptor daya yang bagus |
| Tidak terjadi apa-apa ketika sakelar ditekan | Widget terikat ke datastream lain atau pin di BLYNK_WRITE berbeda | Pin di pengaturan widget harus sama dengan Vx di kodemu |
| Gauge selalu menunjukkan 1 atau grafik kosong | Max datastream dibiarkan 1 atau riwayat diatur ke Last Value | Sesuaikan Min dan Max dengan rentang sensor dan ubah pengaturan riwayat |
| Setelah beberapa waktu tidak ada data yang masuk sama sekali | Kuota pesan bulanan sudah habis | Perpanjang interval kirim dan kirim hanya ketika ada perubahan |
| Relay bekerja terbalik atau tidak pernah lepas | Modul aktif LOW atau sinyal 3,3 V tidak cukup | Balik nilai ROLE_AKTIF_LOW dan pakai modul yang kompatibel dengan 3,3 V |
Blynk, web server sendiri, atau MQTT?
| Metode | Kelebihan | Kekurangan | Kapan dipilih |
|---|---|---|---|
| Blynk IoT | Dashboard siap pakai tanpa menulis aplikasi, akses dari luar rumah, notifikasi | Batas paket gratis, bergantung pada cloud | Prototipe cepat dan pemantauan jarak jauh |
| Web server ESP32 | Sepenuhnya gratis, bekerja tanpa internet | Biasanya hanya bisa diakses dari jaringan yang sama, antarmukanya kamu tulis sendiri | Panel kendali di dalam rumah |
| MQTT dan Home Assistant | Pesan tanpa batas, berjalan lokal, otomatisasi yang andal | Pengaturan lebih lama, butuh server yang selalu menyala | Sistem rumah pintar permanen |
| Bot Telegram | Gratis, ideal untuk peringatan dan perintah | Tidak ada grafik atau dashboard | Alarm dan perintah sederhana |
Singkatnya, Blynk adalah cara termudah untuk mendapat hasil cepat dengan dashboard siap pakai yang tampilannya bagus, dan untuk menjangkau proyekmu dari luar rumah. Kalau kamu ingin sistem tanpa batas yang sepenuhnya lokal, baca Web Server dan WebSocket ESP32 atau MQTT dan Home Assistant dengan ESP32; kalau kamu cuma ingin mengirim peringatan ke ponsel, lihat panduan Bot Telegram ESP32.
Cara yang lebih mudah: BlueGrays IoT
Blynk adalah platform yang fleksibel dan andal. Tapi kalau kamu cuma ingin menyalakan relay atau memantau sensor dari ponsel, mungkin kamu tidak ingin menyiapkan template, datastream, widget, dan auth token secara manual. BlueGrays IoT melakukannya dengan template siap pakai: kamu memilih satu template di Labku › Perangkatku › Tambah perangkat baru, Ohmi menyiapkan kodenya dengan kunci perangkatmu, lalu kamu meng-upload-nya sekali dari Arduino IDE dengan library BlueGraysIoT. Ini berjalan dengan ESP32 dan Raspberry Pi Pico W lewat Wi-Fi 2,4 GHz, dan perangkat pertamamu gratis. Untuk detailnya, lihat panduan mengendalikan ESP32 dari ponsel.
Begitu kamu memahami trio template, datastream, dan auth token, menghubungkan proyek ESP32 baru ke ponselmu dengan Blynk hanya butuh beberapa menit. Gabungkan contoh LED, relay, dan sensor di sini, dan kamu sudah punya awal sistem rumah pintarmu sendiri. Di aplikasi BlueGrays kamu juga bisa menemukan proyek ESP32 seperti mengedipkan LED, terhubung ke Wi-Fi, mengukur suhu dengan DHT22, lampu pintar, penyiraman tanaman, dan alarm gerak dengan Telegram, masing-masing dengan skema rangkaian dan kode langkah demi langkah.
Pertanyaan umum
Apakah Blynk gratis?
Ya, Blynk punya paket gratis untuk penggunaan pribadi. Per Oktober 2026, paket ini menawarkan 5 perangkat, 100.000 pesan perangkat per bulan, dan riwayat data 1 minggu. Untuk lebih banyak perangkat, pesan tanpa batas, dan penyimpanan data yang lebih lama, kamu perlu pindah ke paket bulanan berbayar.
Di mana aku bisa menemukan auth token Blynk?
Di Blynk.Console, buka perangkatmu dari bagian Devices; di Device Info kamu akan melihat baris BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN yang siap ditempel ke kodemu. Di Blynk baru, token tidak lagi dikirim lewat email, dan setiap perangkat punya token sendiri.
Apakah aplikasi Blynk lama masih berfungsi?
Tidak. Aplikasi Blynk lama (Legacy) dihapus dari toko aplikasi pada 2022 dan server cloud-nya dimatikan pada 31 Desember 2022. Kamu perlu membangun ulang proyek lama di platform Blynk IoT yang baru dengan template dan datastream; sebagian besar kode ESP32 bisa dipakai lagi dengan sedikit perubahan.
Apa itu virtual pin di Blynk?
Virtual pin adalah saluran data bernomor antara aplikasi dan kodemu, dan tidak mewakili kaki fisik di board. Nomornya dari V0 sampai V255; nilai dari aplikasi dibaca dengan BLYNK_WRITE(Vx), dan nilai dari board dikirim ke aplikasi dengan Blynk.virtualWrite(Vx, value). Dengan begitu kamu bisa memproses nilai yang masuk sesukamu dan menampilkan data sensor di dashboard.
Kenapa ESP32-ku tampil offline di Blynk?
Penyebab paling umum adalah auth token yang salah atau tidak ada, ESP32 yang mencoba bergabung ke jaringan 5 GHz, pemanggilan delay() yang lama di loop(), dan catu daya yang lemah. Kalau baris “Ready” tidak muncul di Serial Monitor, masalahnya ada di koneksi; kalau muncul, pastikan kamu melihat perangkat yang benar di aplikasi.
Apakah Blynk bisa bekerja tanpa internet?
Tidak. Di Blynk IoT, perintah dan data lewat Blynk.Cloud, jadi ESP32 dan ponselmu sama-sama butuh akses internet. Untuk kendali tanpa internet, kamu bisa memakai web server bawaan ESP32, ESP-NOW, atau Bluetooth.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
LED Berkedip dengan ESP32
Mengajarkan penggunaan output GPIO dasar dengan ESP32. Kita membuat efek berkedip dengan menyalakan dan mematikan LED dari pin digital. Versi ESP32 dari proyek blink klasik di Arduino UNO; perintah blink dasar di lingkungan Arduino sama, tetapi susunan pin ESP32 dan level GPIO 3,3 V-nya berbeda dengan Arduino UNO.

Kedipan LED Bawaan ESP32
Mengedipkan LED biru bawaan di ESP32 DevKit V1. Tidak perlu komponen eksternal! Proyek pertama yang sebaiknya kamu coba ketika membeli ESP32. GPIO 2 tersambung ke LED bawaan.

Membaca Intensitas Cahaya dengan Modul LDR ESP32
Memantau secara real-time di Serial Monitor nilai ADC mentah modul LDR dan persentase cahaya relatif yang dihitung dari nilai acuan gelap dan terang. Persentase ini bukan pengukuran lux. Mengajarkan logika kalibrasi modul. Ideal dikerjakan sebelum Proyek 10, karena dipakai untuk menentukan nilai ambang.

Koneksi Wi-Fi STA ESP32 (dengan Layar LCD)
Di proyek ini, kita menyambungkan ESP32 ke jaringan Wi-Fi rumah dalam mode Station (STA) dengan cara yang aman dan tahan gangguan. Kita menyimpan SSID dan kata sandi di file secrets.h terpisah agar tidak bocor ke Git, menyiapkan mekanisme sambung ulang otomatis, dan menampilkan tingkat sinyal RSSI dan alamat IP di layar LCD I2C. LED bawaan bekerja sebagai indikator status. Ini adalah pengelola koneksi kelas produksi.

Suhu dan Kelembapan DHT22 ESP32 (dengan Layar LCD)
Proyek ini mengukur suhu dan kelembapan sekitar dengan sensor DHT22 dan menampilkan datanya secara real-time di LCD I2C 16x2. Data dibaca dari sensor dengan protokol satu kabel lewat library Adafruit DHT. Proyek ini menjadi dasar untuk stasiun cuaca IoT, otomasi rumah pintar, atau sistem pemantauan lingkungan di rumah kaca. Komunikasi dengan DHT22 dilakukan lewat pin GPIO 4 ESP32.

Lampu Pintar ESP32 (PIR + LDR + Relay + OLED)
Ubah lorong, kamar mandi, atau gudangmu menjadi lampu pintar dengan ESP32! Dengan sensor gerak PIR, sensor cahaya LDR, dan modul relay, kita membuat skenario klasik "lampu menyala ketika ada gerakan dalam gelap"; jika sudah terang, gerakan TIDAK menyalakan lampu, jadi energi hemat di siang hari. Lampu menyala 30 detik; jika gerakan berlanjut, timer diulang. OLED SSD1306 menampilkan status dengan font besar (NYALA / SIANG / MENUNGGU) dan hitung mundur.

Sistem Alarm Gerakan ESP32 (PIR + Buzzer + LED + Telegram)
Sistem alarm keamanan pintar yang menyalakan buzzer dan LED ketika sensor PIR mendeteksi gerakan, sekaligus mengirim notifikasi instan ke pemilik lewat Telegram. Cooldown 30 detik membatasi seberapa sering alarm berulang; mekanisme ini tidak memvalidasi deteksi PIR atau menghilangkan pemicu palsu. Cocok untuk rumah, garasi, gudang, atau ruang kerja. Dengan ESP32-CAM bisa ditambahkan notifikasi berfoto; dengan ESP32 DevKit V1 klasik, notifikasinya berupa teks.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

