Table des matières:

Pocket ZX (Handheld ZX Spectrum): 10 étapes
Pocket ZX (Handheld ZX Spectrum): 10 étapes

Vidéo: Pocket ZX (Handheld ZX Spectrum): 10 étapes

Vidéo: Pocket ZX (Handheld ZX Spectrum): 10 étapes
Vidéo: Pocket PICOZX (Zx Spectrum 128k) Handheld - Tape loading emulation 2024, Décembre
Anonim
Pocket ZX (Spectre ZX portable)
Pocket ZX (Spectre ZX portable)
Pocket ZX (Spectre ZX portable)
Pocket ZX (Spectre ZX portable)
Pocket ZX (Spectre ZX portable)
Pocket ZX (Spectre ZX portable)

Je suis un enfant des années 80 et j'ai de bons souvenirs des ordinateurs 8 bits de cette époque. Mon premier ordinateur - celui qui tient une place particulière dans mon cœur - était un Sinclair ZX Spectrum 48K. Ayant récemment découvert certaines communautés axées sur les ordinateurs plus anciens sur le Web, j'ai décidé de revivre une partie de cette nostalgie pour moi-même et j'ai installé l'émulateur Fuse sur mon MacBook. C'était amusant pendant un moment, mais je voulais vraiment un appareil dédié - de préférence quelque chose de petit, portable et autonome pour s'adapter à mon style de vie. Le choix à ce stade était de suivre le chemin de l'impressionnant Ben Heck et de réduire le matériel ZX d'origine en quelque chose de portable ou de tricher et d'utiliser l'émulation sur un petit ordinateur monocarte. je vais tricher:)

Alors, qu'est-ce que je veux de mon ZX Spectrum portable ?

  • Pas cher: j'ai beaucoup trop de projets pour dépenser de grosses sommes d'argent sur un peu de nostalgie amusante.
  • Portable: ce doit être quelque chose avec lequel je peux jouer sur le canapé ou lors d'un après-midi de farniente dans le jardin.
  • Clavier: je ne veux pas seulement jouer à des jeux, je veux aussi le programmer. Pour profiter pleinement de l'expérience, il doit disposer de ces merveilleuses clés de mots clés.
  • Joystick: Je n'ai jamais aimé jouer à des jeux de plateforme avec un clavier. Des jeux d'aventure, bien sûr, mais je ne veux pas seulement jouer à des jeux d'aventure, il va donc falloir un joystick.
  • Instantané: je détestais le chargement de bandes dans les années 80 et je ne peux pas imaginer que j'en ai eu plus d'affection pour cela dans les années qui ont suivi.

Avec tout cela en tête, j'ai rédigé un schéma fonctionnel pour m'aider à comprendre les différents composants. Alors commençons à construire.

Étape 1: clavier et manette USB

Clavier et manette USB
Clavier et manette USB
Clavier et manette USB
Clavier et manette USB
Clavier et manette USB
Clavier et manette USB

Avoir le bon clavier est la clé pour capturer l'apparence du ZX Spectrum original. Nous construisons peut-être un appareil émulé portable qui n'a rien en commun avec les composants internes de Spectrum d'origine, mais, avec une conception soignée, il devrait être possible de créer quelque chose qui rappelle l'expérience informatique des années 80.

En commençant par quelques protoboards et une grosse pile de commutateurs tactiles, j'ai expérimenté quelques idées et me suis installé sur la disposition en quinconce montrée sur les photos. Les protoboards que nous utilisons sont des 7x9cm standard (26x31 trous) disponibles en ligne chez de nombreux revendeurs. Les commutateurs sont des versions à montage en surface qui ont un toucher plus doux et sont moins bruyants que leurs homologues à trou traversant plus courants, mais l'un ou l'autre devrait fonctionner car leurs tailles de corps sont presque identiques.

Les commandes du joystick sont ensuite entrées dans l'espace restant immédiatement au-dessus du clavier. J'ai décidé d'utiliser un commutateur de navigation tactile à 5 directions à gauche et un gros bouton de tir à droite. Le joystick servira également de contrôleur pour le système de menus de l'émulateur et de souris pour interagir avec le système Linux sous-jacent, j'ai donc également ajouté un petit bouton secondaire.

Le microcontrôleur du clavier est un Arduino Pro Micro. Il s'agit d'une petite carte qui peut être programmée en tant que périphérique d'interface humaine (HID) USB tel qu'un clavier, une souris ou un joystick.

