Innholdsfortegnelse:

Pocket ZX (Håndholdt ZX Spectrum): 10 trinn
Pocket ZX (Håndholdt ZX Spectrum): 10 trinn

Video: Pocket ZX (Håndholdt ZX Spectrum): 10 trinn

Video: Pocket ZX (Håndholdt ZX Spectrum): 10 trinn
Video: Tetris Games On Gameboy - Sega Head 2024, November
Anonim
Pocket ZX (Håndholdt ZX Spectrum)
Pocket ZX (Håndholdt ZX Spectrum)
Pocket ZX (håndholdt ZX -spektrum)
Pocket ZX (håndholdt ZX -spektrum)
Pocket ZX (Håndholdt ZX Spectrum)
Pocket ZX (Håndholdt ZX Spectrum)

Jeg er et barn på 80-tallet og har gode minner fra 8-biters datamaskiner fra den tiden. Min første datamaskin - en som har en spesiell plass i hjertet mitt - var et Sinclair ZX Spectrum 48K. Etter å ha oppdaget noen lokalsamfunn med fokus på eldre datamaskiner på nettet, bestemte jeg meg for at jeg ville gjenoppleve noe av den nostalgi for meg selv og installerte sikringsemulatoren på min MacBook. Dette var morsomt en stund, men jeg ville virkelig ha en dedikert enhet - helst noe lite, bærbart og selvstendig for å passe inn i min livsstil. Valget på dette stadiet var å enten følge stien til den fantastiske Ben Heck og krympe original ZX-maskinvare til noe bærbart eller å jukse og bruke emulering på en liten enbrett-datamaskin. Jeg skal jukse:)

Så hva vil jeg ha fra mitt bærbare ZX -spektrum?

  • Billig: Jeg har altfor mange prosjekter til å bruke store summer på litt morsom nostalgi.
  • Bærbar: Det må være noe jeg kan leke med på sofaen eller på en lat ettermiddag i hagen.
  • Tastatur: Jeg vil ikke bare spille spill, jeg vil også programmere det. For å få den fulle opplevelsen må den ha de fantastiske nøkkelordene.
  • Joystick: Jeg var aldri til å spille plattformspill med tastatur. Eventyrspill, sikkert, men jeg vil ikke bare spille eventyrspill, så det kommer til å trenge en joystick.
  • Øyeblikkelig: Jeg hatet å legge i bånd på 80 -tallet, og jeg kan ikke forestille meg at jeg har blitt mer opptatt av det i årene som har gått.

Med alt dette i tankene utarbeidet jeg et blokkdiagram for å hjelpe meg å forstå de forskjellige komponentene. Så la oss bygge.

Trinn 1: USB -tastatur og joystick

USB -tastatur og joystick
USB -tastatur og joystick
USB -tastatur og joystick
USB -tastatur og joystick
USB -tastatur og joystick
USB -tastatur og joystick

Å få tastaturet riktig er nøkkelen til å fange utseendet og følelsen til det originale ZX Spectrum. Vi bygger kanskje en håndholdt emulert enhet som ikke har noe til felles med de originale Spectrum -interiørene, men med nøye design burde det være mulig å lage noe som minner om 80 -tallets databehandlingsopplevelse.

Begynnende med noen protoboards og en stor haug med taktile brytere, eksperimenterte jeg med noen få ideer og bestemte meg for det forskjøvne oppsettet som vises på bildene. Protobordene vi bruker er en standard 7x9cm (26x31 hull) tilgjengelig online fra mange forhandlere. Bryterne er overflatemonterte versjoner som har en mykere følelse og er mindre bråkete enn de mer vanlige gjennomgående hullene, men begge burde fungere ettersom kroppsstørrelsene deres er nesten identiske.

Styrespakskontrollene gikk deretter inn i den gjenværende plassen rett over tastaturet. Jeg bestemte meg for å bruke en 5-veis taktil navigasjonsbryter til venstre og en stor brannknapp til høyre. Joysticken vil doble opp som en kontroller for emulatorens menysystem og en mus for å samhandle med det underliggende Linux-systemet, så jeg la også til en liten sekundær knapp.

Mikrokontrolleren for tastaturet er en Arduino Pro Micro. Dette er et lite kort som kan programmeres som en USB -enhet for menneskelig grensesnitt (HID), for eksempel tastatur, mus eller joystick.

Når bryterne var loddet på plass, må matrisen som kobler radene og kolonnene til svitsjene til mikrokontrolleren bygges. Denne matrisen vil gjøre det mulig for oss å koble alle 40 tastene pluss de 7 joystick -knappene til Pro Micros 18 I/O -pinner. Spektrumtastaturet trenger ikke å håndtere flere tastetrykk bortsett fra Caps Shift og Symbol Shift-tastene, så vi skal sette dem på dedikerte pins, så trenger vi ikke å bekymre deg for å bruke dioder for å forhindre fantomtaster- trykker. Jeg har inkludert en skjematisk for å vise hvordan tastaturet, inkludert matrisen, er koblet til. Først er hver kolonne forbundet med en lengde på en-kjerne ledning, og deretter kobles radene sammen med en enkelt kjerne ledning som er nøye formet for å krysse over kolonnene uten å kortsluttes. Dette kan være litt vanskelig fordi du må få radtrådene høyt nok til å unngå å komme i kontakt med kolonnene, men lave nok til å gi plass til alle ledningene vi trenger å stikke i under den siste monteringen. Til slutt er radene og kolonnene koblet til Arduino -pinnene med ledninger fra gamle IDE -kabler.

Som nevnt ovenfor kommer joystick -kontrolleren også til å fungere som en markørkontroll og en mus, så vi må kunne bytte mellom moduser. Standardmodusen vil være markørmodus, en kombinasjon av Caps Shift + Fire -knappen vil bytte til joystick -modus og kombinasjonen Symbol Shift + Fire brenne til musemodus. For å vise hvilken modus den er i, er det et par 3 mm lysdioder i midten av styrespaken. En Power LED vil også være nyttig, og en god måte å forsyne dette med Pi er å koble en LED til Pi's UART TX -pin, da det hele tiden vil sende data mens enheten er på.

For å forhindre at de løse ledningene flosser i bruk, eller at matrisetrådene blir korte, er alt liberalt dekket av varmt lim - stygt, men effektivt!

Det siste trinnet for å få tastaturet til å fungere er å programmere Arduino med ZX_Spectrum_Keyboard -koden fra depotet mitt. Når det er gjort, kan du faktisk sette ned loddejernet, koble tastaturet til en vanlig datamaskin og bruke det med en spektrumemulator som Fuse eller Spectaculator. Men vi stopper ikke her, så la oss gå videre …

Trinn 2: LCD -skjerm

LCD skjerm
LCD skjerm

Det originale Spectrum har en skjermoppløsning på 256x192 piksler. For å beholde (omtrent) dette forholdet og unngå å ha svarte søyler på begge sider, valgte jeg en Waveshare 3,2 320x240 TFT LCD -berøringsskjerm designet for Raspberry Pi. Den kommer ikke til å kobles direkte til Pi's GPIO -topptekst, slik at vi kan fjerne kontaktens plastramme og trim pinnene. Jeg trimmet et 7x9cm protoboard ned til 2,1x9cm (den eksakte størrelsen spiller ingen rolle så lenge de to gjenværende hjørnehullene er i linje med de øverste tastaturhullene og det er nok plass til å lodde GPIO -toppnålene) og loddet pinnene på plass, noe som vil gi oss en enkel måte å montere skjermen over tastaturet.

Vi trenger bare å koble SPI-, strøm- og berøringsskjermens I/O -pinner til Pi - det kan være ganske vanskelig å spore hvilke pinner som faktisk trengs, men informasjonen er der ute hvis du ser hardt nok ut. Waveshare -skjermen bruker 10 pins: 4, 6, 9, 13, 15, 19, 21, 23, 24 og 26. Selvfølgelig, hvis du lager dette med en annen skjerm, må du bekrefte de riktige pinnene før ta tak i loddejernet ditt.

Det er ingen spesiell programvarekonfigurasjon nødvendig - bare installer produsentens driverprogramvare, og den er klar til bruk.

Trinn 3: Trådløs (Bluetooth)

Raspberry Pi Zero -kortet har ingen trådløs evne, bare en nyttig USB -port, og det kommer ikke til å være nok plass i etuiet til en USB -hub, så jeg måtte bli litt oppfinnsom for å legge til en slags trådløs funksjon for min build. Hvis du bygger dette med Zero W, kan du hoppe over dette trinnet.

Det er en fin funksjon i Raspberry Pi som lar oss legge til en nyttig trådløs funksjon. Ved å feste en billig HC-05 Bluetooth-seriemodul til Pi's UART-pinner og justere systemkonfigurasjonen, er det mulig å få trådløs tilgang til kommandolinjeterminalen ved å bruke seriell-over-Bluetooth. Vi kan deretter bruke vanlige verktøy for å sende filer til enheten og administrere filsystemet.

Trinn 4: Strøm

Makt
Makt
Makt
Makt

Jeg valgte batteriet mitt på slutten av utviklingen, så jeg trengte å velge en celle som ville passe inn i ledig plass. Den jeg valgte var en 2000mAH 25C 1S Lipo (dimensjoner: 81x34x9mm) solgt som erstatning for Walkera Syma X5 -dronen. Det ville være godt å kunne lade batteriet på stedet med en vanlig USB-tilkobling og å kunne bruke enheten mens den lades. Vi ønsker egentlig ikke å tukle med komplekse strømkontrollkretser, så vi kommer til å bruke en ferdig modul som gir USB-lading og også en forsterket 5V-utgang for å drive Pi direkte. For å sikre at enheten kan slås helt av, er det en skyvebryter mellom utgangen til denne modulen og Pi som sikrer at batteriet fortsatt kan lades selv når enheten er slått av. Pi må stenges ordentlig for å unngå problemer med datakorrupsjon. I stedet for å måtte logge inn via Bluetooth -seriell, kan vi koble en taktil bryter til Pi's pin 5 (GPIO3) og skrive et lite skript som ser på dette og starter en nedleggelse når den trykkes. Strøm og trådløse komponenter ble loddet til en annen 7x9cm protoboard som vil sitte rett under tastaturet.

Trinn 5: Koble alt sammen

Koble det hele sammen
Koble det hele sammen
Koble det hele sammen
Koble det hele sammen
Koble det hele sammen
Koble det hele sammen

Med alle de forskjellige delene bygget, kan vi montere innvendig. Det største problemet jeg støtte på under montering var at USB -porten brøt av min Arduino Pro Micro, noe som krever at jeg lodder ledninger direkte til loddetinnene i stedet for å bruke en USB -kabel. Dette er et beryktet svakt punkt på Pro Micro -brettene, så det er sannsynligvis verdt å bruke en god klump med varmt lim på den før montering for å unngå dette. Forutsatt at denne ulykken ikke rammer deg, har du et valg: du kan enten lage en superslank mikro-USB til mikro-USB-kabel for å koble tastaturet til Pi, eller du kan lodde den ene eller begge ender direkte til brettene. Da jeg trengte å lodde Arduino -siden, loddet jeg også Pi -siden direkte til testpunktene på baksiden av brettet. Det er fordeler og ulemper med hvert alternativ, så det er opp til deg hva du foretrekker.

Vi holder brettene sammen med M3 -nylonavstand. Vi trenger 2x 9 mm distanser for å koble de nederste hullene mellom tastaturet og strømkortet. De øverste hullene beholder også skjermen, så vi vil ha 2,5 mm avstand mellom tastaturet og skjermen, og 4,5 mm avstand mellom skjermen og strømkortet. Sidebildet viser hvordan dette ser ut. Avstandene trenger litt forsiktig trimning for å få alt parallelt - det kan passe litt tett med alle tastaturledningene, men det bør gå sammen. Som det fremgår av bildene, kan enheten slås på og brukes etter montering, uten at det trenger en egentlig kabinett. Vi skriver snart ut et kabinett, men før vi kommer til det, må vi installere operativsystemet og konfigurere det.

Trinn 6: Programvare

Med internene montert kan vi fortsette med programvareinstallasjon og konfigurasjon. Raspberry Pi vil kjøre på en standard Raspbian -installasjon Den eneste ekstra programvaren som må installeres, bortsett fra TFT -skjermdriverne, er Fuse -applikasjonen. Vi bruker SDL-versjonen for å få skikkelig fullskjermsfunksjonalitet, som kan installeres med:

sudo apt-get install fuse-emulator-sdl

For å håndtere våre nedstengningsknappetrykk, kopierer du "shutdown" -skriptet fra kodelageret mitt til/home/pi/

For å få en seriell konsoll via Bluetooth, legg til følgende linje i /boot /config:

enable_uart = 1

Vi vil at avstengningsskriptet og sikringsemulatoren skal kjøres ved lansering, så legg disse linjene til/etc/xdg/lxsession/LXDE-pi/autostart:

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

Start Pi på nytt etter at du har gjort disse endringene, og du bør være ferdig.

Trinn 7: Vedlegg og sluttmontering

Vedlegg og sluttmontering
Vedlegg og sluttmontering
Vedlegg og sluttmontering
Vedlegg og sluttmontering
Vedlegg og sluttmontering
Vedlegg og sluttmontering

Kapslingen ble modellert i Fusion 360 (hvordan du gjør det er utenfor omfanget av denne instruerbare). Det er 5 deler: saken bak, skjermfront, tastaturfront, strømknapp og kontrollpaneldeksel. Kontrollpaneldekselet skal skrives ut med en fleksibel filament (jeg brukte fleksibel PLA, men et mykere materiale som NinjaFlex kan være bedre); alt annet skal skrives ut i en stiv plast (jeg brukte Filamentum black PLA).

For å gi strømknappen litt motstand og for å forhindre at den rasler, stikk litt 3 mm klebende skum på baksiden og stans deretter et 4 mm hull for å la den sitte tett over den vertikale tac-bryteren på strømkortet. Du må kanskje trimme den ene kanten litt, som du kan se på bildene, for å unngå å feste strømkortet. Jeg syntes også det var nyttig å bruke en liten klatt lim for å holde knappen til strømbryteren.

Vi må lime et par nylonavstander inn i de øvre festene på frontpanelet på skjermen for å la de øverste delene av kabinettet festes godt. Etter tørking, trim avstandene skyll.

For å passe brettene må vi først lage monteringsstolpene. Fjern hodene fra noen M3 nylonskruer og lim gjengede deler i de nedre hullene på hver av frontpanelene. Når disse har tørket, kan de to frontpanelene limes sammen og tastaturet kan festes på plass med 9 mm og 2,5 mm distanser. Med dette på plass kan skjermen plasseres på de øvre stolpene og 4,5 mm distanser kan legges til. Til slutt kan strømkortet plasseres på plass og ledningene ordnes slik at ryggen kan monteres.

Batteriet skal sitte på plass med litt dobbeltsidig tape eller skumplate og plugges inn i strømkontakten. Nå kan de to halvdelene bringes sammen og noen korte forsenkede M3 -maskinskruer brukes til å feste alt på plass.

Til slutt snu den og lim kontrollpaneldekselet til tastaturpanelet. Jeg gjorde dette med et todelt epoksylim for et sterkt bånd.

Trinn 8: Tastaturoverlegg

Tastaturoverlegg
Tastaturoverlegg
Tastaturoverlegg
Tastaturoverlegg
Tastaturoverlegg
Tastaturoverlegg

Vi er nesten ferdige. Alt som mangler er noen viktige markeringer og et overlegg, slik at vi vet hvordan vi kommer til alle de fantastiske søkeordene.

De primære bokstavene og tallene er på selve bryteren. Jeg fant noen veldig små 2,5 mm brevoverføringer som passet perfekt på toppene med en diameter på 4 mm. De er litt vanskelige å bruke fordi toppene beveger seg mens du gnir dem, men du får ganske mange bokstaver i en pakke, så det er greit å gjøre noen feil. Jeg endte opp med å røre noen få med en fin permanent markør, selv om jeg i ettertid burde prøvd å suge dem i varmt vann og skyve dem på plass (hvis du noen gang har bygget et modellsett, vil du være kjent med denne prosessen). For å beskytte bokstavene under bruk, la jeg litt klar neglelakk på hver nøkkeltopp.

For å forhindre at sølvkroppene på bryterne viser seg gjennom hullene i overlegget, brukte jeg en permanent markør for å farge dem inn - dette kan sees i den nederste raden på et av bildene.

Jeg designet de utskrevne overleggene i GIMP -grafikkprogrammet med åpen kildekode og trykte dem deretter på matt papir i fotokvalitet. Ideelt sett vil overleggene være så tynne som mulig - jeg var i stand til å skrelle støtten fra Epson -merket papir jeg brukte veldig lett, selv om dette ikke vil være tilfelle med alle merker. For å beskytte utskriften dekket jeg papiret i et klart selvklebende vinylark og påførte dobbeltsidig tape på baksiden for å feste det til saken. Før vi legger overleggene ned, må vi imidlertid slå hullene ut. Jeg brukte en billig 4 mm hullhull og fikk de beste resultatene ved å slipe slagene og skjære direkte mot et skrap 3 mm aluminiumsark. Da må overleggene bare stilles opp og stikkes ned.

Trinn 9: Konklusjon

Og vi er ferdige! Dette har vært et ganske stort prosjekt som krever en rekke ferdigheter, inkludert grunnleggende elektronikk, lodding, 3D -modellering, programmering og til og med litt grafisk layout. Det har til slutt vært veldig givende, og den ferdige enheten er veldig morsom å leke med, men hvordan går det mot mine opprinnelige kriterier?

Billig: Den totale kostnaden for alt, inkludert gjeldende utsalgspriser for varer jeg allerede eide og skrivesaker som dobbeltsidig tape som vil vare langt utover dette prosjektet, er rundt £ 80, noe som gjør det til et rimelig prosjekt.

Bærbar: Den er definitivt bærbar. Denne enheten passer komfortabelt i en lomme og er helt frittstående, så den kan brukes hvor som helst. Hvis jeg skulle bygge den igjen, ville jeg lage en flat 4-veis joypad-stilkontroller i stedet for å bruke navigasjonspinnen mens den stikker ut over enhetens linje og etterlater den sårbar for skade. Jeg vil også se om en ikke-berøringsskjerm av lignende størrelse og forhold er tilgjengelig med et mer ripebestandig deksel, da jeg ikke trenger berøringsskjermgrensesnittet og den resistive overflaten er spesielt utsatt for skade.

Tastatur og joystick: Jeg er veldig fornøyd med hvordan disse fungerte. Selv om den ikke har den originale følelsen av bruk, føles det overraskende å bruke tastaturet minner om det gamle ZX Spectrum - layout, overlegg og implementering av søkeord fungerer godt sammen for å oppnå dette. USB -tastaturet kan også brukes alene med en datamaskin som kjører sikringsemulatoren for å gi den samme opplevelsen.

Umiddelbart: Ved å bruke seriemodulen Bluetooth er det relativt enkelt å overføre båndarkiver til enheten fra en annen datamaskin uten å måtte gå ut av sikringsgrensesnittet, og det bør være mulig å effektivisere prosessen ytterligere ved å skrive et skript på klientsiden for å sende en fil til enheten. Jeg foretrekker å kunne bruke standard Bluetooth "send til enhet" filoverføringsfunksjon som er innebygd i de fleste operativsystemer, eller et skikkelig fildelingssystem som Samba. Imidlertid vil de bare være tilgjengelige med Pi Zero W -brettet, og jeg brukte det ikke for denne bygningen.

I tillegg til elementene nevnt ovenfor, hvis jeg startet dette prosjektet igjen fra bunnen av, ville jeg velge et tynnere batteri med større kapasitet tidlig i prosjektet og designe rundt det i stedet for å måtte velge et passende batteri på slutten av prosjektet. Jeg vil også bruke en Pi Zero W i stedet for en seriell Bluetooth -modul for å utvide alternativene for å sende filer til enheten. En annen åpenbar forbedring ville være en slags indikasjon på maskinvarebatteri, siden det for øyeblikket ikke er mulig å se hvor mye ladning som er igjen. Jeg vil også vurdere å bruke et Ramdisk -basert operativsystem som Alpine Linux, som ville være mer tolerant overfor harde nedstengninger og bør tillate en enkelt av/på -bryter uten behov for en separat avstengningsknapp - mye mer som det originale ZX Spectrum, bare koble den fra når du er ferdig.

Det kan være interessant å designe et tilpasset kretskort for denne enheten som potensielt vil tillate oss å sette strømkomponentene på baksiden av tastaturet i stedet for å ha et eget kort. Dette kan redusere dybden på den ferdige enheten betydelig. Det ville også gjøre det enklere å montere enheten og tilby potensialet for et slags selvmonteringssett. Hvis det er nok interesse for dette prosjektet, kan jeg gjøre en versjon 2 som tar opp disse problemene.

Trinn 10: Ressurser

Følgende ressurser er nødvendige for å bygge dette prosjektet:

3D -utskrivbare saksfiler (Thingiverse):

Kode (Github):

Anbefalt: