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,
}
| Özellik | CYD | OLED | NodeMCU |
|---|---|---|---|
| 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.
| Stok | Frozen | |
|---|---|---|
| Panel modu, taze açılış | 4 784 B | 24 704 B |
| ~5 dakika sonra | 2 512 B | 24 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