Une fois les commutateurs soudés en place, la matrice qui relie les lignes et les colonnes de commutateurs au microcontrôleur doit être construite. Cette matrice nous permettra de connecter les 40 touches plus les 7 boutons du joystick aux 18 broches d'E/S du Pro Micro. Le clavier Spectrum n'a pas besoin de gérer plusieurs touches, à l'exception des touches Majuscules et Majuscules, nous allons donc les mettre sur des broches dédiées. presses. J'ai inclus un schéma pour montrer comment le clavier, y compris la matrice, est câblé. Tout d'abord, chaque colonne est reliée à une longueur de fil monoconducteur, puis les rangées sont connectées à l'aide d'un fil monoconducteur qui est soigneusement façonné pour traverser les colonnes sans court-circuit. Cela peut être un peu délicat car vous devez placer les fils de rangée suffisamment haut pour éviter tout contact avec les colonnes, mais suffisamment bas pour laisser de la place pour tout le câblage dont nous avons besoin lors de l'assemblage final. Enfin, les lignes et les colonnes sont connectées aux broches Arduino avec des fils d'anciens câbles IDE.

Comme mentionné ci-dessus, le contrôleur de joystick fonctionnera également comme un contrôleur de curseur et une souris, nous devrons donc pouvoir basculer entre les modes. Le mode par défaut sera le mode curseur, une combinaison de Maj Maj + le bouton Fire passera en mode joystick et la combinaison de bouton MAJ + Fire passera en mode souris. Pour montrer dans quel mode il se trouve, il y a quelques LED de 3 mm au milieu du panneau du joystick. Une LED d'alimentation sera également utile et un bon moyen de fournir cela avec le Pi est de connecter une LED à la broche UART TX du Pi car elle enverra constamment des données pendant que l'appareil est allumé.

Pour éviter que les fils lâches ne s'effilochent en cours d'utilisation ou que les fils de la matrice ne se court-circuitent, tout est généreusement recouvert de colle chaude - moche mais efficace !

La dernière étape pour faire fonctionner le clavier consiste à programmer l'Arduino avec le code ZX_Spectrum_Keyboard de mon référentiel. Une fois cela fait, vous pouvez en fait poser le fer à souder, brancher le clavier sur un ordinateur ordinaire et l'utiliser avec un émulateur Spectrum comme Fuse ou Spectaculator. Mais on ne s'arrête pas là, alors passons à autre chose…

Étape 2: écran LCD

Écran LCD
Écran LCD

Le Spectrum original a une résolution d'écran de 256x192 pixels. Pour conserver (environ) ce ratio et éviter d'avoir des barres noires des deux côtés, j'ai sélectionné un écran tactile LCD Waveshare 3.2 320x240 TFT conçu pour le Raspberry Pi. Il ne va pas être connecté directement à l'en-tête GPIO du Pi afin que nous puissions retirer le contour en plastique du connecteur et coupez les broches. J'ai coupé un protoboard de 7 x 9 cm à 2,1 x 9 cm (la taille exacte n'a pas d'importance tant que les deux trous d'angle restants s'alignent avec les trous du clavier supérieur et qu'il y a suffisamment d'espace pour souder les broches d'en-tête GPIO) et soudé les broches en position, ce qui nous permettra de monter facilement l'écran au-dessus du clavier.

Nous avons seulement besoin de connecter les broches d'E/S SPI, d'alimentation et de l'écran tactile au Pi - il peut être assez difficile de déterminer quelles broches sont réellement nécessaires, mais les informations sont disponibles si vous regardez assez attentivement. L'écran Waveshare utilise 10 broches: 4, 6, 9, 13, 15, 19, 21, 23, 24 et 26. Évidemment, si vous faites cela avec un écran différent, vous devrez vérifier les bonnes broches avant saisir votre fer à souder.

Aucune configuration logicielle spéciale n'est requise - installez simplement le logiciel pilote du fabricant et il est prêt à l'emploi.

Étape 3: Sans fil (Bluetooth)

La carte Raspberry Pi Zero n'a pas de capacité sans fil, un seul port USB utile et il n'y aura pas assez de place dans le boîtier pour un concentrateur USB, j'ai donc dû être un peu inventif pour ajouter une sorte de capacité sans fil pour ma construction. Si vous construisez cela avec le Zero W, vous pouvez ignorer cette étape.

Il y a une fonctionnalité intéressante du Raspberry Pi qui nous permettra d'ajouter une capacité sans fil utile. En attachant un module série Bluetooth HC-05 bon marché aux broches UART du Pi et en modifiant la configuration du système, il est possible d'obtenir un accès sans fil au terminal de ligne de commande en utilisant la liaison série sur Bluetooth. Nous pouvons ensuite utiliser des outils communs pour envoyer des fichiers à l'appareil et gérer le système de fichiers.

