Indholdsfortegnelse:

Pocket ZX (håndholdt ZX -spektrum): 10 trin
Pocket ZX (håndholdt ZX -spektrum): 10 trin

Video: Pocket ZX (håndholdt ZX -spektrum): 10 trin

Video: Pocket ZX (håndholdt ZX -spektrum): 10 trin
Video: Как настроить ЛЮБОЙ стабилизатор на смартфоне? 2024, November
Anonim
Pocket ZX (håndholdt ZX -spektrum)
Pocket ZX (håndholdt ZX -spektrum)
Pocket ZX (håndholdt ZX -spektrum)
Pocket ZX (håndholdt ZX -spektrum)
Pocket ZX (håndholdt ZX -spektrum)
Pocket ZX (håndholdt ZX -spektrum)

Jeg er et barn i 80'erne og har gode minder om 8-bit computere fra den æra. Min første computer - en som har en særlig plads i mit hjerte - var et Sinclair ZX Spectrum 48K. Efter for nylig at have opdaget nogle fællesskaber med fokus på ældre computere på nettet, besluttede jeg, at jeg ville genopleve noget af den nostalgi for mig selv og installerede Fuse -emulatoren på min MacBook. Dette var sjovt et stykke tid, men jeg ville virkelig have en dedikeret enhed - helst noget lille, bærbart og selvstændigt, der skulle passe ind i min livsstil. Valget på dette stadium var enten at følge stien til den fantastiske Ben Heck og krympe original ZX-hardware til noget bærbart eller at snyde og bruge emulering på en lille single-board computer. Jeg vil snyde:)

Så hvad vil jeg have fra mit bærbare ZX Spectrum?

  • Billigt: Jeg har alt for mange projekter til at bruge store summer på lidt sjov nostalgi.
  • Bærbar: Det skal være noget, jeg kan lege med i sofaen eller på en doven eftermiddag i haven.
  • Tastatur: Jeg vil ikke bare spille spil, jeg vil også programmere det. For at få den fulde oplevelse skal den have de vidunderlige nøgleord.
  • Joystick: Jeg var aldrig til at spille platformspil med et tastatur. Eventyrspil, helt sikkert, men jeg vil ikke bare spille eventyrspil, så det skal bruge et joystick.
  • Øjeblikkelig: Jeg hadede tapeindlæsning i 80'erne, og jeg kan ikke forestille mig, at jeg er blevet mere og mere forundret over det i de mellemliggende år.

Med alt dette i tankerne udarbejdede jeg et blokdiagram for at hjælpe mig med at forstå de forskellige komponenter. Så lad os bygge.

Trin 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

At få tastaturet rigtigt er nøglen til at fange udseendet og fornemmelsen af det originale ZX Spectrum. Vi bygger muligvis en håndholdt emuleret enhed, der ikke har noget til fælles med de originale Spectrum -indvendige dele, men med omhyggeligt design burde det være muligt at skabe noget, der føles minder om 80'ernes computeroplevelse.

Begyndende med nogle protoboards og en stor bunke taktile switches, eksperimenterede jeg med et par ideer og besluttede mig for det forskudte layout vist på billederne. De protoboards, vi bruger, er en standard 7x9cm (26x31 huller) tilgængelig online fra mange forhandlere. Skifterne er overflademonterede versioner, der har en blødere fornemmelse og er mindre støjende end deres mere almindelige gennemgående huller, men begge burde fungere, da deres kropsstørrelser er næsten identiske.

Joystick -betjeningerne gik derefter ind i den resterende plads umiddelbart over tastaturet. Jeg besluttede at bruge en 5-vejs taktil navigationskontakt til venstre og en stor brandknap til højre. Joysticket vil dobbelt op som en controller til emulatorens menusystem og en mus til at interagere med det underliggende Linux-system, så jeg tilføjede også en lille sekundær knap.

Mikrocontrolleren til tastaturet er en Arduino Pro Micro. Dette er et lille kort, der kan programmeres som en USB human interface -enhed (HID) såsom et tastatur, mus eller joystick.

Når kontakterne er loddet på plads, skal matrixen, der forbinder rækker og kolonner af switches til mikrokontrolleren, bygges. Denne matrix gør det muligt for os at forbinde alle 40 taster plus de 7 joystick -knapper til Pro Micros 18 I/O -ben. Spektrumtastaturet behøver ikke at håndtere flere tastetryk bortset fra Caps Shift og Symbol Shift-tasterne, så vi kommer til at sætte dem på dedikerede pins, så behøver vi ikke bekymre dig om at bruge dioder for at forhindre fantomtast- trykker på. Jeg har inkluderet en skematisk for at vise, hvordan tastaturet, herunder matrixen, er kablet op. Først er hver søjle forbundet med en længde af enkernetråd, og derefter forbindes rækkerne ved hjælp af en enkeltkerntråd, som er omhyggeligt formet til at krydse søjlerne uden at kortslutte. Dette kan være lidt vanskeligt, fordi du skal få rækkablerne høje nok til at undgå at komme i kontakt med søjlerne, men lavt nok til at efterlade plads til alle de ledninger, vi skal putte i under den sidste samling. Endelig er rækkerne og kolonnerne forbundet til Arduino -benene med ledninger fra gamle IDE -kabler.

Som nævnt ovenfor vil joystick -controlleren også fungere som en markørcontroller og en mus, så vi skal være i stand til at skifte mellem tilstande. Standardtilstanden vil være markørtilstand, en kombination af Caps Shift + Fire -knappen skifter til joystick -tilstand, og kombinationen af symbolskift + brand skifter til musemodus. For at vise hvilken tilstand den er i, er der et par 3 mm lysdioder i midten af joystickpanelet. En Power LED vil også være nyttig, og en god måde at levere dette til Pi er at tilslutte en LED til Pi's UART TX -pin, da det konstant sender data, mens enheden er tændt.

For at forhindre, at de løse ledninger flosser i brug, eller at matrixledningerne ikke kortslutter, er alt rigeligt dækket af varm lim - grimt men effektivt!

Det sidste trin for at få tastaturet til at fungere er at programmere Arduino med ZX_Spectrum_Keyboard -koden fra mit lager. Når det er gjort, kan du faktisk lægge loddejernet ned, tilslutte tastaturet til en almindelig computer og bruge det med en spektrumemulator som Fuse eller Spectaculator. Men vi stopper ikke her, så lad os gå videre …

Trin 2: LCD -skærm

LCD -skærm
LCD -skærm

Det originale spektrum har en skærmopløsning på 256x192 pixels. For at beholde (cirka) dette forhold og undgå at have sorte bjælker ned på begge sider, valgte jeg en Waveshare 3,2 320x240 TFT LCD -berøringsskærm designet til Raspberry Pi. Den vil ikke blive forbundet direkte til Pi's GPIO -header, så vi kan fjerne stikets plastramme og trim stifterne. Jeg trimmede et 7x9cm protoboard ned til 2,1x9cm (den nøjagtige størrelse er ligegyldig, så længe de to resterende hjørnehuller flugter med de øverste tastaturhuller, og der er nok plads til at lodde GPIO -headerstifterne) og loddet stifterne i position, hvilket vil give os en nem måde at montere skærmen over tastaturet.

Vi behøver kun at forbinde SPI-, strøm- og touch -I/O -benene til Pi - det kan være ret vanskeligt at spore, hvilke pins der faktisk er nødvendige, men oplysningerne er derude, hvis du ser hårdt nok ud. Waveshare -skærmen bruger 10 pins: 4, 6, 9, 13, 15, 19, 21, 23, 24 og 26. Det er klart, at hvis du laver dette med en anden skærm, skal du kontrollere de korrekte pins før tag fat i dit loddejern.

Der kræves ingen særlig softwarekonfiguration - bare installer producentens driversoftware, og den er klar til brug.

Trin 3: Trådløs (Bluetooth)

Raspberry Pi Zero -kortet har ingen trådløs kapacitet, kun en nyttig USB -port, og der vil ikke være nok plads i etuiet til en USB -hub, så jeg var nødt til at blive lidt opfindsom for at tilføje en slags trådløs kapacitet til min build. Hvis du bygger dette med Zero W, kan du springe dette trin over.

Der er en pæn funktion i Raspberry Pi, som giver os mulighed for at tilføje en nyttig trådløs kapacitet. Ved at tilslutte et billigt HC-05 Bluetooth-seriemodul til Pi's UART-ben og tilpasse systemkonfigurationen, er det muligt at få trådløs adgang til kommandolinjeterminalen ved hjælp af seriel-over-Bluetooth. Vi kan derefter bruge almindelige værktøjer til at sende filer til enheden og administrere filsystemet.

Trin 4: Strøm

Strøm
Strøm
Strøm
Strøm

Jeg valgte mit batteri i slutningen af udviklingen, så det var nødvendigt at vælge en celle, der ville passe ind i den ledige plads. Den jeg valgte var en 2000mAH 25C 1S Lipo (dimensioner: 81x34x9mm) solgt som erstatning for Walkera Syma X5 dronen. Det ville være godt at kunne oplade batteriet in-situ med en almindelig USB-forbindelse og at kunne bruge enheden, mens den oplades. Vi ønsker ikke rigtig at være i gang med komplekse strømstyringskredsløb, så vi kommer til at bruge et færdigt modul, der giver USB-opladning og også en forstærket 5V-udgang til at drive Pi direkte. For at sikre, at enheden kan slukkes helt, er der en skydekontakt mellem output fra dette modul og Pi, som sikrer, at batteriet stadig kan oplades, selvom enheden er slukket. Pi skal lukkes ordentligt ned for at undgå problemer med datakorruption. I stedet for at skulle logge ind via Bluetooth -seriel, kan vi slutte en taktil switch til Pi's pin 5 (GPIO3) og skrive et lille script, der ser dette og starter en nedlukning, når der trykkes på det. Strømmen og de trådløse komponenter blev loddet til et andet 7x9cm protoboard, som vil sidde direkte under tastaturet.

Trin 5: Tilslut det hele sammen

Forbind det hele sammen
Forbind det hele sammen
Forbind det hele sammen
Forbind det hele sammen
Forbind det hele sammen
Forbind det hele sammen

Med alle de forskellige dele bygget, kan vi samle de indvendige dele. Det største problem, jeg løb ind i under samlingen, var, at USB -porten brød min Arduino Pro Micro af, hvilket krævede, at jeg lodde ledninger direkte til loddepuderne frem for at bruge et USB -kabel. Dette er et berygtet svagt punkt på Pro Micro -pladerne, så det er sandsynligvis værd at påføre en god klump varm lim på den før samling for at undgå dette. Forudsat at denne særlige ulykke ikke rammer dig, har du et valg: du kan enten lave et superslank mikro-USB til mikro-USB-kabel for at slutte dit tastatur til Pi, eller du kan lodde den ene eller begge ender direkte til brædderne. Da jeg havde brug for at lodde Arduino -siden, lodde jeg også Pi -siden direkte til testpunkterne på bagsiden af brættet. Der er fordele og ulemper ved hver mulighed, så det er op til dig, hvilken du foretrækker.

Vi holder brædderne sammen med M3 -nylonstandarder. Vi har brug for 2x 9 mm afstand til at forbinde de nederste huller mellem tastaturet og strømkortet. De øverste huller bevarer også skærmen, så vi vil have 2,5 mm afstand mellem tastaturet og skærmen og 4,5 mm afstand mellem skærmen og strømkortet. Sidefotoet viser, hvordan dette ser ud. Afstandene skal bruge lidt omhyggelig trimning for at få alt parallelt - det kan være lidt stramt med alle tastaturledninger, men det skal gå sammen. Som det kan ses på billederne, kan enheden tændes og bruges efter samling uden at skulle bruge et egentligt kabinet. Vi udskriver snart et kabinet, men før vi når det, skal vi installere operativsystemet og konfigurere det.

Trin 6: Software

Når de indvendige dele er samlet, kan vi fortsætte med installationen og konfigurationen af softwaren. Raspberry Pi kører på en standard Raspbian -installation Den eneste ekstra software, der skal installeres, bortset fra TFT -skærmdrivere, er Fuse -applikationen. Vi bruger SDL-versionen til at få ordentlig fuldskærmsfunktion, som kan installeres med:

sudo apt-get install fuse-emulator-sdl

For at håndtere vores nedlukningsknappetryk skal du kopiere 'shutdown' -scriptet fra mit kodelager til/home/pi/

For at få en seriel konsol via Bluetooth skal du tilføje følgende linje til /boot /config:

enable_uart = 1

Vi vil have vores nedlukningsscript og sikringsemulatoren til at køre ved lancering, så tilføj disse linjer til/etc/xdg/lxsession/LXDE-pi/autostart:

@fuse-sdl-ingen-lyd --kempston-ingen-automatisk indlæsning

Genstart Pi efter at have foretaget disse ændringer, og du skal være færdig.

Trin 7: Kapsling og sidste samling

Kabinet og sidste samling
Kabinet og sidste samling
Kabinet og sidste samling
Kabinet og sidste samling
Kabinet og sidste samling
Kabinet og sidste samling

Kabinettet var modelleret i Fusion 360 (hvordan man gør det er uden for denne instruks). Der er 5 dele: sagen tilbage, skærmfronten, tastaturfronten, tænd / sluk -knappen og betjeningspanelets dæksel. Betjeningspanelets dæksel skal udskrives i en fleksibel filament (jeg brugte fleksibel PLA, men et blødere materiale som NinjaFlex kan være bedre); alt andet skal udskrives i en stiv plastik (jeg brugte Filamentum sort PLA).

For at give tænd / sluk-knappen lidt modstand og for at forhindre, at den rasler, skal du stikke noget 3 mm klæbende skum på bagsiden og derefter slå et 4 mm hul ud, så det kan sidde tæt over den lodrette tac-kontakt på strømkortet. Det kan være nødvendigt at trimme den ene kant lidt, som det kan ses på billederne, for at undgå at hænge i strømkortet. Jeg fandt det også nyttigt at bruge en lille klat lim til at holde knappen til afbryderen.

Vi er nødt til at lime et par nylon -afstandsstykker ind i de øverste beslag på skærmens frontpanel, så de øverste dele af kabinettet kan fastgøres sikkert. Når den er tørret, skæres standoffsene flush.

For at passe til brædderne skal vi først oprette monteringsstolperne. Fjern hovederne fra nogle M3 nylonskruer, og lim gevinddelene ind i de nederste huller på hver af frontpanelerne. Når disse er tørret, kan de 2 frontpaneler limes sammen, og tastaturet kan fastgøres på plads ved hjælp af 9 mm og 2,5 mm afstandsstykker. Med dette på plads kan skærmen placeres på de øverste stolper, og 4,5 mm afstand kan tilføjes. Endelig kan strømkortet placeres på plads og ledningerne arrangeres, så ryggen kan monteres.

Batteriet skal sidde fast med noget dobbeltsidet tape eller skumplade og sættes i strømstikket. Nu kan de to halvdele bringes sammen og nogle korte forsænkede M3 maskinskruer bruges til at sikre alt på plads.

Vend det til sidst, og lim kontrolpanelets dæksel til tastaturpanelet. Jeg gjorde dette med et todelt epoxyklæbemiddel for en stærk binding.

Trin 8: Tastaturoverlay

Tastaturoverlay
Tastaturoverlay
Tastaturoverlay
Tastaturoverlay
Tastaturoverlay
Tastaturoverlay

Vi er næsten færdige. Det eneste, der mangler, er nogle vigtige markeringer og et overlay, så vi ved, hvordan vi kommer til alle de vidunderlige søgeord.

De primære bogstaver og tal er på de faktiske switch toppe. Jeg fandt nogle virkelig små 2,5 mm brevoverførsler, som passede perfekt til toppen med 4 mm diameter. De er lidt vanskelige at anvende, fordi toppen bevæger sig, mens du gnider dem, men du får en del bogstaver i en pakke, så det er fint at lave nogle fejl. Jeg endte med at røre et par stykker med en fin permanent markør, selvom jeg i bakspejlet skulle have prøvet at lægge dem i blød i varmt vand og skubbe dem på plads (hvis du nogensinde har bygget et modelsæt, vil du være bekendt med denne proces). For at beskytte bogstaverne under brug puttede jeg lidt klar neglelak på hver nøgletop.

For at forhindre afbrydernes sølvlegemer i at se igennem hullerne i overlaget, brugte jeg en permanent markør til at farve dem ind - dette kan ses i nederste række på et af billederne.

Jeg har designet de udskrevne overlejringer i GIMP -grafikprogrammet med open source og derefter udskrevet dem på mat papir i fotokvalitet. Ideelt set vil overlejringerne være så tynde som muligt - jeg var i stand til at skrælle bagsiden af Epson -mærket papir, jeg brugte meget let, selvom dette ikke vil være tilfældet med alle mærker. For at beskytte udskrivningen dækkede jeg papiret i et klart klæbende vinylark og lagde dobbeltsidet tape på bagsiden for at klæbe det til sagen. Inden vi sætter overlejringerne ned, skal vi dog slå hullerne ud. Jeg brugte en billig 4 mm hulhuller i læder og fik de bedste resultater ved at slibe slagene og skære direkte mod et skrot 3 mm aluminiumsark. Så skal overlejringerne bare stilles op og sættes ned.

Trin 9: Konklusion

Og vi er færdige! Dette har været et ganske stort projekt, der kræver en række færdigheder, herunder grundlæggende elektronik, lodning, 3D -modellering, programmering og endda lidt grafisk layout. Det har i sidste ende været meget givende, og den færdige enhed er rigtig sjov at lege med, men hvordan klarer det sig mod mine originale kriterier?

Billig: De samlede omkostninger ved alt, inklusive nuværende detailpriser på varer, jeg allerede har ejet, og papirvarer som f.eks. Dobbeltsidet tape, der vil vare langt ud over dette projekt, er omkring £ 80, hvilket gør det til et overkommeligt projekt.

Bærbar: Det er bestemt bærbart. Denne enhed passer komfortabelt i en lomme og er helt uafhængig, så den kan bruges overalt. Hvis jeg skulle bygge det igen, ville jeg lave en flad 4-vejs joypad-stil controller frem for at bruge navigationspinden, da den stikker ud over enhedens linje og efterlader den sårbar over for skader. Jeg vil også gerne se, om en ikke-berøringsskærm med lignende størrelse og forhold er tilgængelig med et mere ridsefast dæksel, da jeg ikke har brug for touchscreen-grænsefladen, og den resistive overflade er særligt udsat for skader.

Tastatur og joystick: Jeg er virkelig tilfreds med, hvordan disse fungerede. Selvom det ikke har den originale stemning, føles brugen af tastaturet overraskende på det gamle ZX Spectrum - layout, overlay og implementering af søgeord fungerer godt sammen for at opnå dette. USB -tastaturet kan også bruges alene med en computer, der kører sikringsemulatoren for at give den samme oplevelse.

Øjeblikkelig: Brug af det serielle Bluetooth-modul gør det relativt let at overføre båndarkiver til enheden fra en anden computer uden at skulle forlade sikringsgrænsefladen, og det burde være muligt at strømline processen yderligere ved at skrive et script på klientsiden for at sende en fil til enheden. Jeg foretrækker at kunne bruge standard Bluetooth "send til enhed" filoverførselsfunktion indbygget i de fleste operativsystemer eller et ordentligt fildelingssystem som Samba. Disse vil dog kun være tilgængelige med Pi Zero W -kortet, og jeg brugte det ikke til denne build.

Ud over de ovenstående punkter, hvis jeg startede dette projekt igen fra bunden, ville jeg vælge et tyndere batteri med en større kapacitet tidligt i projektet og designe omkring det frem for at skulle vælge et passende batteri i slutningen af projektet. Jeg vil også bruge en Pi Zero W frem for et serielt Bluetooth -modul til at udvide mulighederne for at sende filer til enheden. En anden tydelig forbedring ville være en slags hardware -batteristatusindikation, da der i øjeblikket ikke er nogen måde at se, hvor meget opladning der er tilbage. Jeg ville også overveje at bruge et Ramdisk -baseret operativsystem som Alpine Linux, som ville være mere tolerant over for hårde nedlukninger og skulle give mulighed for en enkelt tænd/sluk -switch uden behov for en separat lukningsknap - meget mere som det originale ZX Spectrum, bare tag stikket ud, når du er færdig.

Det kan være interessant at designe et brugerdefineret printkort til denne enhed, som potentielt ville give os mulighed for at sætte strømkomponenterne på bagsiden af tastaturet frem for at have et separat kort. Dette kan reducere dybden af den færdige enhed betydeligt. Det ville også gøre samlingen af enheden lettere og tilbyde potentialet i en slags selvmonteringssæt. Hvis der er nok interesse for dette projekt, laver jeg muligvis en version 2, der løser disse problemer.

Trin 10: Ressourcer

Følgende ressourcer er nødvendige for at bygge dette projekt:

3D -printbare sagsfiler (Thingiverse):

Kode (Github):

Anbefalede: