ESP8266 – FLASH BELLEĞE DOSYA KAYDETMEK

ESP8266 ile kullanılabilen LittleFS adlı küçük bir dosya sistemi kütüphanesi var. (Bunun önceki sürümünün adı SPIFFS idi.) “LittleFS.h” başlığı ile projeye eklenebilen bu kütüphane ile program içinden flash belleğe dosya yazmak, silmek, okumak, kapatmak mümkün. LittleFS.open(), LittleFS.remove() ve benzeri komutlarla program kodu içinden yapılabilen bu işlemler bu yayının kapsamında değil. LittleFS dosya sisteminin kullanılışı için buraya bakabilirsiniz.

Ancak Arduino IDE editörü ile program kodu içinde dosya oluşturup yazmak, statik -içeriği program akışı içinde değişmeyen- ve büyük dosyalar için kullanışlı bir yöntem değil. Başka bir editör ile hazırlanmış dosyaları program kodundan ayrı olarak flash belleğe kaydetmek çok daha kullanışlı olurdu. Zaten fotograf, gif gibi program kodu içinde yazamayacağımız dosya türleri için başka bir yol da yok.

Bunu, bu amaçla geliştirilmiş bir eklenti “plug in” kullanarak yapabiliyoruz.

ESP8266LittleFS adlı bu eklentinin Arduino IDE ye eklenmesini göreceğiz. Daha önce SPIFFS kullanıldı ise, bu yayın LittleFS e geçiş rehberi olarak kabul edilebilir.

BU EKLENTİ NE İŞE YARAYACAK ?

ESP8266 ile ağırlıklı olarak WEB sunucuları hazırlıyoruz. Dolayısı ile html dosyalarını bu işe yönelik olarak geliştirilmiş “html editor” olarak anılan araçlar ile hazırlamak çok daha kolay. Örneğin ben “Brackets” adlı uygulamayı kullanıyorum. Üstelik bir yandan yazarken, bir yandan da yazdığım html kodunun internet üzerinde nasıl görüneceğini yandaki bir browser penceresinde canlı olarak görebiliyorum.

html olsun, css style sayfaları olsun, bu dosyaların özel uygulamalar kullanılmadan yazılması da okunması da zor. Bu nedenle WEB sitemize ilişkin html ve css dosyalarını, kullanışlı bulup tercih ettiğimiz bir uygulama altında geliştirdikten sonra ESP8266 nın flash belleğine program kodundan ayrı olarak kaydetmek en iyisi.

ESP8266LittleFS EKLENTİSİNİ NEREDE BULACAĞIZ ?

Bu eklenti google ile “ESP8266LittleFS plug in” şeklinde sorgulandığında gitHUB üzerinde bulunabiliyor.

İNDİRDİĞİMİZ DOSYAYI KOYACAĞIMIZ YER

Bu gitHUB sayfasındaki .zip dosyayı indirip açıyoruz. Bunu koymak üzere bilgisayarımızda “Arduino” isimli klasörü bulmamız gerekiyor. Bulunca, bunun altında -eğer zaten yok ise- bir “tools” klasörü oluşturup indirdiğimiz ESP8266LittleFS adlı klasörü içindekilerle birlikte buraya kopyalayacağız.

Bu biraz sıkıntı yaratabilir, zira birden fazla sayıda Arduino klasörü bulunabiliyor. Doğrusunu ben deneyerek buldum, belki daha nokta atışlı bir yöntem vardır ama ben bilmiyorum.

Örneğin bende aşağıdaki klasör iş görmedi:

Bu klasörü Arduino 1.8.12 sürümü kurulurken oluşturmuş. İçi boş, kullanılmıyor, bunu sileceğim zaten.

Ama burası oldu :

YENİ EKLENTİYE ARDUINO IDE ALTINDA ERİŞMEK ve FLASH BOYUTLARI

ESP8266LittleFS klasörünü bu şekilde yerine koyduktan sonra Arduino IDE yi yeniden başlatmak gerekiyor. Her şey yolunda gittiyse, Arduino IDE Tools menüsünde aşağıdaki gibi “ESP8266 LittleFS data Upload” eklentisinin görülmesi gerekir.

Bundan sonra bu eklentiyi kullanabilmek için yapılması gereken bir işlem daha var. ESP8266 nın Flash boyutunun ne olduğu, bu flash belleğin ne kadarının FS (File System) ne kadarının OTA (Over The Air) ya tahsis edileceğini belirtmek gerekiyor.

ESP8266_01 bir biri ile aynı görünümde muhtelif versiyonlarda satılıyor. Bunların Flash büyüklükleri de farklı oluyor. Eğer satın alırken flash bellek boyutu belirtilmedi ise sonradan ürüne bakarak anlamak biraz zor, mikroskop/büyüteç altında tümdevrelerin kodlarını okuyup data sheet karıştırmak gerekiyor. Ama bunu öğrenmenin daha kolay bir yolu var, Arduino IDE ile program yüklediğimizde okunan flash boyutu derleyici konsolunda aşağıdaki gibi belirtiliyor:

Flash boyutumuzu öğrendiğimize göre şimdi Arduino/Tools menüsü altında FS için ne kadar yer ayıracağımızı seçelim. FS in ne büyüklükte olacağı, oraya kaydedeceğimiz dosyaların büyüklüğüne bağlı, kullandığım ESP8266 1MByte flash belleğe sahip, uygulamam için de 64 kByte FS fazlasıyla yeterli:

FLASH BELLEĞE KAYDEDİLECEK DOSYALARIN HAZIRLANMASI

Örneğimizde WEB sitemiz için hazırladığımız html ve css sayfalarını flash belleğe kaydedeceğiz. Bu dosyaları Arduino proje klasörümüzde oluşturacağımız “data” isimli bir klasör içinde koymamız gerekiyor.

DOSYALARIN FLASH BELLEĞE KAYDEDİLMESİ

Bu hazırlıktan sonra dosyaları kaydetmek için yapılacak iş, ESP8266 yı programlama moduna alıp, Arduino IDE/tools/ESP8266 LittleFS Data Upload seçeceğini tıklamaktan ibaret. Ekranın alt tarafındaki konsolda işlemin ilerleyişi ve tamamlanışı raporlanıyor.

SONUÇ

Eğer programınızı artık obsolete olmak üzere olan SPIFFS ile hazırladıysanız daha gelişmiş ve geliştirilmekte olan LittleFS kütüphanesine geçmenin zamanı gelmiş demektir. Bunun için ilk yapılacak şey, yukarıda anlattığım gibi ES8266 LittleFS Data Upload eklentisini yükleyip eski “ES8266 Sketch Data Upload” eklentisini kaldırmak oluyor. (Kaldırmak = /arduino/Tools/ klasöründen ESP8266FS i silmek.)

Program içinde de #include <FS.h> yerine #include <LittleFS.h> geçecek, tüm “SPIFFS” kelimecikleri de “LittleFS” ile değiştirilecek. Yapılacaklar bundan ibaret.

LittleFS e geçildiğinde, daha önce SPIFFS ile Flash belleğe kaydedilmiş olan dosyalar var ise, bunların ESP8266 LittleFS Data Upload ile yeniden kaydedilmesi gerektiğini de belirtmeliyim. Eski ve yeni upload eklentileri farklı şekilde kayıt yapıyorlar, biribiriyle uyumlu değiller.

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