CYD Studio › Belgeler › Kartlar ve firmware

Kartlar ve firmware

Sistem her kartta aynı sistemdir. Farklar koda gömülü değil, veridir: her kartın boards/<ad>/cyd.py dosyası bir OZELLIKLER sözlüğü bildirir, runtime.ozellikler() bunu ölçülen çekirdek yetenekleriyle (threads, max_jobs, platform) birleştirir, GET /api/caps yayınlar ve panel desteklenmeyen düğmeleri gizler.

OZELLIKLER = {
    'display': True, 'touch': True, 'sd': True, 'rgb_led': True,
    'light': True, 'speaker': True, 'ble': True, 'tls': True,
    'wifi_config': True, 'docs': True, 'lite_ui': False,
}
ÖzellikCYDOLEDNodeMCU
display / touch / sd✅ ✅ ✅✅ ❌ ❌❌ ❌ ❌
rgb_led / light / speaker✅ ✅ ✅❌ ❌ ❌✅ ✅ ❌
ble / tls (solo modda)✅ ✅✅ ✅❌ ❌
wifi_config / docs✅ ✅✅ ✅❌ ❌
lite_ui❌❌✅
threads / max_jobs✅ 8 (thread 4)✅ 4❌ 3

CYD (ESP32-2432S028R)

"Cheap Yellow Display": 320×240 ILI9341 ekran, XPT2046 dokunmatik, SD yuvası, RGB LED, LDR, hoparlör, CH340 USB-seri. Özel firmware (micropython-esp32-cydstudio.bin, v1.28.0 tabanlı CYD_STUDIO kartı):

  • 12 çekirdek modülü flash'a dondurulmuş: runtime jobs sysinfo logstore settings netmgr store server + cyd ili9341 xpt2046 sdcard. boot.py, main.py, index.html, belgeler dosya sisteminde kalır.
  • Sabit heap 96 KB, otomatik büyüme kapalı.
  • RAM diyeti (sdkconfig.free_ram): TCP pencere 5760 → 3072, WiFi tamponları 10/32/32 → 8/12/12, soket 16 → 6.
  • Sonuç: boşta dahili DRAM 55 KB (stokta 27,8), 7 normal + 2–3 thread proje.

Ekran doğal olarak yataydır ve RGB düzenindedir: doğrulanmış ayar rotation=0, bgr=False, 320×240. Panel MISO bağlı olmadığı için geri okunamaz, yön gözle ayarlanır (Ayarlar → Ekran ayarı, canlı). SD yalnız VSPI'de (slot 3); slot 2 ekranın hattıdır.

Yeniden derleme (WSL, ESP-IDF v5.5.1): python tools/frozen_esp32_build.py [--heap 96], ~3 dakika. Flash: tools/flash.py COM3 firmware/micropython-esp32-cydstudio.bin --koru (BOOT basılı yordamı). Deploy: tools/deploy.py --board cyd --frozen --samples --reset.

NodeMCU (ESP8266)

Dahili LED, tek analog giriş (cyd.A0), 38 KB heap, _thread yok. Özel firmware (micropython-esp8266-frozen.bin): çekirdek + sade sunucu (boards/nodemcu/server.py) + ssd1306 dondurulmuş, asyncio dahil.

StokFrozen
Panel modu, taze açılış4 784 B24 704 B
~5 dakika sonra2 512 B24 672 B (parçalanma yok)

Stokta 3 KB'lik bir proje bile compile() satırında MemoryError veriyordu; dondurmak bytecode'u flash'ta tutar. Pin etiketleri cyd.D0…cyd.D8: D1/D2 (GPIO5/4) rahat giriş/çıkış ve I2C çifti, D4 (GPIO2) kart üstü mavi LED (ters mantık), D3/D8/D0 açılışta özel görevli, kaçın.

Sade panel (boards/nodemcu/index.html, ~31 KB): arama, satır başına ▶/■/✕, Konsol | Kayıtlı log, Ayarlar, Doküman, TR/EN, kısayollar. Derleme: tools/frozen_esp8266_build.py; flash tools/flash_esp8266.py COM3 --koru (tuş yok); deploy tools/deploy_mpy.py --board nodemcu --frozen --samples --reset.

ESP32 OLED

128×64 SSD1306 OLED, dokunmatik ve SD yok, CP2102 USB-seri. Stok MicroPython v1.28; çekirdek dosya sistemine gider (deploy.py --board oled --samples). Ekran sınıfı ILI9341 ile aynı API'yi sunar, renkler yanık/sönük'e düşer; CYD projeleri değişmeden çalışır. I2C pinleri modele göre değişir, _oled_bul() aday çiftleri (5,4) (4,15) (21,22) (16,17) (13,14) sırayla dener. cyd.touch(), cyd.light(), cyd.beep() açık hata fırlatır.

Dikkat: Bu kart PC'nin USB portundan beslenince WiFi açıldığı anda 3,3 V hattı çöker (brownout döngüsü). Yazılımla çözülmez; çıplak MicroPython'da wlan.active(True) satırında aynı çöküş olur. Çözüm: pil konnektörüne LiPo, beslemeli hub ya da harici sabit 3,3 V. Harici 3,3 V ile 240 MHz ve tam verici gücünde sorunsuz çalıştı.

Yeni kart eklemek

boards/<ad>/ altına cyd.py (bir OZELLIKLER sözlüğü + runtime'dan should_stop, sleep, rota, dram, wifi, buton dışa aktarımı) ve config.example.json koy; gerekiyorsa sürücüler. Çekirdek dosyalarına dokunmak gerekmez. Yeni bir özellik eklerken: runtime._VARSAYILAN'a anahtarı ekle, ilgili kartların OZELLIKLER'inde aç, panelde caps.<anahtar> ile kontrol et.

Gölgeleme

sys.path = ['', '.frozen', '/lib', '/projects']: dosya sistemindeki aynı adlı .py dondurulmuşu ezer. Tek dosyayı hızlı denemek için mpremote fs cp x.py :x.py olur, ama her gölge heap'ten ~10 KB yer ve ölçümler o durumda yanıltır. Çekirdek değişince firmware yeniden derlenmeli; sonunda --frozen ile temizle.

Son güncelleme 2026-10-17 · Bu sayfa Markdown olarak