Índice:

Computador BASIC de mão: 6 etapas (com imagens)
Computador BASIC de mão: 6 etapas (com imagens)

Vídeo: Computador BASIC de mão: 6 etapas (com imagens)

Vídeo: Computador BASIC de mão: 6 etapas (com imagens)
Vídeo: Programador Sênior VS júnior #short #shorts 2024, Novembro
Anonim
Computador BASIC de mão
Computador BASIC de mão
Computador BASIC de mão
Computador BASIC de mão

Este Instructable descreve meu processo de construção de um pequeno computador portátil rodando BASIC. O computador é construído em torno do chip ATmega 1284P AVR, que também inspirou o nome bobo do computador (HAL 1284).

Esta construção é PESADAMENTE inspirada no incrível projeto encontrado aqui e no emblema SuperCON BASIC.

O computador roda uma versão modificada do TinyBasic, embora muito do software seja baseado no projeto de dan14. Claro que você pode seguir este Instructable, ou melhor ainda, melhorá-lo já que cometi alguns erros.

Para este projeto, também criei um manual. Ele menciona alguns bugs e especificações para o monitor escolhido, mas o mais importante, ele contém a lista de operações BASIC.

Depois que isso foi publicado, fiz um vídeo apresentando o projeto.

Etapa 1: Peças que usei

Peças que usei
Peças que usei
Peças que usei
Peças que usei
Peças que usei
Peças que usei

Para o IC principal:

  • ATmega 1284P
  • Cristal 16MHz
  • 2x 22pf Capacitor de cerâmica
  • Resistor 10KΩ (para reinicialização)
  • Botão de 4 pinos (para reiniciar)
  • Reistor 470Ω (para vídeo composto)
  • Resistor de 1kΩ (para sincronização de vídeo composto)
  • Jumper de 3 pinos (para sinal de vídeo)
  • Buzzer Passivo

Para controle do teclado:

  • ATmega 328P (como os usados no Arduino Uno)
  • Cristal 16MHz
  • 2x 22pf Capacitor de cerâmica
  • Resistor 12x 10KΩ (para redefinir, puxar para cima e botões)
  • 51x botão de 4 pinos (para o teclado real)

Para poder:

  • Regulador de tensão L7805
  • LED de 3 mm
  • Resistor 220Ω (para LED)
  • 2x Capacitor eletrolítico de 0,1 µF
  • Capacitor eletrolítico de 0,22 µF (você poderia substituir este 0,22 e um 0,1 por um 0,33. Também me disseram que os valores realmente não importam, mas não sou muito bom com capacitores)
  • 2x jumper de 2 pinos (para entrada de energia e para interruptor principal)

GPIO (talvez adicione mais alguns fundamentos):

  • Jumper de 7 pinos
  • 2 jumpers de 8 pinos
  • Jumper de 2 pinos (para 5V e GND)
  • Jumper de 3-4 pinos (para comunicação serial)

Não PCB:

  • Display LCD de 4 "com vídeo composto (o meu tinha uma tensão de entrada entre 7-30 V)
  • Suporte 3D impresso para display
  • Algum tipo de interruptor

Etapa 2: o circuito

O circuito
O circuito

O circuito não é muito bonito e grande parte da região do IC principal é inspirada em dan14. Dito isso, é um Arduino bastante simples em um circuito Breadboard. O teclado é uma grade simples e é controlado pelo ATmega328. Os dois chips AVR comunicam-se através dos pinos UART Serial.

Uma imagem e meus arquivos Eagle estão anexados e, com sorte, serão o suficiente para recriar o circuito. Caso contrário, sinta-se à vontade para me informar que atualizarei o Instructable.

Etapa 3: o PCB

O PCB
O PCB
O PCB
O PCB

O PCB tem 2 camadas e é criado usando o roteamento automático (oh, que buraco **!). Possui botões e LED indicador de energia na parte frontal e o restante na parte traseira. Mandei fazer meu PCB com JCL PCB, e eles fizeram um trabalho incrível com ele. Os arquivos necessários para recriar o PCB devem estar nos arquivos Eagle de antes.

Eu sugiro que você redesenhe o PCB, pois tenho algumas coisas que gostaria de ter feito de forma diferente. Se você gostou do meu design, ainda tenho (até o momento) quatro placas não utilizadas que estou mais do que disposto a vender.

A placa tem quatro furos que usei para montar o display LCD.

Etapa 4: enviando o código

Carregando o código
Carregando o código
Carregando o código
Carregando o código
Carregando o código
Carregando o código

O 1284 e o 328, é claro, precisam de código e o código que usei pode ser encontrado aqui: https://github.com/PlainOldAnders/HAL1284 em ArduinoSrc / src. Eu simplesmente usei o IDE do Arduino para modificar e enviar o código, mas antes que isso possa ser feito, você precisará gravar bootloaders nos ICs:

ATMega328:

Este é fácil, no sentido de que há muito suporte por aí sobre como gravar um bootloader e fazer upload de código para este IC. Eu geralmente sigo este guia, principalmente porque sempre me esqueço dos detalhes.

O código para o 328 (em ArduinoSrc / teclado) é bastante simples. Ele depende totalmente da biblioteca master Adafruit_Keypad. Caso algo mude sobre a lib, incluí a versão que usei em minha página do github em ArduinoSrc / lib.

ATmega1284:

Isso foi um pouco difícil para mim quando recebi o IC. Comecei obtendo o bootloader daqui e segui o guia de instalação. Para queimar o bootloader, simplesmente fiz a mesma coisa que fiz com o 328 e recebi ajuda aqui. Para ambos os ICs, acabei de usar um Arduino Uno para gravar o bootloader e fazer o upload do código (o IC removido do Arduino Uno durante o upload).

O código (em ArduinoSrc / HAL1284Basic) é muito complicado para mim, mas fui capaz de modificar algumas partes do código:

Eu adicionei alguns comandos (aqueles marcados com [A] no manual.pdf) e também alterei outros comandos:

Tom: O comando de tom apenas usava a função de tom do Arduino antes, mas ao usar a biblioteca TVout, isso fazia com que a campainha não funcionasse corretamente. Eu mudei para usar a função de tom de TVout, mas isso significa que o pino de tom TEM que ser o pino 15 (para o atmega1284)

Comunicação Serial: Como o teclado é DIY, ele usa comunicação serial para ler os personagens. Uma vez que o atmega1284 é usado aqui, existem duas linhas de comunicação serial disponíveis, e quando "sercom" está habilitado, o código também permite a escrita através da porta serial (de um computador ou qualquer outro).

Resolução: O monitor usado para este projeto é muito burro e uma pequena resolução é necessária, ou a imagem pisca. Se um monitor melhor for usado, sugiro que você altere a resolução na função de configuração.

Etapa 5: Montagem

conjunto
conjunto
conjunto
conjunto
conjunto
conjunto

Com o código carregado e a PCB e as peças prontas, agora é hora de montar. Todas as peças que usei passavam por um orifício, então a soldagem não foi muito difícil (ao contrário dos caras da solda SMD-durões por aí). O monitor foi preso aos quatro furos no PCB com um suporte impresso em 3D. Se outro monitor for usado, os quatro furos podem ser usados para montá-lo.

O suporte do monitor usado aqui também é projetado para abrigar uma chave seletora (conectada ao jumper "switch" no PCB) e os três botões de controle do monitor. O suporte é fixado com espaçadores e parafusos M3 de plástico.

Para o plugue de alimentação, usei um conector JST PCB, embora um conector de barril liso teria sido um pouco mais suave. Para alimentar a placa, troquei entre uma fonte de alimentação de 12 V ou três baterias 18650 em série. Um cowboy mais esperto do que eu provavelmente poderia projetar um suporte de bateria para a prancha.

Etapa 6: Bugs e trabalho futuro

Teclas de seta: as teclas de seta foram colocadas acidentalmente e não têm muita função. Isso torna a navegação difícil

E / S de arquivo: Existem recursos de E / S de arquivo, mas não foram implementados. Para combater isso, o software HAL1284Com é capaz de enviar arquivos para a placa. Também é possível fazer upload para a EEPROM.

PEEK / POKE: PEEK e POKE não foram testados e não tenho certeza de quais são os endereços.

Break: Break (Esc) às vezes bagunça todo o código, quando em loops infinitos.

Pino 7: O pino 7 do PWM pode ser difícil ao tentar DWRITE High ou AWRITE 255. Funciona bem com AWRITE 254.

Idiota: Seria ideal também poder fazer o upload via UART1, mas o upload só é possível via UART0, então o upload terá que ser feito extraindo o IC principal. A tela e o regulador de tensão 5 ficam um pouco quentes demais quando em funcionamento por um longo período.

Recomendado: