Tartalomjegyzék:

Zseb ZX (kézi ZX spektrum): 10 lépés
Zseb ZX (kézi ZX spektrum): 10 lépés

Videó: Zseb ZX (kézi ZX spektrum): 10 lépés

Videó: Zseb ZX (kézi ZX spektrum): 10 lépés
Videó: TV Basic Napközi #02 - Fejgyakorlatok 2024, December
Anonim
Zseb ZX (kézi ZX spektrum)
Zseb ZX (kézi ZX spektrum)
Zseb ZX (kézi ZX spektrum)
Zseb ZX (kézi ZX spektrum)
Zseb ZX (kézi ZX spektrum)
Zseb ZX (kézi ZX spektrum)

A 80-as évek gyermeke vagyok, és szép emlékeim vannak a korszak 8 bites számítógépeiről. Az első számítógépem - amely különleges helyet foglal el a szívemben - egy Sinclair ZX Spectrum 48K volt. Miután nemrég felfedeztem néhány internetet a régebbi számítógépekre összpontosító közösségekben, úgy döntöttem, hogy újra akarom eleveníteni magamban ezt a nosztalgiát, és telepítettem a Fuse emulátort a MacBook -ra. Ez egy ideig szórakoztató volt, de nagyon szerettem volna egy dedikált eszközt - lehetőleg valami kicsi, hordozható és önálló eszközt, amely illeszkedik az életmódomhoz. A választás ebben a szakaszban az volt, hogy vagy a félelmetes Ben Heck útját követi, és az eredeti ZX hardvert hordozhatóvá zsugorítja, vagy megcsal, és emulációt használ egy kis egytábla számítógépen. Csalni fogok:)

Szóval mit akarok a hordozható ZX Spectrumtól?

  • Olcsó: Túl sok projektem van ahhoz, hogy nagy összegeket költjek egy kis vidám nosztalgiára.
  • Hordozható: Valami olyasmi, amivel játszhatok a kanapén vagy egy lusta délutánon a kertben.
  • Billentyűzet: Nem csak játszani akarok, hanem programozni is. A teljes élmény eléréséhez rendelkeznie kell e csodálatos kulcsszókulcsokkal.
  • Joystick: Soha nem szerettem platformjátékokat játszani billentyűzettel. Persze kalandjátékok, de nem csak kalandjátékokkal akarok játszani, ezért ehhez joystickra lesz szükség.
  • Azonnali: a 80 -as években utáltam a szalagos betöltést, és nem tudom elképzelni, hogy az elmúlt években egyre jobban megszerettem volna.

Mindezt szem előtt tartva tömbvázlatot készítettem, hogy segítsen megérteni a különböző összetevőket. Tehát kezdjünk építeni.

1. lépés: USB billentyűzet és joystick

USB billentyűzet és joystick
USB billentyűzet és joystick
USB billentyűzet és joystick
USB billentyűzet és joystick
USB billentyűzet és joystick
USB billentyűzet és joystick

A billentyűzet megfelelő beállítása a kulcs az eredeti ZX Spectrum megjelenésének és hangulatának megörökítéséhez. Lehet, hogy olyan kézi emulált eszközt építünk, amelynek nincs közös vonása az eredeti Spectrum belső elemekkel, de gondos tervezéssel lehetővé kell tenni, hogy olyan dolgokat hozzunk létre, amelyek a 80 -as évek számítástechnikai élményére emlékeztetnek.

Kezdve néhány protoboarddal és egy nagy halom tapintható kapcsolóval, néhány ötlettel kísérleteztem, és a fotókon látható lépcsőzetes elrendezésre helyeztem a hangsúlyt. Az általunk használt protoboards szabványos 7x9 cm -es (26x31 lyukú), online elérhető sok kiskereskedőtől. A kapcsolók felületszerelési változatok, amelyek lágyabb tapintásúak és kevésbé zajosak, mint a gyakoribb átmenő lyukak, de mindegyiknek működnie kell, mivel testméreteik majdnem azonosak.

A joystick vezérlői ezután a billentyűzet fölött lévő fennmaradó helyre mentek. Úgy döntöttem, hogy a bal oldalon egy 5-ös, tapintható navigációs kapcsolót, a jobb oldalon pedig egy nagy tűzgombot használok. A joystick kettős funkcióval szolgál az emulátor menürendszerének vezérlőjeként és egérként az alatta lévő Linux rendszerrel való interakcióhoz, ezért hozzáadtam egy kis másodlagos gombot is.

A billentyűzet mikrovezérlője egy Arduino Pro Micro. Ez egy kicsi tábla, amely USB emberi interfész eszközként (HID), például billentyűzetként, egérként vagy joystickként programozható.

Miután a kapcsolókat a helyükre forrasztották, fel kell építeni azt a mátrixot, amely a kapcsolók sorát és oszlopát a mikrokontrollerhez köti. Ez a mátrix lehetővé teszi, hogy mind a 40 gombot és a 7 joystick gombot összekapcsoljuk a Pro Micro 18 I/O érintkezőjével. A Spectrum billentyűzetnek nem kell több billentyűt lenyomnia, kivéve a Caps Shift és a Symbol Shift billentyűket, így ezeket a dedikált csapokra helyezzük, akkor nem kell aggódnunk a diódák használatáért a fantomgombok megelőzése érdekében. prések. Mellékeltem egy vázlatot, amely bemutatja, hogyan van bekötve a billentyűzet, beleértve a mátrixot is. Először minden oszlopot egymagos huzalhoz kötnek össze, majd a sorokat egymagos huzal segítségével kötik össze, amelyet gondosan úgy alakítottak ki, hogy rövidzárlat nélkül keresztezze az oszlopokat. Ez kissé bonyolult lehet, mert elég magasra kell emelni a sorvezetékeket, hogy ne érintse meg az oszlopokat, de elég alacsonyan ahhoz, hogy helyet hagyjon minden vezetéknek, amelyet be kell töltenünk a végső összeszerelés során. Végül a sorok és oszlopok a régi IDE kábelek vezetékeivel vannak csatlakoztatva az Arduino csapokhoz.

Amint fentebb említettük, a joystick vezérlő egyben kurzorvezérlőként és egérként is működik, így képesnek kell lennünk a módok közötti váltásra. Az alapértelmezett mód a kurzor mód lesz, a Caps Shift + a Tűz gomb kombinációja joystick módba, a Symbol Shift + Fire gomb kombináció pedig egér módba kapcsol. Annak bemutatásához, hogy melyik üzemmódban van, van néhány 3 mm -es LED a joystick panel közepén. A Power LED szintén hasznos lesz, és jó módja annak, hogy ezt a Pi -vel biztosítsa, ha egy LED -et csatlakoztat a Pi UART TX tűjéhez, mivel az folyamatosan küld adatokat az eszköz bekapcsolt állapotában.

Annak érdekében, hogy a laza vezetékek ne kopjanak el használat közben, vagy hogy a mátrixhuzalok rövidre záródjanak, mindent bőségesen forró ragasztóval borítanak - csúnya, de hatékony!

A billentyűzet működésének utolsó lépése az Arduino programozása a tárhelyem ZX_Spectrum_Keyboard kódjával. Ezzel megteheti a forrasztópáka lehelyezését, csatlakoztathatja a billentyűzetet egy normál számítógéphez, és használhatja azt egy olyan Spectrum -emulátorral, mint a Fuse vagy a Spectaculator. De itt nem állunk meg, úgyhogy lépjünk tovább…

2. lépés: LCD képernyő

LCD képernyő
LCD képernyő

Az eredeti Spectrum képernyőfelbontása 256x192 pixel. Annak érdekében, hogy (megközelítőleg) ezt az arányt megtartsam, és elkerüljem, hogy mindkét oldalon fekete sávok legyenek, a Raspberry Pi -hez tervezett Waveshare 3.2 320x240 TFT LCD érintőképernyőt választottam. Nem közvetlenül a Pi GPIO fejlécéhez lesz csatlakoztatva, így eltávolíthatjuk a csatlakozó műanyag burkolatát és vágja le a csapokat. Egy 7x9 cm -es protoboort 2,1x9 cm -re vágtam le (a pontos méret nem számít, amíg a fennmaradó két saroklyuk a felső billentyűzet -nyílásokhoz igazodik, és elegendő hely van a GPIO -fejlécek forrasztásához.), és a csapokat a helyükre forrasztották, így könnyen felszerelhetjük a képernyőt a billentyűzet fölé.

Csak az SPI -t, a tápellátást és az érintőképernyős I/O érintkezőket kell csatlakoztatnunk a Pi -hez - meglehetősen bonyolult lehet nyomon követni, hogy valójában milyen tűkre van szükség, de az információ rendelkezésre áll, ha elég alaposan megnézzük. A Waveshare képernyő 10 tűt használ: 4, 6, 9, 13, 15, 19, 21, 23, 24 és 26. Nyilvánvaló, hogy ha ezt egy másik képernyővel készíti, akkor ellenőriznie kell a megfelelő csapokat megragadva a forrasztópáka.

Nincs szükség speciális szoftverkonfigurációra - csak telepítse a gyártó illesztőprogramját, és készen áll a használatra.

3. lépés: Vezeték nélküli (Bluetooth)

A Raspberry Pi Zero tábla nem rendelkezik vezeték nélküli képességgel, csak egy hasznos USB -port van, és nem lesz elegendő hely a tokban egy USB -elosztó számára, így egy kicsit találékonynak kellett lennem ahhoz, hogy hozzáadhassak valamilyen vezeték nélküli lehetőséget az építéshez. Ha ezt a Zero W -vel építi, akkor kihagyhatja ezt a lépést.

A Raspberry Pi rendelkezik egy ügyes funkcióval, amely lehetővé teszi számunkra, hogy hasznos vezeték nélküli képességeket adjunk hozzá. Ha egy olcsó HC-05 Bluetooth soros modult csatlakoztat a Pi UART csapjaihoz, és módosítja a rendszer konfigurációját, vezeték nélküli hozzáférést kaphat a parancssori terminálhoz a soros-Bluetooth-on keresztül. Ezután közös eszközökkel küldhetünk fájlokat az eszközre és kezelhetjük a fájlrendszert.

4. lépés: Tápellátás

Erő
Erő
Erő
Erő

A fejlesztés végén az akkumulátort választottam, ezért ki kellett választani egy cellát, amely elfér a rendelkezésre álló térben. Az egyik, amit választottam, egy 2000mAH 25C 1S Lipo (mérete: 81x34x9mm), amelyet a Walkera Syma X5 drón helyettesítésére adtak el. Jó lenne, ha helyben tudná tölteni az akkumulátort rendszeres USB-kapcsolaton keresztül, és használhatná az eszközt töltés közben. Nem igazán akarunk összetett teljesítményszabályozó áramkörökkel babrálni, ezért kész modult fogunk használni, amely USB töltést és fokozott 5 V-os kimenetet biztosít a Pi közvetlen táplálásához. Annak érdekében, hogy az eszköz teljesen kikapcsolható legyen, a modul kimenete és a Pi között csúszókapcsoló található, amely biztosítja, hogy az akkumulátor még akkor is tölthető legyen, ha a készülék ki van kapcsolva. A Pi -t megfelelően le kell állítani az adatkorrupciós problémák elkerülése érdekében. Ahelyett, hogy Bluetooth soros kapcsolaton keresztül kellene bejelentkeznünk, csatlakoztathatunk egy tapintható kapcsolót a Pi 5 -ös érintkezőjéhez (GPIO3), és írhatunk egy kis szkriptet, amely ezt figyeli, és lekapcsolást kezdeményez, amikor megnyomja. A tápellátás és a vezeték nélküli alkatrészek egy másik 7x9 cm -es protoboardra vannak forrasztva, amely közvetlenül a billentyűzet alatt helyezkedik el.

5. lépés: Az összes összekapcsolása

Összekapcsolása
Összekapcsolása
Összekapcsolása
Összekapcsolása
Összekapcsolása
Összekapcsolása

