Taula de continguts:

Pocket ZX (Handheld ZX Spectrum): 10 passos
Pocket ZX (Handheld ZX Spectrum): 10 passos

Vídeo: Pocket ZX (Handheld ZX Spectrum): 10 passos

Vídeo: Pocket ZX (Handheld ZX Spectrum): 10 passos
Vídeo: Pocket PICOZX (Zx Spectrum 128k) Handheld - Tape loading emulation 2024, Desembre
Anonim
Pocket ZX (Handheld ZX Spectrum)
Pocket ZX (Handheld ZX Spectrum)
Pocket ZX (Handheld ZX Spectrum)
Pocket ZX (Handheld ZX Spectrum)
Pocket ZX (Handheld ZX Spectrum)
Pocket ZX (Handheld ZX Spectrum)

Sóc un nen dels anys 80 i tinc bons records dels ordinadors de 8 bits d’aquella època. El meu primer ordinador, que ocupa un lloc especial al cor, va ser un Sinclair ZX Spectrum 48K. Després d’haver descobert algunes comunitats centrades en ordinadors més antics al web, vaig decidir que volia reviure una mica d’aquesta nostàlgia i vaig instal·lar l’emulador Fuse al meu MacBook. Va ser divertit durant un temps, però realment volia un dispositiu dedicat, preferiblement quelcom petit, portàtil i autònom que s’ajustés al meu estil de vida. L’elecció en aquesta etapa va ser seguir el camí de l’impressionant Ben Heck i reduir el maquinari ZX original en alguna cosa portàtil o fer trampes i utilitzar l’emulació en un petit equip de placa única. Vaig a fer trampa:)

Llavors, què vull del meu ZX Spectrum portàtil?

  • Barat: tinc massa projectes per gastar grans quantitats de diners en una mica de nostàlgia divertida.
  • Portàtil: ha de ser una cosa amb la que pugui jugar al sofà o en una tarda mandrosa al jardí.
  • Teclat: no només vull jugar, també vull programar-lo. Per obtenir l’experiència completa, ha de tenir aquestes meravelloses claus de paraules clau.
  • Joystick: mai no vaig jugar a jocs de plataformes amb un teclat. Jocs d'aventura, segur, però no només vull jugar a jocs d'aventura, de manera que necessitarà un joystick.
  • Instantània: odiava la càrrega de cintes als anys 80 i no puc imaginar-me que m’hagi aficionat més en els darrers anys.

Amb tot això en ment, vaig redactar un diagrama de blocs per ajudar-me a comprendre els diversos components. Així que anem a construir.

Pas 1: teclat i palanca de control USB

Teclat USB i palanca de control
Teclat USB i palanca de control
Teclat USB i palanca de control
Teclat USB i palanca de control
Teclat USB i palanca de control
Teclat USB i palanca de control

Aconseguir el teclat correcte és la clau per capturar l’aspecte de l’original ZX Spectrum. És possible que estiguem construint un dispositiu emulat de mà que no comparteixi res en comú amb les versions internes de Spectrum originals, però, amb un disseny acurat, hauria de ser possible crear quelcom que recordi l’experiència informàtica dels anys 80.

Començant amb alguns protobancs i una gran pila d’interruptors tàctils, vaig experimentar amb algunes idees i em vaig fixar en el disseny esglaonat que es mostra a les fotos. Els protobards que utilitzem són de 7x9cm estàndard (forats de 26x31) disponibles en línia a molts comerciants. Els interruptors són versions de muntatge superficial que tenen una sensació més suau i són menys sorolloses que les seves contraparts més habituals de forats passants, però han de funcionar ja que les mides del seu cos són gairebé idèntiques.

Els controls del joystick van passar a l'espai restant immediatament a sobre del teclat. Vaig decidir utilitzar un interruptor de navegació tàctil de 5 direccions a l'esquerra i un gran botó de disparar a la dreta. El joystick es duplicarà com a controlador del sistema de menú de l'emulador i com a ratolí per interactuar amb el sistema Linux subjacent, de manera que també he afegit un petit botó secundari.

El microcontrolador del teclat és un Arduino Pro Micro. Es tracta d’una petita placa que es pot programar com a dispositiu USB d’interfície humana (HID), com ara un teclat, un ratolí o un joystick.

Un cop soldats els commutadors al seu lloc, cal construir la matriu que connecta les files i columnes dels commutadors al microcontrolador. Aquesta matriu ens permetrà connectar les 40 tecles més els 7 botons del joystick als 18 pins d'E / S del Pro Micro. El teclat Spectrum no necessita manejar diverses tecles, tret de les tecles Maj Majúscules i Majúscules de símbols, de manera que les posarem en pins especials, aleshores no ens haurem de preocupar d’utilitzar díodes per evitar la tecla fantasma. premses. He inclòs un esquema per mostrar com està connectat el teclat, inclosa la matriu. En primer lloc, cada columna s’uneix amb una longitud de fil d’un nucli i, a continuació, les files es connecten mitjançant un fil d’un nucli que té una forma acurada per travessar les columnes sense curtcircuit. Això pot ser una mica complicat, ja que heu d’aconseguir que els cables de fila siguin prou alts per evitar entrar en contacte amb les columnes, però prou baixos per deixar espai per a tot el cablejat que necessitem omplir durant el muntatge final. Finalment, les files i les columnes es connecten als pins Arduino amb cables de cables IDE antics.

Com es va esmentar anteriorment, el controlador del joystick també funcionarà com a controlador de cursor i de ratolí, de manera que haurem de poder canviar entre modes. El mode per defecte serà el cursor, una combinació de majúscules majúscules + el botó Foc canviarà al mode joystick i la combinació de símbols Maj + botó foc canviarà al mode ratolí. Per mostrar en quin mode es troba, hi ha un parell de LED de 3 mm al centre del panell del joystick. Un LED d’alimentació també serà útil i una bona manera de proporcionar-ho amb el Pi és connectar un LED al pin UART TX del Pi, ja que envia dades constantment mentre el dispositiu està encès.

Per evitar que els cables solts es trenquin en ús o que els cables de la matriu no tinguin un curtcircuit, tot està cobert generalment de cola calenta, lletja però eficaç.

L’últim pas perquè el teclat funcioni és programar l’Arduino amb el codi ZX_Spectrum_Keyboard del meu dipòsit. Un cop fet això, podeu posar el soldador a baix, connectar el teclat a un ordinador normal i utilitzar-lo amb un emulador Spectrum com Fuse o Spectaculator. Però no ens aturem aquí, així que continuem …

Pas 2: pantalla LCD

Pantalla LCD
Pantalla LCD

L’espectre original té una resolució de pantalla de 256x192 píxels. Per mantenir (aproximadament) aquesta relació i evitar que hi hagi barres negres pels dos costats, he seleccionat una pantalla tàctil LCD WFT de 3,2 320x240 TFT dissenyada per al Raspberry Pi. No es connectarà directament a la capçalera GPIO del Pi, de manera que puguem eliminar-la Heu retallat un protobordo de 7x9cm fins a 2,1x9cm (la mida exacta no importa sempre que els dos forats de cantonada restants s’alineïn amb els forats superiors del teclat i hi hagi prou espai per soldar els pins de capçalera GPIO) i va soldar els pins en posició, cosa que ens proporcionarà una manera fàcil de muntar la pantalla per sobre del teclat.

Només necessitem connectar els pins d'E / S de l'alimentació i de la pantalla tàctil SPI al Pi; pot ser bastant complicat rastrejar quins pins són realment necessaris, però hi ha informació si apareix prou dur. La pantalla de Waveshare utilitza 10 pins: 4, 6, 9, 13, 15, 19, 21, 23, 24 i 26. viouslybviament, si ho feu amb una pantalla diferent, haureu de verificar els pins correctes abans agafant el soldador.

No cal cap configuració de programari especial: només cal que instal·leu el programari del controlador del fabricant i estigui a punt per utilitzar-lo.

Pas 3: connexió sense fils (Bluetooth)

La placa Raspberry Pi Zero no té cap capacitat sense fils, només un port USB útil i no hi haurà prou espai a la funda per a un concentrador USB, així que vaig haver de ser una mica inventiva per afegir algun tipus de capacitat sense fils per a la meva construcció. Si el construïu amb el Zero W, podeu ometre aquest pas.

Hi ha una característica pròpia del Raspberry Pi que ens permetrà afegir una útil funció sense fils. En connectar un mòdul barat HC-05 Bluetooth als pins UART de Pi i ajustar la configuració del sistema, és possible obtenir accés sense fils al terminal de línia d’ordres mitjançant serial-over-Bluetooth. A continuació, podem utilitzar eines comunes per enviar fitxers al dispositiu i gestionar el sistema de fitxers.

Pas 4: alimentació

Potència
Potència
Potència
Potència

Vaig triar la meva bateria al final del desenvolupament, necessària per escollir una cel·la que s’adaptés a l’espai disponible. El que vaig triar va ser un Lipo 2000S 25C 1S Lipo (dimensions: 81x34x9mm) venut com a substitut del dron Walkera Syma X5. Estaria bé poder carregar la bateria in situ amb una connexió USB normal i poder utilitzar el dispositiu mentre es carrega. Realment no volem jugar amb complexos circuits de control de potència, de manera que farem servir un mòdul ja preparat que proporciona càrrega USB i també una sortida augmentada de 5V per alimentar directament el Pi. Per garantir que el dispositiu es pugui apagar completament, hi ha un commutador lliscant entre la sortida d’aquest mòdul i el Pi que garanteix que la bateria es pugui carregar fins i tot quan el dispositiu estigui apagat. Cal tancar correctament el Pi per evitar problemes de corrupció de dades. En lloc d’haver d’iniciar sessió mitjançant la sèrie Bluetooth, podem connectar un commutador tàctil al pin 5 del Pi (GPIO3) i escriure un petit script que el vegi i iniciï l’aturada quan es prem. Els components d'alimentació i sense fils es van soldar amb un altre protobordo de 7x9cm que es situarà directament a sota del teclat.

Pas 5: connectar-ho tot junt

Connectant-ho tot junt
Connectant-ho tot junt
Connectant-ho tot junt
Connectant-ho tot junt
Connectant-ho tot junt
Connectant-ho tot junt

Amb totes les diverses parts construïdes, podem muntar les parts internes. El problema més gran que vaig trobar durant el muntatge va ser que el port USB va trencar el meu Arduino Pro Micro, cosa que em va obligar a soldar els cables directament a les pastilles de soldadura en lloc d’utilitzar un cable USB. Aquest és un punt feble notori a les plaques Pro Micro, de manera que probablement val la pena aplicar-hi un bon globus de cola calenta abans del muntatge per evitar-ho. Suposant que aquesta desgràcia no us passi, podeu triar: podeu fer un cable micro USB a micro USB súper prim per connectar el teclat al Pi o soldar un o tots dos extrems directament a les taules. Com que necessitava soldar el costat Arduino, també vaig soldar el costat Pi directament als punts de prova de la part posterior del tauler. Hi ha avantatges i desavantatges en cada opció, de manera que depèn de vosaltres el que preferiu.

Mantindrem les taules juntes amb separadors de niló M3. Necessitem separadors de 2x 9 mm per connectar els forats inferiors entre el teclat i la placa d'alimentació. Els forats superiors també conserven la pantalla, de manera que volem separacions de 2,5 mm entre el teclat i la pantalla i distàncies de 4,5 mm entre la pantalla i el tauler d’alimentació. La foto lateral mostra l'aspecte. Els separadors necessitaran una retallada una mica acurada per aconseguir que tot sigui paral·lel; pot ser una mica ajustat amb tots els cables del teclat, però hauria d’anar junts. Com es pot veure a les fotografies, el dispositiu es pot engegar i utilitzar després del muntatge, sense necessitat d’un recinte real. Aviat imprimirem un recinte però, abans d’arribar-hi, haurem d’instal·lar el sistema operatiu i configurar-lo.

Pas 6: programari

Amb els components interns muntats, podem continuar amb la instal·lació i configuració del programari. El Raspberry Pi funcionarà amb una instal·lació estàndard de Raspbian L’únic programari addicional que cal instal·lar, a part dels controladors de pantalla TFT, és l’aplicació Fuse. Estem utilitzant la versió SDL per obtenir una funcionalitat de pantalla completa adequada, que es pot instal·lar amb:

sudo apt-get install fuse-emulator-sdl

Per gestionar les nostres pulsacions de botó d'aturada, copieu l'script "shutdown" del dipòsit de codis a / home / pi /

Per obtenir una consola sèrie mitjançant Bluetooth, afegiu la línia següent a / boot / config:

enable_uart = 1

Voldrem que el nostre script d’aturada i l’emulador Fuse s’executin al llançament, així que afegiu aquestes línies a / etc / xdg / lxsession / LXDE-pi / autostart:

