🇹🇷 Türkçe · 🇬🇧 English · 🇨🇳 中文
Cihaz, çocukların ve öğrenmek isteyen herkesin yaparak öğrendiği açık kaynak bir öğrenme platformudur. Bir ürün değil, bir başlangıç noktası: ilk projesi bir el konsolu — ama aynı temelle isteyen programlamayı öğrenir, isteyen oyun yapar, isteyen MP3 çalar, isteyen kendi mini "işletim sistemini" kurup hayalindeki el bilgisayarına ilk adımı atar. Platformun dört parçası:
- Console — bu depo 👉 projelerini çalıştıran gerçek donanım + firmware (ESP32-S3)
- Studio — tarayıcıda çalışan, donanım gerektirmeyen anında deneme tahtası
- Chat — fikirlerini birlikte tasarlayıp kodladığın masaüstü asistanı
- Case — 3D baskı kasa + parametrik CAD; 3D tasarımın giriş kapısı
Firmware'le hazır gelen 7 klasik oyun ilk dersin — ve her şey tamamen hacklenebilir: kendi oyununu yaz, menüyü değiştir, ekran+hoparlör+SD ile bambaşka bir şey dene, USB ile yükle, kendi cihazında çalıştır. Akşam hayalini kurduğun şeyi sabah elinde çalıştır. 🎮
📸 Ekranda hâlâ "GunBoy" yazıyor — bu geliştirme sürecindeki eski isim, firmware henüz güncellenmedi. Gerçek, çalışan bir cihazın fotoğrafı bu, kusura bakma. 😃
Cihaz-Console/
├── Cihaz/ ← ana firmware (Arduino sketch)
│ ├── Cihaz.ino
│ ├── snake.h · pong.h · tetris.h · breakout.h · uzayli.h · pacboy.h · flapboy.h
│ ├── menu.h · buton.h · ses.h · config.h · ekonomi.h
│ └── convert_foto.py (fotoğrafı ekran koduna çevirir — isteğe bağlı)
└── KabloTest/ ← kabloları tek tek doğrulayan test sketch'i
- 7 klasik oyun: Snake, Pong, Tetris, Breakout, Uzaylılar, PacBoy, FlapBoy
- Her oyun puan kazandırır; puanlar kalıcı hafızada (NVS) durur, güç kesilse de kalır
- Menü, tuşlar ve komutlar Studio ile birebir aynı — Studio'da denediğin oyun burada da çalışır
| Parça | Model |
|---|---|
| Beyin | ESP32-S3 (N16R8) geliştirme kartı |
| Ekran | 2.8" ILI9341, 240×320, SPI |
| Ses | MAX98357A I2S amfisi + küçük hoparlör |
| Giriş | Analog joystick + 5 tuş (A, B, START, SELECT, HOME) |
| Güç | USB / powerbank |
Pin haritası (Cihaz/config.h):
| Modül | Pinler |
|---|---|
| TFT (SPI) | CS=10, DC=2, RST=4, SCK=12, MOSI=11 · SDO/MISO BOŞ bırakılır |
| SD kart (SPI, TFT ile ortak hat) | CS=5, SCK=12, MOSI=11, MISO=13 · VCC=5V · şu an firmware'de devre dışı, bkz. aşağıdaki "Bilinen Sorun" |
| Ses (I2S) | BCLK=15, LRC=16, DIN=17 |
| Joystick | X=1, Y=3, buton=18 |
| Tuşlar | A=7, B=14, START=8, SELECT=9, HOME=6 (hepsi GND'ye, dahili pullup) |
⚠️ Ekranın SDO/MISO ucunu bağlama — MISO hattını kirletip SD kartla çakışıyor.
Gerçek fotoğraflar — modüller ucuz ve basit görünüyor çünkü öyleler, ilham için:
Ekran (2.8" ILI9341):
İkinci fotoğraf ekranın arkası — üzerinde kendi microSD yuvası da var (SD_CS/MOSI/MISO/SCK etiketli), ama ben ayrı bir SD modülü kullandım.
Hoparlör:
Joystick:
MAX98357A (ses amfisi):
ESP32-S3 (N16R8):
⚠️ 5V çıkış köprüsü: Bazı ESP32-S3 kartlarında (iki USB-C'li klonlar) 5V pini varsayılan olarak boş kalır — kartın üzerindeki IN–OUT köprü pedini küçük bir lehim damlasıyla (sıcak lehim ucunu değdirmek bile yeterli) kısa devre etmen gerekir. Bu köprü bağlanmazsa kart 5V çıkışı vermez, TFT/SD gibi 5V bekleyen modüller çalışmaz.![]()
SD kart modülü:
Şu anki firmware'de SD kart tamamen çıkarılmış durumda — ama modül olarak cihazın donanımında hâlâ var, ileride hafıza genişletmek isteyenler için yaşadıklarımı buraya not düşüyorum.
Yaşananlar:
-
Ekranın MISO hattı SD kart hattını kirletiyor (bkz. yukarıdaki uyarı — SDO/MISO'yu bağlama).
-
Bunun yanında uygun bir SD kart bulmak da ayrı bir dertti: Bambu Studio ile formatlanmış kartlar kolay bir yöntemle çalışmadı.
-
Çözüm: eski bir 8GB'lık SD kart + 5V güç ile breadboard üzerinde sorunsuz çalıştırdım.
-
Ama bunu gerçek cihaza (kasaya) yüklerken kablolar muhtemelen fazla uzun kaldı ve SD kart her açılışta, denediğim hiçbir yönteme rağmen sağlıklı çalışmadı.
Kasanın içi böyle görünüyordu — kablo boyu/karmaşası şüphemin görsel kanıtı.
Olası çözüm (henüz denenmedi): 5V giriş/çıkışına bir kondansatör eklemek muhtemelen MISO hattındaki kirlenmeyi çözecektir. İleride denenecek ilk fix olarak not düşülüyor. 😃
- Kütüphaneler (Library Manager'dan):
Adafruit GFX Library+Adafruit ILI9341— ekran için, ikisi de şartSdFat(Bill Greiman) — sadeceKabloTestiçin gerekli; asılCihaz.ino'da SD şu an devre dışı olduğundan bu kütüphaneye ihtiyaç yok- Ses (I2S) için ayrı kütüphane gerekmez,
esp32kart paketiyle birlikte gelir
- Kart desteği:
esp32by Espressif (Boards Manager'dan) - Konsolu USB ile bağla,
Cihaz/Cihaz.ino'yu aç - Tools → Board: "ESP32S3 Dev Module" · Port: konsolun portu
- Sağ ok (Upload) → derler, yükler, konsol kendiliğinden başlar
- Bilgisayar konsolu görmüyorsa: karttaki BOOT'u basılı tutup RESET'e bir kez bas, sonra tekrar dene
Kendi kablolarını yeni bağladıysan doğrudan Cihaz.ino'ya atlama — önce bunu yükle. Her devre tek tek doğrulanmadan asıl firmware'de hata aramak çok daha zor; bu sketch tüm donanımı 4 adımda tarayıp sana anında "hangisi çalışıyor, hangisi çalışmıyor" gösterir. İyi şanslar, kolay gelsin! 🔧
İlk denemeni breadboard üzerinde yapman önerilir — kasaya geçmeden önce her şeyin çalıştığından emin ol:
💡 İstersen burada da kalabilirsin — breadboard'da çalışan bir konsol da tam bir Cihaz'dır, oyunlar oynanır. 3D baskı kasa (Cihaz-Case) opsiyonel bir üst seviyedir; printer'ın yoksa hiç dert değil.
Gerçek cihazda KabloTest çalışırken ekran böyle görünür:
Kurulum:
- Yukarıdaki kütüphaneleri kur (bu sefer
SdFatde gerekiyor). KabloTest/KabloTest.ino'yu aç, aynı Board/Port ayarlarıyla yükle (bkz. yukarıdaki adımlar).- Seri Port Monitörü'nü aç, baud hızını 115200 yap — ekranda gördüğün her şeyin ayrıntılı hâli (hata kodları dâhil) buraya da düşer; bir şey ters giderse önce oraya bak.
Açılışta otomatik çalışan sıra:
| # | Test | Ekranda ne görürsün | Nasıl yorumlanır |
|---|---|---|---|
| 1 | Ekran | Kırmızı → Yeşil → Mavi yanıp söner, sonra "EKRAN: TAMAM" | Renkleri gördüysen ekran zaten çalışıyor demektir |
| 2 | SD kart | "SD: TAMAM" (yeşil) ya da "SD: HATA 0x.." (kırmızı) | Hata kodunu Serial Monitör'de sdErrorCode/sdErrorData olarak da bulursun |
| 3 | Ses | "SES: DINLE..." yazar, ardından 3 nota çalar | Notaları duyduysan hoparlör + amfi TAMAM |
| 4 | Canlı panel | Joystick X/Y değeri + yön yazısı, 6 tuş kutusu | Joystick'i oynat, tuşlara sırayla bas — her biri anında tepki vermeli |
Bilmen gereken canlı davranışlar:
- SD kart ilk seferde başarısız olursa loop içinde 3 saniyede bir kendiliğinden yeniden dener — kartı/kabloyu elinle oynatırken ekranda "HATA"dan "TAMAM"a geçtiğini canlı canlı izleyebilirsin, sketch'i tekrar yüklemene gerek yok.
- Joystick ortadayken X/Y için ~2700 civarı görmelisin; bundan çok sapıyorsa potansiyometre ya da kablo şüphelidir.
- Bir tuşa bastığında hem kutusu yeşile döner hem kısa bir "bip" çalar — aynı anda ses devresini de bir kez daha test etmiş olursun.
- HOME tuşu özeldir: ekran güç dalgalanmasıyla beyaza düşerse HOME'a basmak ekranı sıfırdan çizip kurtarır. Beyaz ekrandan böyle çıkabiliyorsan bu da "kontrolcü doğru resetleniyor" anlamına gelen bir tür testtir.
Tavsiye edilen sıra: tüm kabloları aynı anda bağlayıp tek seferde "çalışıyor mu" demek yerine adım adım ilerle — önce ekran (1. adımdaki renkleri gör), sonra SD, sonra ses, en son tuş+joystick. Bir yerde takılırsan sorunu doğrudan o kabloya indirgemiş olursun.
Bir testte çok takılırsan hepsini aynı anda çözmeye çalışma — çalışanlarla devam et. Ekran + ses + tuşlar zaten çalışıyorsa
Cihaz.ino'ya geçip oyun oynayabilirsin; eksik kalan (SD gibi) sonra, üzerine gelince tamamlanır. Küçük başarılar bile yola devam etmeni sağlar. 😃
Her oyun kendi .h dosyasında, ortak komutlarla yazılır (tft, btn, joy, nota).
Oyun kalıbı:
struct XOyun { /* değişkenler */ };
void x_baslat(XOyun& o, Adafruit_ILI9341& tft) { /* başlangıç */ }
bool x_guncelle(XOyun& o, Adafruit_ILI9341& tft, Butonlar& btn, Joystick& joy) {
// her karede çalışır; false dönerse menüye çıkar
}En temiz örnek: flapboy.h. Yeni oyun eklerken 3 dosyaya dokunulur: yeni .h,
menu.h (listeye ekle), Cihaz.ino (#include + sahne). Fikri önce Studio'da
JavaScript ile dene, beğenince C++'a çevirip buraya ekle — ikisi de aynı komutları kullanır.
- 🎮 Studio — cihaza yüklemeden tarayıcıda dene (ayrı depo)
- 💬 Chat — fikirlerini birlikte tasarla/kodla (ayrı depo)
- 📦 Case — 3D baskı kasa + CAD (ayrı depo)
- 🔧 Console — burası: gerçek donanım
MIT — dilediğin gibi kullan, değiştir, dağıt, sat; sadece telif satırını koru. İstersen tamamen değiştir, istersen sil, istersen bambaşka bir şeye dönüştür — özgürsün. 🌱











