Merhabalar! Bu yazıda sizlerle 6 Nisan 2026’da yayınlanan MicroPython 1.28.0 sürümünün öne çıkan yeniliklerine bakacağız. Eğer siz de ESP32, Pico, STM32 veya mikrodenetleyici dünyasında MicroPython ile uğraşıyorsanız, bu güncelleme gerçekten ilginç haberlerle geldi. Ben de kendi projelerimde denerken gördüğüm değişiklikleri ve pratik örnekleri bir araya getirdim.
MicroPython 1.28’de Neler Değişti?
Bu sürüm aslında “küçük ama etkili” güncellemelerden biri. Üç büyük başlık öne çıkıyor:
- PEP 750 Template Strings (t-string) desteği — Python’un yeni string formatlama yöntemi artık MicroPython dünyasında da var.
- machine.CAN sınıfı nihayet tamamlandı — iki yıllık geliştirmenin sonunda standart CAN API’sine kavuştuk.
- ESP32 portu olgunlaştı — yeni LDO sürücüsü, ESP-IDF 5.3–5.5.1 desteği ve daha kararlı
os.dupterm().
Bunların dışında machine.PWM stm32 ve alif portlarına eklendi, weakref modülü webassembly varyantında etkinleştirildi, ROM filesystem desteği yeni portlara yayıldı. Hepsini tek tek ele alalım.
T-String: Python’un Yeni String Formatlama Yöntemi
Python 3.14 ile gelen PEP 750 Template Strings, MicroPython’a da geldi. f-string gibi çalışıyor gibi görünse de farklı: parçaları birleştirmek yerine ayrı ayrı bir Template nesnesi olarak tutuyor. Bu, özellikle web framework’leri ve şablon motorları yazanlar için çok kullanışlı.
MicroPython’da t-string şu anda alif, mimxrt, samd (SAMD51) ve webassembly (pyscript) portlarında “full feature” seviyesinde aktif. Diğer portlarda henüz açık değil, ama f-string zaten tüm portlarda çalışıyordu.
Basit bir örnek:
from string.templatelib import Template
isim = "Ali"
puan = 95
sablon = t"Öğrenci: {isim}, Puan: {puan}"
print(sablon) # Template nesnesi
print(str(sablon)) # "Öğrenci: Ali, Puan: 95"
# Template içindeki parçalara erişim
for parca in sablon:
if isinstance(parca, str):
print(f"Metin: {parca}")
else:
print(f"İfade: {parca.value!r}")
Bu özellik ESP32’de henüz etkin olmasa da yakın gelecekte tüm portlara yayılması bekleniyor. Şimdilik Thonny IDE üzerinden samd51 veya mimxrt tabanlı bir kartta deneyebilirsiniz.
machine.CAN: Yıllardır Beklenen Standart API
Gömülü sistemlerde CAN bus ile uğraşanlar bilir: her port kendi CAN implementasyonunu farklı şekilde sunuyordu. MicroPython 1.28 ile bu sorun büyük ölçüde çözüldü. machine.CAN sınıfı artık stm32 portunda standart API ile kullanılabilir (bxCAN ve FD-CAN destekli MCU’larda). Esnek veri hızı (flexible data-rate) henüz yok, ama temel kullanım için yeterli.
from machine import CAN, Pin
# 500 kbps, normal mod
can = CAN(1, baudrate=500_000, mode=CAN.NORMAL)
# Filtre ayarla: sadece 0x123 ID'li mesajları al
can.setfilter(0, CAN.MASK16, filter=(0x123, 0x7FF))
def mesaj_al(can_id, msg):
print(f"ID=0x{can_id:X}, veri={msg}")
can.irq(handler=mesaj_al, hard=True)
# Mesaj gönder
can.send(b"Merhaba CAN!", can_id=0x100)
Bu API yakında esp32 portuna da gelecek. Şimdilik STM32 Nucleo veya Discovery kartları ile test edebilirsiniz.
ESP32’te Önemli İyileştirmeler
ESP32 ile uğraşanlar için bu sürüm birkaç rahatlık getiriyor:
- Yeni LDO sürücüsü — ESP32-P4 için optimize edildi.
- Zcmp opcode desteği — RV32 hedeflerinde compressed instruction kullanımı etkinleştirildi.
os.dupterm()iyileştirildi — Artıkos.dupterm_notify()çağırmaya gerek yok, REPL daha kararlı çalışıyor.- ESP-IDF 5.3–5.5.1 desteği — v5.3 altındaki sürümler artık desteklenmiyor, derleme yaparken IDF’nizi yükseltmeniz gerekebilir.
Eğer kendi firmware’inizi ESP-IDF ile derliyorsanız, idf.py upgrade komutuyla 5.5.1’e geçmenizi tavsiye ederim. Aksi halde build hatalarıyla karşılaşabilirsiniz.
ESP32 firmware’ini güncellemek için şu adımları izleyebilirsiniz:
# 1. Eski firmware'i sil
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
# 2. Yeni firmware'i yükle (v1.28.0)
esptool.py --chip esp32 --port /dev/ttyUSB0 \
write_flash -z 0x1000 \
ESP32_GENERIC-20260406-v1.28.0.bin
Linux’ta /dev/ttyUSB0, macOS’ta /dev/cu.usbserial-* olarak değiştirmeniz gerektiğini hatırlatayım.
machine.PWM Artık Her Yerde
Daha önce machine.PWM sadece belirli portlarda çalışıyordu. 1.28 ile birlikte stm32 ve alif portlarına da eklendi. Artık tüm Tier 1 ve Tier 2 portlarda standart PWM API’si kullanabilirsiniz:
from machine import Pin, PWM
# stm32 üzerinde LED parlaklığı ayarla
pwm = PWM(Pin("PA5"), freq=1000, duty_u16=32768)
pwm.duty_u16(65535) # tam parlaklık
pwm.duty_ns(500_000) # 500 ms duty cycle
Bu, servo motor veya LED dimmer projelerinde taşınabilir (portlar arası) kod yazmayı çok kolaylaştırıyor.
weakref Modülü: Webassembly İçin Geliyor
weakref.ref ve weakref.finalize sınıfları artık webassembly pyscript varyantında çalışıyor. Bir nesne garbage collector tarafından toplandığında callback çağırabiliyorsunuz:
import weakref
class Kaynak:
def __init__(self, ad):
self.ad = ad
def silindi(ref):
print("Kaynak silindi!")
k = Kaynak("test")
r = weakref.ref(k, silindi)
r.finalize() # garbage collector topladığında çalışır
ESP32 gibi küçük portlarda bellek ve GC yükü nedeniyle şu an etkin değil, ama mimxrt gibi daha büyük portlarda manuel olarak açılabilir.
Sık Karşılaşılan Sorunlar ve Çözümleri
Yeni sürüme geçerken birkaç şey sizi şaşırtabilir:
1. ESP-IDF sürüm uyumsuzluğu
Eğer kendi firmware’inizi derlerken “IDF version not supported” hatası alıyorsanız, idf.py ile 5.5.1 veya üstüne geçin. Ben geçiş yaparken ESP-IDF menüsündeki Component config → ESP-TLS ayarlarının bozulduğunu fark ettim, idf.py menuconfig ile yeniden yapılandırmak gerekti.
2. T-string “NameError: t-string not supported”
Bu hata, ESP32 veya Pico gibi temel portlarda t-string’in henüz etkin olmadığını gösterir. Çözüm: ya kodu f-string ile yazın, ya da samd51/mimxrt gibi destekleyen bir porta geçin.
3. esptool.py bağlantı hatası
macOS’ta /dev/cu.usbserial-0001 gibi cihazlar bazen izin hatası verir. Çözüm:
sudo chmod 666 /dev/cu.usbserial-0001
veya kullanıcıyı dialout grubuna ekleyin.
4. machine.CAN import hatası
stm32 portunda bile olsa, kullandığınız MCU’da bxCAN veya FD-CAN olmayabilir. STM32F0, F1 gibi serilerde CAN yoktur. STM32F4, F7, H7 serileri için çalışır.
Sonuç
MicroPython 1.28.0 her ne kadar “minor release” gibi görünse de, özellikle t-string ve machine.CAN ile gömülü Python dünyasına yeni kapılar açıyor. ESP32 tarafındaki iyileştirmeler de günlük geliştirme akışını ciddi şekilde rahatlatıyor.
Ben özellikle PWM API’sinin tüm portlarda standartlaşmasını çok sevdim — artık “bu portta PWM nasıl açılıyordu?” diye düşünmek gerekmiyor. Siz de yeni sürümü bir test projesinde deneyin ve farkları gözlemleyin.
Bir sonraki yazıda görüşmek üzere, iyi kodlamalar!
Okuduğunuz için teşekkür ederim!