Innehållsförteckning:

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

Video: Pocket ZX (Handheld ZX Spectrum): 10 steg

Video: Pocket ZX (Handheld ZX Spectrum): 10 steg
Video: The first year of the Nintendo Gameboy Color (1998) 2024, November
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)

Jag är ett barn på 80-talet och har fina minnen från 8-bitars datorer från den tiden. Min första dator - en som har en speciell plats i mitt hjärta - var en Sinclair ZX Spectrum 48K. Efter att nyligen ha upptäckt några samhällen med fokus på äldre datorer på webben bestämde jag mig för att jag ville återuppleva lite av den nostalgan för mig själv och installerade Fuse -emulatorn på min MacBook. Det här var roligt ett tag men jag ville verkligen ha en dedikerad enhet - helst något litet, bärbart och fristående för att passa in i min livsstil. Valet i detta skede var att antingen följa den fantastiska Ben Hecks väg och krympa original ZX-hårdvara till något bärbart eller att fuska och använda emulering på en liten enbräda dator. Jag ska lura:)

Så vad vill jag ha från mitt bärbara ZX -spektrum?

  • Billigt: Jag har alldeles för många projekt för att lägga stora summor pengar på lite kul nostalgi.
  • Bärbar: Det måste vara något jag kan leka med i soffan eller på en lat eftermiddag i trädgården.
  • Tangentbord: Jag vill inte bara spela spel, jag vill också programmera det. För att få full upplevelse måste den ha de underbara nyckelordsnycklarna.
  • Joystick: Jag hade aldrig lust att spela plattformsspel med ett tangentbord. Äventyrsspel, visst, men jag vill inte bara spela äventyrsspel så det kommer att behövas en joystick.
  • Direkt: Jag hatade att ladda tejp på 80 -talet och jag kan inte föreställa mig att jag har tänkt på det under de mellanliggande åren.

Med allt detta i åtanke utarbetade jag ett blockschema för att hjälpa mig förstå de olika komponenterna. Så låt oss bygga.

Steg 1: USB -tangentbord och joystick

USB -tangentbord och joystick
USB -tangentbord och joystick
USB -tangentbord och joystick
USB -tangentbord och joystick
USB -tangentbord och joystick
USB -tangentbord och joystick

Att få tangentbordet rätt är nyckeln till att fånga utseendet på det ursprungliga ZX Spectrum. Vi bygger kanske en handhållen emulerad enhet som inte har något gemensamt med de ursprungliga Spectrum -invändigheterna, men med noggrann design borde det vara möjligt att skapa något som känns påminner om 80 -talets datorupplevelse.

Började med några protoboards och en stor hög med taktila switchar, experimenterade jag med några idéer och bestämde mig för den förskjutna layouten som visas på bilderna. Protoboardsna vi använder är en standard 7x9cm (26x31 hål) tillgängliga online från många återförsäljare. Omkopplarna är ytmonterade versioner som har en mjukare känsla och är mindre bullriga än sina vanligare genomgående hål, men borde antingen fungera eftersom deras kroppsstorlekar är nästan identiska.

Styrspakskontrollerna gick sedan in i det återstående utrymmet omedelbart ovanför tangentbordet. Jag bestämde mig för att använda en 5-vägs taktil navigationsomkopplare till vänster och en stor eldknapp till höger. Joysticken kommer att dubbla upp som en kontroller för emulatorns menysystem och en mus för att interagera med det underliggande Linux-systemet, så jag har också lagt till en liten sekundär knapp.

Mikrokontrollen för tangentbordet är en Arduino Pro Micro. Detta är ett litet kort som kan programmeras som en USB -gränssnittsenhet (HID) som ett tangentbord, mus eller joystick.

När väljarna har lödts på plats måste matrisen som ansluter raderna och kolumnerna till switcharna byggas. Med denna matris kan vi ansluta alla 40 tangenter plus de 7 joystick -knapparna till Pro Micros 18 I/O -stift. Spektrumtangentbordet behöver inte hantera flera tangenttryckningar förutom Caps Shift- och Symbol Shift-tangenterna så vi ska sätta dem på dedikerade pins, då behöver vi inte oroa oss för att använda dioder för att förhindra fantomnycklar- trycker på. Jag har inkluderat en schema för att visa hur tangentbordet, inklusive matrisen, är anslutet. Först kopplas varje kolumn med en längd av enkärnig tråd och sedan ansluts raderna med en enda kärna som är noggrant formad för att korsa över kolumnerna utan kortslutning. Detta kan vara lite knepigt eftersom du måste få radtrådarna tillräckligt höga för att undvika att komma i kontakt med kolumnerna men tillräckligt låga för att lämna plats för alla kablar vi behöver stoppa i under den slutliga monteringen. Slutligen är raderna och kolumnerna anslutna till Arduino -stiften med ledningar från gamla IDE -kablar.

Som nämnts ovan kommer joystickstyrenheten också att fungera som markörkontroll och mus, så vi måste kunna växla mellan lägen. Standardläget är markörläge, en kombination av Caps Shift + Fire -knappen växlar till joystickläge och Symbol Shift + Fire -knappkombinationen växlar till musläge. För att visa vilket läge det är i, finns det ett par 3 mm lysdioder i mitten av joystickpanelen. En ström -LED kommer också att vara användbar och ett bra sätt att förse detta med Pi är att ansluta en lysdiod till Pi: s UART TX -pin eftersom det ständigt kommer att skicka data medan enheten är på.

För att förhindra att de lösa trådarna sliter i bruk, eller att matrisledningarna inte blir kortslutna, är allt täckt av varmt lim - fult men effektivt!

Det sista steget för att få tangentbordet att fungera är att programmera Arduino med ZX_Spectrum_Keyboard -koden från mitt förråd. Med det gjort kan du faktiskt lägga ner lödkolven, ansluta tangentbordet till en vanlig dator och använda den med en spektrumemulator som Fuse eller Spectaculator. Men vi stannar inte här, så låt oss gå vidare …

Steg 2: LCD -skärm

LCD skärm
LCD skärm

Det ursprungliga Spectrum har en skärmupplösning på 256x192 pixlar. För att behålla (ungefär) detta förhållande och undvika att ha svarta staplar på båda sidor valde jag en Waveshare 3,2 320x240 TFT LCD -pekskärm designad för Raspberry Pi. Den kommer inte att anslutas direkt till Pi: s GPIO -rubrik så att vi kan ta bort kontaktens plastram och trimma stiften. Jag trimmade ett 7x9cm protoboard ner till 2,1x9cm (den exakta storleken spelar ingen roll så länge de två återstående hörnhålen ligger i linje med de övre tangentbordshålen och det finns tillräckligt med utrymme för att löda GPIO -huvudstiften) och lödde stiften på plats, vilket ger oss ett enkelt sätt att montera skärmen ovanför tangentbordet.

Vi behöver bara ansluta SPI-, ström- och pekskärms -I/O -stiften till Pi - det kan vara ganska svårt att spåra vilka stift som faktiskt behövs men informationen finns där ute om du tittar tillräckligt hårt. Waveshare -skärmen använder 10 stift: 4, 6, 9, 13, 15, 19, 21, 23, 24 och 26. Det är klart att om du gör detta med en annan skärm måste du verifiera de korrekta stiften innan ta tag i ditt lödkolv.

Det behövs ingen speciell mjukvarukonfiguration - installera bara tillverkarens drivrutinsprogramvara och den är klar att använda.

Steg 3: Trådlös (Bluetooth)

Raspberry Pi Zero -kortet har ingen trådlös kapacitet, bara en användbar USB -port och det kommer inte att vara tillräckligt med utrymme i fodralet för en USB -hubb så jag var tvungen att bli lite uppfinningsrik för att lägga till någon form av trådlös kapacitet för min byggnad. Om du bygger detta med Zero W kan du hoppa över det här steget.

Det finns en snygg funktion hos Raspberry Pi som gör att vi kan lägga till en användbar trådlös funktion. Genom att ansluta en billig HC-05 Bluetooth-seriemodul till Pi: s UART-stift och anpassa systemkonfigurationen är det möjligt att få trådlös åtkomst till kommandoradsterminalen med hjälp av serie-över-Bluetooth. Vi kan sedan använda vanliga verktyg för att skicka filer till enheten och hantera filsystemet.

Steg 4: Ström

Kraft
Kraft
Kraft
Kraft

Jag valde mitt batteri i slutet av utvecklingen så behövde välja en cell som skulle passa in i det tillgängliga utrymmet. Den jag valde var en 2000mAH 25C 1S Lipo (mått: 81x34x9mm) såld som ersättning för Walkera Syma X5 -drönaren. Det skulle vara bra att kunna ladda batteriet på plats med en vanlig USB-anslutning och att kunna använda enheten medan den laddas. Vi vill egentligen inte krångla till komplexa strömkontrollkretsar så vi kommer att använda en färdig modul som ger USB-laddning och även en förstärkt 5V-utgång för att driva Pi direkt. För att säkerställa att enheten kan stängas av helt, finns det en skjutbrytare mellan utgången från denna modul och Pi som säkerställer att batteriet fortfarande kan laddas även när enheten är avstängd. Pi måste stängas av ordentligt för att undvika datakorruptionsproblem. I stället för att behöva logga in via Bluetooth -seriell kan vi ansluta en taktil omkopplare till Pi: s pin 5 (GPIO3) och skriva ett litet manus som tittar på detta och initierar en avstängning när den trycks ned. Ström- och trådlösa komponenter löddes till ytterligare ett 7x9cm protoboard som sitter direkt under tangentbordet.

Steg 5: Anslut allt tillsammans

Ansluter allt tillsammans
Ansluter allt tillsammans
Ansluter allt tillsammans
Ansluter allt tillsammans
Ansluter allt tillsammans
Ansluter allt tillsammans

Med alla de olika delarna inbyggda kan vi montera invändigt. Det största problemet jag stötte på under monteringen var att USB -porten bröt av min Arduino Pro Micro, vilket krävde att jag lodde ledningar direkt till lödkuddarna istället för att använda en USB -kabel. Detta är en ökänd svag punkt på Pro Micro -brädorna, så det är förmodligen värt att applicera ett gott klot varmt lim på det före montering för att undvika detta. Om du antar att denna olycka inte drabbar dig, har du ett val: du kan antingen göra en superslank mikro-USB till mikro-USB-kabel för att ansluta tangentbordet till Pi eller så kan du löda en eller båda ändarna direkt på brädorna. När jag behövde lödda Arduino -sidan löd jag också Pi -sidan direkt till testpunkterna på baksidan av brädet. Det finns fördelar och nackdelar med varje alternativ så det är upp till dig vilken du föredrar.

Vi kommer att hålla brädorna tillsammans med M3 -nylonstopp. Vi behöver 2x 9 mm distanser för att ansluta de nedre hålen mellan tangentbordet och strömkortet. De övre hålen behåller också skärmen så vi vill ha 2,5 mm avstånd mellan tangentbordet och skärmen och 4,5 mm avstånd mellan skärmen och strömkortet. Sidofotot visar hur detta ser ut. Standoffs kommer att behöva lite noggrann trimning för att få allt parallellt - det kan vara lite tätt passande med alla tangentbordsledningar men det borde gå ihop. Som framgår av bilderna kan enheten startas och användas efter montering, utan att behöva ett verkligt hölje. Vi skriver snart ut ett hölje, men innan vi når det måste vi installera operativsystemet och konfigurera det.

Steg 6: Programvara

Med internen monterad kan vi fortsätta med programvaruinstallationen och konfigurationen. Raspberry Pi körs på en vanlig Raspbian -installation. Den enda extra programvara som behöver installeras, förutom TFT -skärmdrivrutinerna, är Fuse -applikationen. Vi använder SDL-versionen för att få ordentlig helskärmsfunktion, som kan installeras med:

sudo apt-get install fuse-emulator-sdl

För att hantera våra avstängningsknapptryckningar, kopiera avstängningsskriptet från mitt kodlager till/home/pi/

För att få en seriekonsol via Bluetooth, lägg till följande rad till /boot /config:

enable_uart = 1

Vi vill att vårt avstängningsskript och säkringsemulatorn ska köras vid lanseringen, så lägg till dessa rader till/etc/xdg/lxsession/LXDE-pi/autostart:

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

Starta om Pi efter att du gjort dessa ändringar och du borde vara klar.

Steg 7: Kapsling och slutmontering

Kapsling och slutmontering
Kapsling och slutmontering
Kapsling och slutmontering
Kapsling och slutmontering
Kapsling och slutmontering
Kapsling och slutmontering

Höljet modellerades i Fusion 360 (hur man gör det ligger utanför ramen för denna instruerbara). Det finns 5 delar: fodralet bak, skärmens framsida, tangentbordets framsida, strömbrytaren och kontrollpanelens lock. Kontrollpanelens lock ska vara tryckt i en flexibel filament (jag använde flexibel PLA men ett mjukare material som NinjaFlex kan vara bättre); allt annat ska tryckas i en hård plast (jag använde Filamentum black PLA).

För att ge strömknappen lite motstånd och för att förhindra att det skramlar, fäst lite 3 mm självhäftande skum på baksidan och stansa sedan ut ett 4 mm hål så att det sitter tätt över den vertikala tac-omkopplaren på strömkortet. Du kan behöva trimma ena kanten något, som man kan se på bilderna, för att undvika att klämma fast strömkortet. Jag tyckte också att det var bra att använda en liten klick lim för att hålla knappen vid strömbrytaren.

Vi måste limma ett par nylonavstängningar i de övre fästena på skärmens frontpanel så att de övre delarna av höljet kan fästas ordentligt. Efter torkning, trimma avstånden spola.

För att passa brädorna måste vi först skapa monteringsstolparna. Ta bort huvuden från några M3 -nylonskruvar och lim in de gängade delarna i de nedre hålen på var och en av frontpanelerna. När dessa har torkat kan de två frontpanelerna limmas ihop och tangentbordet kan fästas med hjälp av 9 mm och 2,5 mm distanser. Med det här på plats kan skärmen placeras på de övre stolparna och 4,5 mm avstånd kan läggas till. Slutligen kan kretskortet placeras på plats och ledningarna anordnas så att baksidan kan monteras.

Batteriet ska sitta fast med en dubbelsidig tejp eller skumplåt och anslutas till strömkontakten. Nu kan de två halvorna sammanföras och några kort försänkta M3 -maskinskruvar används för att säkra allt på plats.

Slutligen vänder du på den och klistrar kontrollpanelkåpan på tangentbordspanelen. Jag gjorde detta med ett tvådelat epoxilim för en stark bindning.

Steg 8: Tangentbordsöverlägg

Tangentbord Överlagring
Tangentbord Överlagring
Tangentbord Överlagring
Tangentbord Överlagring
Tangentbord Överlagring
Tangentbord Överlagring

Vi är nästan klara. Allt som saknas är några viktiga markeringar och ett överlägg så att vi vet hur vi kommer till alla de underbara sökorden.

De huvudsakliga bokstäverna och siffrorna finns på själva växlarna. Jag hittade några riktigt små 2,5 mm brevöverföringar som passar perfekt på topparna med 4 mm diameter. De är lite knepiga att applicera eftersom topparna rör sig när du gnuggar dem men du får ganska många bokstäver i ett paket så det är bra att göra några misstag. Jag slutade röra några med en fin permanent markör, även om jag i efterhand borde ha försökt att blötlägga dem i varmt vatten och skjuta dem på plats (om du någonsin har byggt ett modellsats, kommer du att vara bekant med den här processen). För att skydda bokstäverna under användning, duttade jag lite tydligt nagellack på varje nyckeltopp.

För att förhindra att switcharnas silverkroppar visar sig genom luckorna i överlägget använde jag en permanent markör för att färglägga dem - detta syns på den nedre raden på en av fotona.

Jag utformade de utskrivna överläggen i GIMP -grafikprogrammet med öppen källkod och skrev sedan ut dem på matt papper i fotokvalitet. Helst kommer överläggen att vara så tunna som möjligt - jag kunde ta bort stödet från Epson -märkt papper som jag använde mycket enkelt, även om detta inte kommer att vara fallet med alla märken. För att skydda utskriften täckte jag papperet i ett klart självhäftande vinylark och applicerade dubbelsidig tejp på baksidan för att fästa det på fodralet. Innan vi lägger ner överläggen måste vi dock slå ut hålen. Jag använde en billig 4 mm hålstans i läder och fick de bästa resultaten genom att slipa stansarna och skära direkt mot någon skrot 3 mm aluminiumplåt. Sedan behöver överläggen bara ställas upp och fastna.

Steg 9: Slutsats

Och vi är klara! Detta har varit ett ganska stort projekt som kräver en rad olika färdigheter, inklusive grundläggande elektronik, lödning, 3D -modellering, programmering och till och med lite grafisk layout. Det har i slutändan varit mycket givande och den färdiga enheten är väldigt rolig att spela med, men hur går det mot mina ursprungliga kriterier?

Billigt: Den totala kostnaden för allt, inklusive nuvarande detaljhandelspriser på föremål som jag redan ägt och brevpapper som dubbelsidig tejp som kommer att hålla långt bortom detta projekt, är cirka £ 80 vilket gör det till ett överkomligt projekt.

Bärbar: Det är definitivt bärbart. Denna enhet passar bekvämt i en ficka och är helt fristående så att den kan användas var som helst. Om jag skulle bygga den igen skulle jag göra en platt 4-vägs joypad-stilkontroll snarare än att använda navigationspinnen när den sticker ut över enhetens linje och gör den sårbar för skador. Jag skulle också vilja se om en icke-pekskärm med liknande storlek och förhållande finns med ett mer reptåligt lock eftersom jag inte behöver pekskärmsgränssnittet och den resistiva ytan är särskilt benägen att skadas.

Tangentbord och joystick: Jag är verkligen nöjd med hur dessa fungerade. Även om det inte har originalets känsla, känns det överraskande att använda tangentbordet påminner om det gamla ZX Spectrum - layouten, överlägget och implementering av nyckelord fungerar bra tillsammans för att uppnå detta. USB -tangentbordet kan också användas på egen hand med en dator som kör säkringsemulatorn för att ge samma upplevelse.

Omedelbar: Med hjälp av Bluetooth-seriemodulen är det relativt enkelt att överföra bandarkiv till enheten från en annan dator utan att behöva lämna säkringsgränssnittet, och det borde vara möjligt att effektivisera processen ytterligare genom att skriva ett skript på klientsidan för att skicka en fil till enheten. Jag skulle föredra att kunna använda standard Bluetooth "skicka till enhet" filöverföringsfunktion inbyggd i de flesta operativsystem, eller ett riktigt fildelningssystem som Samba. Men de kommer bara att vara tillgängliga med Pi Zero W -kortet och jag använde det inte för den här byggnaden.

Förutom de ovan angivna artiklarna, om jag startade det här projektet igen från grunden, skulle jag välja ett tunnare batteri med större kapacitet tidigt i projektet och utforma runt det snarare än att behöva välja ett batteri av lämplig storlek i slutet av projektet. Jag skulle också använda en Pi Zero W snarare än en seriell Bluetooth -modul för att utöka alternativen för att skicka filer till enheten. En annan uppenbar förbättring skulle vara någon slags hårdvarubatteriindikering eftersom det för närvarande inte finns något sätt att se hur mycket laddning som finns kvar. Jag skulle också överväga att använda ett Ramdisk -baserat operativsystem som Alpine Linux som skulle vara mer tolerant mot hårda avstängningar och borde möjliggöra en enda på/av -omkopplare utan att behöva en separat avstängningsknapp - mycket mer som den ursprungliga ZX Spectrum, bara koppla ur den när du är klar.

Det kan vara intressant att designa ett anpassat kretskort för den här enheten som potentiellt skulle tillåta oss att sätta strömkomponenterna på baksidan av tangentbordet istället för att ha ett separat kort. Detta kan avsevärt minska djupet på den färdiga enheten. Det skulle också göra det lättare att montera enheten och erbjuda möjligheten för någon form av självmonteringssats. Om det finns tillräckligt med intresse för det här projektet kan jag göra en version 2 som tar upp dessa problem.

Steg 10: Resurser

Följande resurser behövs för att bygga detta projekt:

3D -utskrivbara ärendefiler (Thingiverse):

Kod (Github):

Rekommenderad: