Taşınabilir akıllı cihazlar, hava durumu istasyonları veya e-kitap okuyucular (e-readers) tasarlarken en büyük donanımsal kısıtlama, ekran panellerinin sürekli aktif kalarak enerji tüketmesidir. Klasik LCD, OLED veya TFT ekranlar saniyede en az 50-60 kez yenilenerek (refresh rate) sürekli akım çekerler. e-Paper (Elektronik Kağıt / e-Ink) Ekran Teknolojisi ise, çift kararlı (bistable) yapısı sayesinde sadece görüntü değişirken enerji tüketir, ekran sabitken sıfır (0) watt güç harcar.
Bu olağanüstü enerji verimliliği, e-paper ekranları pille aylarca çalışması gereken IoT cihazları için vazgeçilmez bir donanım haline getirir. Bu rehberimizde, e-paper ekranların donanımsal mikroküresel çalışma fiziğini, Waveshare ve MH-ET LIVE modüllerinin SPI pin bağlantı kurallarını, tam (full) ve kısmi (partial) yenileme mimarisini, Arduino ile metin yazdırma ve `image2cpp` aracıyla bitmap görselleri ekrana basma süreçlerini en ince mühendislik ayrıntılarıyla inceleyeceğiz.

e-Paper Teknolojisinin Elektroforetik Çalışma Fiziği
e-Paper ekranların temelinde Elektroforetik Gösterim (Electrophoretic Display – EPD) teknolojisi yer alır. Ekran paneli, saç teli çapındaki milyonlarca mikroskobik kapsülden oluşur. Bu mikrokapsüllerin içi şeffaf, viskozitesi yüksek yalıtkan bir yağ ile doludur. Yağın içerisinde ise yüklü pigment parçacıkları asılı durur:
- Beyaz Pigmentler: Pozitif (+) elektrik yüküne sahiptir.
- Siyah Pigmentler: Negatif (-) elektrik yüküne sahiptir.
Kapsüllerin alt ve üst yüzeylerinde şeffaf elektrotlar (genellikle ITO – İndiyum Kalay Oksit kaplama) bulunur. Bu elektrotlar arasına bir elektrik alanı uygulandığında elektroforez olayı gerçekleşir. Örneğin, üst elektroda pozitif (+) bir voltaj uygulandığında, Coulomb kanunu gereği negatif yüklü siyah pigmentler yukarıya (ekran yüzeyine) çekilirken, pozitif yüklü beyaz parçacıklar aşağıya doğru itilir. Bu durumda piksel siyah görünür. Voltaj tersine çevrildiğinde ise beyaz pigmentler yukarı çıkarak piksellerin beyaz görünmesini sağlar.
Çift Kararlı (Bistable) Yapı Avantajı: Viskoz yağ içerisindeki bu pigment parçacıkları, elektrik alanı kesildiğinde (voltaj sıfırlandığında) yerçekimi veya sürtünme nedeniyle konumlarını kaybetmezler. Yani, e-paper ekranın üzerine bir yazı veya resim çizildiğinde, güç bağlantısı tamamen kesilse bile o görüntü ekranda sonsuza kadar kalır. Güç tüketimi sadece piksellerin rengini değiştirirken (şarj/deşarj anında) milisaniyeler boyunca gerçekleşir. Standart TFT ekranlar saniyede 60 kez taranıp (
) sürekli akım çekerken, e-paper ekranlar sabit duran bir sayfada tam olarak
akım çeker.
e-Paper Ekran Modülü: Waveshare ve MH-ET LIVE
Projelerimizde en sık karşılaştığımız e-paper modülleri, Waveshare ve MH-ET LIVE firmalarının ürettiği
veya
boyutundaki monokrom ekranlardır.

Bu ekranlar yüksek veri aktarım hızlarına ihtiyaç duyduğundan, mikrodenetleyicilerle 3 veya 4 telli SPI (Serial Peripheral Interface) protokolü üzerinden haberleşir. Protokolün detaylarını incelemek için SPI Protokolü Nedir? yazımıza göz atabilirsiniz.
Modüllerin arkasında donanımsal voltaj seviyesi seçici (3.3V/5V) anahtarlar yer alır. Bu sayede hem
seviyesindeki standart Arduino Uno/Mega kartlarıyla hem de
seviyesindeki ESP32/ESP8266 kartlarıyla seviye dönüştürücüye ihtiyaç duymadan doğrudan çalışabilirler.

Piyasada yer alan Waveshare
modülü de aynı donanım mimarisini ve sürücü çiplerini (örn. SSD1608 veya IL3820) kullandığından, bu rehberde sunacağımız yazılımlarla tamamen uyumludur:

Arduino Kütüphane Kurulumu ve Donanımsal SPI Bağlantısı
e-Paper ekranı Arduino ile sürebilmek için optimize edilmiş Waveshare tabanlı sürücüleri kullanmamız gerekir. Kütüphane ekleme, zip kütüphane kurma ve klasör yollarını doğru yönetme pratikleri için Arduino Kütüphane Ekleme Nasıl Yapılır? rehberimize göz atabilirsiniz.
Standart Donanımsal SPI Bağlantı Tablosu: e-Paper ekranın stabil çalışması için standart SPI pinleri (MOSI ve SCK) donanımsal olarak bağlanmalıdır. Arduino Uno/Nano için bağlantılar şu şekildedir:
| MH-ET LIVE / Waveshare Pin Adı | Arduino Uno / Nano Pin Karşılığı | Açıklama |
|---|---|---|
| VCC | 5V / 3.3V | Besleme Gerilimi |
| GND | GND | Ortak Şase / Toprak |
| DIN (MOSI) | Pin 11 (Donanımsal SPI MOSI) | Seri Veri Girişi |
| CLK (SCK) | Pin 13 (Donanımsal SPI SCK) | Seri Saat Sinyali |
| CS | Pin 10 (Seçilebilir) | Chip Select (Donanım Seçim) |
| DC | Pin 9 (Seçilebilir) | Data / Command (Veri/Komut Seçim) |
| RST | Pin 8 (Seçilebilir) | Reset Pini |
| BUSY | Pin 7 (Seçilebilir) | Ekran Meşgul Çıkış Sinyali |
Arduino ile Metin Yazdırma Kod Yapısı
Aşağıdaki yazılım,
e-paper ekran üzerinde ekranı başlatıp temizleyen, ardından “devreyakan.com” metnini beyaz arka plan üzerine siyah karakterlerle yazdıran temel C++ kod bloğudur:
#include <SPI.h>
#include <Epaper1_54.h> // Waveshare tabanlı 1.54" sürücü kütüphanesi
// Epd sınıfı başlangıç koordinat parametreleriyle (0, 0) tanımlanıyor
Epd epd(0, 0);
void setup() {
Serial.begin(115200);
Serial.println("e-Paper ekran başlatılıyor...");
// Ekranı donanımsal olarak başlat (LDirInit veya Init)
epd.LDirInit();
// Önceki görüntülerden kalan izleri (ghosting) önlemek için tüm ekranı tamamen temizle
epd.ClearAll();
// Metin kutusunun boyutlarını piksel bazlı belirle (Genişlik: 200px, Yükseklik: 24px)
epd.SetWidth(200);
epd.SetHeight(24);
Serial.println("Metin tampon belleğe yazdırılıyor...");
// Arka planı temiz (UNCOLORED yani beyaz) olarak ayarla
epd.Clear(UNCOLORED);
// (30, 4) koordinatından başlayarak metni Font16 boyutuyla tampona yazdır (COLORED yani siyah)
epd.DrawStringAt(30, 4, "devreyakan.com", &Font16, COLORED);
// Yazılan tampon verisini e-paper ekranın çerçeve belleğine (Frame Memory) aktar
epd.SetFrameMemory(epd.Buffer(), 0, 10, epd.GetWidth(), epd.GetHeight());
// Çerçeveyi fiziksel piksellere yansıt
epd.DisplayFrame();
Serial.println("Yazdırma işlemi tamamlandı.");
}
void loop() {
// e-Paper ekranlar statik görüntülerde akım çekmediği için loop döngüsü boş bırakılır.
}Kısmi Yenileme (Partial Refresh) ve Tam Yenileme (Full Refresh) Mimari Farkı
e-Paper ekranların donanımsal kontrolünde en önemli mühendislik ayrıntısı yenileme (refresh) modlarının yönetimidir:
Tam Yenileme (Full Refresh): Ekrandaki tüm mikrokapsül pigmentlerini resetlemek için tüm piksellerin arka arkaya 1-2 saniye boyunca siyah ve beyaz renge çevrilmesi (flicker) işlemidir. Bu işlem, bir önceki sayfadan kalan gölge izlerini (ghosting) tamamen yok etmek için zorunludur. Ancak yavaş gerçekleşir ve rahatsız edici bir kırpışma yaratır.
Kısmi Yenileme (Partial Refresh): Sadece değişen piksellerin elektriksel alanını güncelleyen, ekranın geri kalan sabit bölgelerine (örn. sabit başlıklar veya menüler) dokunmayan hızlı yenileme modudur. Kırpışmasız gerçekleşir ve
gibi çok kısa sürede tamamlanır. Ancak, üst üste çok fazla kısmi yenileme yapıldığında mikrokapsüllerde yük birikmesinden dolayı gölgelenme (ghosting) artar. Bu yüzden endüstri standardı olarak, her 10-15 kısmi yenilemenin ardından 1 kez donanımsal tam yenileme (full refresh) çağrılarak ekran fiziksel olarak temizlenmelidir.
image2cpp ile Bitmap Resimleri Ekrana Basmak
e-Paper ekranlar monokrom veya tricolor (siyah, beyaz, kırmızı) olduklarından, renkli fotoğrafları doğrudan gösteremezler. Çözünürlüğe (örn.
piksel) uygun olarak ölçeklendirilmiş monokrom resimleri, piksel bit eşleme (bitmap) formatına dönüştürmemiz gerekir.
Bunun için en kararlı çalışan web aracı image2cpp Online Converter aracıdır. Görselinizi siteye yükleyip “Generate Code” butonuna basarak byte dizisini elde edebilirsiniz:

