Arduino

Arduino UNO R4 ile Taşınabilir Oyun Konsolu MicroBox Yapımı

Arduino UNO R4 ile Taşınabilir Oyun Konsolu MicroBox Yapımı

Geliştirici Szymon Kubica, MicroBox adını verdiği elde taşınabilir bir oyun konsolunu bir araya getirdi. Cihazın işlem gücünü son nesil Arduino UNO R4 kartı sağlıyor ve proje baştan sona kendin-yap (DIY) mantığıyla kurgulanmış. Şemalar, kod ve malzeme listesi açık kaynak olarak paylaşıldığı için aynı konsolu adım adım yeniden üretmek mümkün.

MicroBox'ın asıl değeri, UNO R4'ün önceki 8-bit UNO'lara göre ne kadar ileri gittiğini somut bir üründe göstermesi. Aşağıda konsolun donanımını, yazılımını ve kendiniz yapmak isterseniz izleyeceğiniz yolu ayrıntılarıyla ele alıyoruz.

Kalbinde hangi işlemci var?

MicroBox'ın işlem birimi, Arduino UNO R4 üzerindeki Renesas RA4M1 mikrodenetleyicisi. Bu çip, 48 MHz'de çalışan 32-bit bir Arm Cortex-M4 çekirdeğine dayanıyor. Klasik UNO'daki 16 MHz'lik 8-bit AVR'ye kıyasla hem saat hızı hem de mimari genişliği belirgin şekilde yüksek; bu da ekrana çerçeve çizmek, buton durumlarını okumak ve oyun mantığını yürütmek gibi işlerin aynı döngüde rahatça sığmasını sağlıyor.

Cortex-M4 çekirdeği, tam sayı çarpma-toplama işlemlerini tek çevrimde yapabilen bir donanıma sahip. Basit 2B oyunlarda çarpışma testleri, karo (tile) haritası çizimi ve sprite konumlandırma gibi hesaplar bu sayede darboğaz oluşturmadan akıyor. Bellek tarafında 256 KB flash ve 32 KB SRAM, oyun kodunu ve ekrana basılacak grafik tamponunu tutmaya yetiyor. Flash, oyunun kodunu ve sprite grafiklerini kalıcı olarak barındırırken, SRAM çalışma sırasında değişen konum, skor ve çizim tamponu gibi verileri tutar.

UNO R4'ün klasik UNO'ya göre bir başka artısı, kart üzerindeki 12-bit dijital-analog çevirici (DAC) ve gelişmiş zamanlayıcılardır. Aynı 32-bit sınıfı işlemci ailesini yeni geliştirme kartlarında da giderek daha çok görüyoruz. Oyun sesini üretmek için bu DAC ya da bir zamanlayıcı çıkışı kullanılabilir; böylece basit bir hoparlör veya buzzer ile efekt ve melodi çalmak mümkün olur. 32-bit mimari ayrıca daha geniş adres alanı sunduğu için, 8-bit AVR'de sıkça karşılaşılan bellek bölümü sınırlarıyla uğraşmadan daha derli toplu kod yazılabilir.

Ekran ve giriş birimleri

Konsolun görüntüsünü renkli bir TFT LCD panel oluşturuyor. Bu tür projelerde genellikle 2,2 ila 3,5 inç arası, SPI arayüzlü küçük paneller tercih edilir; çünkü SPI, az sayıda pin kullanarak yüksek veri hızı sunar ve UNO R4 ile doğrudan haberleşir. 128x128 veya 160x128 gibi çözünürlükler, retro tarzı oyunlar için hem yeterli hem de çizim yükü açısından hafiftir.

Renkli TFT panellerde her piksel genellikle RGB565 biçiminde, yani 16 bitle ifade edilir: 5 bit kırmızı, 6 bit yeşil, 5 bit mavi. Bu biçim, tam 24-bit renge göre yarı yer kaplarken retro oyunların ihtiyacı olan renk zenginliğini fazlasıyla karşılar. SPI hattı yüksek saat hızında sürüldüğü için, 128x128 gibi bir çözünürlükte tüm ekranı tazelemek görece hızlıdır; yine de akıcı bir kare hızı için genellikle tüm ekran değil, yalnızca değişen bölgeler yeniden çizilir.

Giriş tarafında klasik bir yön tuş takımı (D-pad) ve birkaç aksiyon butonu bulunuyor. Bu tuşlar doğrudan UNO R4'ün dijital GPIO pinlerine bağlanıyor. Mekanik butonlarda basış anında oluşan mikro sıçramaları temizlemek için yazılımda debounce uygulanıyor: kod, bir basışı geçerli saymadan önce sinyalin birkaç milisaniye kararlı kalmasını bekliyor. Böylece tek bir basış yanlışlıkla birden çok kez algılanmıyor. Butonları pinlere bağlarken dahili çekme (pull-up) dirençleri etkinleştirildiğinde harici direnç eklemeye bile gerek kalmıyor.

Güç yönetimi ve gövde

Taşınabilirlik için konsol bir LiPo (lityum polimer) batarya ile besleniyor. Tek hücreli bir LiPo, nominal 3,7 V üretir ve tam dolu haldeyken yaklaşık 4,2 V'a çıkar. LiPo hücreler, hacimlerine göre yüksek enerji sakladıkları için elde taşınan cihazlarda yaygındır. Bataryayı güvenle doldurmak içinse çoğu projede olduğu gibi TP4056 gibi küçük bir şarj modülü kullanılıyor; bu modül şarj akımını sınırlayıp hücre dolduğunda akımı keserek aşırı şarjı önlüyor. Şarj akımı, modül üzerindeki bir direncin değeriyle ayarlanır ve tipik olarak 1 A'e kadar seçilebilir. TFT ekranın arka aydınlatması en çok akım çeken bileşen olduğu için, parlaklığı yazılımdan kısmak pil ömrünü belirgin biçimde uzatır.

Fiziksel gövde, 3D yazıcıda basılmış bir kasa. Basılabilir kasa dosyaları paylaşıldığı için parça yerleşimini değiştirmek, kendi renginizi seçmek ya da tuş yerlerini elinize göre ayarlamak mümkün. Kasa hem bileşenleri koruyor hem de uzun oyun seanslarında elde rahat durması için ergonomiyi belirliyor.

Donanım bileşen listesi

MicroBox'ı oluşturan temel parçalar ve bunların projedeki rolü aşağıdaki tabloda özetlenmiştir. Değerler, UNO R4'ün resmi özelliklerine ve bu tür konsollarda yaygın kullanılan bileşenlere dayanır.

BileşenTipik değer / modelProjedeki rolü
İşlemciRenesas RA4M1, Cortex-M4, 48 MHzOyun mantığı ve ekran çizimi
Flash bellek256 KBProgram ve grafik verisi depolama
SRAM32 KBÇalışma zamanı değişkenleri ve çizim tamponu
EkranSPI TFT LCD, 128x128 / 160x128Görüntü çıkışı
GirişD-pad + 4-6 aksiyon butonuOyuncu kontrolü (GPIO)
BataryaŞarj edilebilir LiPoTaşınabilir güç kaynağı
Şarj devresiTP4056 sınıfı modülGüvenli batarya şarjı
BağlantıUSB-CProgram yükleme ve güç
Kasa3D baskı (FDM)Gövde ve ergonomi

Yazılım tarafı

Programlama, Arduino IDE ve C/C++ ile yapılıyor. Ekrana çizim için SPI TFT sürücü kütüphaneleri, buton okuma için basit GPIO çağrıları kullanılıyor. Performansı toplamanın anahtarı, her kareyi tek tek piksel çizmek yerine belleğe hazırlanan bir tampon üzerinden panele blok halinde göndermek; bu yaklaşım titremeyi azaltıp kare hızını dengeliyor.

Akıcı bir oyun döngüsünün temeli, çizim ve girdi okuma işlerinin düzenli aralıklarla tekrarlanmasıdır. Tipik bir döngüde önce butonlar okunur, ardından oyun durumu güncellenir, en son da ekran tazelenir. Ekranı doğrudan tek tek piksel çizerek güncellemek titremeye yol açtığı için, çerçeve önce bellekte hazırlanıp panele blok olarak gönderildiğinde (çift tamponlama mantığı) görüntü çok daha kararlı olur. Kare hızını sabit tutmak için döngünün başında geçen süre ölçülür ve gerekirse kısa bir bekleme eklenir.

UNO R4'ün modern USB-C portu, kodu yükleme ve konsolu besleme işini tek kabloya indiriyor. Projenin açık kaynak olması sayesinde mevcut oyunları düzenlemek ya da sıfırdan kendi oyununuzu yazmak, hazır iskelet kod üzerinden ilerleyebildiğiniz için erişilebilir bir uğraşa dönüşüyor. Ekrana çizim yükünü hafifletmek için grafikler genellikle küçük sprite'lar halinde saklanır ve yalnızca ekranda konum değiştiren nesneler yeniden basılır.

Kimler yapabilir, nasıl başlanır?

MicroBox; temel elektronik ve Arduino bilgisi olan herkesin üstesinden gelebileceği, başlangıç seviyesinin biraz üzerinde bir proje. Lehimleme ve program yükleme adımlarına aşinaysanız, konsolu bir araya getirmek birkaç gün ile birkaç hafta arasında sürebilir.

İlk adım bileşenleri toplamak: bir Arduino UNO R4 kartı, SPI TFT ekran, butonlar, dirençler ve bir LiPo batarya. Ardından 3D yazıcınız varsa kasayı basar, yoksa bir baskı hizmetinden temin edersiniz. Bileşenleri lehimleyip Arduino IDE üzerinden kodu yükledikten sonra konsol çalışmaya hazır olur. Projenin şemalarına, koduna ve malzeme listesine geliştiricinin Arduino blogundaki tanıtımı üzerinden ulaşabilirsiniz.

Sık sorulan sorular

Neden özellikle Arduino UNO R4 seçildi?

UNO R4, önceki 8-bit UNO modellerine göre çok daha güçlü bir işlemci taşıyor. 48 MHz'lik Cortex-M4 çekirdeği ve genişletilmiş belleği, ekrana sık çerçeve çizmeyi ve oyun mantığını aynı anda yürütmeyi mümkün kılıyor; bu da daha akıcı bir deneyim demek.

MicroBox'ta hangi oyunlar oynanır?

Konsol, basit 2B retro oyunlar için tasarlandı: bulmacalar, klasik atari tarzı oyunlar veya kendi yazdığınız platform oyunları. Kaynaklar dikkatli kullanıldığında biraz daha karmaşık oyunlar da denenebilir.

Evde yapmak ne kadar zor?

Temel lehimleme becerisi ve Arduino'ya aşinalık gerekiyor. Adım adım yönergeler izlendiğinde başlangıç sonrası seviyedeki bir yapımcı süreci tamamlayabilir; tecrübeye göre birkaç günden birkaç haftaya kadar zaman ayırmak gerekir. En çok zaman alan kısımlar genellikle butonların ekrana ve karta düzgün yerleşmesi ile kasa ölçülerinin bileşenlere tam oturması olur.

Kendi oyunumu yazmak için ne bilmem gerek?

Temel C/C++ ve Arduino IDE bilgisi yeterli. Ekrana çizim ve buton okuma için hazır kütüphaneler işin büyük kısmını üstlenir; siz oyunun mantığına, yani nesnelerin nasıl hareket edip çarpıştığına odaklanırsınız. Projenin açık kaynak kodu, üzerine ekleme yapabileceğiniz çalışan bir iskelet sunduğu için sıfırdan başlamak zorunda kalmazsınız.

Mertcan Aydemir
Yazar

Mertcan Aydemir

Mertcan, elektrik-elektronik, robotik sistemler ve Arduino tabanlı projeler üzerine içerikler üreten bir teknoloji yazarı. Gömülü sistemler, sensör entegrasyonları ve otomasyon çözümleri üzerine pratik anlatımlarıyla öne çıkıyor. Karmaşık teknik konuları anlaşılır ve uygulanabilir hale getirmeyi amaçlamakta. Site üzerinde hem yeni başlayanlara hem de ileri seviye kullanıcılara yönelik haberler ve rehberler paylaşmakta.

Yorumlar 0

Yorum Bırakın