Étape 4: Puissance

Puissance
Puissance
Puissance
Puissance

J'ai choisi ma batterie à la fin du développement, j'ai donc dû choisir une cellule qui s'adapterait à l'espace disponible. Celui que j'ai choisi était un Lipo 2000mAH 25C 1S (dimensions: 81x34x9mm) vendu en remplacement du drone Walkera Syma X5. Il serait bon de pouvoir charger la batterie in-situ avec une connexion USB régulière et de pouvoir utiliser l'appareil pendant qu'il est en charge. Nous ne voulons pas vraiment jouer avec des circuits de contrôle de puissance complexes, nous allons donc utiliser un module prêt à l'emploi qui fournit une charge USB et également une sortie 5V renforcée pour alimenter directement le Pi. Pour s'assurer que l'appareil peut être complètement éteint, il y a un interrupteur à glissière entre la sortie de ce module et le Pi qui garantit que la batterie peut toujours être chargée même lorsque l'appareil est éteint. Le Pi doit être éteint correctement pour éviter les problèmes de corruption de données. Plutôt que d'avoir besoin de nous connecter via Bluetooth série, nous pouvons connecter un commutateur tactile à la broche 5 du Pi (GPIO3) et écrire un petit script qui surveille cela et initie un arrêt lorsqu'il est enfoncé. Les composants d'alimentation et sans fil ont été soudés à un autre protoboard de 7x9 cm qui sera placé directement sous le clavier.

Étape 5: Tout connecter ensemble

Tout connecter ensemble
Tout connecter ensemble
Tout connecter ensemble
Tout connecter ensemble
Tout connecter ensemble
Tout connecter ensemble

Avec toutes les différentes pièces construites, nous pouvons assembler les internes. Le plus gros problème que j'ai rencontré lors de l'assemblage était que le port USB a rompu mon Arduino Pro Micro, m'obligeant à souder les fils directement sur les plots de soudure plutôt que d'utiliser un câble USB. C'est un point faible notoire sur les cartes Pro Micro donc il vaut probablement la peine d'appliquer une bonne boule de colle chaude dessus avant l'assemblage pour éviter cela. En supposant que ce malheur particulier ne vous arrive pas, vous avez le choix: vous pouvez soit créer un câble micro USB vers micro USB ultra-mince pour connecter votre clavier au Pi, soit souder une ou les deux extrémités directement aux cartes. Comme j'avais besoin de souder le côté Arduino, j'ai également soudé le côté Pi directement aux points de test à l'arrière de la carte. Il y a des avantages et des inconvénients pour chaque option, c'est donc à vous de choisir celle que vous préférez.

Nous garderons les planches ensemble avec des entretoises en nylon M3. Nous avons besoin de 2 entretoises de 9 mm pour connecter les trous inférieurs entre le clavier et la carte d'alimentation. Les trous supérieurs retiennent également l'écran, nous voulons donc des entretoises de 2,5 mm entre le clavier et l'écran, et des entretoises de 4,5 mm entre l'écran et la carte d'alimentation. La photo latérale montre à quoi cela ressemble. Les entretoises auront besoin d'un peu de coupe soigneuse pour que tout soit parallèle - cela peut être un peu serré avec tous les fils du clavier, mais cela devrait aller ensemble. Comme on peut le voir sur les photos, l'appareil peut être mis sous tension et utilisé après assemblage, sans avoir besoin d'un véritable boîtier. Nous imprimerons bientôt un boîtier, mais avant d'en arriver là, nous devrons installer le système d'exploitation et le configurer.

Étape 6: Logiciel

Une fois les composants internes assemblés, nous pouvons procéder à l'installation et à la configuration du logiciel. Le Raspberry Pi fonctionnera sur une installation Raspbian standard. Le seul logiciel supplémentaire qui doit être installé, à part les pilotes d'écran TFT, est l'application Fuse. Nous utilisons la version SDL pour obtenir une fonctionnalité plein écran appropriée, qui peut être installée avec:

sudo apt-get install fuse-emulator-sdl

Pour gérer nos pressions sur le bouton d'arrêt, copiez le script 'shutdown' de mon référentiel de code vers /home/pi/

Pour obtenir une console série via Bluetooth, ajoutez la ligne suivante à /boot/config:

enable_uart=1

Nous voulons que notre script d'arrêt et l'émulateur Fuse s'exécutent au lancement, alors ajoutez ces lignes à /etc/xdg/lxsession/LXDE-pi/autostart:

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

Redémarrez le Pi après avoir apporté ces modifications et vous devriez avoir terminé.

Étape 7: Enceinte et assemblage final

Boîtier et assemblage final
Boîtier et assemblage final
Boîtier et assemblage final
Boîtier et assemblage final
Boîtier et assemblage final
Boîtier et assemblage final

Le boîtier a été modélisé dans Fusion 360 (comment faire cela est en dehors de la portée de cette instructable). Il y a 5 parties: le fond du boîtier, la façade de l'écran, la façade du clavier, le bouton d'alimentation et le couvercle du panneau de commande. Le couvercle du panneau de commande doit être imprimé dans un filament flexible (j'ai utilisé du PLA flexible mais un matériau plus doux comme NinjaFlex pourrait être mieux); tout le reste doit être imprimé dans un plastique rigide (j'ai utilisé du PLA noir Filamentum).

Pour donner au bouton d'alimentation une certaine résistance et l'empêcher de cliqueter, collez de la mousse adhésive de 3 mm à l'arrière, puis percez un trou de 4 mm pour lui permettre de s'asseoir confortablement sur l'interrupteur tac vertical sur le PCB d'alimentation. Vous devrez peut-être couper légèrement un bord, comme on peut le voir sur les photos, pour éviter d'accrocher la carte d'alimentation. J'ai également trouvé utile d'utiliser un petit peu de colle pour maintenir le bouton sur l'interrupteur d'alimentation.

Nous devons coller quelques entretoises en nylon dans les supports supérieurs du panneau avant de l'écran pour permettre aux parties supérieures du boîtier d'être solidement fixées. Une fois sec, coupez les entretoises au ras.

Pour monter les planches, nous devons d'abord créer les poteaux de montage. Retirez les têtes de certaines vis en nylon M3 et collez les pièces filetées dans les trous inférieurs de chacun des panneaux avant. Lorsque ceux-ci ont séché, les 2 panneaux avant peuvent être collés ensemble et le clavier peut être fixé en place à l'aide des entretoises de 9 mm et 2,5 mm. Ensuite, avec ceci en place, l'écran peut être placé sur les poteaux supérieurs et les entretoises de 4,5 mm peuvent être ajoutées. Enfin, la carte d'alimentation peut être mise en place et les fils disposés pour permettre la pose du dos.

La batterie doit être collée avec du ruban adhésif double face ou une feuille de mousse et branchée sur le connecteur d'alimentation. Maintenant, les deux moitiés peuvent être réunies et quelques vis à tête fraisée M3 courtes utilisées pour fixer le tout en place.

Enfin, retournez-le et collez le couvercle du panneau de commande sur le panneau du clavier. Je l'ai fait avec un adhésif époxy en deux parties pour une forte adhérence.

Étape 8: Superposition de clavier

Superposition de clavier
Superposition de clavier
Superposition de clavier
Superposition de clavier
Superposition de clavier
Superposition de clavier

Nous avons presque terminé. Tout ce qui manque, ce sont des marquages clés et une superposition pour que nous sachions comment accéder à tous ces merveilleux mots-clés.

Les lettres et les chiffres principaux sont sur les dessus des commutateurs réels. J'ai trouvé de très petits transferts de lettres de 2,5 mm qui s'adaptent parfaitement aux sommets de 4 mm de diamètre. Ils sont un peu délicats à appliquer car les hauts bougent lorsque vous les frottez, mais vous obtenez pas mal de lettres dans un paquet, donc c'est bien de faire des erreurs. J'ai fini par en toucher quelques-uns avec un fin marqueur permanent bien que, avec le recul, j'aurais dû essayer de les tremper dans de l'eau tiède et de les faire glisser en place (si vous avez déjà construit un kit de modèle, vous serez familiarisé avec ce processus). Pour protéger les lettres pendant l'utilisation, j'ai tamponné du vernis à ongles transparent sur chaque dessus de touche.

Pour éviter que les corps argentés des interrupteurs ne soient visibles à travers les interstices de la superposition, j'ai utilisé un marqueur permanent pour les colorer - cela peut être vu dans la rangée du bas de l'une des photos.

J'ai conçu les superpositions imprimées dans le programme graphique open source GIMP, puis je les ai imprimées sur du papier mat de qualité photo. Idéalement, les superpositions seront aussi fines que possible - j'ai pu décoller le support du papier de marque Epson que j'ai utilisé très facilement bien que ce ne soit pas le cas avec toutes les marques. Pour protéger l'impression, j'ai recouvert le papier d'une feuille de vinyle adhésif transparent et appliqué du ruban adhésif double face au dos pour le coller au boîtier. Avant de coller les superpositions, cependant, nous devons percer les trous. J'ai utilisé une perforatrice en cuir bon marché de 4 mm et j'ai obtenu les meilleurs résultats en affûtant les poinçons et en coupant directement contre des chutes de tôle d'aluminium de 3 mm. Ensuite, les superpositions doivent juste être alignées et collées.

Étape 9: Conclusion

Et c'est fini ! Il s'agissait d'un projet assez important exigeant un éventail de compétences, notamment l'électronique de base, la soudure, la modélisation 3D, la programmation et même un peu de mise en page graphique. Cela a finalement été très gratifiant et l'appareil fini est très amusant à jouer, mais comment se compare-t-il à mes critères d'origine ?

Bon marché: Le coût global de tout, y compris les prix de détail actuels des articles que je possédais déjà et les articles de papeterie comme le ruban adhésif double face qui dureront bien au-delà de ce projet, est d'environ 80 £, ce qui en fait un projet abordable.

Portable: C'est définitivement portable. Cet appareil tient confortablement dans une poche et est complètement autonome, il peut donc être utilisé n'importe où. Si je devais le reconstruire, je ferais un contrôleur plat de style joypad à 4 voies plutôt que d'utiliser le bâton de navigation car il dépasse de la ligne de l'appareil, le laissant vulnérable aux dommages. J'aimerais également voir si un écran non tactile de taille et de rapport similaires est disponible avec un couvercle plus résistant aux rayures car je n'ai pas besoin de l'interface tactile et la surface résistive est particulièrement sujette aux dommages.

Clavier et joystick: je suis vraiment satisfait de la façon dont cela a fonctionné. Bien qu'il n'ait pas la sensation de chair morte de l'original, l'utilisation du clavier rappelle étonnamment l'ancien ZX Spectrum - la mise en page, la superposition et la mise en œuvre des mots-clés fonctionnent bien ensemble pour y parvenir. Le clavier USB peut également être utilisé seul avec un ordinateur exécutant l'émulateur Fuse pour offrir la même expérience.

Instantané: l'utilisation du module série Bluetooth permet de transférer relativement facilement des archives sur bande vers l'appareil depuis un autre ordinateur sans avoir besoin de quitter l'interface Fuse, et il devrait être possible de rationaliser davantage le processus en écrivant un script côté client pour envoyer un fichier à l'appareil. Je préférerais pouvoir utiliser la fonction de transfert de fichiers Bluetooth standard "Envoyer vers l'appareil" intégrée à la plupart des systèmes d'exploitation, ou un système de partage de fichiers approprié comme Samba. Cependant, ceux-ci ne seront disponibles qu'avec la carte Pi Zero W et je ne l'ai pas utilisé pour cette version.

En plus des éléments mentionnés ci-dessus, si je recommençais ce projet à partir de zéro, je choisirais une batterie plus fine avec une plus grande capacité au début du projet et je concevrais autour d'elle plutôt que d'avoir à sélectionner une batterie de taille appropriée à la fin de le projet. J'utiliserais également un Pi Zero W plutôt qu'un module série Bluetooth pour étendre les options d'envoi de fichiers à l'appareil. Une autre amélioration évidente serait une sorte d'indication de l'état de la batterie matérielle, car il n'y a actuellement aucun moyen de voir combien de charge il reste. J'envisagerais également d'utiliser un système d'exploitation basé sur Ramdisk comme Alpine Linux qui serait plus tolérant aux arrêts brusques et devrait permettre un seul interrupteur marche/arrêt sans avoir besoin d'un bouton d'arrêt séparé - beaucoup plus comme le ZX Spectrum d'origine, juste débranchez-le lorsque vous avez terminé.

Il pourrait être intéressant de concevoir un PCB personnalisé pour cet appareil qui nous permettrait, potentiellement, de mettre les composants d'alimentation à l'arrière du clavier plutôt que d'avoir une carte séparée. Cela pourrait réduire considérablement la profondeur de l'appareil fini. Cela faciliterait également l'assemblage de l'appareil et offrirait le potentiel d'une sorte de kit d'auto-assemblage. S'il y a suffisamment d'intérêt pour ce projet, je pourrais faire une version 2 qui résout ces problèmes.

Étape 10: Ressources

Les ressources suivantes sont nécessaires pour construire ce projet:

Fichiers de cas imprimables en 3D (Thingverse):

Code (Github):

Conseillé: