Sommario:

Pocket ZX (Spettro ZX portatile): 10 passaggi
Pocket ZX (Spettro ZX portatile): 10 passaggi

Video: Pocket ZX (Spettro ZX portatile): 10 passaggi

Video: Pocket ZX (Spettro ZX portatile): 10 passaggi
Video: Legends Ultimate Arcade - 2024 Awesome Sauce Updated Install Guide - FIXED FOR ALL CABS & FIRMWARE! 2024, Novembre
Anonim
Pocket ZX (Spettro ZX portatile)
Pocket ZX (Spettro ZX portatile)
Pocket ZX (Spettro ZX portatile)
Pocket ZX (Spettro ZX portatile)
Pocket ZX (Spettro ZX portatile)
Pocket ZX (Spettro ZX portatile)

Sono un figlio degli anni '80 e ho bei ricordi dei computer a 8 bit di quell'epoca. Il mio primo computer, uno che occupa un posto speciale nel mio cuore, è stato un Sinclair ZX Spectrum 48K. Dopo aver scoperto di recente alcune community incentrate sui computer più vecchi sul Web, ho deciso che volevo rivivere un po' di quella nostalgia per me stesso e ho installato l'emulatore Fuse sul mio MacBook. È stato divertente per un po', ma volevo davvero un dispositivo dedicato, preferibilmente qualcosa di piccolo, portatile e autonomo che si adattasse al mio stile di vita. La scelta in questa fase era di seguire il percorso del fantastico Ben Heck e ridurre l'hardware ZX originale in qualcosa di portatile o imbrogliare e utilizzare l'emulazione su un piccolo computer a scheda singola. vado a barare:)

Allora, cosa voglio dal mio ZX Spectrum portatile?

  • Economico: ho troppi progetti per spendere grosse somme di denaro in un po' di divertente nostalgia.
  • Portatile: deve essere qualcosa con cui posso giocare sul divano o in un pigro pomeriggio in giardino.
  • Tastiera: non voglio solo giocare, voglio anche programmarla. Per ottenere l'esperienza completa, deve disporre di quelle meravigliose chiavi di parole chiave.
  • Joystick: non mi sono mai piaciuti i giochi platform con una tastiera. Giochi di avventura, certo, ma non voglio solo giocare a giochi di avventura, quindi avrò bisogno di un joystick.
  • Istantaneo: odiavo il caricamento del nastro negli anni '80 e non riesco a immaginare di essermi affezionato di più negli anni successivi.

Con tutto questo in mente, ho abbozzato uno schema a blocchi per aiutarmi a capire i vari componenti. Quindi iniziamo a costruire.

Passaggio 1: tastiera e joystick USB

Tastiera e joystick USB
Tastiera e joystick USB
Tastiera e joystick USB
Tastiera e joystick USB
Tastiera e joystick USB
Tastiera e joystick USB

Avere la tastiera giusta è la chiave per catturare l'aspetto e la sensazione dell'originale ZX Spectrum. Potremmo costruire un dispositivo emulato portatile che non ha nulla in comune con gli interni originali dello Spectrum ma, con un design accurato, dovrebbe essere possibile creare qualcosa che ricordi l'esperienza di elaborazione degli anni '80.

Partendo da alcune schede prototipi e da una grande pila di interruttori tattili, ho sperimentato alcune idee e ho optato per il layout sfalsato mostrato nelle foto. Le schede prototipi che stiamo utilizzando sono standard 7x9cm (26x31 fori) disponibili online da molti rivenditori. Gli interruttori sono versioni a montaggio superficiale che hanno una sensazione più morbida e sono meno rumorosi rispetto alle loro controparti a foro passante più comuni, ma dovrebbero funzionare in quanto le dimensioni del corpo sono quasi identiche.

I controlli del joystick sono quindi andati nello spazio rimanente immediatamente sopra la tastiera. Ho deciso di utilizzare un interruttore di navigazione tattile a 5 direzioni a sinistra e un grande pulsante di fuoco a destra. Il joystick fungerà anche da controller per il sistema di menu dell'emulatore e da mouse per interagire con il sistema Linux sottostante, quindi ho aggiunto anche un piccolo pulsante secondario.

Il microcontrollore per la tastiera è un Arduino Pro Micro. Questa è una piccola scheda che può essere programmata come dispositivo di interfaccia umana USB (HID) come una tastiera, un mouse o un joystick.

Una volta che gli interruttori sono stati saldati in posizione, è necessario costruire la matrice che collega le righe e le colonne degli interruttori al microcontrollore. Questa matrice ci consentirà di collegare tutti i 40 tasti più i 7 pulsanti del joystick ai 18 pin I/O di Pro Micro. La tastiera Spectrum non ha bisogno di gestire più tasti premuti ad eccezione dei tasti Maiusc e Maiusc, quindi li metteremo su pin dedicati, quindi non dovremo preoccuparci di usare i diodi per evitare il tasto fantasma- presse. Ho incluso uno schema per mostrare come è cablata la tastiera, inclusa la matrice. In primo luogo, ogni colonna è collegata con una lunghezza di filo unipolare e quindi le file sono collegate utilizzando un filo unipolare che è accuratamente sagomato per attraversare le colonne senza cortocircuitare. Questo può essere un po 'complicato perché devi ottenere i fili della fila abbastanza alti da evitare il contatto con le colonne ma abbastanza bassi da lasciare spazio per tutti i cavi che dobbiamo inserire durante l'assemblaggio finale. Infine, le righe e le colonne sono collegate ai pin Arduino con fili provenienti da vecchi cavi IDE.

Come accennato in precedenza, il controller del joystick funzionerà anche come controller del cursore e come mouse, quindi dovremo essere in grado di passare da una modalità all'altra. La modalità predefinita sarà la modalità cursore, una combinazione di Maiusc + il pulsante Fuoco passerà alla modalità joystick e la combinazione Simbolo Shift + Fuoco passerà alla modalità mouse. Per mostrare in quale modalità si trova, ci sono un paio di LED da 3 mm al centro del pannello del joystick. Anche un LED di alimentazione sarà utile e un buon modo per fornirlo con il Pi è collegare un LED al pin UART TX del Pi poiché invierà costantemente dati mentre il dispositivo è acceso.

Per evitare che i fili sciolti si sfilacciano durante l'uso o che i fili della matrice si cortocircuitino, tutto è abbondantemente coperto di colla a caldo: brutto ma efficace!

L'ultimo passo per far funzionare la tastiera è programmare Arduino con il codice ZX_Spectrum_Keyboard dal mio repository. Fatto ciò, puoi effettivamente mettere giù il saldatore, collegare la tastiera a un normale computer e usarla con un emulatore di spettro come Fuse o Spectaculator. Ma non ci fermiamo qui, quindi andiamo avanti…

Passaggio 2: schermo LCD

Schermo a cristalli liquidi
Schermo a cristalli liquidi

Lo spettro originale ha una risoluzione dello schermo di 256x192 pixel. Per mantenere (approssimativamente) questo rapporto ed evitare di avere barre nere su entrambi i lati, ho selezionato un touchscreen LCD TFT Waveshare da 3,2 320x240 progettato per il Raspberry Pi. Non verrà collegato direttamente all'intestazione GPIO del Pi, quindi possiamo rimuovere il bordo in plastica del connettore e tagliare i pin. Ho tagliato una scheda prototipi da 7x9 cm fino a 2,1x9 cm (la dimensione esatta non ha importanza purché i due fori angolari rimanenti siano allineati con i fori superiori della tastiera e ci sia spazio sufficiente per saldare i pin dell'intestazione GPIO) e saldare i pin in posizione, il che ci darà un modo semplice per montare lo schermo sopra la tastiera.

Abbiamo solo bisogno di collegare i pin di I/O SPI, alimentazione e touchscreen al Pi: può essere piuttosto complicato rintracciare quali pin sono effettivamente necessari, ma le informazioni sono disponibili se guardi abbastanza bene. La schermata Waveshare utilizza 10 pin: 4, 6, 9, 13, 15, 19, 21, 23, 24 e 26. Ovviamente, se lo stai facendo con uno schermo diverso, dovrai prima verificare i pin corretti afferrando il tuo saldatore.

Non è necessaria alcuna configurazione software speciale: basta installare il software del driver del produttore ed è pronto per l'uso.

Passaggio 3: wireless (Bluetooth)

La scheda Raspberry Pi Zero non ha funzionalità wireless, solo una porta USB utile e non ci sarà abbastanza spazio nella custodia per un hub USB, quindi ho dovuto avere un po' di inventiva per aggiungere una sorta di funzionalità wireless per la mia build. Se lo stai costruendo con lo Zero W, puoi saltare questo passaggio.

C'è una bella funzionalità del Raspberry Pi che ci permetterà di aggiungere un'utile funzionalità wireless. Collegando un modulo seriale Bluetooth HC-05 economico ai pin UART del Pi e modificando la configurazione del sistema, è possibile ottenere l'accesso wireless al terminale della riga di comando utilizzando serial-over-Bluetooth. Possiamo quindi utilizzare strumenti comuni per inviare file al dispositivo e gestire il filesystem.

Passaggio 4: alimentazione

Potenza
Potenza
Potenza
Potenza

Ho scelto la mia batteria alla fine dello sviluppo, quindi avevo bisogno di scegliere una cella che si adattasse allo spazio disponibile. Quello che ho scelto era un Lipo 2000mAH 25C 1S (dimensioni: 81x34x9mm) venduto in sostituzione del drone Walkera Syma X5. Sarebbe bello poter caricare la batteria in loco con una normale connessione USB e poter utilizzare il dispositivo mentre è in carica. Non vogliamo davvero armeggiare con complessi circuiti di controllo dell'alimentazione, quindi utilizzeremo un modulo già pronto che fornisce la ricarica USB e anche un'uscita 5V potenziata per alimentare direttamente il Pi. Per garantire che il dispositivo possa essere completamente spento, c'è un interruttore a scorrimento tra l'uscita di questo modulo e il Pi che assicura che la batteria possa essere ancora caricata anche quando il dispositivo è spento. Il Pi deve essere spento correttamente per evitare problemi di corruzione dei dati. Piuttosto che dover accedere tramite seriale Bluetooth, possiamo collegare un interruttore tattile al pin 5 del Pi (GPIO3) e scrivere un piccolo script che lo guardi e avvii un arresto quando viene premuto. I componenti di alimentazione e wireless sono stati saldati a un'altra scheda prototipi 7x9 cm che si troverà direttamente sotto la tastiera.

Passaggio 5: collegare tutto insieme

Collegando tutto insieme
Collegando tutto insieme
Collegando tutto insieme
Collegando tutto insieme
Collegando tutto insieme
Collegando tutto insieme

Con tutte le varie parti costruite, possiamo assemblare gli interni. Il problema più grande che ho riscontrato durante l'assemblaggio è stato che la porta USB ha interrotto il mio Arduino Pro Micro, richiedendo di saldare i fili direttamente ai pad di saldatura anziché utilizzare un cavo USB. Questo è un noto punto debole delle schede Pro Micro, quindi probabilmente vale la pena applicare una buona quantità di colla a caldo prima del montaggio per evitarlo. Supponendo che questa particolare disgrazia non ti capiti, hai una scelta: puoi creare un cavo da micro USB a micro USB super sottile per collegare la tastiera al Pi o puoi saldare una o entrambe le estremità direttamente alle schede. Poiché avevo bisogno di saldare il lato Arduino, ho anche saldato il lato Pi direttamente ai punti di prova sul retro della scheda. Ci sono pro e contro per ogni opzione, quindi dipende da te quale preferisci.

Terremo insieme le tavole con i distanziatori in nylon M3. Abbiamo bisogno di 2 distanziatori da 9 mm per collegare i fori inferiori tra la tastiera e la scheda di alimentazione. I fori superiori trattengono anche lo schermo, quindi vogliamo distanziatori di 2,5 mm tra la tastiera e lo schermo e distanziatori di 4,5 mm tra lo schermo e la scheda di alimentazione. La foto a lato mostra come appare. I distanziatori avranno bisogno di un po' di attenzione per rendere tutto parallelo - può essere un po' stretto con tutti i fili della tastiera, ma dovrebbe andare insieme. Come si può vedere dalle foto, il dispositivo può essere acceso e utilizzato dopo il montaggio, senza bisogno di un vero e proprio involucro. Presto stamperemo un allegato ma, prima di arrivare a questo, dovremo installare il sistema operativo e configurarlo.

Passaggio 6: software

Con gli interni assemblati, possiamo procedere con l'installazione e la configurazione del software. Il Raspberry Pi verrà eseguito su un'installazione Raspbian standard L'unico software aggiuntivo che deve essere installato, a parte i driver dello schermo TFT, è l'applicazione Fuse. Stiamo utilizzando la versione SDL per ottenere la corretta funzionalità a schermo intero, che può essere installata con:

sudo apt-get install fuse-emulator-sdl

Per gestire la pressione del pulsante di spegnimento, copia lo script 'shutdown' dal mio repository di codice in /home/pi/

Per ottenere una console seriale tramite Bluetooth, aggiungi la seguente riga a /boot/config:

enable_uart=1

Vogliamo che il nostro script di spegnimento e l'emulatore Fuse vengano eseguiti all'avvio, quindi aggiungi queste righe a /etc/xdg/lxsession/LXDE-pi/autostart:

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

Riavvia il Pi dopo aver apportato queste modifiche e dovresti aver finito.

Passaggio 7: allegato e assemblaggio finale

Allegato e assemblaggio finale
Allegato e assemblaggio finale
Allegato e assemblaggio finale
Allegato e assemblaggio finale
Allegato e assemblaggio finale
Allegato e assemblaggio finale

L'enclosure è stato modellato in Fusion 360 (come farlo non rientra nell'ambito di questa istruzione). Ci sono 5 parti: il fondello, la parte anteriore dello schermo, la parte anteriore della tastiera, il pulsante di accensione e il coperchio del pannello di controllo. La cover del pannello di controllo dovrebbe essere stampata in un filamento flessibile (ho usato PLA flessibile ma un materiale più morbido come NinjaFlex potrebbe essere migliore); tutto il resto va stampato in plastica rigida (io ho usato Filamentum black PLA).

Per dare un po' di resistenza al pulsante di accensione e per evitare che scuoti, attaccare della schiuma adesiva da 3 mm sul retro e quindi praticare un foro da 4 mm per consentirgli di sedersi comodamente sopra l'interruttore tac verticale sul PCB di alimentazione. Potrebbe essere necessario tagliare leggermente un bordo, come si può vedere nelle foto, per evitare di impigliarsi nella scheda di alimentazione. Ho anche trovato utile usare una piccola quantità di colla per tenere premuto il pulsante sull'interruttore di alimentazione.

Dobbiamo incollare un paio di distanziatori in nylon nei supporti superiori sul pannello frontale dello schermo per consentire il fissaggio sicuro delle parti superiori della custodia. Una volta asciugato, tagliare i distanziatori a filo.

Per montare le schede, dobbiamo prima creare i montanti di montaggio. Rimuovere le teste da alcune viti in nylon M3 e incollare le parti filettate nei fori inferiori di ciascuno dei pannelli frontali. Quando questi si sono asciugati, i 2 pannelli frontali possono essere incollati insieme e la tastiera può essere fissata in posizione utilizzando i distanziatori da 9 mm e 2,5 mm. Successivamente, con questo in posizione, lo schermo può essere posizionato sui montanti superiori e possono essere aggiunti i distanziatori da 4,5 mm. Infine, è possibile posizionare la scheda di alimentazione e sistemare i cavi per consentire il montaggio dello schienale.

La batteria dovrebbe essere bloccata in posizione con del nastro biadesivo o un foglio di schiuma e collegata al connettore di alimentazione. Ora le due metà possono essere unite e alcune brevi viti a testa svasata M3 possono essere utilizzate per fissare tutto in posizione.

Infine, capovolgilo e incolla il coperchio del pannello di controllo sul pannello della tastiera. L'ho fatto con un adesivo epossidico in due parti per un forte legame.

Passaggio 8: sovrapposizione della tastiera

Sovrapposizione della tastiera
Sovrapposizione della tastiera
Sovrapposizione della tastiera
Sovrapposizione della tastiera
Sovrapposizione della tastiera
Sovrapposizione della tastiera

Abbiamo quasi finito. Tutto ciò che manca sono alcuni segni chiave e una sovrapposizione in modo da sapere come raggiungere tutte quelle meravigliose parole chiave.

Le lettere e i numeri primari si trovano sulle parti superiori dell'interruttore. Ho trovato alcuni trasferimenti di lettere davvero piccoli da 2,5 mm che si adattano perfettamente ai piani di 4 mm di diametro. Sono un po 'complicati da applicare perché le parti superiori si muovono mentre le strofini, ma ottieni alcune lettere in un pacchetto, quindi va bene commettere alcuni errori. Ho finito per ritoccarne alcuni con un bel pennarello indelebile anche se, col senno di poi, avrei dovuto provare a immergerli in acqua tiepida e a farli scivolare in posizione (se hai mai costruito un kit modello, avrai familiarità con questo processo). Per proteggere le lettere durante l'uso, ho tamponato dello smalto trasparente per unghie su ogni parte superiore dei tasti.

Per evitare che i corpi argentati degli interruttori si vedessero attraverso gli spazi vuoti nella sovrapposizione, ho usato un pennarello indelebile per colorarli - questo può essere visto nella riga inferiore di una delle foto.

Ho progettato gli overlay stampati nel programma di grafica open source GIMP e poi li ho stampati su carta opaca di qualità fotografica. Idealmente, le sovrapposizioni saranno il più sottili possibile: sono stato in grado di staccare il supporto dalla carta con marchio Epson che ho usato molto facilmente, anche se questo non sarà il caso di tutte le marche. Per proteggere la stampa, ho ricoperto la carta con un foglio di vinile adesivo trasparente e ho applicato del nastro biadesivo sul retro per attaccarlo alla custodia. Prima di incollare le sovrapposizioni, tuttavia, dobbiamo perforare i fori. Ho usato un perforatore per cuoio da 4 mm economico e ho ottenuto i migliori risultati affilando i punzoni e tagliando direttamente contro un foglio di alluminio da 3 mm di scarto. Quindi le sovrapposizioni devono solo essere allineate e incollate.

Passaggio 9: conclusione

E abbiamo finito! Questo è stato un progetto piuttosto grande che richiedeva una serie di competenze tra cui elettronica di base, saldatura, modellazione 3D, programmazione e persino un piccolo layout grafico. Alla fine è stato molto gratificante e il dispositivo finito è molto divertente con cui giocare, ma come se la cava rispetto ai miei criteri originali?

Economico: il costo complessivo di tutto, compresi gli attuali prezzi al dettaglio degli articoli che già possedevo e gli articoli di cancelleria come il nastro biadesivo che dureranno ben oltre questo progetto, è di circa £ 80, il che lo rende un progetto conveniente.

Portatile: è decisamente portatile. Questo dispositivo sta comodamente in una tasca ed è completamente autonomo, quindi può essere utilizzato ovunque. Se dovessi costruirlo di nuovo, realizzerei un controller piatto in stile joypad a 4 vie anziché utilizzare la levetta di navigazione poiché sporge sopra la linea del dispositivo lasciandolo vulnerabile ai danni. Mi piacerebbe anche vedere se è disponibile uno schermo non touch di dimensioni e proporzioni simili con una copertura più resistente ai graffi poiché non ho bisogno dell'interfaccia touchscreen e la superficie resistiva è particolarmente soggetta a danni.

Tastiera e joystick: sono davvero soddisfatto di come hanno funzionato. Sebbene non abbia la sensazione di carne morta dell'originale, l'uso della tastiera ricorda sorprendentemente il vecchio ZX Spectrum: il layout, la sovrapposizione e l'implementazione delle parole chiave funzionano bene insieme per raggiungere questo obiettivo. La tastiera USB può essere utilizzata anche da sola con un computer che esegue l'emulatore Fuse per fornire la stessa esperienza.

Istantaneo: l'utilizzo del modulo seriale Bluetooth semplifica il trasferimento degli archivi su nastro al dispositivo da un altro computer senza dover uscire dall'interfaccia Fuse e dovrebbe essere possibile semplificare ulteriormente il processo scrivendo uno script lato client per inviare un file al dispositivo. Preferirei essere in grado di utilizzare la funzione standard di trasferimento file Bluetooth "invia al dispositivo" integrata nella maggior parte dei sistemi operativi o un sistema di condivisione file adeguato come Samba. Tuttavia, questi saranno disponibili solo con la scheda Pi Zero W e non l'ho usato per questa build.

Oltre agli elementi sopra indicati, se iniziassi di nuovo questo progetto da zero, sceglierei una batteria più sottile con una capacità maggiore all'inizio del progetto e la progetterei attorno piuttosto che dover selezionare una batteria di dimensioni adeguate alla fine del il progetto. Userei anche un Pi Zero W piuttosto che un modulo seriale Bluetooth per espandere le opzioni per l'invio di file al dispositivo. Un altro ovvio miglioramento sarebbe una sorta di indicazione dello stato della batteria hardware poiché attualmente non c'è modo di vedere quanta carica è rimasta. Prenderei anche in considerazione l'utilizzo di un sistema operativo basato su Ramdisk come Alpine Linux che sarebbe più tollerante agli arresti forzati e dovrebbe consentire un singolo interruttore di accensione/spegnimento senza la necessità di un pulsante di spegnimento separato, molto più simile all'originale ZX Spectrum, solo scollegalo quando hai finito.

Potrebbe essere interessante progettare un PCB personalizzato per questo dispositivo che, potenzialmente, ci consentirebbe di posizionare i componenti di alimentazione sul retro della tastiera piuttosto che avere una scheda separata. Ciò potrebbe ridurre significativamente la profondità del dispositivo finito. Semplificherebbe anche l'assemblaggio del dispositivo e offrirebbe il potenziale di una sorta di kit di autoassemblaggio. Se c'è abbastanza interesse per questo progetto, potrei fare una versione 2 che risolva questi problemi.

Passaggio 10: risorse

Le seguenti risorse sono necessarie per costruire questo progetto:

File di casi stampabili in 3D (Thingiverse):

Codice (Github):

Consigliato: