Daftar Isi:

Pocket ZX (Spektrum ZX Genggam): 10 Langkah
Pocket ZX (Spektrum ZX Genggam): 10 Langkah

Video: Pocket ZX (Spektrum ZX Genggam): 10 Langkah

Video: Pocket ZX (Spektrum ZX Genggam): 10 Langkah
Video: Using a ZX Spectrum 48K ROM on a Harlequin 128 board 2024, November
Anonim
Pocket ZX (Spektrum ZX Genggam)
Pocket ZX (Spektrum ZX Genggam)
Pocket ZX (Spektrum ZX Genggam)
Pocket ZX (Spektrum ZX Genggam)
Pocket ZX (Spektrum ZX Genggam)
Pocket ZX (Spektrum ZX Genggam)

Saya adalah anak tahun 80-an dan memiliki kenangan indah tentang komputer 8-bit pada masa itu. Komputer pertama saya - yang memiliki tempat khusus di hati saya - adalah Sinclair ZX Spectrum 48K. Setelah baru-baru ini menemukan beberapa komunitas yang berfokus pada komputer lama di web, saya memutuskan untuk menghidupkan kembali beberapa nostalgia itu untuk diri saya sendiri dan menginstal emulator Fuse di MacBook saya. Ini menyenangkan untuk sementara tetapi saya benar-benar menginginkan perangkat khusus - lebih disukai sesuatu yang kecil, portabel, dan mandiri agar sesuai dengan gaya hidup saya. Pilihan pada tahap ini adalah mengikuti jalur Ben Heck yang mengagumkan dan mengecilkan perangkat keras ZX asli menjadi sesuatu yang portabel atau untuk menipu dan menggunakan emulasi pada komputer papan tunggal kecil. aku akan menipu:)

Jadi, apa yang saya inginkan dari ZX Spectrum portabel saya?

  • Murah: Saya memiliki terlalu banyak proyek untuk menghabiskan banyak uang untuk sedikit nostalgia yang menyenangkan.
  • Portabel: Ini harus menjadi sesuatu yang bisa saya mainkan di sofa atau di sore yang malas di taman.
  • Keyboard: Saya tidak hanya ingin bermain game, saya juga ingin memprogramnya. Untuk mendapatkan pengalaman penuh, itu perlu memiliki kunci kata kunci yang luar biasa itu.
  • Joystick: Saya tidak pernah bermain game platform dengan keyboard. Game petualangan, tentu saja, tetapi saya tidak hanya ingin bermain game petualangan, jadi saya membutuhkan joystick.
  • Instan: Saya membenci pemuatan kaset di tahun 80-an dan saya tidak dapat membayangkan bahwa saya semakin menyukainya di tahun-tahun berikutnya.

Dengan semua ini dalam pikiran, saya menyusun diagram blok untuk membantu saya memahami berbagai komponen. Jadi mari kita membangun.

Langkah 1: Keyboard & Joystick USB

Keyboard & Joystick USB
Keyboard & Joystick USB
Keyboard & Joystick USB
Keyboard & Joystick USB
Keyboard & Joystick USB
Keyboard & Joystick USB

Memperbaiki keyboard adalah kunci untuk menangkap tampilan dan nuansa ZX Spectrum asli. Kami mungkin sedang membangun perangkat emulasi genggam yang tidak memiliki kesamaan apa pun dengan internal Spectrum asli, tetapi dengan desain yang cermat, seharusnya dimungkinkan untuk menciptakan sesuatu yang terasa mengingatkan pada pengalaman komputasi tahun 80-an.

Dimulai dengan beberapa protoboard dan setumpuk besar sakelar taktil, saya bereksperimen dengan beberapa ide dan menetapkan tata letak terhuyung-huyung yang ditunjukkan dalam foto. Protoboard yang kami gunakan adalah standar 7x9cm (26x31 lubang) yang tersedia online dari banyak pengecer. Sakelar adalah versi pemasangan di permukaan yang memiliki rasa lebih lembut dan tidak terlalu bising dibandingkan sakelar melalui lubang yang lebih umum, tetapi keduanya harus berfungsi karena ukuran bodinya hampir sama.

Kontrol joystick kemudian masuk ke ruang yang tersisa tepat di atas keyboard. Saya memutuskan untuk menggunakan tombol navigasi taktil 5 arah di sebelah kiri dan tombol api besar di sebelah kanan. Joystick akan berfungsi ganda sebagai pengontrol untuk sistem menu emulator dan mouse untuk berinteraksi dengan sistem Linux yang mendasarinya, jadi saya juga menambahkan tombol sekunder kecil.

Mikrokontroler untuk keyboard adalah Arduino Pro Micro. Ini adalah papan kecil yang dapat diprogram sebagai perangkat antarmuka manusia USB (HID) seperti keyboard, mouse, atau joystick.

Setelah sakelar disolder pada tempatnya, matriks yang menghubungkan baris dan kolom sakelar ke mikrokontroler perlu dibangun. Matriks ini akan memungkinkan kita untuk menghubungkan semua 40 tombol ditambah 7 tombol joystick ke 18 pin I/O Pro Micro. Keyboard Spectrum tidak perlu menangani beberapa penekanan tombol kecuali untuk tombol Caps Shift dan Symbol Shift jadi kita akan meletakkannya di pin khusus, maka kita tidak perlu khawatir menggunakan dioda untuk mencegah phantom key- menekan. Saya telah menyertakan skema untuk menunjukkan bagaimana keyboard, termasuk matriks, terhubung. Pertama, setiap kolom dihubungkan dengan kawat inti tunggal dan kemudian baris dihubungkan menggunakan kawat inti tunggal yang dibentuk dengan hati-hati untuk melintasi kolom tanpa korslet. Ini bisa sedikit rumit karena Anda perlu mendapatkan kabel baris yang cukup tinggi untuk menghindari kontak dengan kolom tetapi cukup rendah untuk meninggalkan ruang untuk semua kabel yang perlu kita masukkan selama perakitan akhir. Akhirnya, baris dan kolom dihubungkan ke pin Arduino dengan kabel dari kabel IDE lama.

Seperti disebutkan di atas, pengontrol joystick juga akan berfungsi sebagai pengontrol kursor dan mouse sehingga kita harus dapat beralih antar mode. Mode default akan menjadi mode kursor, kombinasi Caps Shift + tombol Api akan beralih ke mode joystick dan kombinasi tombol Shift + Api Simbol akan beralih ke mode mouse. Untuk menunjukkan mode mana yang digunakan, ada beberapa LED 3mm di tengah panel joystick. LED Daya juga akan berguna dan cara yang baik untuk menyediakannya dengan Pi adalah dengan menghubungkan LED ke pin UART TX Pi karena akan terus-menerus mengirim data saat perangkat menyala.

Untuk mencegah kabel yang longgar tidak berjumbai saat digunakan, atau kabel matriks dari korslet, semuanya ditutupi dengan lem panas - jelek tapi efektif!

Langkah terakhir agar keyboard berfungsi adalah memprogram Arduino dengan kode ZX_Spectrum_Keyboard dari repositori saya. Setelah selesai, Anda benar-benar dapat meletakkan besi solder, mencolokkan keyboard ke komputer biasa dan menggunakannya dengan emulator Spectrum seperti Fuse atau Spectaculator. Tapi kami tidak berhenti di sini, jadi mari kita lanjutkan …

Langkah 2: Layar LCD

Layar LCD
Layar LCD

Spectrum asli memiliki resolusi layar 256x192 piksel. Untuk menjaga (kurang-lebih) rasio ini dan menghindari bilah hitam di kedua sisi, saya memilih layar sentuh LCD Waveshare 3.2 320x240 TFT yang dirancang untuk Raspberry Pi. Ini tidak akan terhubung langsung ke header GPIO Pi sehingga kami dapat menghapusnya mengelilingi plastik konektor dan memangkas pin. Saya memangkas protoboard 7x9cm menjadi 2,1x9cm (ukuran yang tepat tidak masalah selama dua lubang sudut yang tersisa sejajar dengan lubang keyboard atas dan ada cukup ruang untuk menyolder pin header GPIO) dan menyolder pin pada posisinya, yang akan memberi kita cara mudah untuk memasang layar di atas keyboard.

Kita hanya perlu menghubungkan pin SPI, daya, dan layar sentuh I/O ke Pi - akan sangat sulit untuk melacak pin mana yang benar-benar dibutuhkan, tetapi informasinya ada di luar sana jika Anda melihat cukup keras. Layar Waveshare menggunakan 10 pin: 4, 6, 9, 13, 15, 19, 21, 23, 24 dan 26. Jelas, jika Anda membuatnya dengan layar yang berbeda, Anda harus memverifikasi pin yang benar sebelum meraih besi solder Anda.

Tidak diperlukan konfigurasi perangkat lunak khusus - cukup instal perangkat lunak driver pabrikan dan perangkat siap digunakan.

Langkah 3: Nirkabel (Bluetooth)

Papan Raspberry Pi Zero tidak memiliki kemampuan nirkabel, hanya satu port USB yang berguna dan tidak akan ada cukup ruang untuk hub USB jadi saya harus sedikit inventif untuk menambahkan semacam kemampuan nirkabel untuk build saya. Jika Anda membangun ini dengan Zero W maka Anda dapat melewati langkah ini.

Ada fitur rapi dari Raspberry Pi yang memungkinkan kita untuk menambahkan kemampuan nirkabel yang berguna. Dengan memasang modul serial Bluetooth HC-05 murah ke pin UART Pi dan mengubah konfigurasi sistem, dimungkinkan untuk mendapatkan akses nirkabel ke terminal baris perintah menggunakan serial-over-Bluetooth. Kami kemudian dapat menggunakan alat umum untuk mengirim file ke perangkat dan mengelola sistem file.

Langkah 4: Kekuatan

Kekuasaan
Kekuasaan
Kekuasaan
Kekuasaan

Saya memilih baterai saya di akhir pengembangan sehingga perlu memilih sel yang sesuai dengan ruang yang tersedia. Yang saya pilih adalah Lipo 2000mAH 25C 1S (dimensi: 81x34x9mm) yang dijual sebagai pengganti drone Walkera Syma X5. Akan lebih baik jika Anda dapat mengisi daya baterai di tempat dengan sambungan USB biasa dan dapat menggunakan perangkat saat sedang diisi dayanya. Kami tidak benar-benar ingin mengutak-atik sirkuit kontrol daya yang rumit, jadi kami akan menggunakan modul siap pakai yang menyediakan pengisian daya USB dan juga output 5V yang ditingkatkan untuk memberi daya pada Pi secara langsung. Untuk memastikan perangkat dapat dimatikan sepenuhnya, ada sakelar geser antara output modul ini dan Pi yang memastikan baterai tetap dapat diisi meskipun perangkat dimatikan. Pi perlu dimatikan dengan benar untuk menghindari masalah korupsi data. Daripada perlu masuk melalui serial Bluetooth, kita dapat menghubungkan sakelar taktil ke pin 5 (GPIO3) Pi dan menulis skrip kecil yang mengawasi ini dan memulai shutdown ketika ditekan. Komponen daya dan nirkabel disolder ke protoboard 7x9cm lain yang akan berada tepat di bawah keyboard.

Langkah 5: Menghubungkan Semuanya Bersama

Menghubungkan Semuanya Bersama
Menghubungkan Semuanya Bersama
Menghubungkan Semuanya Bersama
Menghubungkan Semuanya Bersama
Menghubungkan Semuanya Bersama
Menghubungkan Semuanya Bersama

Dengan semua bagian yang dibuat berbeda, kita dapat merakit bagian dalamnya. Masalah terbesar yang saya temui selama perakitan adalah bahwa port USB memutuskan Arduino Pro Micro saya, mengharuskan saya untuk menyolder kabel langsung ke bantalan solder daripada menggunakan kabel USB. Ini adalah titik lemah yang terkenal pada papan Pro Micro sehingga mungkin perlu mengoleskan segumpal lem panas yang baik sebelum perakitan untuk menghindari hal ini. Dengan asumsi kemalangan khusus ini tidak menimpa Anda, Anda memiliki pilihan: Anda dapat membuat kabel micro USB ke micro USB super tipis untuk menghubungkan keyboard Anda ke Pi atau Anda dapat menyolder salah satu atau kedua ujungnya langsung ke papan. Karena saya perlu menyolder sisi Arduino, saya juga menyolder sisi Pi langsung ke titik uji di bagian belakang papan. Ada pro dan kontra untuk setiap opsi, jadi terserah Anda mau memilih yang mana.

Kami akan menyatukan papan dengan kebuntuan nilon M3. Kami membutuhkan 2x 9mm standoff untuk menghubungkan lubang bawah antara keyboard dan papan daya. Lubang atas juga mempertahankan layar sehingga kami menginginkan jarak 2,5 mm antara keyboard dan layar, dan jarak 4,5 mm antara layar dan papan daya. Foto samping menunjukkan bagaimana ini terlihat. Kebuntuan akan membutuhkan sedikit pemangkasan yang hati-hati untuk membuat semuanya sejajar - ini bisa menjadi sedikit pas dengan semua kabel keyboard tetapi harus berjalan bersama. Seperti yang dapat dilihat dari foto, perangkat dapat dinyalakan dan digunakan setelah perakitan, tanpa memerlukan penutup yang sebenarnya. Kami akan segera mencetak enklosur, tetapi sebelum itu, kami harus menginstal sistem operasi dan mengonfigurasinya.

Langkah 6: Perangkat Lunak

Dengan internal terpasang, kita dapat melanjutkan dengan instalasi dan konfigurasi perangkat lunak. Raspberry Pi akan berjalan pada instalasi Raspbian standar Satu-satunya perangkat lunak tambahan yang perlu diinstal, selain dari driver layar TFT, adalah aplikasi Fuse. Kami menggunakan versi SDL untuk mendapatkan fungsionalitas layar penuh yang tepat, yang dapat diinstal dengan:

sudo apt-get install fuse-emulator-sdl

Untuk menangani penekanan tombol shutdown kami, salin skrip 'shutdown' dari repositori kode saya ke /home/pi/

Untuk mendapatkan konsol serial melalui Bluetooth, tambahkan baris berikut ke /boot/config:

aktifkan_uart=1

Kami ingin skrip shutdown dan emulator Fuse berjalan saat peluncuran jadi tambahkan baris ini ke /etc/xdg/lxsession/LXDE-pi/autostart:

@fuse-sdl --no-sound --kempston --no-auto-load

Reboot Pi setelah melakukan perubahan ini dan Anda harus selesai.

Langkah 7: Lampiran dan Perakitan Akhir

Lampiran dan Majelis Akhir
Lampiran dan Majelis Akhir
Lampiran dan Majelis Akhir
Lampiran dan Majelis Akhir
Lampiran dan Majelis Akhir
Lampiran dan Majelis Akhir

Enklosur dimodelkan dalam Fusion 360 (cara melakukannya di luar cakupan instruksi ini). Ada 5 bagian: bagian belakang casing, bagian depan layar, bagian depan keyboard, tombol daya, dan penutup panel kontrol. Penutup panel kontrol harus dicetak dalam filamen fleksibel (saya menggunakan PLA fleksibel tetapi bahan yang lebih lembut seperti NinjaFlex mungkin lebih baik); segala sesuatu yang lain harus dicetak dalam plastik kaku (saya menggunakan PLA hitam Filamentum).

Untuk memberi daya tahan pada tombol daya dan mencegahnya berderak, tempelkan busa perekat 3mm ke bagian belakangnya, lalu buat lubang 4mm untuk memungkinkannya duduk dengan pas di atas sakelar tac vertikal pada PCB daya. Anda mungkin perlu sedikit memangkas satu sisi, seperti yang terlihat di foto, untuk menghindari tersangkutnya papan daya. Saya juga merasa terbantu menggunakan sedikit lem untuk menahan tombol ke sakelar daya.

Kita perlu merekatkan beberapa dudukan nilon ke dudukan atas pada panel depan layar untuk memungkinkan bagian atas selungkup diikat dengan aman. Setelah kering, rapikan standoffs flush.

Agar sesuai dengan papan, pertama-tama kita harus membuat tiang pemasangan. Lepaskan kepala dari beberapa sekrup nilon M3 dan rekatkan bagian berulir ke lubang bawah masing-masing panel depan. Setelah kering, 2 panel depan dapat direkatkan dan keyboard dapat dipasang di tempatnya menggunakan standoff 9mm dan 2.5mm. Selanjutnya, Dengan ini, layar dapat ditempatkan ke tiang atas dan standoff 4,5mm dapat ditambahkan. Akhirnya, papan daya dapat ditempatkan pada posisinya dan kabel diatur agar bagian belakang dapat dipasang.

Baterai harus menempel pada tempatnya dengan selotip dua sisi atau lembaran busa dan dicolokkan ke konektor daya. Sekarang kedua bagian dapat disatukan dan beberapa sekrup mesin M3 countersunk pendek digunakan untuk mengamankan semuanya pada tempatnya.

Terakhir, balikkan dan rekatkan penutup panel kontrol ke panel keyboard. Saya melakukan ini dengan perekat epoksi dua bagian untuk ikatan yang kuat.

Langkah 8: Hamparan Keyboard

Hamparan Papan Ketik
Hamparan Papan Ketik
Hamparan Papan Ketik
Hamparan Papan Ketik
Hamparan Papan Ketik
Hamparan Papan Ketik

Kami hampir selesai. Yang hilang hanyalah beberapa tanda kunci dan hamparan sehingga kami tahu cara mendapatkan semua kata kunci yang luar biasa itu.

Huruf dan angka utama ada di bagian atas sakelar yang sebenarnya. Saya menemukan beberapa transfer huruf 2.5mm yang sangat kecil yang sangat pas di bagian atas berdiameter 4mm. Mereka agak sulit untuk diterapkan karena bagian atasnya bergerak saat Anda menggosoknya tetapi Anda mendapatkan beberapa huruf dalam satu paket sehingga tidak apa-apa untuk membuat beberapa kesalahan. Saya akhirnya menyentuh beberapa dengan spidol permanen yang bagus meskipun, di belakang, saya seharusnya mencoba merendamnya dalam air hangat dan memasukkannya ke tempatnya (jika Anda pernah membuat model kit, Anda akan terbiasa dengan proses ini). Untuk melindungi huruf saat digunakan, saya mengoleskan cat kuku bening ke setiap bagian atas tuts.

Untuk mencegah bodi perak dari sakelar agar tidak terlihat melalui celah di hamparan, saya menggunakan spidol permanen untuk mewarnainya - ini dapat dilihat di baris bawah salah satu foto.

Saya mendesain overlay yang dicetak dalam program grafis GIMP open source dan kemudian mencetaknya ke kertas matt kualitas foto. Idealnya, overlay akan setipis mungkin - saya dapat mengupas lapisan belakangnya dari kertas bermerek Epson yang saya gunakan dengan sangat mudah meskipun hal ini tidak akan terjadi pada semua merek. Untuk melindungi cetakan, saya menutupi kertas dengan lembaran vinil berperekat bening dan menempelkan selotip dua sisi ke belakang untuk menempelkannya ke kasing. Namun, sebelum menempelkan lapisan luar, kita perlu melubangi lubangnya. Saya menggunakan pelubang kulit 4mm yang murah dan mendapatkan hasil terbaik dengan mengasah pelubang dan memotong langsung ke beberapa lembaran aluminium bekas 3mm. Kemudian overlay hanya perlu dijajarkan dan ditempelkan.

Langkah 9: Kesimpulan

Dan kita sudah selesai! Ini adalah proyek yang cukup besar yang menuntut berbagai keterampilan termasuk elektronik dasar, menyolder, pemodelan 3D, pemrograman, dan bahkan sedikit tata letak grafis. Ini akhirnya sangat bermanfaat dan perangkat yang sudah jadi sangat menyenangkan untuk dimainkan, tetapi bagaimana nilainya dengan kriteria asli saya?

Murah: Biaya keseluruhan untuk semuanya, termasuk harga eceran saat ini untuk barang-barang yang sudah saya miliki dan barang-barang alat tulis seperti selotip dua sisi yang akan bertahan lebih lama dari proyek ini, adalah sekitar £80 yang menjadikannya proyek yang terjangkau.

Portabel: Ini pasti portabel. Perangkat ini pas di saku dan benar-benar mandiri sehingga dapat digunakan di mana saja. Jika saya membangunnya lagi, saya akan membuat pengontrol gaya joypad 4 arah datar daripada menggunakan tongkat navigasi karena menonjol di atas garis perangkat sehingga rentan terhadap kerusakan. Saya juga ingin melihat apakah layar non-sentuh dengan ukuran dan rasio yang sama tersedia dengan penutup yang lebih tahan gores karena saya tidak memerlukan antarmuka layar sentuh dan permukaan resistif sangat rentan terhadap kerusakan.

Keyboard & Joystick: Saya sangat senang dengan cara kerjanya. Meskipun tidak terasa seperti aslinya, penggunaan keyboard secara mengejutkan mengingatkan pada ZX Spectrum lama - tata letak, overlay, dan implementasi kata kunci bekerja sama dengan baik untuk mencapai hal ini. Keyboard USB juga dapat digunakan sendiri dengan komputer yang menjalankan emulator Fuse untuk memberikan pengalaman yang sama.

Instan: Menggunakan modul serial Bluetooth membuatnya relatif mudah untuk mentransfer arsip pita ke perangkat dari komputer lain tanpa perlu keluar dari antarmuka Fuse, dan seharusnya memungkinkan untuk merampingkan proses lebih lanjut dengan menulis skrip sisi klien untuk mengirim file ke perangkat. Saya lebih suka dapat menggunakan fitur transfer file "kirim ke perangkat" Bluetooth standar yang ada di sebagian besar sistem operasi, atau sistem berbagi file yang tepat seperti Samba. Namun, itu hanya akan tersedia dengan papan Pi Zero W dan saya tidak menggunakannya untuk build ini.

Selain item yang disebutkan di atas, jika saya memulai proyek ini lagi dari awal, saya akan memilih baterai yang lebih tipis dengan kapasitas yang lebih besar di awal proyek dan mendesain di sekitarnya daripada harus memilih baterai berukuran sesuai di akhir proyek. Saya juga akan menggunakan Pi Zero W daripada modul serial Bluetooth untuk memperluas opsi pengiriman file ke perangkat. Peningkatan lain yang jelas adalah semacam indikasi status baterai perangkat keras karena saat ini tidak ada cara untuk melihat berapa banyak daya yang tersisa. Saya juga akan mempertimbangkan untuk menggunakan OS berbasis Ramdisk seperti Alpine Linux yang akan lebih toleran terhadap hard shutdown dan harus memungkinkan satu tombol on/off tanpa perlu tombol shutdown terpisah - lebih seperti ZX Spectrum asli, hanya cabut jika sudah selesai.

Mungkin menarik untuk merancang PCB khusus untuk perangkat ini yang berpotensi memungkinkan kita untuk meletakkan komponen daya di bagian belakang keyboard daripada memiliki papan terpisah. Ini dapat secara signifikan mengurangi kedalaman perangkat yang sudah jadi. Itu juga akan membuat perakitan perangkat lebih mudah dan menawarkan potensi semacam kit perakitan mandiri. Jika ada cukup minat dalam proyek ini, saya mungkin melakukan versi 2 yang membahas masalah ini.

Langkah 10: Sumber Daya

Sumber daya berikut diperlukan untuk membangun proyek ini:

File kasus cetak 3D (Thingiverse):

Kode (Github):

Direkomendasikan: