ESP8266 ve ESP32 MicroPython ile OLED Ekran Kullanımı

ESP8266 ve ESP32 MicroPython ile OLED Ekran Kullanımı esp32 micropython,micropython,micropython esp32,micropython ile oled ekran

Bu rehberimizde ESP32 MicroPython, gömülü sistem projelerinde bilgi görselleştirmenin en şık yollarından biri olan 0.96 inç SSD1306 OLED ekranı, MicroPython platformu kullanarak hem ESP8266 hem de ESP32 mikrodenetleyicileriyle nasıl kontrol edeceğimizi inceliyoruz. Uygulama kapsamında ekranı donanımsal olarak yapılandıracak, “Hello World!” mesajı yazdıracak ve pikselleri tek tek kontrol etmemizi sağlayan gelişmiş çizim kütüphane fonksiyonlarını detaylandıracağız.

Ön Gereksinimler ve Yazılım Ortamı

Bu çalışmadaki adımları doğrudan uygulayabilmek için ESP32 veya ESP8266 kartınızda güncel MicroPython belleniminin (firmware) kurulu olması gerekir. Ayrıca Python betiklerinizi karta yükleyebilmek için bir geliştirme ortamı (IDE) kullanmalısınız. Bu amaçla Thonny IDE veya uPyCraft IDE yazılımlarını tercih edebilirsiniz:

Thonny IDE Kaynakları

uPyCraft IDE Kaynakları

0.96 İnç SSD1306 OLED Ekran Modülü

Projemizde 128×64 piksel çözünürlüğe sahip, düşük güç tüketimi ve yüksek kontrast sunan, I2C seri haberleşme protokolü ile çalışan standart SSD1306 denetleyicili OLED ekranı kullanacağız. Daha önce farklı platformlarda OLED ekran kullanımı üzerine hazırladığımız popüler rehberlere de göz atabilirsiniz:

ESP8266 ve ESP32 MicroPython ile OLED Ekran Kullanımı
ESP8266 ve ESP32 MicroPython ile OLED Ekran Kullanımı

Gerekli Donanım Malzemeleri

  • 0.96″ SSD1306 OLED I2C Ekran Modülü
  • ESP32 veya ESP8266 Geliştirme Kartı
  • Breadboard (Devre Tahtası)
  • Bağlantı Kabloları (Jumper)

Donanım Bağlantı Şemaları

1. Seçenek: ESP32 ve OLED Bağlantısı

ESP32 geliştirme kartını kullanıyorsanız devrenizi bu şemaya göre kurun:

ESP32 OLED I2C Bağlantısı
ESP32 OLED Donanım Şeması

ESP32 kartlarındaki pinlerin alternatif donanımsal işlevlerini ve kısıtlamalarını detaylıca öğrenmek isterseniz hazırladığımız ESP32 Pin Referans Kılavuzu başlığımızı inceleyebilirsiniz.

2. Seçenek: ESP8266 ve OLED Bağlantısı

Eğer ESP8266 NodeMCU kartı kullanıyorsanız donanım bağlantılarını bu şemaya göre tamamlayın:

ESP8266 OLED I2C Bağlantısı
ESP8266 OLED Donanım Şeması

SSD1306 OLED Sürücü Kütüphanesinin Yüklenmesi

MicroPython çekirdeği varsayılan olarak SSD1306 ekran sürücüsünü yerleşik olarak barındırmaz. Bu nedenle, hazırlayacağımız kodların ekranı sürebilmesi için öncelikle sürücü kütüphanesini kartımızın dosya sistemine kaydetmemiz gerekir.

Kullandığınız geliştirme editörüne göre aşağıdaki adımları sırasıyla uygulayın:

uPyCraft IDE ile Kütüphane Yükleme Aşamaları

uPyCraft arayüzünde hızlı erişim çubuğundaki New File simgesine tıklayarak yeni bir dosya açın:

uPyCraft Yeni Dosya

Resmi Adafruit deposundan alınan güncel ssd1306.py kütüphane kodlarını kopyalayarak bu boş sekmeye yapıştırın.

Ardından Save butonuna basın:

uPyCraft Kaydet

Açılan pencerede dosya adını harfi harfine küçük harflerle ssd1306.py olarak yazın ve onaylayın:

ssd1306.py Kaydetme

Son olarak, bu kütüphaneyi kartın dahili flash belleğine yazmak için Download and Run butonuna tıklayın:

uPyCraft Download ok

Kurulum tamamlandığında sol paneldeki “device” klasörünün altında ssd1306.py dosyasının başarıyla listelendiğini doğrulayabilirsiniz:

Cihaz Dosya Listesi

Thonny IDE ile Kütüphane Yükleme Aşamaları

Thonny editöründe boş bir dosya açıp kütüphane kodunu yapıştırın. Dosyayı kaydet tuşuna basarak ssd1306.py adıyla yerel bilgisayarınıza kaydedin.

Ardından Thonny menüsünden Device > Upload current script with the current name (Mevcut betiği aynı adla cihaza yükle) seçeneğini seçin:

Thonny Karta Yükleme

Yükleme işlemini teyit etmek için Thonny terminal (Shell) ekranına %lsdevice komutunu yazıp çalıştırabilirsiniz. Çıkan dosya listesinde ssd1306.py dosyasını görmelisiniz:

Thonny Cihaz Dosyaları Listesi

MicroPython Uygulama Kod Örneği

Sürücü kütüphanesini karta yazdıktan sonra, aşağıdaki kaynak kodu oluşturduğunuz main.py dosyasının içerisine yapıştırıp karta yükleyin. Bu kod OLED ekran üzerinde alt alta üç adet Hello World mesajı yazdıracaktır:

from machine import Pin, SoftI2C
import ssd1306
from time import sleep

# ESP32 Donanımsal I2C Pin Yapılandırması 
i2c = SoftI2C(scl=Pin(22), sda=Pin(21))

# ESP8266 Donanımsal I2C Pin Yapılandırması (Kullanıyorsanız üstteki satırı yorum yapıp alttakini açın)
# i2c = SoftI2C(scl=Pin(5), sda=Pin(4))

oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

oled.text('Hello, World 1!', 0, 0)
oled.text('Hello, World 2!', 0, 10)
oled.text('Hello, World 3!', 0, 20)
        
oled.show()

Kodun Teknik Analizi ve Parametreleri

İlk olarak I2C protokolünü oluşturabilmek için machine modülünden Pin ve SoftI2C sınıflarını dahil ediyoruz:

from machine import Pin, SoftI2C

Kartın hafızasına yüklediğimiz SSD1306 sürücüsünü kod içerisine dahil ediyoruz:

import ssd1306

ESP32 donanım mimarisinde varsayılan fiziksel I2C bacakları GPIO 22 (SCL) ve GPIO 21 (SDA) pinleridir. ESP8266’da ise bu bacaklar GPIO 5 (SCL) ve GPIO 4 (SDA) olarak atanmıştır. Kullandığımız karta göre I2C nesnesini oluşturuyoruz:

i2c = SoftI2C(scl=Pin(22), sda=Pin(21))

Kullandığımız ekranın piksel sınırlarını belirleyerek oled nesnemizi türetiyoruz:

oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

Ekran belleğine metin yazdırmak için text() metodunu çağırıyoruz. Buradaki parametre düzeni şu şekildedir: text(mesaj, x_koordinati, y_koordinati, renk). Koordinat sistemi sol üst köşeyi (0,0) referans alır. Yazıların birbirinin üzerine binmemesi için y koordinatlarını 10’ar piksel (karakter boyutu limitlerinde) aşağıya kaydırıyoruz. Son olarak değişiklikleri fiziksel panele yansıtmak için mutlaka show() metodunu çağırıyoruz:

oled.text('Hello, World 1!', 0, 0)
oled.text('Hello, World 2!', 0, 10)
oled.text('Hello, World 3!', 0, 20)
oled.show()

Çalışma Sonucu ve Görsel Doğrulama

Yazılımı kartınıza başarıyla yüklediğinizde, OLED ekran modülünüz üzerinde Hello World mesajlarının alt alta kusursuz bir şekilde listelendiğini göreceksiniz:

OLED Hello World Çıktısı

Grafik Çizim ve Gelişmiş Kütüphane Fonksiyonları

SSD1306 kütüphanesi, sadece metin yazdırmanın ötesinde, ekran üzerinde grafik arayüzler ve animasyonlar oluşturabilmeniz için çeşitli donanımsal metotlar sunar.

1. Ekranın Tamamını Doldurma ve Temizleme

Ekrandaki tüm pikselleri aktif (beyaz/mavi) hale getirerek paneli tamamen aydınlatmak için fill(1) komutu kullanılır:

oled.fill(1)
oled.show()
Tamamen Doldurulmuş OLED Ekran

Ekran belleğini tamamen temizlemek (tüm pikselleri kapatmak / siyah yapmak) için ise parametreye 0 verilir:

oled.fill(0)
oled.show()

2. Tekil Piksel Kontrolü (Pixel Drawing)

Ekran üzerindeki belirli bir koordinata tek bir nokta yerleştirmek için pixel(x, y, renk) metodu kullanılır. Renk parametresi 1 (beyaz) veya 0 (siyah) değerini alır. Örneğin, sol üst köşeye (0,0) tek bir beyaz piksel çizmek için:

oled.pixel(0, 0, 1)
oled.show()
OLED Piksel Çizimi

3. Renkleri Ters Yüz Etme (Invert Mode)

Ekranın mevcut renk düzenini (arka planı beyaz, karakterleri siyah yapacak şekilde) donanım seviyesinde tersine çevirmek için invert(True) komutunu gönderebilirsiniz:

oled.invert(True)
Ters OLED Renk Arayüzü

Tekrar varsayılan siyah arka plan moduna dönmek için ise parametreye False göndermek yeterlidir:

oled.invert(False)

4. Sayısal Sensör Verilerini Ekranda Görüntüleme

SSD1306 kütüphanesinin text() fonksiyonu güvenlik gerekçesiyle parametre olarak yalnızca String (metin) tipindeki değişkenleri kabul eder. Ancak sıcaklık, nem veya mesafe gibi sensörlerden okuduğumuz fiziksel veriler kod içerisinde int (tam sayı) veya float (ondalıklı sayı) olarak tutulur.

Bu sayısal verileri OLED ekrana hata almadan yazdırabilmek için, yazdırma işleminden hemen önce Python’un dahili str() fonksiyonunu kullanarak veriyi string formatına dönüştürmeniz gerekir. Örnek uygulama kod bloğu:

# Sensörden okunan sayısal veri
sicaklik = 24.85

# Veriyi String formatına dönüştürme
sicaklik_str = str(sicaklik) + " C"

# Ekrana yazdırma
oled.text("Sicaklik:", 0, 0)
oled.text(sicaklik_str, 0, 12)
oled.show()

Genel Özet

Bu rehberimizde, gömülü sistemlerimizde görsel çıktı alabilmek için sıklıkla kullandığımız I2C SSD1306 OLED ekranı, MicroPython platformunda ESP8266 ve ESP32 donanımlarıyla asenkron olarak nasıl süreceğimizi detaylandırdık. Sürücü kütüphanelerinin Thonny ve uPyCraft editörlerine yüklenme aşamalarını, temel metin yerleşim parametrelerini ve grafik kontrol metotlarını doğrulamış olduk. MicroPython ile zengin IoT ve sensör arayüzü projeleri geliştirmek için sitemizdeki diğer detaylı uygulamaları da inceleyebilirsiniz.

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.