Session 4.4 — Hackathon İdeasyonu: IoT Proje Planlarını Kilitle
Instructor Guide
Blynk IoT Sistemleri & Temel Kavramlar
BÖLÜM 1: MiMARiYi ANLAMAK
Bir IoT (Nesnelerin İnterneti) projesi yaparken sistemimiz üç ana ayaktan oluşur:
Donanım (ESP32 & Sensörler): Fiziksel dünyayı hisseden ve tepki veren kısımdır. (Sensörlerden gelen verileri okur, motorları/röleleri çalıştırır).
Yazılım (Arduino IDE): ESP32'nın beynine ne yapması gerektiğini söylediğimiz, C++ diliyle kod yazdığımız ve karta yüklediğimiz programdır.
Bulut ve Arayüz (Blynk): Dünyanın herhangi bir yerinden sistemimizi izlememizi ve kontrol etmemizi sağlayan köprüdür.
İletişim Nasıl Gerçekleşir?
Sensör → Fiziksel Pin üzerinden ESP karta ulaşır → ESP bu veriyi Wi-Fi üzerinden Blynk Sunucusuna gönderir → Sunucu bu veriyi telefonundaki Blynk uygulamasına yansıtır.
BÖLÜM 2: FİZİKSEL PİNLER VS. SANAL PİNLER (VIRTUAL PINS)
Blynk platformunu öğrenirken kavranması gereken en kritik konu Sanal Pin (Virtual Pin) mantığıdır.
1. Fiziksel Pinler Nedir?
Fiziksel pinler, kartın üzerinde gördüğün metal bacaklardır (GPIO 5, GPIO 4, GPIO 34 vb.). Gerçek dünyadaki akımı (voltajı) okurlar veya dışarıya akım verirler.
Dijital Pinler (GPIO 4, GPIO 5, GPIO 12...): Sadece 1 (Açık/HIGH) veya 0 (Kapalı/LOW) durumunu okur veya yazar. (Röle aç/kapat, Butona basıldı/basılmadı vb.)
Analog Pinler (ADC — GPIO 32-39): ESP32'de çoklu ADC kanalı bulunur. 0 ile 4095 arasında değişen voltaj seviyelerini okur. (Toprak nemi, LDR ışık şiddeti vb.)
2. Sanal Pinler (Virtual Pins) Nedir?
Sanal pinler kartın üzerinde fiziksel olarak bulunmayan, sadece Blynk sunucusu ile senin kartın arasında havadan (Wi-Fi) veri taşımak için oluşturulmuş "Haberleşme Kanallarıdır" (V0, V1, V2... V255).
Neden Sanal Pin Kullanmalıyız?Eğer telefondaki butonu doğrudan fiziksel bir pine (örneğin GPIO 5'e) bağlarsan, kodun içinde o veriyi işleyemez, kontrol edemez veya şarta bağlayamazsın. Sanal pinler veriyi önce koda getirir, sen kodda "Eğer V0'dan komut gelirse ve sıcaklık da uygunsa şu fiziksel pini aç" gibi akıllı kararlar alabilirsin.
BÖLÜM 3: SANAL PİN KODLAMASI (İKİ YÖNLÜ İLETİŞİM)
A) Telefondan Karta Emir Göndermek (Geliş Yönü)
Telefondaki bir butona (V0) basıldığında koddaki bu BLYNK_WRITE bloğu anında çalışır:
BLYNK_WRITE(V0) {
int gelenDeger = param.asInt(); // Telefondan gelen 0 veya 1 komutunu yakala
if (gelenDeger == 1) {
digitalWrite(5, HIGH); // GPIO 5 pinine bağlı Röleyi AÇ
} else {
digitalWrite(5, LOW); // Röleyi KAPAT
}
}
B) Karttan Telefona Veri Göndermek (Gidiş Yönü)
Sensörden okuduğumuz toprak nemi gibi bir bilgiyi telefondaki grafiğe (V1) göndermek için kullanılır:
ESP Sınırları & Wi-Fi Provisioning (Bulut Bağlantısı)
Arduino UNO'dan ESP32'ye geçiş. 3.3V mantık seviyesi, pin sınırlamaları ve Arduino IDE kurulumu yapılır. Donanım, C++ kodlarıyla Blynk sunucusuna (Wi-Fi) bağlanır.
Hardware Requirements
ESP32 Dev ModuleMicro-USB KablosuWindows/Mac PC (Arduino IDE)
Objectives & Key Outcomes
✓
ESP pinout şemasını okumak.
✓
3.3V ile 5V tolerans farklarını anlamak ve kısa devreleri önlemek.
✓
Blynk IoT (v2) üzerinde Template ve Device profillerini doğru oluşturmak.
✓
C++ kodu içine Auth Token, SSID ve Password girerek cihazı Wi-Fi üzerinden ağa bağlamak.
💻 Örnek C++ Kodu: Wi-Fi ve Blynk Bulutuna Bağlanma
🤖 AI Generation Prompt:
"Write a C++ code for an ESP32 using the BlynkSimpleEsp32 library to connect to Wi-Fi. It should define BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, and BLYNK_AUTH_TOKEN at the top. Setup should include Serial.begin(115200) and Blynk.begin(). The void loop should just run Blynk.run()."
Sketch → Include Library → Manage Libraries'dan “Blynk” arayıp Blynk by Volodymyr Shymanskyy kütüphanesini kurun.
ESP kartı USB ile bağlayın. Tools → Board'dan kartınızı (ESP32 1.0 veya ESP32 Dev Module), Tools → Port'dan COM portunu seçin.
Yukarıdaki kodu yapıştırıp SSID/Password/Token değiştirin, Upload butonuna basın.
Serial Monitor (115200 baud) açın → “Connected to Blynk” mesajını görmelisiniz.
Blynk Dashboard Kurulumu (Web & Mobil)
blynk.cloud adresine giriş yap → Sol menüden "Templates" sekmesine tíkla.
"+ New Template" butonuna bas. Ayarlar:
Alan
Değer
Template Name
SmartGreenhouse (veya ders adı)
Hardware
ESP32
Connection Type
WiFi
Template açıldıktan sonra "Datastreams" sekmesine geç. Şimdilik hiçbir Datastream ekleme; ilerideki oturumlarda eklenecek.
Sol menüden "Devices" → "+ New Device" → "From Template" seç. Template'ını seçip cihaza isim ver ("Grup-1-ESP" gibi).
Açılan ekranda BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME ve BLYNK_AUTH_TOKEN otomatik görünür. Bunları yukarıdaki C++ koduna kopyala.
Session 3.2 — Hardware & Coding
Seviye 1: Uzaktan Röle ve Pompa Kontrolü (BLYNK_WRITE)
Fiziksel pinler ile Sanal pinler (Virtual Pins) arasındaki fark öğrenilir. Dünyanın herhangi bir yerinden telefondaki Buton Widget'ı (V0) kullanılarak fiziksel röle (GPIO 5) tetiklenir.
Hardware Requirements
ESP325V Röle ModülüMini Su PompasıDış Batarya
Kablolama Tablosu (ESP Pin → Bileşen)
Bileşen
Bileşen Pini
ESP32 Pini
Not
5V Röle Modülü
VCC
VIN (5V)
VIN (5V)
3.3V'dan besleme! Röleyi donanıp resetler
5V Röle Modülü
GND
GND
GND
—
5V Röle Modülü
IN (Signal)
GPIO 5
GPIO 5
Kodda: digitalWrite(5, HIGH)
Mini Su Pompası
+
Röle COM & NO terminaline
Dış batarya ile paralel bağlanır
Mini Su Pompası
−
Dış batarya GND'ye
—
Bu Oturumda Ne Yapacağız?
Röleyi breadboard üzerine yerleştirin. VCC → VIN (5V), GND → GND, IN → GPIO 5 bağlayın.
Mini su pompasının + kablosunu rölenin NO (Normally Open) terminaline, dış bataryanın + kablosunu COM terminaline bağlayın. Pompanın − kablosu ve bataryanın − kablosu birbirine bağlanır.
Yukarıdaki C++ kodunu yükleyin. Serial Monitor’da “Connected” görün.
Blynk mobil uygulamasındaki V0 Butonuna basın → Röle tıklamalı, pompa dönmeli.
Deney: Butonu bırakın → Pompa durmalı. Fiziksel pinden değil, Sanal Pin (V0)’dan kontrol ettiğinizi öğrencilere vurgulayın.
Objectives & Key Outcomes
✓
Fiziksel vs. Sanal (V0) Pin mantığını, aralarındaki köprüyü teknik olarak kavramak.
✓
BLYNK_WRITE fonksiyonunu C++ ile kullanmak ve tetikleyici oluşturmak.
✓
Blynk içinden Buton durumunu parametre param.asInt() olarak koda dökmek.
✓
Röle üzerinden bir su pompasının (motor yükünün) elektriksel yalıtımını (izolasyon) sağlamak.
💻 Örnek C++ Kodu: BLYNK_WRITE ile Pompaya Hükmetmek
#define RELAY_PIN 5 // GPIO 5 on ESP32
// Bu fonksiyon, telefondaki V0 butonuna basıldığı an anında tetiklenir
BLYNK_WRITE(V0) {
int butonDurumu = param.asInt(); // Telefondan gelen değeri (0 veya 1) al
if (butonDurumu == 1) {
digitalWrite(RELAY_PIN, HIGH); // Pompayı aç
} else {
digitalWrite(RELAY_PIN, LOW); // Pompayı kapat
}
}
void setup() {
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Başlangıçta güvenli modda kapalı olsun
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run();
}
Mobil uygulama için: Blynk uygulamasını aç → Device'ı seç → "Edit" → Button widget ekle → V0'a bağla → Mode: "Switch" yap.
Session 3.3 — Cloud Integration
Seviye 2: Analog Veri Okuma ve Görselleştirme (BlynkTimer)
Saksıdaki toprak nemi (veya MQ-2 gaz verisi) okunarak telefondaki Gauge (İbre) widget'ına aktarılır. Sistem çökmesini (Flooding ping limitlerini) önlemek için delay() komutu yerine BlynkTimer kullanılır.
Hardware Requirements
ESP32Toprak Nem Sensörü veya MQ-2 S.Jumper Kablolar (F-F, M-M)
Kablolama Tablosu (ESP Pin → Bileşen)
Bileşen
Bileşen Pini
ESP32 Pini
Not
Toprak Nem Sensörü
VCC
3.3V
3.3V
—
Toprak Nem Sensörü
GND
GND
GND
—
Toprak Nem Sensörü
Analog Out
GPIO 34
GPIO 34 (ADC)
ESP32 ADC pinlerinden biri
Bu Oturumda Ne Yapacağız?
Toprak Nem Sensörünü VCC → 3.3V, GND → GND, ADC → GPIO 34 (ESP32'de GPIO 34) olarak bağlayın.
Sensör probını kuru bir bardaktaki toprağa sokun.
C++ kodunu yükleyin. Serial Monitor’da analogRead çıktılarını izleyin (kuru = yüksek, ıslak = düşük).
Blynk Dashboard'taki Gauge widget'ına bakın — ibre canlı olarak hareket etmeli.
Deney: Toprağa biraz su dökün → Değerin düştüğünü hem Serial Monitor'da hem Blynk Gauge'da görmelisiniz.
Tartışma: Neden delay(2000) yerine BlynkTimer kullandık? (Cevap: delay kullanılsaydı Blynk.run() çağrılmayacak ve cihaz buluttan kopacaktı.)
Objectives & Key Outcomes
✓
ESP32'nin ADC pinlerinden (GPIO 34, 35 vb.) analog veri yakalamak.
✓
analogRead() mantığını C++'da uygulayıp 0-4095 arası sayısal değeri ölçeklemek (Map).
✓
Kritik: Cihazda neden delay() kullanılmaması gerektiğini (Flooding) anlayıp donanımsal BlynkTimer yapısı kurmak.
✓
Blynk.virtualWrite() fonksiyonu aracılığıyla yerel verileri V1 üzerinden Gauge grafiğine atmak.
💻 Örnek C++ Kodu: Sensör Verisini Buluta Gönderme
#define SENSOR_PIN 34 // GPIO 34 (ADC)
BlynkTimer timer;
void toprakVerisiYolla() {
int nemSeviyesi = analogRead(SENSOR_PIN); // 0 ile 4095 arası analog değer oku
Blynk.virtualWrite(V1, nemSeviyesi); // Değeri V1 kanalından telefona ("Buluta") yolla
}
void setup() {
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Her 2000 milisaniyede (2 sn) bir toprakVerisiYolla() fonksiyonunu çalıştır
// (NOT: delay(2000) kullansaydık cihaz buluttan kopardı. Timer hayat kurtarır!)
timer.setInterval(2000L, toprakVerisiYolla);
}
void loop() {
Blynk.run();
timer.run(); // Timer'ın arka planda tik tak saymasını başlat
}
Blynk Dashboard: Gauge (İbre) Widget Ekleme
Templates → Datastreams sekmesinden "+ New Datastream" → Virtual Pin:
Ayarlar:
Alan
Değer
Name
Toprak Nemi
Pin
V1
Data Type
Integer
Min / Max
0 / 4095
Default Value
0
Web Dashboard'a geç. Widget listesinden "Gauge" sürükle.
Widget ayarlarında Datastream = "V1 (Toprak Nemi)" seç. Renk skalasını yeşil-sarı-kırmızı olarak düzenle (düşük nem = kırmızı).
Mobil: Device → Edit → Gauge widget ekle → V1 → Scale: 0-4095. İbre canlı olarak topraktıki neme göre hareket edecektir.
Session 3.4 — AI / Conditionals
Seviye 3: Dijital Sensörler ve Şartlı Push Bildirimler
DHT11 (Isı/Nem) ve Alev sensörlerinden gelen veriler şartlı ifadelere (If/Else) sokulur. Alev algılandığında veya sıcaklık eşiği aştığında donanımsal Buzzer öter ve telefona Push Notification gider.
Kodda: #define BUZZER_PIN 12 — Not: GPIO 12 bir bootstrap pinidir. Başlangıçta LOW olduğundan sorun çıkmaz; ancak alternatif olarak GPIO 13 kullanılabilir.
Deney 2: DHT11'i elin arasında tutup ısıtın → Sıcaklık değerinin Blynk'teki Labeled Value widget'ında yükseldiğini izleyin.
Objectives & Key Outcomes
✓
Arduino kütüphanelerini kurmak (DHT.h) ve projeye (include) metodolojisiyle çekmek.
✓
Dijital ortamda okuma gerçekleştirmek ve digitalRead() kullanarak ardışık if operatörleri (&&, ||) bağlamak.
✓
Blynk Automations (Events) sekmesini konfigüre edip telefona giden kritik tetikleyiciler kurmak.
✓
Buluttaki sanal tetikleme ağacı ile yerel analog sistemi %100 senkron hale getirmek.
💻 Örnek C++ Kodu: Şartlı İşlemler ve Push Bildirimi
🤖 AI Generation Prompt:
"Can you create an ESP32 Blynk code that acts as a fire alarm? It should use a DHT11 sensor on GPIO 4 to read temperature and a Flame sensor on GPIO 14 (returns LOW on fire). Use a BlynkTimer running every 2 seconds. In the timer function, if temperature > 35.0 OR flame is LOW, turn ON a buzzer on GPIO 12 and push a notification using Blynk.logEvent('fire_alert', 'Fire!'). Send the temperature to Virtual Pin V2. Include the full Blynk C++ setup."
Seviye 4: Akıllı ve Otonom Sera Sistemi (Mimari ve Kablolama)
Büyük proje (Bitirme) donanım kurulumu. DHT11, Toprak Nem sensörü, LDR, Röle ve Su Pompası aynı ESP ağına bağlanır. ESP'nin güç darboğazını aşmak için 5V bileşenler doğrudan VIN pinine taşınır.
Hardware Requirements
ESP32DHT11 SensörüToprak Nem SensörüLDR (Işık Direnci)Röle & Pompa Bütünlemesi
Kablolama Tablosu — Tam Sera Sistemi (ESP Pin → Bileşen)
Bileşen
Bileşen Pini
ESP32 Pini
Not
DHT11
DATA
GPIO 4
GPIO 4
Isı + Nem
DHT11
VCC / GND
3.3V / GND
3.3V / GND
—
Toprak Nem Sensörü
Analog Out
GPIO 34
GPIO 34
ADC1 — Analog okuma
Toprak Nem Sensörü
VCC / GND
3.3V / GND
3.3V / GND
—
LDR Modülü
Analog Out
GPIO 35
GPIO 35
ADC1 — Toprak Nemi ile eş zamanlı okunabilir
LDR Modülü
VCC / GND
3.3V / GND
3.3V / GND
—
5V Röle
IN
GPIO 5
GPIO 5
Pompa tetikleyici
5V Röle
VCC
VIN (5V)
VIN (5V)
3.3V'dan ASLA beslemeyiniz
5V Röle
GND
GND
GND
—
Pompa
+/−
Röle NO/COM + Dış Batarya
Motor yükü izole
Bu Oturumda Ne Yapacağız?
Önceki günlerde kullanılan bütün bileşenleri (DHT11, Toprak Nem, LDR, Röle, Pompa) tek bir breadboard üzerinde birleştirin.
Yukarıdaki kablolama tablosunu tahtaya çizin. Her grubun kendi fiziksel şemasını kağıda çizmesini sağlayın.
Güç hattını kontrol edin: Röle VCC'yi ESP'nin VIN (5V) pinine bağlayın. 3.3V'dan asla beslememeye dikkat!
LDR sensörünü GPIO 35 ADC pinine bağlayın.
Bütün bağlantıları tamamladıktan sonra güç vermeden eğitmen kontrolüne gönderin (kısa devre riski).
Onaydan sonra USB bağlayıp bir önceki oturumun temel kodunu yükleyerek her sensörü tek tek test edin.
Objectives & Key Outcomes
✓
Endüstriyel çaplı büyük birden çok sensörlü bir sistemin karmaşık güç şemasını kurgulamak.
✓
Röle ve Pompa tahribatından kartı korumak için 5V ihtiyacını VIN (veya VU) pinleriyle çözmek.
✓
Pin çakışmalarını (Aynı pinde iki verici) önceden fark edip kağıt üzerinde donanım diyagramı çizmek.
Blynk Dashboard: Sera Projesi İçin Tam Pin Haritası
Bu oturumda yeni Datastream eklemiyoruz fakat mevcut tüm pin atamalarını tek bir tabloda derleyin (projekte/tahtada):
Sanal Pin
Widget
Veri Yönü
Açıklama
V0
Button (Switch)
Telefon → Kart
Manuel Pompa Aç/Kapat
V1
Gauge / SuperChart
Kart → Telefon
Toprak Nem Değeri (0-4095)
V2
Button (Switch)
Telefon → Kart
Otonom/Manuel Mod Seçici
V3
Labeled Value
Kart → Telefon
Sıcaklık (°C — DHT11)
V4
Labeled Value
Kart → Telefon
Nem (% — DHT11)
V5
Gauge
Kart → Telefon
Işık Şiddeti (LDR)
Session 4.2 — Cloud & Logic Fusion
Seviye 4: Otonom Mantık (Auto/Manual Mod) & SuperChart
Koda akıl katıyoruz. Telefondan 'Otomatik/Manuel' seçimi (V2) yapılır. Manuelde kullanıcı basarsa pompayı sular. Otomatikteyse toprak nemi < 1500 (kuru) olduğunda kendi karar verip sular. Veriler SuperChart'ta canlı loglanır.
Hardware Requirements
Bağlantısı tamamlanmış Sera Sistemi
Bu Oturumda Ne Yapacağız?
Blynk Dashboard'a V2 Switch widget'ı ekleyin (OTOMATİK / MANUEL etiketleriyle).
Kodu yükleyin. Önce Manuel moda alın → V0 butonuyla pompayı açıp kapatın.
Sonra Otomatik moda geçin → Toprağı kurutun (sensörü havaya kaldırın) → 3 saniye içinde pompa kendiliğinden açılmalı.
Sensörü ıslak toprağa geri koyun → Pompa kendiliğinden kapanmalı.
SuperChart widget'ını açın → Nem (V1) ve Sıcaklık (V3) çizgilerinin canlı olarak yükselip düştüğünü gözleyin.
Tartışma: Neden başlangıçta pompa LOW (kapalı)? Wi-Fi kopsa ne olur? (Sonraki oturumda cevaplanacak.)
Objectives & Key Outcomes
✓
Derinlemesine C++ If/Else State Machine kullanarak "Mod Değiştiricilik" (Auto vs Manual) sağlamak.
✓
Otonom kodun BlynkTimer akışının içindeki kontrol dengesini sağlamak (Pompayı açınca bir Timer tetikleyip 3 saniye sonra durdurmak gibi).
✓
Sistem durum loglaması, sıcaklık geçmişi ve otonom sülama sürelerini "SuperChart" ile dashboard arayüzüne taşımak.
💻 Örnek C++ Kodu: Otonom vs Manuel Karar Ağacı Serası
🤖 AI Generation Prompt:
"Write an advanced ESP32 Blynk code for an autonomous greenhouse. It must use a 5V relay (Pump/GPIO 5) and an analog soil moisture sensor (GPIO 34). Implement an Auto/Manual state machine using Blynk Virtual Pin V2 as a mode switch. When V2=1 (Auto Mode), check soil every 3 seconds using BlynkTimer; if moisture < 1500, turn pump ON, else OFF. When V2=0 (Manual Mode), the pump is only controlled by a button on Virtual Pin V0. Send soil moisture to Virtual Pin V1."
💻 Code: Auto/Manual Decision Tree
#define BLYNK_TEMPLATE_ID "TMPLxxxxxx"
#define BLYNK_TEMPLATE_NAME "Device"
#define BLYNK_AUTH_TOKEN "YourAuthToken"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "NetworkName";
char pass[] = "Password";
#define PUMP_PIN 5 // GPIO 5
BlynkTimer timer;
int modeStatus = 0; // 0=Manual, 1=Auto
int dryThreshold = 1500;
// V2 Switch (Auto/Manual Mode Selector)
BLYNK_WRITE(V2) {
modeStatus = param.asInt();
}
// V0 Manual Watering Button
BLYNK_WRITE(V0) {
if (modeStatus == 0) { // ONLY works in Manual mode
digitalWrite(PUMP_PIN, param.asInt());
}
}
void autoGreenhouseLogic() {
int soilMoisture = analogRead(34);
Blynk.virtualWrite(V1, soilMoisture); // Send data to SuperChart on V1
if (modeStatus == 1) { // If system is in AUTO mode, let the code decide
if (soilMoisture < dryThreshold) {
digitalWrite(PUMP_PIN, HIGH); // Soil is dry: Turn pump ON
} else {
digitalWrite(PUMP_PIN, LOW); // Soil is wet: Turn pump OFF
}
}
}
void setup() {
Serial.begin(115200);
pinMode(PUMP_PIN, OUTPUT);
digitalWrite(PUMP_PIN, LOW);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(3000L, autoGreenhouseLogic);
}
void loop() {
Blynk.run();
timer.run();
}
Gerçek dünyadaki IoT sorunları. Ya cihaz Wi-Fi'dan koparsa? Uygulama donduğunda pompa sonsuza kadar açık kalıp serayı sel basar mı? Gecikmesiz (Non-blocking) C++ felsefesi ve donanım zorlukları.
Hardware Requirements
ESP32 Boards
Bu Oturumda Ne Yapacağız?
Önceki oturumun çalışan sera kodunu açın. connectionWatchdog() fonksiyonunu koda ekleyin.
Deney: Pompayı Otomatik modda açık hale getirin, sonra Wi-Fi router'ı kapatın → 10 saniye içinde pompa kendiliğinden kapanmalı.
Wi-Fi'yı tekrar açın → Cihaz otomatik bağlanmalı ve kontrole devam etmeli.
Tahta Tartışması: “Watchdog olmadan sera projen 3 saat çalışsa ve Wi-Fi kopsa, pompa sonsuza kadar açık kalır. Ne olur?” → Sel, motor yangını, batarya tükenmesi.
Ekstra Kavram: ESP32'nin çoklu ADC1 pinlerini (GPIO 32-39) kullanarak birden fazla analog sensörü aynı anda farklı pinlere bağlayıp eş zamanlı okuma yapabilirsiniz. Multiplexer gerekmez!
Objectives & Key Outcomes
✓
Wi-Fi Disconnect durumunda ESP32'nun sonsuz döngüde beklemesini önleyen donanımsal koruma blokları.
✓
Öğrencilerin yaptığı kodlarda potansiyel güvenlik açıklarını / kilitlenme senaryolarını hackathon öncesi analiz etmek.
💻 Eğitmen Kodu: Wi-Fi Koptuğunda Sistemi Güvene Almak (Fail-Safe)
void connectionWatchdog() {
if(!Blynk.connected()){
// Kritik Donanım! Wi-Fi koptuğunda sunucudan kapatma emri gelemez.
// O yüzden donanımı serayı sel basmasın veya motor yanmasın diye GÜVENLİ KONUMA (LOW) çek.
digitalWrite(PUMP_PIN, LOW);
Serial.println("Bağlantı koptu, motorlar durduruldu! Tekrar bağlanılıyor...");
Blynk.connect(); // Yeniden bağlanmayı tetikle
}
}
void setup() {
// ... diğer kurulum kodları
// Sistemin arka planında her 10 saniyede bir bağlantının canlılığını test et
timer.setInterval(10000L, connectionWatchdog);
}
// Bu basit güvenlik yaklaşımı Hackathon jürisinden ekstra teknik puan getirecektir!
Session 4.4 — Planning Stage
Hackathon İdeasyonu: IoT Proje Planlarını Kilitle
Gruplar hackathon temalarını belirler. Kullanacakları sensörü (Fiziksel) ve bulut arayüzünü (Sanal) kararlaştırıp Sistem Mimari Diyagramını çizerler. Eğitmen onayından sonra taslaklar kilitlenir.
Hardware Requirements
Beyaz Tahta / Proje Şablon FormlarıTüm Sensör Envanteri
Bu Oturumda Ne Yapacağız?
Her grup bir proje fikri belirler (Akıllı Ev, Sera, Güvenlik Sistemi vb.).
Grup tahtaya Sistem Mimari Diyagramı çizer: Sensörler → ESP → Blynk Cloud → Mobil Uygulama → Aktüatörler.
Hangi Virtual Pin'lerin hangi sensör/aktüatöre atanacağını tablo halinde yazarlar.
Görev dağılımı yaparlar: (1) Donanım Mühendisi — kablolama, (2) Yazılım Geliştirici — C++ kodu, (3) Arayüz Tasarımcısı — Blynk Dashboard widget'ları.
Eğitmen her grubun planını inceleyip onaylar veya geri bildirim verir.
Onaylanan planlar kilitlenir — artık değiştirilemez. Yarın hackathon başlıyor!
Objectives & Key Outcomes
✓
Bulut Dashboard'u + Sensör Algısı + Aktüatör etkileşimi içeren yenilikçi bir fikir (Prototip) kurgulamak.
✓
Blynk bağlantı mimarisini kağıt üzerinde şematize ederek hangi Virtual Pin'lerin hangi sensörleri okuyacağını haritalamak.
✓
Grup için Sprint bazlı görev dağılımı (UI Tasarımcısı, Donanım Çizimcisi, C++ Kod Geliştiricisi) yapıp onay almak.