ESP8266 – UZAKTAN YAZILIM GÜNCELLEME (OTA)

ESP8266 ve ESP32 modüllerinin yazılım güncellemesinin WiFi/Internet üzerinden yapılması, gerek geliştirme aşamasında gerekse servise veriliş sonrasında tartışmasız bir kolaylık sağlıyor.

Bu işi mevcut Arduino ESP kütüphanelerini kullanarak yapmak hiç de zor değil. ES8266 örneği üzerinden nasıl yapıldığını görelim.

Internet üzerinde bunun için yeterince kaynak var, ama benimkinin bir ayrıcalığı var; çünkü Türkçe.

Burada anlatılan yöntem, bilgisayarımızın ve ESP nin aynı network üzerinde bulunmasını gerektirir.

PROGRAM KODUNA EKLENECEKLER

Burada verdiğim kodları Arduino/File/Examples altındaki “BasicOTA” örneğinden aldım.

Programın başlık kısmında kullanacağımız kütüphaneleri aşağıdaki gibi bildirmemiz gerekiyor :

include <WiFiUdp.h>
include <ArduinoOTA.h>

Setup() fonksiyonuna, WiFi bağlantısının sağlanmasından hemen sonra aşağıdaki kodu ekliyoruz :

/** OTA İÇİN EKLENEN KOD **/

ArduinoOTA.onStart([]() {
    String type;
    if (ArduinoOTA.getCommand() == U_FLASH) {
        type = "sketch";
        } else { // U_FS
                type = "filesystem";
                // unmount LittleFS
                LittleFS.end();
                }
Serial.println("Start updating " + type);
}
);

ArduinoOTA.onEnd([]() {
       Serial.println("\nEnd");
});

ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
       Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});

ArduinoOTA.onError([](ota_error_t error) {
       Serial.printf("Error[%u]: ", error);
       if (error == OTA_AUTH_ERROR) {
            Serial.println("Auth Failed");
       } else if (error == OTA_BEGIN_ERROR) {
            Serial.println("Begin Failed");
       } else if (error == OTA_CONNECT_ERROR) {
            Serial.println("Connect Failed");
       } else if (error == OTA_RECEIVE_ERROR) {
            Serial.println("Receive Failed");
       } else if (error == OTA_END_ERROR) {
            Serial.println("End Failed");
       }
});
ArduinoOTA.begin();

/** OTA İÇİN EKLENEN KODUN SONU **/

Ana çevrimin içine de aşağıdaki satırı ekliyoruz :

ArduinoOTA.handle();

UZAKTAN GÜNCELLEME NETWORK PORTU

Yukarıdaki kod satırlarını programımıza ekledikten sonra derleyip her zaman olduğu gibi “upload” komutu ile seri port üzerinden ESP8266 modülümüze yükleyelim.

Şimdi, Arduino/Tools/Port menüsü altında Network Ports kısmına yeni bir OTA portu eklendiğini görmemiz gerekiyor:

ESP mize ait seri no ve IP yi içeren portu seçtiğimizde WiFi üzerinden yazılım güncellemesine hazırız demektir.

Artık Arduino IDE üzerinde “Upload” butonuna tıkladığımızda programımız normalde olduğu gibi derlenecek, ESP sanki bilgisayarımıza bağlıymış gibi flash üzerindeki yazılım güncellenecektir.

Aynı şekilde ESP8266 LittleFS Data Upload eklentisi kullanılarak dosya sistemine kayıtlı olan data dosyalarımız da güncellenebilecektir.

GÜVENLİK KONULARI

Yukarıda anlattığım kadarı ile herhangi bir şifre koruması bulunmuyor.

Güvenliği sağlamak üzere bu koda, en basit şifre kontrolundan başlayarak daha ciddi önlemler eklemek mümkün. Onlar da bir başka yayında.

Bu yayının sonu – Selçuk Özbayraktar Eylül 2020