Bellek Optimizasyonu (PROGMEM / Flash Bellek): 200×200 çözünürlüğünde tek bir görselin byte dizisi, Arduino Uno’nun kısıtlı
‘lık SRAM belleğini tamamen kilitleyerek programın çökmesine yol açar. Bu yüzden, resim dizisini RAM yerine doğrudan mikrodenetleyicinin geniş flash belleğinde (program hafızası) saklamak için PROGMEM (veya avr/pgmspace.h) direktifi kullanılmalıdır. Arduino ana kodumuzda bu diziyi çağırarak görseli ekrana şu şekilde basabiliriz:
#include <Epaper1_54.h>
#include "gorsel.h" // image2cpp'den alınan byte dizisinin yer aldığı dosya
Epd epd(0, 0);
void setup() {
Serial.begin(115200);
epd.LDirInit();
epd.ClearAll();
// Flash hafızasında (PROGMEM) saklanan bitmap resim dizisini çerçeve belleğine ata
epd.DisplayPartBaseImage(epd_bitmap_sample_input);
// Çerçeveyi ekrana bas
epd.DisplayFrame();
}
void loop() { }Diziyi tanımladığımız başlık (header) dosyasında (gorsel.h) değişkenin dışarıya aktarılması için şu deklarasyon yer almalıdır:
extern const unsigned char epd_bitmap_sample_input[];Başarıyla yüklenen ve çizdirilen bitmap görselinin e-paper ekran üzerindeki yüksek kontrastlı, gün ışığı altında mükemmel okunabilen nihai fiziksel görüntüsü şu şekildedir:

Gelişmiş Çizim ve Geometri Fonksiyonları
e-Paper kütüphaneleri, ekran üzerinde çizgi, daire, dikdörtgen veya özel grafikler oluşturmanızı sağlayan donanımsal çizim fonksiyonları barındırır. Bu fonksiyonları loop veya setup içerisinde kullanarak dinamik göstergeler tasarlayabilirsiniz:
// Tek bir piksel boyamak için
void DrawPixel(int x, int y, int colored);
// Belirtilen koordinatlar arasında çizgi çizmek için
void DrawLine(int x0, int y0, int x1, int y1, int colored);
// Yatay ve dikey çizgiler çizmek için
void DrawHorizontalLine(int x, int y, int width, int colored);
void DrawVerticalLine(int x, int y, int height, int colored);
// İçi boş veya dolu dikdörtgenler çizmek için
void DrawRectangle(int x0, int y0, int x1, int y1, int colored);
void DrawFilledRectangle(int x0, int y0, int x1, int y1, int colored);
// Belirtilen yarıçapta daire veya içi dolu daire çizmek için
void DrawCircle(int x, int y, int radius, int colored);
void DrawFilledCircle(int x, int y, int radius, int colored);Özetle; e-Paper / e-Ink ekranlar, ultra düşük güç tüketimi, mükemmel dış ortam okunabilirliği ve çift kararlı yapısıyla pilli IoT projelerinin vazgeçilmez panelleridir. Doğru SPI bağlantı yapılandırmaları, bellek dostu PROGMEM pratikleri ve yenileme modlarının yönetimiyle, projelerinize kararlı ve profesyonel gösterge ekranları kazandırabilirsiniz.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.

