İçindekiler:

Cep ZX (El Tipi ZX Spektrumu): 10 Adım
Cep ZX (El Tipi ZX Spektrumu): 10 Adım

Video: Cep ZX (El Tipi ZX Spektrumu): 10 Adım

Video: Cep ZX (El Tipi ZX Spektrumu): 10 Adım
Video: A multi-purpose expansion cartridge for the ZX Spectrum - the ZX Dandanator MTD 2024, Aralık
Anonim
Cep ZX (Elde Taşınabilir ZX Spektrumu)
Cep ZX (Elde Taşınabilir ZX Spektrumu)
Cep ZX (Elde Taşınabilir ZX Spektrumu)
Cep ZX (Elde Taşınabilir ZX Spektrumu)
Cep ZX (Elde Taşınabilir ZX Spektrumu)
Cep ZX (Elde Taşınabilir ZX Spektrumu)

80'lerin çocuğuyum ve o dönemin 8-bit bilgisayarlarıyla ilgili güzel anılarım var. Kalbimde özel bir yeri olan ilk bilgisayarım Sinclair ZX Spectrum 48K idi. Yakın zamanda web'deki eski bilgisayarlara odaklanan bazı toplulukları keşfettikten sonra, bu nostaljinin bir kısmını kendim için yeniden yaşamak istediğime karar verdim ve MacBook'uma Fuse öykünücüsünü kurdum. Bu bir süre eğlenceliydi ama gerçekten özel bir cihaz istedim - tercihen yaşam tarzıma uyacak küçük, taşınabilir ve bağımsız bir şey. Bu aşamadaki seçim, ya harika Ben Heck'in yolunu takip etmek ve orijinal ZX donanımını taşınabilir bir şeye küçültmek ya da küçük bir tek kartlı bilgisayarda öykünmeyi hile yapmak ve kullanmaktı. hile yapacağım:)

Peki, taşınabilir ZX Spectrum'umdan ne istiyorum?

  • Ucuz: Biraz eğlenceli nostaljiye büyük miktarda para harcamak için çok fazla projem var.
  • Taşınabilir: Kanepede veya bahçede tembel bir öğleden sonra oynayabileceğim bir şey olmalı.
  • Klavye: Sadece oyun oynamak istemiyorum, programlamak da istiyorum. Tam deneyimi elde etmek için, bu harika anahtar kelime anahtarlarına sahip olması gerekir.
  • Joystick: Klavye ile platform oyunları oynamayı hiç sevmedim. Macera oyunları, elbette, ama ben sadece macera oyunları oynamak istemiyorum, bu yüzden bir joystick'e ihtiyacı olacak.
  • Anında: 80'lerde bant yüklemeden nefret ettim ve aradan geçen yıllarda buna daha da düşkün olduğumu hayal edemiyorum.

Tüm bunları göz önünde bulundurarak, çeşitli bileşenleri anlamama yardımcı olacak bir blok diyagram hazırladım. Öyleyse binaya geçelim.

Adım 1: USB Klavye ve Joystick

USB Klavye ve Joystick
USB Klavye ve Joystick
USB Klavye ve Joystick
USB Klavye ve Joystick
USB Klavye ve Joystick
USB Klavye ve Joystick

Klavyeyi doğru kullanmak, orijinal ZX Spectrum'un görünümünü ve hissini yakalamanın anahtarıdır. Orijinal Spectrum'un içindekilerle hiçbir ortak yanı olmayan, elde taşınabilir bir öykünme aygıtı oluşturuyor olabiliriz, ancak dikkatli tasarımla, 80'lerin bilgisayar deneyimini anımsatan bir şey yaratmak mümkün olmalıdır.

Bazı protokoller ve büyük bir dokunsal anahtar yığını ile başlayarak, birkaç fikir denedim ve fotoğraflarda gösterilen kademeli yerleşime karar verdim. Kullandığımız protokol kartları, birçok perakendeciden çevrimiçi olarak temin edilebilen standart 7x9cm (26x31 delik) boyutlarındadır. Anahtarlar, daha yumuşak bir hissi olan ve daha yaygın delikli muadillerinden daha az gürültülü olan yüzeye monte versiyonlardır, ancak gövde boyutları neredeyse aynı olduğu için her ikisi de çalışmalıdır.

Joystick kontrolleri daha sonra klavyenin hemen üzerindeki kalan alana gitti. Solda 5 yönlü dokunsal gezinme anahtarı ve sağda büyük bir ateş düğmesi kullanmaya karar verdim. Joystick, öykünücünün menü sistemi için bir kontrolör ve temeldeki Linux sistemiyle etkileşim için bir fare olarak ikiye katlanır, bu yüzden ayrıca küçük bir ikincil düğme ekledim.

Klavyenin mikrodenetleyicisi bir Arduino Pro Micro'dur. Bu, klavye, fare veya joystick gibi bir USB insan arabirim aygıtı (HID) olarak programlanabilen küçük bir karttır.

Anahtarlar yerine lehimlendikten sonra, anahtarların satırlarını ve sütunlarını mikrodenetleyiciye bağlayan matrisin oluşturulması gerekir. Bu matris, 40 tuşun tamamını artı 7 joystick düğmesini Pro Micro'nun 18 I/O pinine bağlamamızı sağlayacak. Spectrum klavyesinin Caps Shift ve Symbol Shift tuşları dışında birden fazla tuşa basmayı işlemesi gerekmiyor, bu yüzden bunları özel pinlere koyacağız, o zaman hayalet tuşu önlemek için diyot kullanma konusunda endişelenmemize gerek kalmayacak. presler. Matris dahil klavyenin nasıl bağlandığını göstermek için bir şema ekledim. İlk olarak, her sütun bir uzunlukta tek damarlı tel ile bağlanır ve daha sonra sıralar, sütunları kısa devre olmadan çaprazlamak için dikkatlice şekillendirilmiş tek damarlı tel kullanılarak bağlanır. Bu biraz zor olabilir, çünkü sıra tellerini kolonlarla temastan kaçınmak için yeterince yükseğe, ancak son montaj sırasında doldurmamız gereken tüm kablolar için yer bırakacak kadar düşük almanız gerekir. Son olarak satırlar ve sütunlar eski IDE kablolarından gelen teller ile Arduino pinlerine bağlanır.

Yukarıda bahsedildiği gibi, joystick denetleyicisi aynı zamanda bir imleç denetleyicisi ve bir fare olarak da işlev görecek, bu nedenle modlar arasında geçiş yapabilmemiz gerekecek. Varsayılan mod imleç modu olacak, Caps Shift + Ateş düğmesinin bir kombinasyonu joystick moduna geçecek ve Symbol Shift + Ateş düğmesi kombinasyonu fare moduna geçecektir. Hangi modda olduğunu göstermek için joystick panelinin ortasında bir çift 3mm LED var. Bir Güç LED'i de faydalı olacaktır ve bunu Pi ile sağlamanın iyi bir yolu, Pi'nin UART TX pinine bir LED bağlamaktır, çünkü bu, cihaz açıkken sürekli veri gönderecektir.

Gevşek tellerin kullanım sırasında yıpranmasını veya matris tellerinin kısa devre yapmasını önlemek için her şey bolca sıcak tutkalla kaplanmıştır - çirkin ama etkilidir!

Klavyeyi çalıştırmanın son adımı, Arduino'yu havuzumdan ZX_Spectrum_Keyboard koduyla programlamaktır. Bunu yaptıktan sonra, havyayı gerçekten yere koyabilir, klavyeyi normal bir bilgisayara takabilir ve Fuse veya Spectaculator gibi bir Spectrum emülatörü ile kullanabilirsiniz. Ama burada durmuyoruz, o yüzden devam edelim…

2. Adım: LCD Ekran

LCD ekran
LCD ekran

Orijinal Spectrum, 256x192 piksel ekran çözünürlüğüne sahiptir. Bu oranı (yaklaşık olarak) korumak ve her iki tarafta siyah çubuklardan kaçınmak için Raspberry Pi için tasarlanmış bir Waveshare 3.2 320x240 TFT LCD dokunmatik ekran seçtim. Doğrudan Pi'nin GPIO başlığına bağlanmayacak, böylece kaldırabiliriz. 7x9cm'lik bir protokol kartını 2,1x9cm'e indirdim (kalan iki köşe deliği üst klavye delikleriyle hizalandığı ve GPIO başlık pimlerini lehimlemek için yeterli alan olduğu sürece tam boyut önemli değil)) ve pimleri yerinde lehimleyerek ekranı klavyenin üzerine monte etmenin kolay bir yolunu sağladık.

Pi'ye yalnızca SPI, güç ve dokunmatik ekran G/Ç pinlerini bağlamamız gerekiyor - hangi pinlerin gerçekten gerekli olduğunu bulmak oldukça zor olabilir, ancak yeterince dikkatli bakarsanız bilgi oradadır. Waveshare ekranı 10 pin kullanır: 4, 6, 9, 13, 15, 19, 21, 23, 24 ve 26. Açıkçası, bunu farklı bir ekranla yapıyorsanız, önce doğru pinleri doğrulamanız gerekir. havyanızı kapmak.

Özel bir yazılım yapılandırması gerekmez - sadece üreticinin sürücü yazılımını yükleyin ve kullanıma hazırdır.

3. Adım: Kablosuz (Bluetooth)

Raspberry Pi Zero kartının kablosuz özelliği yok, yalnızca bir kullanışlı USB bağlantı noktası var ve durumda bir USB hub için yeterli alan olmayacak, bu yüzden yapıma bir tür kablosuz özellik eklemek için biraz yaratıcı olmam gerekti. Bunu Zero W ile yapıyorsanız, bu adımı atlayabilirsiniz.

Raspberry Pi'nin kullanışlı bir kablosuz özelliği eklememize izin verecek güzel bir özelliği var. Pi'nin UART pinlerine ucuz bir HC-05 Bluetooth seri modülü takarak ve sistem konfigürasyonunu değiştirerek, Bluetooth üzerinden seri kullanarak komut satırı terminaline kablosuz erişim elde etmek mümkündür. Daha sonra aygıta dosya göndermek ve dosya sistemini yönetmek için ortak araçları kullanabiliriz.

4. Adım: Güç

Güç
Güç
Güç
Güç

Bataryamı geliştirmenin sonunda seçtim, bu yüzden mevcut alana sığacak bir hücre seçmem gerekiyordu. Seçtiğim, Walkera Syma X5 drone'nun yerine satılan 2000mAH 25C 1S Lipo (boyutlar: 81x34x9mm) idi. Normal bir USB bağlantısı ile pili yerinde şarj edebilmek ve cihazı şarj olurken kullanabilmek iyi olurdu. Karmaşık güç kontrol devreleriyle gerçekten uğraşmak istemiyoruz, bu yüzden USB şarjı sağlayan hazır bir modül ve ayrıca Pi'ye doğrudan güç sağlamak için artırılmış 5V çıkış kullanacağız. Cihazın tamamen kapatılabilmesini sağlamak için, bu modülün çıkışı ile Pi arasında, cihaz kapalıyken bile pilin şarj edilmesini sağlayan bir kaydırma anahtarı vardır. Veri bozulması sorunlarını önlemek için Pi'nin düzgün bir şekilde kapatılması gerekir. Bluetooth seri üzerinden giriş yapmak yerine Pi'nin pin 5'ine (GPIO3) dokunsal bir anahtar bağlayabilir ve bunu izleyen ve basıldığında bir kapatma başlatan küçük bir komut dosyası yazabiliriz. Güç ve kablosuz bileşenler, doğrudan klavyenin altına oturacak 7x9 cm'lik başka bir protokole lehimlendi.

Adım 5: Hepsini Bir Araya Bağlama

Hepsini Bir Araya Bağlamak
Hepsini Bir Araya Bağlamak
Hepsini Bir Araya Bağlamak
Hepsini Bir Araya Bağlamak
Hepsini Bir Araya Bağlamak
Hepsini Bir Araya Bağlamak

Yapılan tüm çeşitli parçalarla, iç parçaları monte edebiliriz. Montaj sırasında karşılaştığım en büyük sorun, USB bağlantı noktasının Arduino Pro Micro'mdan kopması ve bir USB kablosu kullanmak yerine telleri doğrudan lehim pedlerine lehimlememi gerektirmesiydi. Bu, Pro Micro panolarında kötü bilinen bir zayıf noktadır, bu nedenle, bundan kaçınmak için montajdan önce muhtemelen iyi bir sıcak tutkal küresi sürmeye değer. Bu talihsizliğin başınıza gelmediğini varsayarsak, bir seçeneğiniz var: klavyenizi Pi'ye bağlamak için süper ince bir mikro USB'den mikro USB'ye kablo yapabilir veya bir veya iki ucu doğrudan panolara lehimleyebilirsiniz. Arduino tarafını lehimlemem gerektiğinden, Pi tarafını da doğrudan kartın arkasındaki test noktalarına lehimledim. Her seçeneğin artıları ve eksileri vardır, bu yüzden hangisini tercih edeceğiniz size kalmış.

Tahtaları M3 naylon zıtlıklar ile bir arada tutacağız. Klavye ve güç kartı arasındaki alt delikleri bağlamak için 2x 9mm ayırıcılara ihtiyacımız var. Üst delikler de ekranı tutar, bu nedenle klavye ile ekran arasında 2,5 mm mesafe ve ekran ile güç kartı arasında 4,5 mm mesafe olmasını isteriz. Yan fotoğraf bunun nasıl göründüğünü gösterir. Her şeyi paralel hale getirmek için zıtlıkların biraz dikkatli bir şekilde kesilmesi gerekecek - tüm klavye kablolarıyla biraz sıkı bir uyum olabilir, ancak birlikte gitmesi gerekir. Fotoğraflardan da anlaşılacağı gibi, cihaz gerçek bir muhafazaya ihtiyaç duymadan montajdan sonra çalıştırılabilir ve kullanılabilir. Yakında bir kasa yazdıracağız, ancak buna geçmeden önce işletim sistemini kurmamız ve yapılandırmamız gerekecek.

6. Adım: Yazılım

Dahili parçalar monte edildiğinde, yazılım kurulumu ve konfigürasyonu ile devam edebiliriz. Raspberry Pi standart bir Raspbian kurulumunda çalışacak. TFT ekran sürücüleri dışında yüklenmesi gereken tek ekstra yazılım Fuse uygulamasıdır. Aşağıdakilerle yüklenebilen uygun tam ekran işlevselliği elde etmek için SDL sürümünü kullanıyoruz:

sudo apt-get install fuse-emulator-sdl

Kapatma düğmesi basmalarımızı işlemek için, 'kapatma' komut dosyasını kod depomdan /home/pi/ dizinine kopyalayın.

Bluetooth üzerinden seri konsol almak için /boot/config dosyasına aşağıdaki satırı ekleyin:

etkinleştirme_uart=1

Kapatma komut dosyamızın ve Fuse öykünücünün başlatma sırasında çalışmasını isteyeceğiz, bu nedenle şu satırları /etc/xdg/lxsession/LXDE-pi/autostart dizinine ekleyin:

@fuse-sdl --sessiz --kempston --otomatik yüklemesiz

Bu değişiklikleri yaptıktan sonra Pi'yi yeniden başlatın ve yapmanız gerekir.

7. Adım: Muhafaza ve Son Montaj

Muhafaza ve Son Montaj
Muhafaza ve Son Montaj
Muhafaza ve Son Montaj
Muhafaza ve Son Montaj
Muhafaza ve Son Montaj
Muhafaza ve Son Montaj

Muhafaza, Fusion 360'ta modellenmiştir (bunun nasıl yapılacağı, bu talimatın kapsamı dışındadır). 5 parça vardır: kasa arkası, ekran önü, klavye önü, güç düğmesi ve kontrol paneli kapağı. Kontrol paneli kapağı esnek bir filamentte basılmalıdır (esnek PLA kullandım ancak NinjaFlex gibi daha yumuşak bir malzeme daha iyi olabilir); diğer her şey sert bir plastikte basılmalıdır (Filamentum black PLA kullandım).

Güç düğmesine biraz direnç kazandırmak ve tıkırdamasını önlemek için arkasına 3 mm'lik yapışkan köpük yapıştırın ve ardından güç PCB'sindeki dikey tac anahtarının üzerine rahatça oturmasını sağlamak için 4 mm'lik bir delik açın. Güç kartının takılmasını önlemek için fotoğraflarda görüldüğü gibi bir kenarını hafifçe kırpmanız gerekebilir. Düğmeyi güç anahtarına tutmak için küçük bir yapıştırıcı kullanmayı da yararlı buldum.

Muhafazanın üst kısımlarının güvenli bir şekilde sabitlenmesini sağlamak için ekran ön panelindeki üst bağlantılara birkaç naylon ayırıcı yapıştırmamız gerekiyor. Kuruduktan sonra, zıtlıkları aynı hizada kesin.

Panoları yerleştirmek için önce montaj direklerini oluşturmamız gerekiyor. Bazı M3 naylon vidaların kafalarını çıkarın ve dişli parçaları ön panellerin her birinin alt deliklerine yapıştırın. Bunlar kuruduğunda, 2 ön panel birbirine yapıştırılabilir ve klavye, 9 mm ve 2,5 mm ayırıcılar kullanılarak yerine sabitlenebilir. Daha sonra, bunun yerine, ekran üst direklere yerleştirilebilir ve 4,5 mm'lik ayırıcılar eklenebilir. Son olarak, güç kartı yerine yerleştirilebilir ve teller arka kısmın takılmasına izin verecek şekilde düzenlenebilir.

Pil, çift taraflı bant veya köpük levha ile yerine yapıştırılmalı ve güç konektörüne takılmalıdır. Artık iki yarım bir araya getirilebilir ve her şeyi yerine sabitlemek için bazı kısa havşa başlı M3 makine vidaları kullanılır.

Son olarak, ters çevirin ve kontrol paneli kapağını klavye paneline yapıştırın. Bunu güçlü bir bağ için iki parçalı bir epoksi yapıştırıcı ile yaptım.

8. Adım: Klavye Yerleşimi

Klavye Yerleşimi
Klavye Yerleşimi
Klavye Yerleşimi
Klavye Yerleşimi
Klavye Yerleşimi
Klavye Yerleşimi

Neredeyse tamamız. Eksik olan tek şey, bazı anahtar işaretler ve bir kaplamadır, böylece tüm bu harika anahtar kelimelere nasıl ulaşacağımızı biliyoruz.

Birincil harfler ve sayılar gerçek anahtar üstlerindedir. 4 mm çapındaki üst kısımlara mükemmel şekilde uyan gerçekten küçük 2,5 mm harf transferleri buldum. Uygulaması biraz zor çünkü üst kısımlar ovuşturdukça hareket ediyor ama bir pakette epeyce harf var, bu yüzden bazı hatalar yapmakta sorun yok. Birkaç tanesine kalıcı bir kalemle dokunmayı bitirdim, ancak geriye dönüp baktığımda, onları ılık suda ıslatmayı ve yerlerine kaydırmayı denemeliydim (eğer bir model kit yaptıysanız, bu sürece aşina olacaksınız.). Harfleri kullanım sırasında korumak için her bir tuşa biraz şeffaf oje sürdüm.

Anahtarların gümüş gövdelerinin kaplamadaki boşluklardan görünmesini önlemek için, onları renklendirmek için kalıcı bir işaretleyici kullandım - bu, fotoğraflardan birinin alt satırında görülebilir.

Basılı bindirmeleri açık kaynaklı GIMP grafik programında tasarladım ve ardından bunları fotoğraf kalitesinde mat kağıda yazdırdım. İdeal olarak, bindirmeler mümkün olduğunca ince olacaktır - Her markada böyle olmasa da, kullandığım Epson markalı kağıdın arkasını çok kolay bir şekilde soyabildim. Baskıyı korumak için kağıdı şeffaf yapışkanlı vinil tabakayla kapladım ve kasaya yapıştırmak için arkasına çift taraflı bant yapıştırdım. Bununla birlikte, bindirmeleri yapıştırmadan önce delikleri açmamız gerekiyor. Ucuz bir 4 mm deri delgeç kullandım ve en iyi sonuçları, zımbaları keskinleştirerek ve bazı hurda 3 mm alüminyum levhaya karşı doğrudan keserek elde ettim. O zaman bindirmelerin sıralanması ve yapıştırılması yeterlidir.

9. Adım: Sonuç

Ve işimiz bitti! Bu, temel elektronik, lehimleme, 3D modelleme, programlama ve hatta küçük bir grafik düzeni dahil olmak üzere bir dizi beceri gerektiren oldukça büyük bir proje oldu. Sonuçta çok ödüllendirici oldu ve bitmiş cihazla oynamak çok eğlenceli, ancak orijinal kriterlerime göre nasıl gidiyor?

Ucuz: Halihazırda sahip olduğum ürünlerin mevcut perakende fiyatları ve bu projenin çok ötesine geçecek çift taraflı bant gibi kırtasiye malzemeleri dahil olmak üzere her şeyin toplam maliyeti 80 £ civarındadır ve bu da onu uygun fiyatlı bir proje haline getirir.

Taşınabilir: Kesinlikle taşınabilir. Bu cihaz cebe rahatça sığar ve her yerde kullanılabilmesi için tamamen bağımsızdır. Tekrar inşa edecek olsaydım, navigasyon çubuğunu kullanmak yerine, cihazın hattının üzerine çıktığı için hasara karşı savunmasız bırakan düz 4 yollu joypad tarzı bir kontrol cihazı yapardım. Dokunmatik ekran arayüzüne ihtiyacım olmadığından ve dirençli yüzey özellikle hasar görmeye meyilli olduğundan, benzer boyutta ve oranda dokunmatik olmayan bir ekranın çizilmeye karşı daha dayanıklı bir kapakla mevcut olup olmadığını görmek isterim.

Klavye ve Joystick: Bunların nasıl çalıştığından gerçekten memnunum. Orijinalinin cansız hissine sahip olmasa da, klavyeyi kullanmak şaşırtıcı bir şekilde eski ZX Spectrum'u andırıyor - düzen, kaplama ve anahtar kelime uygulaması bunu başarmak için birlikte iyi çalışıyor. USB klavye, aynı deneyimi sağlamak için Fuse öykünücüsünü çalıştıran bir bilgisayarla kendi başına da kullanılabilir.

Anında: Bluetooth seri modülünü kullanmak, Fuse arabiriminden çıkmaya gerek kalmadan teyp arşivlerini başka bir bilgisayardan cihaza aktarmayı nispeten kolaylaştırır ve bir dosya göndermek için bir istemci tarafı komut dosyası yazarak süreci daha da kolaylaştırmak mümkün olmalıdır. cihaza. Çoğu işletim sisteminde yerleşik olan standart Bluetooth "cihaza gönder" dosya aktarım özelliğini veya Samba gibi uygun bir dosya paylaşım sistemini kullanabilmeyi tercih ederim. Ancak, bunlar yalnızca Pi Zero W kartıyla mevcut olacak ve bunu bu yapı için kullanmadım.

Yukarıda belirtilen maddelere ek olarak, bu projeye yeniden sıfırdan başlasaydım, projenin başında daha büyük kapasiteli daha ince bir pil seçerdim ve sonunda uygun boyutta bir pil seçmek zorunda kalmadan ona göre tasarlardım. proje. Aygıta dosya gönderme seçeneklerini genişletmek için Bluetooth seri modülü yerine Pi Zero W kullanırdım. Bir başka bariz gelişme, şu anda ne kadar şarj kaldığını görmenin bir yolu olmadığından, bir tür donanım pil durumu göstergesi olacaktır. Ayrıca, sert kapanmalara daha toleranslı olacak ve ayrı bir kapatma düğmesine gerek kalmadan tek bir açma/kapama anahtarına izin vermesi gereken Alpine Linux gibi Ramdisk tabanlı bir işletim sistemi kullanmayı düşünürdüm - daha çok orijinal ZX Spectrum gibi, sadece işiniz bittiğinde fişini çekin.

Bu aygıt için, güç bileşenlerini ayrı bir kart yerine klavyenin arkasına yerleştirmemize olanak tanıyan özel bir PCB tasarlamak ilginç olabilir. Bu, bitmiş cihazın derinliğini önemli ölçüde azaltabilir. Ayrıca cihazın montajını kolaylaştıracak ve bir tür kendi kendine montaj kiti potansiyeli sunacaktır. Bu projeye yeterince ilgi varsa, bu sorunları ele alan bir sürüm 2 yapabilirim.

Adım 10: Kaynaklar

Bu projeyi oluşturmak için aşağıdaki kaynaklara ihtiyaç vardır:

3B yazdırılabilir vaka dosyaları (Thingiverse):

Kod (Github):

Önerilen: