Spisu treści:

Pocket ZX (ręczny ZX Spectrum): 10 kroków
Pocket ZX (ręczny ZX Spectrum): 10 kroków

Wideo: Pocket ZX (ręczny ZX Spectrum): 10 kroków

Wideo: Pocket ZX (ręczny ZX Spectrum): 10 kroków
Wideo: Bawimy się ZX Spectrum Harlequin 2024, Grudzień
Anonim
Pocket ZX (ręczny ZX Spectrum)
Pocket ZX (ręczny ZX Spectrum)
Pocket ZX (ręczny ZX Spectrum)
Pocket ZX (ręczny ZX Spectrum)
Pocket ZX (ręczny ZX Spectrum)
Pocket ZX (ręczny ZX Spectrum)

Jestem dzieckiem lat 80. i mam miłe wspomnienia z 8-bitowych komputerów tamtych czasów. Moim pierwszym komputerem, który zajmuje szczególne miejsce w moim sercu, był Sinclair ZX Spectrum 48K. Niedawno odkryłem w sieci społeczności skupiające się na starszych komputerach, więc zdecydowałem, że chcę ponownie przeżyć tę nostalgię i zainstalować emulator Fuse na moim MacBooku. To było zabawne przez jakiś czas, ale naprawdę chciałem dedykowanego urządzenia - najlepiej czegoś małego, przenośnego i samodzielnego, aby pasowało do mojego stylu życia. Na tym etapie wybór polegał na albo podążaniu ścieżką niesamowitego Bena Hecka i zmniejszaniu oryginalnego sprzętu ZX w coś przenośnego, albo oszukiwaniu i używaniu emulacji na małym jednopłytkowym komputerze. Idę oszukiwać:)

Czego więc oczekuję od mojego przenośnego ZX Spectrum?

  • Tani: mam zbyt wiele projektów, aby wydawać duże sumy pieniędzy na odrobinę nostalgii.
  • Przenośny: to musi być coś, czym mogę się bawić na sofie lub w leniwe popołudnie w ogrodzie.
  • Klawiatura: Chcę nie tylko grać w gry, ale także ją zaprogramować. Aby w pełni wykorzystać możliwości, musi mieć te wspaniałe klucze słów kluczowych.
  • Joystick: Nigdy nie grałem w gry platformowe na klawiaturze. Jasne, gry przygodowe, ale nie chcę tylko grać w gry przygodowe, więc będzie to wymagało joysticka.
  • Natychmiast: nienawidziłem ładowania taśm w latach 80. i nie wyobrażam sobie, żebym polubił to w międzyczasie.

Mając to wszystko na uwadze, opracowałem schemat blokowy, który pomoże mi zrozumieć różne komponenty. Więc zacznijmy budować.

Krok 1: Klawiatura i joystick USB

Klawiatura USB i joystick
Klawiatura USB i joystick
Klawiatura USB i joystick
Klawiatura USB i joystick
Klawiatura USB i joystick
Klawiatura USB i joystick

Właściwa klawiatura jest kluczem do uchwycenia wyglądu i stylu oryginalnego ZX Spectrum. Być może budujemy emulowane urządzenie przenośne, które nie ma nic wspólnego z oryginalnymi elementami wewnętrznymi Spectrum, ale dzięki starannemu projektowi powinno być możliwe stworzenie czegoś, co przypomina doświadczenie komputerowe z lat 80-tych.

Zaczynając od kilku płyt prototypowych i dużego stosu przełączników dotykowych, poeksperymentowałem z kilkoma pomysłami i zdecydowałem się na rozłożony układ pokazany na zdjęciach. Protoboardy, których używamy, to standardowe 7x9cm (26x31 otworów) dostępne online w wielu sklepach. Przełączniki są wersjami do montażu powierzchniowego, które są bardziej miękkie w dotyku i są mniej hałaśliwe niż ich bardziej popularne odpowiedniki z otworami przelotowymi, ale obie powinny działać, ponieważ ich rozmiary są prawie identyczne.

Następnie elementy sterujące joystickiem znalazły się w pozostałej przestrzeni bezpośrednio nad klawiaturą. Postanowiłem użyć 5-kierunkowego dotykowego przełącznika nawigacyjnego po lewej stronie i dużego przycisku ognia po prawej stronie. Joystick podwoi się jako kontroler systemu menu emulatora i mysz do interakcji z podstawowym systemem Linux, więc dodałem również mały dodatkowy przycisk.

Mikrokontroler do klawiatury to Arduino Pro Micro. Jest to mała płytka, którą można zaprogramować jako urządzenie interfejsu ludzkiego USB (HID), takie jak klawiatura, mysz lub joystick.

Po przylutowaniu przełączników należy zbudować matrycę łączącą rzędy i kolumny przełączników z mikrokontrolerem. Ta matryca umożliwi nam podłączenie wszystkich 40 klawiszy plus 7 przycisków joysticka do 18 pinów I/O Pro Micro. Klawiatura Spectrum nie musi obsługiwać wielu naciśnięć klawiszy, z wyjątkiem klawiszy Caps Shift i Symbol Shift, więc umieścimy je na dedykowanych pinach, wtedy nie będziemy musieli się martwić o używanie diod, aby zapobiec klawiszowi phantom- prasy. Dołączyłem schemat pokazujący, jak klawiatura, w tym matryca, jest okablowana. Najpierw każda kolumna jest połączona odcinkiem drutu jednożyłowego, a następnie rzędy łączy się drutem jednożyłowym, który jest starannie ukształtowany tak, aby przechodził przez kolumny bez zwarcia. Może to być trochę trudne, ponieważ musisz ustawić przewody rzędu wystarczająco wysoko, aby uniknąć kontaktu z kolumnami, ale wystarczająco nisko, aby pozostawić miejsce na całe okablowanie, które musimy włożyć podczas końcowego montażu. Na koniec rzędy i kolumny są połączone z pinami Arduino przewodami ze starych kabli IDE.

Jak wspomniano powyżej, kontroler joysticka będzie również działał jako kontroler kursora i mysz, więc będziemy musieli mieć możliwość przełączania się między trybami. Domyślnym trybem będzie tryb kursora, kombinacja Caps Shift + przycisk Fire przełączy się w tryb joysticka, a kombinacja Symbol Shift + przycisk Fire przełączy się w tryb myszy. Aby pokazać, w jakim trybie się znajduje, na środku panelu joysticka znajduje się kilka diod LED o średnicy 3 mm. Dioda LED zasilania będzie również przydatna, a dobrym sposobem na zapewnienie tego z Pi jest podłączenie diody LED do pinu UART TX Pi, ponieważ będzie ono stale wysyłać dane, gdy urządzenie jest włączone.

Aby zapobiec strzępieniu się luźnych przewodów podczas użytkowania lub zwarciom przewodów matrycy, wszystko jest obficie pokryte gorącym klejem - brzydkie, ale skuteczne!

Ostatnim krokiem do uruchomienia klawiatury jest zaprogramowanie Arduino kodem ZX_Spectrum_Keyboard z mojego repozytorium. Po wykonaniu tej czynności możesz odłożyć lutownicę, podłączyć klawiaturę do zwykłego komputera i używać jej z emulatorem Spectrum, takim jak Fuse lub Spectaculator. Ale na tym się nie zatrzymujemy, więc przejdźmy dalej…

Krok 2: Ekran LCD

Ekran LCD
Ekran LCD

Oryginalny Spectrum ma rozdzielczość ekranu 256x192 pikseli. Aby zachować (w przybliżeniu) ten stosunek i uniknąć czarnych pasków po obu stronach, wybrałem ekran dotykowy Waveshare 3,2 320x240 TFT LCD zaprojektowany dla Raspberry Pi. Nie będzie on podłączony bezpośrednio do nagłówka GPIO Pi, więc możemy go usunąć plastikowe obramowanie złącza i przycięcie pinów. Przyciąłem płytę prototypową 7x9cm do 2,1x9cm (dokładny rozmiar nie ma znaczenia, o ile dwa pozostałe otwory narożne są wyrównane z górnymi otworami klawiatury i jest wystarczająco dużo miejsca na przylutowanie pinów nagłówka GPIO) i wlutować piny na miejscu, co da nam łatwy sposób na zamontowanie ekranu nad klawiaturą.

Musimy tylko podłączyć piny we/wy SPI, zasilania i ekranu dotykowego do Pi – może być dość trudne, aby wyśledzić, które piny są faktycznie potrzebne, ale informacje są dostępne, jeśli dobrze się przyjrzysz. Ekran Waveshare wykorzystuje 10 pinów: 4, 6, 9, 13, 15, 19, 21, 23, 24 i 26. Oczywiście, jeśli robisz to na innym ekranie, musisz wcześniej zweryfikować prawidłowe piny chwytając lutownicę.

Nie jest wymagana żadna specjalna konfiguracja oprogramowania - wystarczy zainstalować oprogramowanie sterownika producenta i gotowe do użycia.

Krok 3: Bezprzewodowe (Bluetooth)

Płyta Raspberry Pi Zero nie ma możliwości łączności bezprzewodowej, ma tylko jeden użyteczny port USB, a w obudowie nie będzie wystarczająco dużo miejsca na koncentrator USB, więc musiałem trochę wymyślić, aby dodać coś w rodzaju łączności bezprzewodowej do mojej konstrukcji. Jeśli budujesz to z Zero W, możesz pominąć ten krok.

Jest ciekawa funkcja Raspberry Pi, która pozwoli nam dodać przydatną funkcję bezprzewodową. Podłączając tani moduł szeregowy Bluetooth HC-05 do pinów UART Pi i dostosowując konfigurację systemu, można uzyskać bezprzewodowy dostęp do terminala wiersza poleceń za pomocą połączenia szeregowego przez Bluetooth. Możemy wtedy użyć wspólnych narzędzi do wysyłania plików na urządzenie i zarządzania systemem plików.

Krok 4: Moc

Moc
Moc
Moc
Moc

Wybrałem baterię pod koniec prac rozwojowych, więc musiałem wybrać ogniwo, które pasowałoby do dostępnej przestrzeni. Wybrałem 2000mAH 25C 1S Lipo (wymiary: 81x34x9mm) sprzedawany jako zamiennik dla drona Walkera Syma X5. Dobrze byłoby móc ładować baterię na miejscu za pomocą zwykłego połączenia USB i móc korzystać z urządzenia podczas ładowania. Tak naprawdę nie chcemy majstrować przy skomplikowanych obwodach sterowania zasilaniem, więc użyjemy gotowego modułu, który zapewnia ładowanie USB, a także zwiększone wyjście 5 V do bezpośredniego zasilania Pi. Aby upewnić się, że urządzenie można całkowicie wyłączyć, między wyjściem tego modułu a Pi znajduje się przełącznik suwakowy, który zapewnia, że bateria może być nadal ładowana, nawet gdy urządzenie jest wyłączone. Pi musi być poprawnie wyłączony, aby uniknąć problemów z uszkodzeniem danych. Zamiast logować się przez port szeregowy Bluetooth, możemy podłączyć przełącznik dotykowy do pinu 5 Pi (GPIO3) i napisać mały skrypt, który obserwuje to i inicjuje zamknięcie po naciśnięciu. Komponenty zasilające i bezprzewodowe zostały przylutowane do kolejnej płyty prototypowej o wymiarach 7x9 cm, która będzie znajdować się bezpośrednio pod klawiaturą.

Krok 5: Łączenie wszystkiego razem

Łącząc to wszystko razem
Łącząc to wszystko razem
Łącząc to wszystko razem
Łącząc to wszystko razem
Łącząc to wszystko razem
Łącząc to wszystko razem

Po zbudowaniu wszystkich różnych części możemy zmontować elementy wewnętrzne. Największym problemem, na który natknąłem się podczas montażu, było to, że port USB zerwał Arduino Pro Micro, co wymagało ode mnie lutowania przewodów bezpośrednio do padów lutowniczych, a nie za pomocą kabla USB. Jest to notorycznie słaby punkt płyt Pro Micro, więc prawdopodobnie warto nałożyć na niego dobrą kroplę gorącego kleju przed montażem, aby tego uniknąć. Zakładając, że to szczególne nieszczęście Cię nie spotka, masz wybór: możesz zrobić super cienki kabel micro USB do micro USB, aby podłączyć klawiaturę do Pi, lub możesz przylutować jeden lub oba końce bezpośrednio do płytek. Ponieważ musiałem przylutować stronę Arduino, przylutowałem również stronę Pi bezpośrednio do punktów testowych z tyłu płytki. Każda opcja ma swoje wady i zalety, więc wybór należy do Ciebie.

Deski będziemy trzymać razem z nylonowymi wspornikami M3. Do połączenia dolnych otworów między klawiaturą a płytą zasilającą potrzebujemy 2 x 9mm dystansów. Górne otwory również utrzymują ekran, więc chcemy, aby między klawiaturą a ekranem znajdowały się odstępy 2,5 mm, a między ekranem a płytą zasilającą 4,5 mm. Zdjęcie boczne pokazuje, jak to wygląda. Wsporniki będą wymagały trochę ostrożnego przycinania, aby wszystko było równoległe – może być trochę ciasno dopasowane do wszystkich przewodów klawiatury, ale powinno pasować do siebie. Jak widać na zdjęciach, urządzenie można zasilić i użytkować po zmontowaniu, bez konieczności posiadania faktycznej obudowy. Wkrótce będziemy drukować obudowę, ale zanim do tego dojdziemy, będziemy musieli zainstalować system operacyjny i skonfigurować go.

Krok 6: Oprogramowanie

Po złożeniu elementów wewnętrznych możemy przystąpić do instalacji i konfiguracji oprogramowania. Raspberry Pi będzie działać na standardowej instalacji Raspbian. Jedynym dodatkowym oprogramowaniem, które należy zainstalować, oprócz sterowników ekranu TFT, jest aplikacja Fuse. Używamy wersji SDL, aby uzyskać odpowiednią funkcjonalność pełnoekranową, którą można zainstalować za pomocą:

sudo apt-get install fuse-emulator-sdl

Aby obsłużyć nasze naciśnięcia przycisku wyłączania, skopiuj skrypt „shutdown” z mojego repozytorium kodu do /home/pi/

Aby uzyskać konsolę szeregową przez Bluetooth, dodaj następujący wiersz do /boot/config:

enable_uart=1

Chcemy, aby nasz skrypt zamykający i emulator Fuse działały podczas uruchamiania, więc dodaj te wiersze do /etc/xdg/lxsession/LXDE-pi/autostart:

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

Zrestartuj Pi po wprowadzeniu tych zmian i powinno być gotowe.

Krok 7: Obudowa i montaż końcowy

Obudowa i montaż końcowy
Obudowa i montaż końcowy
Obudowa i montaż końcowy
Obudowa i montaż końcowy
Obudowa i montaż końcowy
Obudowa i montaż końcowy

Obudowa została wymodelowana w Fusion 360 (jak to zrobić, wykracza poza zakres tej instrukcji). Składa się z 5 części: dekiel, przód ekranu, przód klawiatury, przycisk zasilania i osłona panelu sterowania. Osłona panelu sterowania powinna być wydrukowana z elastycznego filamentu (użyłem elastycznego PLA, ale bardziej miękki materiał, taki jak NinjaFlex, może być lepszy); wszystko inne powinno być wydrukowane w sztywnym plastiku (użyłem Filamentum black PLA).

Aby zapewnić opór przyciskowi zasilania i zapobiec jego grzechotaniu, przyklej z tyłu 3 mm piankę samoprzylepną, a następnie wybij 4 mm otwór, aby mógł dobrze przylegać do pionowego przełącznika taktycznego na płytce zasilania. Może być konieczne lekkie przycięcie jednej krawędzi, jak widać na zdjęciach, aby uniknąć zahaczenia płyty zasilającej. Uważam również, że pomocne jest użycie niewielkiej ilości kleju, aby przytrzymać przycisk przy włączniku zasilania.

Musimy przykleić kilka nylonowych wypustek do górnych mocowań na przednim panelu ekranu, aby umożliwić bezpieczne zamocowanie górnych części obudowy. Po wyschnięciu przyciąć patyczki równo.

Aby dopasować deski, najpierw musimy stworzyć słupki montażowe. Zdejmij główki z niektórych nylonowych śrub M3 i przyklej gwintowane części do dolnych otworów każdego z przednich paneli. Po wyschnięciu 2 panele przednie można skleić ze sobą, a klawiaturę można zamocować na miejscu za pomocą dystansów 9 mm i 2,5 mm. Następnie, po umieszczeniu tego na miejscu, ekran można umieścić na górnych słupkach i dodać wsporniki 4,5 mm. Na koniec płytkę zasilającą można umieścić na swoim miejscu, a przewody ułożyć tak, aby umożliwić zamocowanie z tyłu.

Baterię należy przykleić na miejscu dwustronną taśmą lub arkuszem pianki i podłączyć do złącza zasilania. Teraz można połączyć dwie połówki i użyć krótkich wkrętów z łbem stożkowym M3, aby zabezpieczyć wszystko na swoim miejscu.

Na koniec odwróć go i przyklej osłonę panelu sterowania do panelu klawiatury. Zrobiłem to za pomocą dwuskładnikowego kleju epoksydowego, aby uzyskać mocne wiązanie.

Krok 8: Nakładka na klawiaturę

Nakładka na klawiaturę
Nakładka na klawiaturę
Nakładka na klawiaturę
Nakładka na klawiaturę
Nakładka na klawiaturę
Nakładka na klawiaturę

Prawie skończyliśmy. Brakuje tylko kilku kluczowych oznaczeń i nakładki, dzięki czemu wiemy, jak dotrzeć do tych wszystkich wspaniałych słów kluczowych.

Podstawowe litery i cyfry znajdują się na rzeczywistych szczytach przełączników. Znalazłem kilka naprawdę małych transferów listowych 2,5 mm, które idealnie pasują do blatów o średnicy 4 mm. Są trochę trudne do nałożenia, ponieważ blaty poruszają się, gdy je pocierasz, ale dostajesz sporo liter w paczce, więc możesz popełnić kilka błędów. Skończyło się na tym, że dotknąłem kilku drobnym markerem permanentnym, chociaż z perspektywy czasu powinienem był spróbować namoczyć je w ciepłej wodzie i wsunąć na miejsce (jeśli kiedykolwiek budowałeś zestaw do modelowania, będziesz zaznajomiony z tym procesem). Aby chronić litery podczas użytkowania, nałożyłem na każdy klawisz przezroczystego lakieru do paznokci.

Aby srebrne korpusy przełączników nie prześwitywały przez szczeliny w nakładce, użyłem permanentnego markera do ich pokolorowania - widać to w dolnym rzędzie jednego ze zdjęć.

Zaprojektowałem drukowane nakładki w programie graficznym GIMP typu open source, a następnie wydrukowałem je na matowym papierze o jakości fotograficznej. Idealnie byłoby, gdyby nakładki były jak najcieńsze – z łatwością udało mi się odkleić podkład z papieru firmowego Epson, którego używałem, chociaż nie będzie to dotyczyć wszystkich marek. Aby chronić wydruk, pokryłem papier przezroczystym samoprzylepnym arkuszem winylu i przykleiłem dwustronną taśmę z tyłu, aby przykleić go do etui. Przed przyklejeniem nakładek musimy jednak wybić dziurki. Użyłem taniego skórzanego dziurkacza 4 mm i osiągnąłem najlepsze wyniki, ostrząc stemple i tnąc bezpośrednio na skrawek aluminiowej blachy o grubości 3 mm. Następnie nakładki wystarczy wyrównać i przykleić.

Krok 9: Wniosek

I gotowe! Był to dość duży projekt wymagający szeregu umiejętności, w tym podstawowej elektroniki, lutowania, modelowania 3D, programowania, a nawet trochę układu graficznego. Ostatecznie było to bardzo satysfakcjonujące, a gotowe urządzenie jest świetną zabawą, ale jak wypada w porównaniu z moimi pierwotnymi kryteriami?

Tani: Całkowity koszt wszystkiego, łącznie z aktualnymi cenami detalicznymi przedmiotów, które już posiadałem, i artykułów papierniczych, takich jak taśma dwustronna, która przetrwa znacznie dłużej niż ten projekt, wynosi około 80 funtów, co czyni go niedrogim projektem.

Przenośny: jest zdecydowanie przenośny. To urządzenie wygodnie mieści się w kieszeni i jest całkowicie samodzielne, dzięki czemu można go używać w dowolnym miejscu. Gdybym miał go zbudować ponownie, zrobiłbym płaski 4-kierunkowy kontroler w stylu joypada, zamiast używać drążka nawigacyjnego, ponieważ wystaje on ponad linię urządzenia, narażając go na uszkodzenia. Chciałbym również sprawdzić, czy dostępny jest ekran bezdotykowy o podobnym rozmiarze i proporcji z osłoną bardziej odporną na zarysowania, ponieważ nie potrzebuję interfejsu dotykowego, a powierzchnia oporowa jest szczególnie podatna na uszkodzenia.

Keyboard & Joystick: Jestem naprawdę zadowolony z tego, jak to działa. Chociaż klawiatura nie przypomina pierwowzoru, korzystanie z klawiatury jest zaskakująco podobne do starego ZX Spectrum – układ, nakładka i implementacja słów kluczowych dobrze ze sobą współgrają, aby to osiągnąć. Klawiatury USB można również używać samodzielnie z komputerem z emulatorem Fuse, aby zapewnić takie same wrażenia.

Natychmiastowe: korzystanie z modułu szeregowego Bluetooth umożliwia stosunkowo łatwe przesyłanie archiwów taśmowych do urządzenia z innego komputera bez konieczności wychodzenia z interfejsu Fuse, a dalsze usprawnienie procesu powinno być możliwe poprzez napisanie skryptu po stronie klienta do wysłania pliku do urządzenia. Wolałbym mieć możliwość korzystania ze standardowej funkcji przesyłania plików Bluetooth „wyślij do urządzenia” wbudowanej w większość systemów operacyjnych lub odpowiedniego systemu udostępniania plików, takiego jak Samba. Jednak będą one dostępne tylko z płytą Pi Zero W i nie użyłem ich do tej wersji.

Oprócz elementów wymienionych powyżej, gdybym ponownie zaczął ten projekt od zera, na początku projektu wybrałbym cieńszą baterię o większej pojemności i zaprojektowałem ją, zamiast wybierać baterię o odpowiedniej wielkości na końcu projekt. Aby rozszerzyć opcje wysyłania plików do urządzenia, użyłbym również Pi Zero W zamiast modułu szeregowego Bluetooth. Innym oczywistym ulepszeniem byłoby wskazanie stanu baterii sprzętowej, ponieważ obecnie nie ma możliwości sprawdzenia, ile pozostało energii. Rozważałbym również użycie systemu operacyjnego opartego na Ramdisk, takiego jak Alpine Linux, który byłby bardziej tolerancyjny na twarde wyłączenia i powinien umożliwiać pojedynczy włącznik/wyłącznik bez potrzeby osobnego przycisku zamykania – znacznie bardziej jak oryginalny ZX Spectrum, po prostu odłącz go, gdy skończysz.

Interesujące może być zaprojektowanie niestandardowej płytki drukowanej dla tego urządzenia, która potencjalnie pozwoliłaby nam umieścić komponenty zasilania z tyłu klawiatury zamiast oddzielnej płytki. Mogłoby to znacznie zmniejszyć głębokość gotowego urządzenia. Ułatwiłoby to również montaż urządzenia i dałoby potencjał pewnego rodzaju zestawu do samodzielnego montażu. Jeśli jest wystarczające zainteresowanie tym projektem, mogę zrobić wersję 2, która rozwiązuje te problemy.

Krok 10: Zasoby

Do zbudowania tego projektu potrzebne są następujące zasoby:

Pliki spraw do druku 3D (Thingiverse):

Kod (Github):

Zalecana: