Índice:
- Etapa 1: teclado e joystick USB
- Etapa 2: Tela LCD
- Etapa 3: sem fio (Bluetooth)
- Etapa 4: alimentação
- Etapa 5: conectando tudo junto
- Etapa 6: Software
- Etapa 7: Gabinete e montagem final
- Etapa 8: Sobreposição de teclado
- Etapa 9: Conclusão
- Etapa 10: Recursos
Vídeo: Pocket ZX (Handheld ZX Spectrum): 10 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Sou uma criança dos anos 80 e tenho boas lembranças dos computadores de 8 bits daquela época. Meu primeiro computador - que ocupa um lugar especial em meu coração - foi um Sinclair ZX Spectrum 48K. Tendo descoberto recentemente algumas comunidades voltadas para computadores mais antigos na web, decidi que queria reviver um pouco dessa nostalgia para mim e instalei o emulador Fuse no meu MacBook. Isso foi divertido por um tempo, mas eu realmente queria um dispositivo dedicado - de preferência algo pequeno, portátil e independente para se encaixar no meu estilo de vida. A escolha neste estágio era seguir o caminho do incrível Ben Heck e reduzir o hardware ZX original em algo portátil ou trapacear e usar emulação em um pequeno computador de placa única. Eu vou trapacear:)
Então, o que eu quero do meu ZX Spectrum portátil?
- Barato: tenho muitos projetos para gastar grandes somas de dinheiro em um pouco de nostalgia divertida.
- Portátil: precisa ser algo com que eu possa brincar no sofá ou em uma tarde preguiçosa no jardim.
- Teclado: Não quero apenas jogar, também quero programá-lo. Para obter a experiência completa, ele precisa ter aquelas maravilhosas chaves de palavras-chave.
- Joystick: nunca gostei de jogos de plataforma com um teclado. Jogos de aventura, com certeza, mas não quero apenas jogar jogos de aventura, então vou precisar de um joystick.
- Instantâneo: Eu odiava o carregamento de fitas nos anos 80 e não consigo imaginar que tenha gostado tanto disso nos anos seguintes.
Com tudo isso em mente, esbocei um diagrama de blocos para me ajudar a entender os vários componentes. Então, vamos começar a construir.
Etapa 1: teclado e joystick USB
Acertar o teclado é a chave para capturar a aparência do ZX Spectrum original. Podemos estar construindo um dispositivo emulado de mão que não compartilha nada em comum com os internos Spectrum originais, mas, com um design cuidadoso, deve ser possível criar algo que pareça uma reminiscência da experiência de computação dos anos 80.
Começando com alguns protoboards e uma grande pilha de interruptores táteis, experimentei algumas idéias e me decidi pelo layout escalonado mostrado nas fotos. Os protoboards que estamos usando são 7x9cm padrão (orifícios 26x31) disponíveis online em muitos varejistas. Os interruptores são versões de montagem em superfície que têm uma sensação mais suave e são menos ruidosas do que suas contrapartes de orifício mais comuns, mas ambos devem funcionar porque seus tamanhos de corpo são quase idênticos.
Os controles do joystick então foram para o espaço restante imediatamente acima do teclado. Decidi usar um botão de navegação tátil de 5 direções à esquerda e um grande botão de disparo à direita. O joystick se dobrará como um controlador para o sistema de menu do emulador e um mouse para interagir com o sistema Linux subjacente, então também adicionei um pequeno botão secundário.
O microcontrolador do teclado é um Arduino Pro Micro. Esta é uma pequena placa que pode ser programada como um dispositivo de interface humana USB (HID), como um teclado, mouse ou joystick.
Uma vez que os interruptores foram soldados no lugar, a matriz que conecta as linhas e colunas de interruptores ao microcontrolador precisa ser construída. Esta matriz nos permitirá conectar todas as 40 teclas mais os 7 botões do joystick aos 18 pinos de E / S do Pro Micro. O teclado Spectrum não precisa lidar com vários pressionamentos de tecla, exceto as teclas Caps Shift e Symbol Shift, então vamos colocá-las em pinos dedicados, então não precisaremos nos preocupar em usar diodos para evitar teclas fantasmas. prensas. Incluí um esquema para mostrar como o teclado, incluindo a matriz, está conectado. Primeiro, cada coluna é ligada com um comprimento de fio de núcleo único e, em seguida, as linhas são conectadas usando fio de núcleo único que é cuidadosamente moldado para cruzar as colunas sem causar curto. Isso pode ser um pouco complicado porque você precisa colocar os fios da linha altos o suficiente para evitar o contato com as colunas, mas baixo o suficiente para deixar espaço para todos os fios que precisamos inserir durante a montagem final. Finalmente, as linhas e colunas são conectadas aos pinos do Arduino com fios de cabos IDE antigos.
Conforme mencionado acima, o controlador de joystick também funcionará como um controlador de cursor e um mouse, portanto, precisaremos ser capazes de alternar entre os modos. O modo padrão será o modo cursor, uma combinação de Caps Shift + o botão Fire mudará para o modo joystick e a combinação do símbolo Shift + botão Fire mudará para o modo mouse. Para mostrar em qual modo ele está, há alguns LEDs de 3 mm no meio do painel do joystick. Um LED de energia também será útil e uma boa maneira de fornecer isso com o Pi é conectar um LED ao pino UART TX do Pi, pois ele enviará dados constantemente enquanto o dispositivo estiver ligado.
Para evitar que os fios soltos se desgastem durante o uso ou que os fios da matriz entrem em curto, tudo é generosamente coberto com cola quente - feio, mas eficaz!
A última etapa para fazer o teclado funcionar é programar o Arduino com o código ZX_Spectrum_Keyboard do meu repositório. Feito isso, você pode realmente colocar o ferro de solda no chão, conectar o teclado em um computador normal e usá-lo com um emulador Spectrum como Fuse ou Spectaculator. Mas não vamos parar aqui, então vamos em frente …
Etapa 2: Tela LCD
O Spectrum original tem uma resolução de tela de 256x192 pixels. Para manter (aproximadamente) essa proporção e evitar barras pretas em ambos os lados, selecionei uma tela de toque Waveshare 3.2 320x240 TFT LCD projetada para o Raspberry Pi. Ela não será conectada diretamente ao cabeçalho GPIO do Pi, então podemos remover o plástico do conector envolve e apara os pinos. Cortei um protoboard de 7x9cm para 2,1x9cm (o tamanho exato não importa, contanto que os dois orifícios de canto restantes se alinhem com os orifícios superiores do teclado e haja espaço suficiente para soldar os pinos do cabeçalho GPIO) e soldou os pinos na posição, o que nos dará uma maneira fácil de montar a tela acima do teclado.
Precisamos apenas conectar o SPI, os pinos de alimentação e de E / S da tela de toque ao Pi - pode ser bem complicado rastrear quais pinos são realmente necessários, mas a informação está lá se você olhar bem. A tela Waveshare usa 10 pinos: 4, 6, 9, 13, 15, 19, 21, 23, 24 e 26. Obviamente, se você estiver fazendo isso com uma tela diferente, você precisará verificar os pinos corretos antes agarrando seu ferro de solda.
Não é necessária nenhuma configuração de software especial - basta instalar o software do driver do fabricante e ele está pronto para ser usado.
Etapa 3: sem fio (Bluetooth)
A placa Raspberry Pi Zero não tem capacidade sem fio, apenas uma porta USB útil e não vai haver espaço suficiente no case para um hub USB, então eu tive que ser um pouco inventivo para adicionar algum tipo de capacidade sem fio para minha construção. Se você estiver construindo isso com o Zero W, você pode pular esta etapa.
Há um recurso interessante do Raspberry Pi que nos permitirá adicionar uma capacidade sem fio útil. Ao conectar um módulo serial Bluetooth HC-05 barato aos pinos UART do Pi e ajustar a configuração do sistema, é possível obter acesso sem fio ao terminal de linha de comando usando serial sobre Bluetooth. Podemos então usar ferramentas comuns para enviar arquivos ao dispositivo e gerenciar o sistema de arquivos.
Etapa 4: alimentação
Eu escolhi minha bateria no final do desenvolvimento, então precisei escolher uma célula que se encaixasse no espaço disponível. O que escolhi foi um 2000mAH 25C 1S Lipo (dimensões: 81x34x9mm) vendido como um substituto para o drone Walkera Syma X5. Seria bom poder carregar a bateria no local com uma conexão USB normal e poder usar o dispositivo enquanto ele está sendo carregado. Não queremos realmente mexer com circuitos complexos de controle de energia, então vamos usar um módulo pronto que fornece carregamento USB e também uma saída de 5 V aumentada para alimentar o Pi diretamente. Para garantir que o dispositivo possa ser desligado completamente, há um interruptor deslizante entre a saída deste módulo e o Pi que garante que a bateria ainda possa ser carregada mesmo quando o dispositivo é desligado. O Pi precisa ser desligado corretamente para evitar problemas de corrupção de dados. Em vez de precisar fazer login via Bluetooth serial, podemos conectar um interruptor tátil ao pino 5 do Pi (GPIO3) e escrever um pequeno script que observa isso e inicia um desligamento quando é pressionado. Os componentes de alimentação e wireless foram soldados a outro protoboard de 7x9cm que ficará diretamente abaixo do teclado.
Etapa 5: conectando tudo junto
Com todas as várias peças construídas, podemos montar os internos. O maior problema que encontrei durante a montagem foi que a porta USB quebrou meu Arduino Pro Micro, exigindo que eu soldasse os fios diretamente nas almofadas de solda em vez de usar um cabo USB. Este é um ponto fraco notório nas placas Pro Micro, então provavelmente vale a pena aplicar uma boa quantidade de cola quente antes da montagem para evitar isso. Supondo que esse infortúnio específico não aconteça com você, você tem uma escolha: você pode fazer um cabo micro USB super fino para micro USB para conectar seu teclado ao Pi ou pode soldar uma ou ambas as extremidades diretamente nas placas. Como eu precisava soldar o lado do Arduino, também soldei o lado do Pi diretamente nos pontos de teste na parte traseira da placa. Existem prós e contras em cada opção, portanto, você decide qual prefere.
Estaremos mantendo as placas juntas com isolantes de náilon M3. Precisamos de separadores de 2x 9 mm para conectar os orifícios inferiores entre o teclado e o painel de alimentação. Os orifícios superiores também retêm a tela, por isso queremos espaçamentos de 2,5 mm entre o teclado e a tela e espaçamentos de 4,5 mm entre a tela e o painel de alimentação. A foto ao lado mostra como isso se parece. Os impasses precisarão de um pequeno corte cuidadoso para colocar tudo em paralelo - pode ser um pouco apertado com todos os fios do teclado, mas devem ficar juntos. Como pode ser visto pelas fotos, o dispositivo pode ser ligado e usado após a montagem, sem a necessidade de um gabinete real. Estaremos imprimindo um gabinete em breve, mas, antes de chegarmos a isso, precisaremos instalar o sistema operacional e configurá-lo.
Etapa 6: Software
Com os internos montados, podemos prosseguir com a instalação e configuração do software. O Raspberry Pi será executado em uma instalação Raspbian padrão. O único software extra que precisa ser instalado, além dos drivers de tela TFT, é o aplicativo Fuse. Estamos usando a versão SDL para obter a funcionalidade adequada de tela inteira, que pode ser instalada com:
sudo apt-get install fuse-emulator-sdl
Para lidar com nossos pressionamentos de botão de desligamento, copie o script de 'desligamento' do meu repositório de código para / home / pi /
Para obter um console serial por Bluetooth, adicione a seguinte linha a / boot / config:
enable_uart = 1
Queremos que nosso script de desligamento e o emulador Fuse sejam executados na inicialização, portanto, adicione essas linhas a / etc / xdg / lxsession / LXDE-pi / autostart:
@ / home / pi / shutdown
@fuse-sdl --no-sound --kempston --no-auto-load
Reinicie o Pi após fazer essas alterações e pronto.
Etapa 7: Gabinete e montagem final
O gabinete foi modelado no Fusion 360 (como fazer isso está fora do escopo deste instrutível). Existem 5 partes: a parte posterior da caixa, a parte frontal da tela, a parte frontal do teclado, o botão liga / desliga e a tampa do painel de controle. A tampa do painel de controle deve ser impressa em um filamento flexível (usei PLA flexível, mas um material mais macio como NinjaFlex pode ser melhor); todo o resto deve ser impresso em plástico rígido (usei PLA preto Filamentum).
Para dar ao botão liga / desliga alguma resistência e evitar que ele chacoalhe, cole um pouco de espuma adesiva de 3 mm em sua parte traseira e, em seguida, faça um orifício de 4 mm para permitir que ele se encaixe confortavelmente sobre o interruptor tac vertical na placa de circuito impresso de força. Pode ser necessário aparar um pouco uma das bordas, como pode ser visto nas fotos, para evitar prender o painel de alimentação. Também achei útil usar um pouco de cola para segurar o botão da chave liga / desliga.
Precisamos colar alguns isolantes de náilon nos suportes superiores do painel frontal da tela para permitir que as partes superiores do gabinete sejam presas com segurança. Depois de seco, corte o nivelamento dos impasses.
Para encaixar as placas, primeiro precisamos criar os postes de montagem. Remova as cabeças de alguns parafusos de náilon M3 e cole as partes roscadas nos orifícios inferiores de cada um dos painéis frontais. Quando estes secarem, os 2 painéis frontais podem ser colados e o teclado pode ser fixado no lugar usando os espaçadores de 9 mm e 2,5 mm. Em seguida, com isso no lugar, a tela pode ser colocada nos postes superiores e os espaçadores de 4,5 mm podem ser adicionados. Finalmente, o painel de alimentação pode ser colocado em posição e os fios dispostos para permitir que a parte traseira seja encaixada.
A bateria deve ser presa no lugar com alguma fita dupla-face ou folha de espuma e conectada ao conector de alimentação. Agora as duas metades podem ser unidas e alguns parafusos de máquina M3 escareados curtos usados para fixar tudo no lugar.
Finalmente, vire-o e cole a tampa do painel de controle no painel do teclado. Fiz isso com um adesivo epóxi de duas partes para uma ligação forte.
Etapa 8: Sobreposição de teclado
Estamos quase terminando. Tudo o que está faltando são algumas marcações-chave e uma sobreposição para que saibamos como encontrar todas essas palavras-chave maravilhosas.
As letras e números primários estão nas partes superiores dos interruptores reais. Eu encontrei algumas transferências de letras realmente pequenas de 2,5 mm que se encaixam perfeitamente nos topos de 4 mm de diâmetro. Eles são um pouco complicados de aplicar porque os topos se movem conforme você os esfrega, mas você recebe algumas letras em um pacote, então não há problema em cometer alguns erros. Acabei retocando alguns com um marcador permanente fino, embora, em retrospectiva, devesse ter tentado mergulhá-los em água morna e colocá-los no lugar (se você já construiu um kit de modelo, você deve estar familiarizado com este processo) Para proteger as letras durante o uso, passei um pouco de verniz de unha transparente no topo de cada tecla.
Para evitar que os corpos prateados dos interruptores apareçam nas lacunas da sobreposição, usei um marcador permanente para colori-los - isso pode ser visto na linha inferior de uma das fotos.
Eu projetei as sobreposições impressas no programa gráfico GIMP de código aberto e as imprimi em papel fosco de qualidade fotográfica. O ideal é que as sobreposições sejam as mais finas possíveis - consegui descascar a parte de trás do papel da marca Epson que usei com muita facilidade, embora esse não seja o caso com todas as marcas. Para proteger a impressão, cobri o papel com uma folha adesiva de vinil transparente e apliquei fita dupla-face na parte de trás para colar na caixa. Antes de colar as sobreposições, no entanto, precisamos fazer os furos. Usei um furador de couro de 4 mm barato e obtive os melhores resultados afiando os furos e cortando diretamente contra um pedaço de folha de alumínio de 3 mm. Em seguida, as sobreposições precisam apenas ser alinhadas e fixadas.
Etapa 9: Conclusão
E terminamos! Este foi um projeto bem grande que exigiu uma gama de habilidades, incluindo eletrônica básica, soldagem, modelagem 3D, programação e até mesmo um pequeno layout gráfico. No final das contas, tem sido muito gratificante e o dispositivo finalizado é muito divertido de se jogar, mas como ele se sai em relação aos meus critérios originais?
Barato: o custo geral de tudo, incluindo os preços atuais de varejo de itens que já possuí e os itens de papelaria, como fita dupla-face, que vai durar muito além deste projeto, é de cerca de £ 80, o que o torna um projeto acessível.
Portátil: é definitivamente portátil. Este dispositivo cabe confortavelmente no bolso e é totalmente autônomo, para que possa ser usado em qualquer lugar. Se eu fosse construí-lo novamente, faria um controlador tipo joypad plano de 4 vias em vez de usar o stick de navegação, pois ele se projeta acima da linha do dispositivo, deixando-o vulnerável a danos. Eu também gostaria de ver se uma tela não sensível ao toque de tamanho e proporção semelhantes está disponível com uma capa mais resistente a arranhões, já que não preciso da interface da tela sensível ao toque e a superfície resistiva é particularmente propensa a danos.
Teclado e joystick: estou muito satisfeito com a forma como funcionaram. Embora não tenha a sensação de carne morta do original, usar o teclado parece surpreendentemente uma reminiscência do antigo ZX Spectrum - o layout, a sobreposição e a implementação de palavras-chave funcionam bem em conjunto para conseguir isso. O teclado USB também pode ser usado sozinho com um computador executando o emulador Fuse para fornecer a mesma experiência.
Instantâneo: o uso do módulo serial Bluetooth torna relativamente fácil transferir arquivos de fita para o dispositivo de outro computador sem a necessidade de sair da interface do Fuse, e deve ser possível agilizar ainda mais o processo escrevendo um script do lado do cliente para enviar um arquivo para o dispositivo. Eu preferiria poder usar o recurso padrão de transferência de arquivos Bluetooth "enviar para o dispositivo" embutido na maioria dos sistemas operacionais, ou um sistema de compartilhamento de arquivos adequado como o Samba. No entanto, eles só estarão disponíveis com a placa Pi Zero W e não a usei para esta compilação.
Além dos itens observados acima, se eu começasse este projeto novamente do zero, escolheria uma bateria mais fina com uma capacidade maior no início do projeto e projetaria em torno dela, em vez de precisar selecionar uma bateria de tamanho adequado no final de o projeto. Eu também usaria um Pi Zero W em vez de um módulo serial Bluetooth para expandir as opções de envio de arquivos para o dispositivo. Outra melhoria óbvia seria algum tipo de indicação do estado da bateria do hardware, já que atualmente não há como ver quanta carga resta. Eu também consideraria usar um sistema operacional baseado em Ramdisk como o Alpine Linux, que seria mais tolerante a desligamentos forçados e permitiria um único botão liga / desliga sem a necessidade de um botão de desligamento separado - muito mais parecido com o ZX Spectrum original, apenas desligue-o quando terminar.
Pode ser interessante projetar um PCB personalizado para este dispositivo que, potencialmente, nos permitiria colocar os componentes de alimentação na parte de trás do teclado ao invés de ter uma placa separada. Isso pode reduzir significativamente a profundidade do dispositivo acabado. Também tornaria a montagem do dispositivo mais fácil e ofereceria o potencial de algum tipo de kit de automontagem. Se houver interesse suficiente neste projeto, posso fazer uma versão 2 que trate desses problemas.
Etapa 10: Recursos
Os seguintes recursos são necessários para construir este projeto:
Arquivos de casos imprimíveis em 3D (Thingiverse):
Código (Github):
Recomendado:
MutantC V3 - PC HandHeld modular e poderoso: 9 etapas (com imagens)
MutantC V3 - PC HandHeld modular e poderoso: uma plataforma portátil Raspberry-pi com um teclado físico, display e cabeçalho de expansão para placas personalizadas (como o Arduino Shield) .mutantC_V3 é o sucessor de mutantC_V1 e V2. Verifique mutantC_V1 e mutantC_V2.https: //mutantc.gitlab.io/https: // gitla
MutantC_v2 - um Raspberry Pi Handheld / UMPC fácil de construir: 8 etapas (com imagens)
MutantC_v2 - um Raspberry Pi Handheld / UMPC fácil de construir: uma plataforma portátil Raspberry-pi com um teclado físico, display e cabeçalho de expansão para placas personalizadas (como o Arduino Shield) .mutantC_V2 é o sucessor de mutantC_V1. Verifique mutantC_V1 aqui.https: //mutantc.gitlab.io/https: //gitlab.com/mutant
ESP32 Handheld Game Console: 21 etapas (com imagens)
ESP32 Handheld Game Console: Estes instructables mostram como usar um ESP32 e ATtiny861 para construir um console de jogo emulador NES
De um Pocket Phaser a um Pocket Laser: 6 etapas
De um Pocket Phaser para um Pocket Laser: neste projeto, estaremos convertendo um pequeno brinquedo Star Trek Phaser que encontrei na Barnes & Nobre para um apontador laser. Eu tenho dois desses phasers, e um ficou sem bateria para o light up bit, então decidi convertê-lo em um laser recarregável p
Handheld 6 Note Music Box / Instrument (fácil de fazer e melhorar!): 5 etapas (com imagens)
Handheld 6 Note Music Box / Instrument (Fácil de fazer e melhorar!): Hi there! Inspirado por Martin Molin, membro de uma banda sueca chamada Wintergatan, recentemente me apaixonei por caixas de música e tudo sobre elas. Pessoas que fazem músicas para caixas de música ainda estão usando a maneira antiga de perfurar a música, não