A különböző alkatrészek összeépítésével össze tudjuk szerelni a belső elemeket. A legnagyobb probléma, amellyel az összeszerelés során találkoztam, az volt, hogy az USB -port letört az Arduino Pro Micro -ról, és ezért az USB -kábel használata helyett közvetlenül a forrasztópadokhoz kellett forrasztani a vezetékeket. Ez egy hírhedt gyenge pont a Pro Micro táblákon, ezért valószínűleg érdemes egy jó gömb forró ragasztót felvinni rá az összeszerelés előtt, hogy ezt elkerüljük. Feltételezve, hogy ez a szerencsétlenség nem ér téged, választhat: vagy készíthet egy szuper vékony mikro-USB-mikro-USB-kábelt, amellyel csatlakoztathatja a billentyűzetet a Pi-hez, vagy forraszthatja az egyik vagy mindkét végét közvetlenül a táblákhoz. Mivel szükségem volt az Arduino oldal forrasztására, a Pi oldalt is közvetlenül a tábla hátoldalán lévő tesztpontokhoz forrasztottam. Mindegyik lehetőségnek vannak előnyei és hátrányai, így csak rajtad múlik, hogy mit preferálsz.

A táblákat együtt tartjuk M3 nejlon állványokkal. Szükségünk van 2x 9 mm -es lekapcsolásra, hogy összekapcsoljuk az alsó lyukakat a billentyűzet és az alaplap között. A felső lyukak is megtartják a képernyőt, így 2,5 mm -es leválasztást szeretnénk a billentyűzet és a képernyő között, és 4,5 mm -es leválasztást a képernyő és az alaplap között. Az oldalfotón látható, hogy ez hogyan néz ki. A leállásokhoz egy kis óvatos vágásra lesz szükség, hogy minden párhuzamos legyen - kissé szorosan illeszkedhet az összes billentyűzet vezetékéhez, de együtt kell mennie. Amint a fényképekből is látszik, a készüléket be lehet kapcsolni és összeszerelés után használni lehet, tényleges burkolat nélkül. Hamarosan nyomtatunk egy burkolatot, de mielőtt hozzáérnénk, telepítenünk kell az operációs rendszert és konfigurálnunk kell.

6. lépés: Szoftver

Összeszerelt belső elemekkel folytathatjuk a szoftver telepítését és konfigurálását. A Raspberry Pi szabványos Raspbian telepítéssel fog futni. Az egyetlen extra szoftver, amelyet telepíteni kell, a TFT képernyő illesztőprogramjain kívül a Fuse alkalmazás. Az SDL verziót használjuk a megfelelő teljes képernyős funkcionalitás eléréséhez, amely a következőkkel telepíthető:

sudo apt-get install fuse-emulator-sdl

A leállítási gombnyomások kezeléséhez másolja a „leállítás” parancsfájlt a kódtárból a/home/pi/

Ha soros konzolt szeretne kapni Bluetooth -on keresztül, adja hozzá a következő sort a /boot /config mappához:

enable_uart = 1

Azt akarjuk, hogy a leállítási szkriptünk és a Fuse emulátor induláskor fusson, ezért adja hozzá ezeket a sorokat az/etc/xdg/lxsession/LXDE-pi/autostart fájlhoz:

@fuse-sdl-nincs hang-kempston-nincs automatikus betöltés

A módosítások elvégzése után indítsa újra a Pi -t, és kész.

7. lépés: Szekrény és végső összeszerelés

Szekrény és végső összeszerelés
Szekrény és végső összeszerelés
Szekrény és végső összeszerelés
Szekrény és végső összeszerelés
Szekrény és végső összeszerelés
Szekrény és végső összeszerelés

A burkolatot a Fusion 360 -ban modellezték (ennek módja nem tartozik ezen utasítás hatálya alá). 5 részből áll: a tok hátulja, a képernyő elülső része, a billentyűzet elülső része, a bekapcsológomb és a kezelőpanel fedele. A kezelőpanel borítóját rugalmas szálba kell nyomtatni (rugalmas PLA -t használtam, de egy lágyabb anyag, mint a NinjaFlex jobb lehet); minden mást merev műanyagba kell nyomtatni (én Filamentum fekete PLA -t használtam).

Annak érdekében, hogy a bekapcsológomb némi ellenállást biztosítson, és megakadályozza a zörgést, ragasszon 3 mm-es ragasztóhabot a hátára, majd lyukasszon ki egy 4 mm-es lyukat, hogy szorosan illeszkedjen a tápellátás NYÁK függőleges tac kapcsolója fölé. Előfordulhat, hogy az egyik szélét kissé meg kell vágnia, amint az a fényképeken is látható, hogy elkerülje a tápegység beszorulását. Azt is hasznosnak találtam, ha egy kis ragasztót használva tartom a gombot a főkapcsolóhoz.

