Skip to content

aid-buildandlearn/Cihaz-Console

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🇹🇷 Türkçe · 🇬🇧 English · 🇨🇳 中文

Cihaz Console

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ı:

  • Consolebu 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. 😃


İçinde ne var

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

Donanım

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.

Modül fotoğrafları

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ü:


Bilinen Sorun: SD Kart

Ş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. 😃


Yükleme (Arduino IDE)

  1. Kütüphaneler (Library Manager'dan):
    • Adafruit GFX Library + Adafruit ILI9341 — ekran için, ikisi de şart
    • SdFat (Bill Greiman) — sadece KabloTest için gerekli; asıl Cihaz.ino'da SD şu an devre dışı olduğundan bu kütüphaneye ihtiyaç yok
    • Ses (I2S) için ayrı kütüphane gerekmez, esp32 kart paketiyle birlikte gelir
  2. Kart desteği: esp32 by Espressif (Boards Manager'dan)
  3. Konsolu USB ile bağla, Cihaz/Cihaz.ino'yu aç
  4. Tools → Board: "ESP32S3 Dev Module" · Port: konsolun portu
  5. Sağ ok (Upload) → derler, yükler, konsol kendiliğinden başlar
  6. Bilgisayar konsolu görmüyorsa: karttaki BOOT'u basılı tutup RESET'e bir kez bas, sonra tekrar dene

Kablo testi (KabloTest/KabloTest.ino)

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:

  1. Yukarıdaki kütüphaneleri kur (bu sefer SdFat de gerekiyor).
  2. KabloTest/KabloTest.ino'yu aç, aynı Board/Port ayarlarıyla yükle (bkz. yukarıdaki adımlar).
  3. 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. 😃


Yeni oyun ekleme

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.


Platformun diğer parçaları

  • 🎮 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

Lisans

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. 🌱

About

Cihaz Console — ESP32-S3 donanim + firmware; ilk ders: 7 oyunlu el konsolu (Cihaz ogrenme platformu)

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors