| 3 dk okuma | 12 okunma

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.

Bölüm 10: Kablolara Veda Edin: ESP32'yi Wi-Fi Üzerinden (OTA) Programlamak

Ş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:

  1. Üst menüden Araçlar (Tools) > Port sekmesine gelin.
  2. 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ı).
  3. 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!

Ertan Dağdelen

Yazan

Ertan Dağdelen

Brain & Youth Information Worker, Author, .Net, Flutter, AJAX, Arduino & Esp32, Pcb, 3D, Galatasaray, Gemini

Bu yazıyı paylaş