Ragasztanunk kell néhány nejlon ütközőt a képernyő előlapjának felső tartóihoz, hogy a ház felső részei biztonságosan rögzíthetők legyenek. Miután megszáradt, vágja le az elzáródásokat.

A táblák illesztéséhez először létre kell hoznunk a rögzítőoszlopokat. Távolítsa el a fejeket néhány M3 nejlon csavarról, és ragassza be a menetes részeket az előlapok alsó lyukaiba. Ha ezek megszáradtak, a 2 előlap összeragasztható, és a billentyűzet a 9 mm -es és 2,5 mm -es rögzítőelemekkel rögzíthető. Ezután, ha ez a helyén van, a képernyőt a felső oszlopokra lehet helyezni, és hozzá lehet adni a 4,5 mm -es leválasztásokat. Végül a tápegységet a helyére lehet helyezni, és a vezetékeket úgy lehet elhelyezni, hogy a hátlap fel legyen szerelve.

Az akkumulátort kétoldalas ragasztószalaggal vagy hablappal kell a helyére ragasztani, és a tápcsatlakozóba kell dugni. Most a két fél összehozható, és néhány rövid, süllyesztett M3 -as gépcsavar segítségével mindent a helyére rögzíthet.

Végül fordítsa meg, és ragassza fel a kezelőpanel fedelét a billentyűzetpanelre. Ezt egy kétrészes epoxi ragasztóval tettem az erős kötés érdekében.

8. lépés: Billentyűzetfedés

Billentyűzetfedés
Billentyűzetfedés
Billentyűzetfedés
Billentyűzetfedés
Billentyűzetfedés
Billentyűzetfedés

Már majdnem kész. Már csak néhány kulcsjel és egy fedvény hiányzik, így tudjuk, hogyan juthatunk el ezekhez a csodálatos kulcsszavakhoz.

Az elsődleges betűk és számok a kapcsoló tetején találhatók. Találtam néhány igazán kicsi, 2,5 mm -es betűátvitelt, amelyek tökéletesen illeszkednek a 4 mm átmérőjű felsőkhöz. Kicsit bonyolult az alkalmazásuk, mert a felsők mozognak, miközben dörzsölöd őket, de jó néhány betűt kapsz egy csomagban, így nem árt hibázni. Végül néhányat megérintettem egy finom, állandó jelölővel, bár utólag belegondoltam volna, hogy meleg vízben áztatom őket, és a helyükre csúsztatom (ha valaha is épített egy modellkészletet, ismeri ezt a folyamatot)). A betűk védelme érdekében használat közben minden gombostűre átlátszó körömlakkot dörzsöltem.

Annak érdekében, hogy a kapcsolók ezüst teste ne látszódjon a fedvény résein, állandó jelölővel színeztem őket - ez látható az egyik fotó alsó sorában.

A nyomtatott fedvényeket a nyílt forráskódú GIMP grafikus programban terveztem, majd fotó minőségű matt papírra nyomtam. Ideális esetben az átfedések a lehető legvékonyabbak lesznek - nagyon könnyen le tudtam hámozni az általam használt Epson márkájú papír hátlapját, bár ez nem minden márka esetében lesz így. A nyomtatás védelme érdekében a papírt átlátszó ragasztós vinil lappal borítottam, és kétoldalas ragasztószalagot ragasztottam a hátoldalára, hogy a tokhoz tapadjon. Mielőtt azonban leragasztanánk az átfedéseket, ki kell lyukasztanunk a lyukakat. Olcsó 4 mm -es bőr lyukasztót használtam, és a legjobb eredményt úgy kaptam, hogy éleztem a lyukakat, és közvetlenül vágtam egy darab 3 mm -es alumíniumlemezre. Ezután a fedvényeket csak fel kell sorakoztatni és le kell ragasztani.

9. lépés: Következtetés

És kész! Ez egy elég nagy projekt volt, amely számos készséget igényelt, beleértve az alapvető elektronikát, forrasztást, 3D modellezést, programozást és még egy kis grafikai elrendezést is. Végül nagyon kifizetődő volt, és a kész eszközzel nagyon szórakoztató játszani, de hogyan működik az eredeti kritériumaimmal szemben?

Olcsó: Mindennek az összköltsége, beleértve a már birtokomban lévő termékek jelenlegi kiskereskedelmi árait és az írószer-cikkeket, például a kétoldalas szalagot, amelyek jóval túl fognak tartani ezen a projekten, körülbelül 80 font, ami megfizethető projektet jelent.

Hordozható: Határozottan hordozható. Ez az eszköz kényelmesen elfér a zsebben, és teljesen önálló, így bárhol használható. Ha újra megépíteném, akkor egy lapos, négyirányú joypad-stílusú vezérlőt készítenék ahelyett, hogy a navigációs botot használnám, mivel az az eszköz vonala fölé nyúlik, és sérülékeny. Azt is szeretném látni, hogy kapható-e hasonló méretű és arányú, nem érintőképernyő karcolásállóbb borítással, mivel nincs szükségem az érintőképernyős felületre, és az ellenálló felület különösen sérülékeny.

Billentyűzet és joystick: Nagyon elégedett vagyok ezek sikerével. Bár nem rendelkezik az eredeti holt érzésével, a billentyűzet használata meglepően emlékeztet a régi ZX Spectrumra - az elrendezés, az átfedés és a kulcsszavak megvalósítása jól együttműködnek ennek érdekében. Az USB billentyűzet önmagában is használható a Fuse emulátort futtató számítógéppel, hogy ugyanazt az élményt nyújtsa.

Azonnali: A Bluetooth soros modul használatával viszonylag egyszerűvé válik a szalagos archívumok átvitele az eszközre egy másik számítógépről anélkül, hogy ki kellene lépni a Fuse interfészből, és lehetővé kell tenni a folyamat további egyszerűsítését egy ügyféloldali szkript írásával a fájl küldéséhez. a készülékhez. Szeretném használni a szabványos Bluetooth "küldés eszközre" fájlátviteli funkciót, amely a legtöbb operációs rendszerbe van beépítve, vagy egy megfelelő fájlmegosztó rendszert, mint például a Samba. Ezek azonban csak a Pi Zero W táblával lesznek elérhetők, és ezt nem használtam ehhez az összeállításhoz.

A fent felsorolt elemeken kívül, ha újrakezdeném ezt a projektet a semmiből, akkor vékonyabb, nagyobb kapacitású akkumulátort választanék a projekt elején és köré terveznék, ahelyett, hogy megfelelő méretű akkumulátort kellene választanom a projekt végén. a projekt. Én is a Pi Zero W -t használnám a Bluetooth soros modul helyett a fájlok eszközre küldésének lehetőségeinek bővítésére. Egy másik nyilvánvaló javulás lenne valamilyen hardver akkumulátor állapotjelzés, mivel jelenleg nincs mód arra, hogy megnézzük, mennyi töltés van hátra. Azt is fontolóra venném, hogy olyan Ramdisk -alapú operációs rendszert használok, mint az Alpine Linux, amely toleránsabb lenne a leállásokkal szemben, és lehetővé tenné az egyetlen ki/be kapcsolást külön leállítási gomb nélkül - sokkal inkább, mint az eredeti ZX Spectrum, csak húzza ki a konnektorból, ha befejezte.

Érdekes lehet egy egyedi PCB -t tervezni ehhez az eszközhöz, amely potenciálisan lehetővé tenné számunkra, hogy a tápegységeket a billentyűzet hátoldalára helyezzük, nem pedig külön táblát. Ez jelentősen csökkentheti a kész eszköz mélységét. Ezenkívül megkönnyítené a készülék összeszerelését, és kínálna egyfajta önszerelő készlet lehetőségeit. Ha kellő érdeklődés mutatkozik a projekt iránt, lehet, hogy elkészítem a 2. verziót, amely ezeket a problémákat kezeli.

10. lépés: Erőforrások

A projekt megvalósításához a következő forrásokra van szükség:

3D nyomtatható tokfájlok (Thingiverse):

Kód (Github):

Ajánlott: