Cuprins:
- Pasul 1: tastatură USB și joystick
- Pasul 2: Ecran LCD
- Pasul 3: Wireless (Bluetooth)
- Pasul 4: Putere
- Pasul 5: conectarea tuturor împreună
- Pasul 6: Software
- Pasul 7: incintă și asamblare finală
- Pasul 8: Suprapunerea tastaturii
- Pasul 9: Concluzie
- Pasul 10: Resurse
Video: Pocket ZX (Handheld ZX Spectrum): 10 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Sunt un copil al anilor 80 și am amintiri plăcute despre computerele pe 8 biți din acea epocă. Primul meu computer - unul care deține un loc special în inima mea - a fost un Sinclair ZX Spectrum 48K. După ce am descoperit recent câteva comunități axate pe computere mai vechi de pe web, am decis că vreau să retrăiesc o parte din nostalgia pentru mine și am instalat emulatorul Fuse pe MacBook. A fost distractiv pentru o vreme, dar mi-am dorit cu adevărat un dispozitiv dedicat - de preferință ceva mic, portabil și autonom pentru a se potrivi cu stilul meu de viață. Alegerea în această etapă a fost fie să urmeze calea minunatului Ben Heck și să micșoreze hardware-ul original ZX în ceva portabil, fie să trișeze și să folosească emularea pe un computer cu o singură placă. Am sa trișez:)
Deci, ce vreau de la portabilul meu ZX Spectrum?
- Ieftin: am mult prea multe proiecte pentru a cheltui sume mari de bani pe un pic de nostalgie distractivă.
- Portabil: trebuie să fie ceva cu care să mă pot juca pe canapea sau într-o după-amiază leneșă în grădină.
- Tastatură: nu vreau doar să joc jocuri, ci și să o programez. Pentru a obține experiența completă, trebuie să aibă acele chei minunate de cuvinte cheie.
- Joystick: Nu am fost niciodată în jocuri de platformă cu tastatură. Jocuri de aventură, sigur, dar nu vreau doar să joc jocuri de aventură, așa că va avea nevoie de un joystick.
- Instantaneu: am urât încărcarea benzii în anii 80 și nu-mi pot imagina că am devenit mai pasionată de ea în anii care au urmat.
Având în vedere toate acestea, am elaborat o diagramă bloc pentru a mă ajuta să înțeleg diferitele componente. Deci, să începem să construim.
Pasul 1: tastatură USB și joystick
Obținerea corectă a tastaturii este cheia pentru a surprinde aspectul ZX Spectrum original. Este posibil să construim un dispozitiv emulat manual, care să nu împărtășească nimic în comun cu elementele interne originale Spectrum, dar, cu un design atent, ar trebui să fie posibil să creăm ceva care să amintească de experiența de calcul din anii '80.
Începând cu niște protoape și o grămadă mare de comutatoare tactile, am experimentat câteva idei și m-am așezat pe aspectul eșalonat prezentat în fotografii. Protocoarele pe care le folosim sunt un standard de 7x9cm (26x31 găuri) disponibile online de la mulți comercianți cu amănuntul. Comutatoarele sunt versiuni de montare pe suprafață, care au o senzație mai moale și sunt mai puțin zgomotoase decât omologii lor mai obișnuiți, dar oricare ar trebui să funcționeze, deoarece dimensiunile corpului lor sunt aproape identice.
Comenzile joystick-ului au intrat apoi în spațiul rămas imediat deasupra tastaturii. Am decis să folosesc un comutator de navigare tactil cu 5 căi în stânga și un buton mare de declanșare în dreapta. Joystick-ul se va dubla ca un controler pentru sistemul de meniu al emulatorului și un mouse pentru interacțiunea cu sistemul Linux de bază, așa că am adăugat și un mic buton secundar.
Microcontrolerul pentru tastatură este un Arduino Pro Micro. Aceasta este o placă mică care poate fi programată ca un dispozitiv de interfață umană USB (HID), cum ar fi o tastatură, un mouse sau un joystick.
Odată ce comutatoarele au fost lipite la locul lor, trebuie construită matricea care conectează rândurile și coloanele comutatoarelor la microcontroler. Această matrice ne va permite să conectăm toate cele 40 de taste plus cele 7 butoane joystick la cei 18 pini I / O ai Pro Micro. Tastatura Spectrum nu trebuie să gestioneze mai multe apăsări de taste, cu excepția tastelor Majuscule și Majuscule, așa că le vom pune pe ace dedicate, apoi nu va trebui să ne facem griji cu privire la utilizarea diodelor pentru a preveni tastele fantomă - presează. Am inclus o schemă pentru a arăta cum este conectată tastatura, inclusiv matricea. În primul rând, fiecare coloană este legată de o lungime de fir cu un singur miez și apoi rândurile sunt conectate folosind un fir cu un singur miez, care este modelat cu atenție pentru a traversa coloanele fără scurtcircuit. Acest lucru poate fi un pic dificil, deoarece trebuie să obțineți firele de rând suficient de înalte pentru a evita contactarea coloanelor, dar suficient de scăzute pentru a lăsa loc pentru toate cablurile pe care trebuie să le introducem în timpul asamblării finale. În cele din urmă, rândurile și coloanele sunt conectate la pinii Arduino cu fire de la vechile cabluri IDE.
Așa cum s-a menționat mai sus, controlerul joystick va funcționa, de asemenea, ca un controler cursor și un mouse, așa că va trebui să putem comuta între moduri. Modul implicit va fi modul cursor, o combinație de majuscule Shift + butonul Fire va trece la modul joystick și combinația Symbol Shift + Fire buton va comuta la modul mouse. Pentru a arăta în ce mod se află, există câteva LED-uri de 3 mm în mijlocul panoului joystick-ului. Un LED de alimentare va fi, de asemenea, util și o modalitate bună de a furniza acest lucru cu Pi este de a conecta un LED la pinul UART TX al lui Pi, deoarece acesta va trimite în mod constant date în timp ce dispozitivul este pornit.
Pentru a împiedica firele libere să se spargă în timpul utilizării sau firele matrice să se scurtcircuiteze, totul este acoperit în general cu adeziv fierbinte - urât, dar eficient!
Ultimul pas pentru ca tastatura să funcționeze este să programați Arduino cu codul ZX_Spectrum_Keyboard din depozitul meu. După ce ați terminat, puteți pune de fapt fierul de lipit, conectați tastatura la un computer obișnuit și utilizați-l cu un emulator Spectrum precum Fuse sau Spectaculator. Dar nu ne oprim aici, așa că hai să mergem mai departe …
Pasul 2: Ecran LCD
Spectrul original are o rezoluție a ecranului de 256x192 pixeli. Pentru a păstra (aproximativ) acest raport și pentru a evita să aveți bare negre pe ambele părți, am selectat un ecran tactil LCD Waveshare de 3,2 320x240 TFT conceput pentru Raspberry Pi. Nu va fi conectat direct la antetul GPIO al lui Pi, astfel încât să putem elimina conectorul înconjoară din plastic și decupează pinii. Am tăiat un protoboard de 7x9cm până la 2,1x9cm (dimensiunea exactă nu contează atâta timp cât cele două găuri de colț rămase se aliniază cu orificiile superioare ale tastaturii și există suficient spațiu pentru lipirea pinilor antet GPIO) și a lipit pinii în poziție, ceea ce ne va oferi o modalitate ușoară de a monta ecranul deasupra tastaturii.
Trebuie doar să conectăm pinii I / O SPI, de alimentare și cu ecran tactil la Pi - poate fi destul de dificil să depistăm ce pini sunt de fapt necesari, dar informațiile sunt acolo dacă arăți suficient de greu. Ecranul Waveshare folosește 10 pini: 4, 6, 9, 13, 15, 19, 21, 23, 24 și 26. Evident, dacă faceți acest lucru cu un ecran diferit, va trebui să verificați pinii corecti înainte apucându-ți de lipit.
Nu este necesară o configurație specială de software - trebuie doar să instalați software-ul driverului producătorului și este gata de utilizare.
Pasul 3: Wireless (Bluetooth)
Placa Raspberry Pi Zero nu are capacitate wireless, doar un singur port USB util și nu va fi suficient spațiu în carcasă pentru un hub USB, așa că a trebuit să fiu puțin inventiv pentru a adăuga un fel de capacitate wireless pentru construcția mea. Dacă construiți acest lucru cu Zero W, atunci puteți sări peste acest pas.
Există o caracteristică îngrijită a Raspberry Pi care ne va permite să adăugăm o capacitate wireless utilă. Prin atașarea unui modul serial HC-05 Bluetooth ieftin la pinii UART ai lui Pi și modificarea configurației sistemului, este posibil să obțineți acces wireless la terminalul liniei de comandă utilizând serial-over-Bluetooth. Putem folosi apoi instrumente comune pentru a trimite fișiere către dispozitiv și pentru a gestiona sistemul de fișiere.
Pasul 4: Putere
Mi-am ales bateria la sfârșitul dezvoltării, atât de necesar pentru a alege o celulă care să se încadreze în spațiul disponibil. Cel pe care l-am ales a fost un Lipo 2000mAH 25C 1S (dimensiuni: 81x34x9mm) vândut ca înlocuitor pentru drona Walkera Syma X5. Ar fi bine să puteți încărca bateria in situ cu o conexiune USB obișnuită și să puteți folosi dispozitivul în timp ce acesta este încărcat. Nu vrem să ne jucăm cu circuite complexe de control al puterii, așa că vom folosi un modul gata pregătit care oferă încărcare USB și, de asemenea, o ieșire intensificată de 5V pentru a alimenta direct Pi. Pentru a vă asigura că dispozitivul poate fi oprit complet, există un comutator glisant între ieșirea acestui modul și Pi, care asigură că bateria poate fi încă încărcată chiar și atunci când dispozitivul este oprit. Pi trebuie închis corect pentru a evita problemele de corupție a datelor. În loc să ne conectăm prin serial Bluetooth, putem conecta un comutator tactil la pinul 5 al lui Pi (GPIO3) și scriem un mic script care urmărește acest lucru și inițiază o oprire când este apăsat. Componentele de alimentare și wireless au fost lipite pe un alt protoboard de 7x9cm care va sta direct sub tastatură.
Pasul 5: conectarea tuturor împreună
Cu toate piesele construite, putem asambla elementele interne. Cea mai mare problemă pe care am întâmpinat-o în timpul asamblării a fost că portul USB mi-a rupt Arduino Pro Micro, necesitându-mă să lipesc firele direct pe tampoanele de lipit, mai degrabă decât să folosesc un cablu USB. Acesta este un punct slab notoriu pe plăcile Pro Micro, deci probabil merită să-i aplicați un glob bun de adeziv fierbinte înainte de asamblare pentru a evita acest lucru. Presupunând că această nenorocire nu ți se întâmplă, ai de ales: poți să faci un cablu micro USB la micro USB foarte subțire pentru a conecta tastatura la Pi sau poți lipi unul sau ambele capete direct pe plăci. Deoarece trebuia să lipesc partea Arduino, am lipit și partea Pi direct în punctele de testare din spatele plăcii. Există opțiuni pro și contra pentru fiecare opțiune, deci depinde de dvs. pe care îl preferați.
Vom păstra plăcile împreună cu separatoarele din nailon M3. Avem nevoie de separatoare de 2x 9mm pentru a conecta găurile inferioare dintre tastatură și placa de alimentare. Găurile superioare păstrează, de asemenea, ecranul, așa că dorim distanțe de 2,5 mm între tastatură și ecran și distanțe de 4,5 mm între ecran și placa de alimentare. Fotografia laterală arată cum arată acest lucru. Distanțele vor avea nevoie de o tăiere puțin atentă pentru a face totul paralel - poate fi o potrivire puțin strânsă cu toate firele tastaturii, dar ar trebui să meargă împreună. După cum se vede din fotografii, dispozitivul poate fi pornit și utilizat după asamblare, fără a fi nevoie de o carcasă reală. Vom imprima în curând o incintă, dar, înainte de a ajunge la aceasta, va trebui să instalăm sistemul de operare și să îl configurăm.
Pasul 6: Software
Cu internele asamblate, putem continua instalarea și configurarea software-ului. Raspberry Pi va rula pe o instalare standard Raspbian Singurul software suplimentar care trebuie instalat, în afară de driverele de ecran TFT, este aplicația Fuse. Folosim versiunea SDL pentru a obține funcționalitate adecvată pe ecran complet, care poate fi instalată cu:
sudo apt-get install fuse-emulator-sdl
Pentru a gestiona apăsările butonului de oprire, copiați scriptul „oprire” din depozitul meu de coduri în / home / pi /
Pentru a obține o consolă serială prin Bluetooth, adăugați următoarea linie la / boot / config:
enable_uart = 1
Vom dori ca scriptul nostru de închidere și emulatorul Fuse să ruleze la lansare, așa că adăugați aceste linii în / etc / xdg / lxsession / LXDE-pi / autostart:
@ / home / pi / shutdown
@ fuse-sdl --no-sound --kempston --no-auto-load
Reporniți Pi după efectuarea acestor modificări și ar trebui să fiți terminat.
Pasul 7: incintă și asamblare finală
Carcasa a fost modelată în Fusion 360 (cum se face acest lucru este în afara scopului acestui instructable). Există 5 părți: carcasa din spate, fața ecranului, fața tastaturii, butonul de alimentare și capacul panoului de control. Capacul panoului de control ar trebui să fie tipărit într-un filament flexibil (am folosit PLA flexibil, dar un material mai moale, cum ar fi NinjaFlex, ar putea fi mai bun); orice altceva ar trebui să fie tipărit într-un plastic rigid (am folosit Filamentum negru PLA).
Pentru a oferi o anumită rezistență butonului de alimentare și pentru a preveni zgomotul, lipiți spumă adezivă de 3 mm pe spate și apoi scoateți o gaură de 4 mm pentru a-i permite să stea bine peste comutatorul tac vertical de pe placa de alimentare. Este posibil să trebuiască să tăiați ușor o margine, așa cum se vede în fotografii, pentru a evita blocarea plăcii de alimentare. De asemenea, mi s-a părut util să folosesc un mic adeziv pentru a ține butonul de la comutatorul de alimentare.
Trebuie să lipim câteva suporturi din nailon în suporturile superioare de pe panoul frontal al ecranului pentru a permite fixarea fermă a părților superioare ale carcasei. Odată uscate, tăiați distanțele la culoare.
Pentru a monta plăcile, trebuie mai întâi să creăm stâlpii de montare. Scoateți capetele de pe niște șuruburi din nailon M3 și lipiți părțile filetate în găurile inferioare ale fiecărui panou frontal. După ce acestea s-au uscat, cele două panouri frontale pot fi lipite între ele și tastatura poate fi fixată pe loc folosind separatoarele de 9 mm și 2,5 mm. Apoi, cu acest lucru în poziție, ecranul poate fi așezat pe stâlpii superiori și pot fi adăugate distanțele de 4,5 mm. În cele din urmă, placa de alimentare poate fi așezată în poziție și firele aranjate pentru a permite montarea spatelui.
Bateria ar trebui să fie blocată pe loc cu niște bandă dublă sau foaie de spumă și conectată la conectorul de alimentare. Acum, cele două jumătăți pot fi reunite, iar câteva șuruburi scurte M3 sunt folosite pentru a fixa totul în loc.
În cele din urmă, răsturnați-l și lipiți capacul panoului de control pe panoul tastaturii. Am făcut acest lucru cu un adeziv epoxidic din două părți pentru o legătură puternică.
Pasul 8: Suprapunerea tastaturii
Aproape am terminat. Nu lipsesc decât niște marcaje cheie și o suprapunere, astfel încât să știm cum să ajungem la toate aceste cuvinte cheie minunate.
Literele și numerele primare se află pe partea superioară a comutatorului. Am găsit niște transferuri de scrisori de 2,5 mm foarte mici, care se potrivesc perfect pe vârfurile cu diametrul de 4 mm. Sunt puțin complicate de aplicat, deoarece vârfurile se mișcă pe măsură ce le freci, dar primești destul de multe litere într-un pachet, așa că este bine să faci niște greșeli. Am ajuns să ating câteva câteva cu un marker permanent fin, deși, în retrospectivă, ar fi trebuit să încerc să le înmui în apă caldă și să le alunec în loc (dacă ați construit vreodată un kit model, veți fi familiarizat cu acest proces). Pentru a proteja literele în timpul utilizării, am tamponat niște lac transparent de unghii pe fiecare cheie.
Pentru a preveni afișarea corpurilor de argint ale întrerupătoarelor prin golurile din suprapunere, am folosit un marker permanent pentru a le colora - acest lucru poate fi văzut în rândul de jos al uneia dintre fotografii.
Am proiectat suprapunerile tipărite în programul grafic open source GIMP și apoi le-am tipărit pe hârtie mată de calitate foto. În mod ideal, suprapunerile vor fi cât se poate de subțiri - am reușit să desprind fundalul de pe hârtia de marcă Epson pe care am folosit-o foarte ușor, deși acest lucru nu va fi cazul tuturor mărcilor. Pentru a proteja imprimarea, am acoperit hârtia într-o foaie de vinil adeziv transparent și am aplicat bandă față-verso pe spate pentru ao lipi de carcasă. Cu toate acestea, înainte de a lipi suprapunerile, trebuie să perforăm găurile. Am folosit un perforator ieftin de piele de 4 mm și am obținut cele mai bune rezultate prin ascuțirea pumnilor și tăierea direct pe niște foi de aluminiu de 3 mm. Apoi, suprapunerile trebuie doar aliniate și lipite.
Pasul 9: Concluzie
Și am terminat! Acesta a fost un proiect destul de mare care necesită o gamă largă de abilități, inclusiv electronice de bază, lipire, modelare 3D, programare și chiar un aspect grafic. În cele din urmă a fost foarte plină de satisfacții, iar dispozitivul terminat este foarte distractiv de jucat, dar cum se descurcă în raport cu criteriile mele inițiale?
Ieftin: costul general al tuturor lucrurilor, inclusiv prețurile actuale cu amănuntul pentru articolele pe care le dețineam deja și articolele de papetărie, cum ar fi banda dublă, care vor rezista mult dincolo de acest proiect, este de aproximativ 80 GBP, ceea ce îl face un proiect accesibil.
Portabil: Cu siguranță este portabil. Acest dispozitiv se potrivește confortabil într-un buzunar și este complet autonom, astfel încât să poată fi folosit oriunde. Dacă ar fi să-l construiesc din nou, aș face mai degrabă un controller plat în stil joypad în 4 direcții, decât să folosesc stick-ul de navigație, deoarece acesta iese deasupra liniei dispozitivului, lăsându-l vulnerabil la deteriorări. Aș dori, de asemenea, să văd dacă un ecran non-touch de dimensiuni și raporturi similare este disponibil cu un capac mai rezistent la zgârieturi, deoarece nu am nevoie de interfața cu ecran tactil, iar suprafața rezistivă este deosebit de predispusă la deteriorare.
Tastatură și joystick: sunt foarte mulțumit de modul în care acestea au funcționat. Deși nu are senzația de originalitate, folosirea tastaturii amintește surprinzător de vechiul ZX Spectrum - aspectul, suprapunerea și implementarea cuvintelor cheie funcționează bine împreună pentru a realiza acest lucru. Tastatura USB poate fi utilizată și singură cu un computer care rulează emulatorul Fuse pentru a oferi aceeași experiență.
Instantaneu: Utilizarea modulului serial Bluetooth face relativ ușor transferul arhivelor de bandă pe dispozitiv de pe alt computer fără a fi nevoie să ieșiți din interfața Siguranță și ar trebui să fie posibilă simplificarea procesului prin scrierea unui script din partea clientului pentru a trimite un fișier la dispozitiv. Aș prefera să pot utiliza funcția standard de transfer de fișiere Bluetooth „trimitere către dispozitiv” încorporată în majoritatea sistemelor de operare sau un sistem adecvat de partajare a fișierelor, cum ar fi Samba. Cu toate acestea, acestea vor fi disponibile doar cu placa Pi Zero W și nu am folosit-o pentru această versiune.
În plus față de articolele menționate mai sus, dacă aș începe din nou acest proiect de la zero, aș alege o baterie mai subțire cu o capacitate mai mare la începutul proiectului și aș proiecta în jurul acestuia, mai degrabă decât să trebuiască să selectez o baterie de dimensiuni adecvate la sfârșitul anului proiectul. De asemenea, aș folosi un Pi Zero W mai degrabă decât un modul serial Bluetooth pentru a extinde opțiunile pentru trimiterea fișierelor pe dispozitiv. O altă îmbunătățire evidentă ar fi un fel de indicație a stării bateriei hardware, deoarece în prezent nu există nicio modalitate de a vedea câtă încărcare rămâne. De asemenea, aș lua în considerare utilizarea unui sistem de operare bazat pe Ramdisk, cum ar fi Alpine Linux, care ar fi mai tolerant la opriri puternice și ar trebui să permită un singur comutator de pornire / oprire fără a fi nevoie de un buton de oprire separat - mult mai mult ca ZX Spectrum original, doar deconectați-l când ați terminat.
Ar putea fi interesant să proiectăm un PCB personalizat pentru acest dispozitiv care ar putea, potențial, să ne permită să punem componentele de alimentare pe spatele tastaturii, mai degrabă decât să avem o placă separată. Acest lucru ar putea reduce semnificativ adâncimea dispozitivului finit. De asemenea, ar facilita asamblarea dispozitivului și ar oferi potențialul unui fel de kit de auto-asamblare. Dacă există suficient interes în acest proiect, aș putea face o versiune 2 care să abordeze aceste probleme.
Pasul 10: Resurse
Următoarele resurse sunt necesare pentru a construi acest proiect:
Fișiere de carcasă printabile 3D (Thingiverse):
Cod (Github):
Recomandat:
MutantC_v2 - un handheld / UMPC Raspberry Pi ușor de construit: 8 pași (cu imagini)
MutantC_v2 - un portabil Raspberry Pi ușor de construit / UMPC: o platformă portabilă Raspberry-pi cu tastatură fizică, afișaj și antet de extindere pentru plăci personalizate (cum ar fi Arduino Shield). MutantC_V2 este succesorul mutantC_V1. Verificați mutantC_V1 de aici.https: //mutantc.gitlab.io/https: //gitlab.com/mutant
DIY Raspberry Pi Zero Handheld Consola de joc: 6 pași (cu imagini)
DIY Raspberry Pi Zero Handheld Console Game: În acest proiect vă voi arăta cum am folosit un Raspberry Pi Zero, baterii NiMH, un circuit de protecție de supra-descărcare de casă, un LCD de spate și un amplificator audio pentru a crea o consolă de joc portabilă care poate juca jocuri retro. Să începem
GamePi - Consola Emulator Handheld: 17 pași (cu imagini)
GamePi - Consola Emulatorului Handheld: Introducere: Această instrucțiune descrie construirea unei console de emulare portabile Raspberry Pi 3 - Am botezat-o GamePi. Există o mulțime de instrumente similare pentru astfel de dispozitive, dar pentru gustul meu majoritatea sunt fie prea mari, prea mici, prea
Consolă de joc handheld Recalbox folosind 2.2 TFT: 6 pași
Consolă de joc handheld Recalbox folosind 2.2 TFT: Instrucțiuni pentru bricolarea unei console de joc handheld recalbox folosind 2,2 "TFT LCD și un Raspberry Pi 0 W și butoane GPIO. Puteți vizualiza acest videoclip de pe YouTube pentru o demonstrație completă a pașilor implicați: A. Obțineți toate piesele.B. Lipiți piesele împreună
Handheld Shortcut Controller (pentru Photoshop + Mai multe) [Arduino]: 4 pași
Handheld Shortcut Controller (pentru Photoshop + More) [Arduino]: Ultima dată am creat un mic control pad pentru a-l folosi în Photoshop. A făcut minuni și încă îl folosesc! Dar este, de asemenea, destul de limitat, cu doar cinci butoane și cadrele utile de dimensiuni și opacitate. Încă m-am trezit că mă apuc de tastatură mult … Deci