Bölüm 10: Kablolara Veda Edin: ESP32'yi Wi-Fi Üzerinden (OTA) Programlamak
Projenizi güzelce kutuladınız, lehimlediniz ve ulaşması zor bir yere monte ettiniz. Peki kodda ufak bir hata fark ederseniz veya yeni bir özellik eklemek isterseniz ne olacak? Cihazı yerinden sökmeye hiç gerek yok! Bu bölümde akıllı telefonların güncelleme almasına benzeyen OTA (Over-The-Air) teknolojisini öğrenecek ve ESP32'mize USB kablosu olmadan, havadan kod yükleyeceğiz.
Şu ana kadar yazdığımız tüm kodları ESP32'ye bir USB kablosu aracılığıyla yükledik. Geliştirme aşamasında masamızda otururken bu çok kolaydır. Ancak projeniz bittiğinde işler değişir.
Örneğin, Bölüm 9'daki Telegram botunuzu salonun tavanına takılı bir yangın sensörüne dönüştürdünüz. Bir süre sonra mesaja bir emoji eklemek veya sıcaklık sınırını değiştirmek istediniz. Merdiven dayayıp sensörü tavandan sökmek gerçek bir eziyettir.
İşte endüstri standardı IoT cihazlarında bu sorun OTA (Havadan Güncelleme) ile çözülür. ESP32, evinizin Wi-Fi ağında olduğu sürece Arduino IDE onu tanır ve yeni kodları Wi-Fi dalgaları üzerinden saniyeler içinde cihaza gönderir!
1. Adım: İlk ve Son Kez Kablo Kullanıyoruz!
ESP32'nin "havadan" kod kabul edebilmesi için içinde bu yeteneği barındıran özel bir kod parçası olması gerekir. Yani cihaza "Birazdan sana Wi-Fi üzerinden kod göndereceğim, kapıyı açık tut" demeliyiz. Bu altyapıyı kurmak için cihazı son bir kez USB kablosuyla bilgisayara bağlamamız gerekiyor.
Aşağıdaki OTA altyapı kodunu Arduino IDE'ye yapıştırın. WIFI_ADI ve WIFI_SIFRESI kısımlarını kendi ağınıza göre değiştirin:
C++
#include <WiFi.h>
#include <ESPmDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
// Wi-Fi Bilgileriniz
const char* ssid = "WIFI_ADI";
const char* password = "WIFI_SIFRESI";
// Kartın üzerindeki LED
const int ledPin = 2;
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
// Wi-Fi Bağlantısı
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Wi-Fi Baglantisi Basarisiz! Yeniden baslatiliyor...");
delay(5000);
ESP.restart();
}
// ---- OTA AYARLARI BAŞLANGICI ----
// Ağdaki cihazımızın adını belirliyoruz
ArduinoOTA.setHostname("Benim_Akilli_Cihazim");
// Dışarıdan izinsiz kod yüklenmesini engellemek için şifre koyuyoruz
ArduinoOTA.setPassword("gizlisifre123");
ArduinoOTA.onStart([]() { Serial.println("OTA Guncellemesi Basliyor..."); });
ArduinoOTA.onEnd([]() { Serial.println("\nGuncelleme Bitti!"); });
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("İlerleme: %u%%\r", (progress / (total / 100)));
});
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Hata[%u]: ", error);
});
// OTA'yı başlatıyoruz
ArduinoOTA.begin();
// ---- OTA AYARLARI BİTİŞİ ----
Serial.println("Sistem Hazir!");
Serial.print("IP Adresi: ");
Serial.println(WiFi.localIP());
}
void loop() {
// ESP32'nin havadan gelen güncelleme taleplerini sürekli dinlemesini sağlar
ArduinoOTA.handle();
// Kendi kodlarımızı buraya yazıyoruz
// Örnek olarak LED'i yarım saniyede bir yakıp söndürelim
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
}
Bu kodu klasik yöntemle (USB kablosu ile) ESP32'ye Yükle deyin.
2. Adım: Havadan Yükleme (Sihir Zamanı)
Kod başarıyla yüklendikten ve ESP32 Wi-Fi ağınıza bağlandıktan sonra USB kablosunu bilgisayardan çekebilirsiniz! Gidin ve ESP32'nizi bir telefon şarj aletiyle evin başka bir odasındaki prize takın.
Şimdi Arduino IDE'ye geri dönün ve şu adımları izleyin:
- Üst menüden Araçlar (Tools) > Port sekmesine gelin.
- Normalde sadece "COM3" veya "usbserial" gibi kablolu portları görürdük. Ama şimdi, o menünün hemen altında yeni bir bölüm açıldığını göreceksiniz: Network Ports (Ağ Portları).
- Listede "Benim_Akilli_Cihazim at 192.168.1.xxx" yazısını (veya verdiğiniz IP adresini) göreceksiniz. Bunu seçin!
3. Adım: Kablosuz Güncellemeyi Test Edelim
Port olarak Wi-Fi üzerinden bağlandığımız cihazı seçtiğimize göre, şimdi kodumuzda ufak bir değişiklik yapalım. loop() içindeki bekleme süresini (delay) 500 yerine 100 yapalım ki LED çok daha hızlı yanıp sönsün.
Sol üstteki Yükle (Upload) butonuna basın.
Arduino IDE sizden bir şifre isteyecektir. Koda yazdığımız "gizlisifre123" şifresini girin. Sağ alttaki siyah ekranda yükleme yüzdesinin aktığını göreceksiniz. Yükleme bittiğinde, yan odadaki ESP32'nizin ışığının bir anda çok hızlı yanıp sönmeye başladığını fark edeceksiniz.
İşte bu kadar! Artık ESP32 projenizi dünyanın en zor yerine bile monte etseniz, aynı Wi-Fi ağında olduğunuz sürece çayınızı yudumlarken bilgisayarınızdan havadan güncelleme yapabilirsiniz. Gerçek bir teknoloji sihirbazı oldunuz!
Yazan
Ertan Dağdelen
Brain & Youth Information Worker, Author, .Net, Flutter, AJAX, Arduino & Esp32, Pcb, 3D, Galatasaray, Gemini
Diğer Yazılar
ESP32 vs Arduino: 2026’da Hangisini Seçmelisiniz?
ESP32 ve Arduino, hobiden profesyonel IoT projelerine kadar en popüler geliştirme kartlarıdır. Arduino basitliği ve eğitim odaklı yapısıyla yeni başlayanlar için idealken, ESP32 yerleşik Wi-Fi, Bluetooth, yüksek işlem gücü ve düşük maliyetiyle modern bağlı cihazlar için çok daha güçlü bir alternatiftir. Bu yazıda ikisini hız, bellek, bağlantı, güç tüketimi ve kullanım alanları açısından karşılaştırıyoruz. 2026 itibarıyla çoğu IoT ve akıllı ev projesi için ESP32 öne çıkıyor.
Bölüm 9: ESP32 ile Mesajlaşın: Kendi Telegram Botunuzu Yapın!
ESP32'nizin cebinize doğrudan mesaj atmasını ister misiniz? Bu bölümde popüler mesajlaşma uygulaması Telegram'ı kullanarak kendi botumuzu oluşturacağız. Cihazımız bir hareket algıladığında, ortam fazla ısındığında veya sadece uyandığında cep telefonumuza anlık bildirim (mesaj) göndermeyi öğrenecek!
Bölüm 8: Pille Çalışan Projelerin Sırrı: "Deep Sleep" (Derin Uyku) Modu
ESP32'nin çok güç tükettiğini mi duydunuz? Haklı olabilirsiniz, sürekli Wi-Fi'a bağlı kalmak pili hızla bitirir. Peki ya cihazınızı bir pille aylarca çalıştırmak isterseniz? Bu final bölümünde, ESP32'nin hayat kurtaran "Deep Sleep" (Derin Uyku) modunu öğrenecek ve pille çalışan taşınabilir IoT projelerinin sırrını çözeceğiz.