@ / home / pi / shutdown

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

Reinicieu el Pi després de fer aquests canvis i hauríeu d'acabar.

Pas 7: recinte i muntatge final

Recinte i muntatge final
Recinte i muntatge final
Recinte i muntatge final
Recinte i muntatge final
Recinte i muntatge final
Recinte i muntatge final

El recinte es va modelar a Fusion 360 (com fer-ho està fora de l’abast d’aquest instructiu). Hi ha 5 parts: la part posterior de la caixa, la part frontal de la pantalla, la part frontal del teclat, el botó d’engegada i la tapa del tauler de control. La coberta del tauler de control s’ha d’imprimir en un filament flexible (he utilitzat PLA flexible, però un material més suau com NinjaFlex pot ser millor); tota la resta s’ha d’imprimir en un plàstic rígid (he utilitzat Filamentum black PLA).

Per donar una certa resistència al botó d’engegada i evitar que trenci, enganxeu una mica d’escuma adhesiva de 3 mm a la part posterior i, a continuació, foradeu un forat de 4 mm per permetre que quedi ben ajustat sobre l’interruptor tac vertical del PCB d’alimentació. És possible que hagueu de retallar lleugerament una vora, com es pot veure a les fotos, per evitar enganxar el tauler d’alimentació. També em va semblar útil fer servir una mica de cola per mantenir el botó a l’interruptor d’encesa.

Hem d’enganxar un parell de separadors de niló a les muntures superiors del panell frontal de la pantalla per permetre que les parts superiors del recinte es subjectin de manera segura. Un cop secs, retalleu els separadors a ras.

Per adaptar-los a les taules, primer hem de crear els pals de muntatge. Traieu els caps d'alguns cargols de niló M3 i enganxeu les parts roscades als forats inferiors de cadascun dels panells frontals. Quan s’han assecat, els dos panells frontals es poden enganxar i es pot fixar el teclat al lloc mitjançant els separadors de 9 mm i 2,5 mm. A continuació, amb això al seu lloc, la pantalla es pot col·locar als pals superiors i es poden afegir els separadors de 4,5 mm. Finalment, el tauler d’alimentació es pot col·locar en posició i disposar els cables per permetre instal·lar la part posterior.

La bateria s’ha d’enganxar al lloc amb cinta de doble cara o full d’escuma i connectar-la al connector d’alimentació. Ara es poden ajuntar les dues meitats i utilitzar alguns cargols curts M3 avellanats per assegurar-ho tot al seu lloc.

Finalment, gireu-lo i enganxeu la coberta del tauler de control al tauler del teclat. Ho vaig fer amb un adhesiu epoxi de dues parts per obtenir un fort enllaç.

Pas 8: superposició del teclat

Superposició de teclat
Superposició de teclat
Superposició de teclat
Superposició de teclat
Superposició de teclat
Superposició de teclat

Quasi hem acabat. Tot el que falten són algunes marques clau i una superposició perquè sabem com arribar a totes aquestes meravelloses paraules clau.

Les lletres i els números principals es troben a la part superior del commutador real. He trobat algunes transferències de cartes molt petites de 2,5 mm que encaixen perfectament a les tapes de 4 mm de diàmetre. Són una mica difícils d’aplicar perquè les tapes es mouen a mesura que les fregueu, però obteniu força lletres en un paquet, de manera que està bé cometre alguns errors. Vaig acabar tocant-ne uns quants amb un marcador permanent fi, tot i que, en retrospectiva, hauria d’haver provat de remullar-los en aigua tèbia i lliscar-los al seu lloc (si alguna vegada heu construït un kit de models, coneixereu aquest procés). Per protegir les lletres durant el seu ús, vaig fer una mica de vernís transparent per a les ungles a cada part superior de la clau.

Per evitar que els cossos platejats dels interruptors es mostressin a través dels buits de la superposició, he utilitzat un marcador permanent per acolorir-los; això es pot veure a la fila inferior d’una de les fotos.

Vaig dissenyar les superposicions impreses al programa de gràfics GIMP de codi obert i després les vaig imprimir en paper mat de qualitat fotogràfica. L’ideal seria que les superposicions siguin el més fines possibles: he pogut treure el suport del paper de la marca Epson que he utilitzat amb molta facilitat, tot i que no serà el cas de totes les marques. Per protegir la impressió, vaig tapar el paper amb full de vinil adhesiu transparent i vaig aplicar cinta de doble cara a la part posterior per enganxar-la a la caixa. Abans, però, d’enganxar les superposicions, hem de foradar els forats. Vaig utilitzar un perforador de cuir de 4 mm barat i vaig obtenir els millors resultats afilant els punxons i tallant directament contra una xapa d'alumini de 3 mm de ferralla. A continuació, les superposicions només han d’estar alineades i encallades.

Pas 9: Conclusió

I ja hem acabat! Aquest ha estat un projecte bastant ampli que requereix una àmplia gamma d’habilitats, inclosa l’electrònica bàsica, la soldadura, el modelatge 3D, la programació i fins i tot un disseny gràfic. En última instància, ha estat molt gratificant i el dispositiu acabat és molt divertit de jugar, però com funciona contra els meus criteris originals?

Barat: el cost global de tot, inclosos els preus actuals de venda al detall d’articles que ja posseïa i els articles de papereria, com ara la cinta de doble cara, que duraran molt més enllà d’aquest projecte, és d’uns 80 euros, cosa que el converteix en un projecte assequible.

Portàtil: definitivament és portàtil. Aquest dispositiu s’adapta còmodament a la butxaca i és completament autònom perquè es pugui utilitzar a qualsevol lloc. Si el reconstruís de nou, faria un controlador pla d'estil joypad de 4 vies en lloc d'utilitzar el llapis de navegació, ja que sobresurt per sobre de la línia del dispositiu, deixant-lo vulnerable als danys. També m’agradaria veure si hi ha disponible una pantalla no tàctil de mides i proporcions similars amb una coberta més resistent a les ratllades, ja que no necessito la interfície de la pantalla tàctil i la superfície resistiva és especialment propensa a danyar-se.

Teclat i palanca de control: estic molt satisfet de com han funcionat. Tot i que no té l'aspecte descarnat de l'original, l'ús del teclat recorda sorprenentment l'antic ZX Spectrum: el disseny, la superposició i la implementació de paraules clau funcionen bé per aconseguir-ho. El teclat USB també es pot utilitzar tot sol amb un ordinador amb l’emulador Fuse per proporcionar la mateixa experiència.

Instantània: l’ús del mòdul sèrie Bluetooth facilita la transferència d’arxius de cintes al dispositiu des d’un altre ordinador sense haver de sortir de la interfície Fuse i hauria de ser possible agilitzar el procés escrivint un script del costat del client per enviar un fitxer al dispositiu. Prefereixo poder utilitzar la funció de transferència de fitxers estàndard Bluetooth "enviar al dispositiu" integrada a la majoria de sistemes operatius o un sistema adequat per compartir fitxers com Samba. Tanmateix, només estaran disponibles amb el tauler Pi Zero W i no ho vaig fer servir per a aquesta compilació.

A més dels elements esmentats anteriorment, si tornés a començar aquest projecte des de zero, escolliria una bateria més prima amb una capacitat més gran al principi del projecte i dissenyaria al voltant d’ell en lloc de necessitar seleccionar una bateria de mida adequada al final de el projecte. També faria servir un Pi Zero W en lloc d’un mòdul sèrie Bluetooth per ampliar les opcions d’enviament de fitxers al dispositiu. Una altra millora òbvia seria un tipus d’indicació de l’estat de la bateria, ja que actualment no hi ha manera de veure quanta càrrega queda. També em plantejaria fer servir un sistema operatiu basat en Ramdisk com Alpine Linux, que seria més tolerant als apagats durs i que hauria de permetre un únic interruptor d’encesa / apagat sense la necessitat d’un botó d’apagat separat, molt més com l’original ZX Spectrum, desconnecteu-lo quan hàgiu acabat.

Pot ser interessant dissenyar un PCB personalitzat per a aquest dispositiu que, potencialment, ens permetria posar els components d'alimentació a la part posterior del teclat en lloc de tenir una placa separada. Això podria reduir significativament la profunditat del dispositiu acabat. També facilitaria el muntatge del dispositiu i oferiria el potencial d'algun tipus de kit d'automuntatge. Si hi ha prou interès en aquest projecte, podria fer una versió 2 que tracti aquests problemes.

Pas 10: Recursos

Es necessiten els recursos següents per construir aquest projecte:

Fitxers de casos impresos en 3D (Thingiverse):

Codi (Github):

Recomanat: