Tabla de contenido:

Computadora BÁSICA de mano: 6 pasos (con imágenes)
Computadora BÁSICA de mano: 6 pasos (con imágenes)

Video: Computadora BÁSICA de mano: 6 pasos (con imágenes)

Video: Computadora BÁSICA de mano: 6 pasos (con imágenes)
Video: CÓMO DIBUJAR UNA COMPUTADORA FACIL PASO A PASO 2024, Mes de julio
Anonim
Computadora BÁSICA de mano
Computadora BÁSICA de mano
Computadora BÁSICA de mano
Computadora BÁSICA de mano

Este Instructable describe mi proceso de construcción de una pequeña computadora de mano que ejecuta BASIC. La computadora está construida alrededor del chip AVR ATmega 1284P, que también inspiró el nombre tonto de la computadora (HAL 1284).

Esta construcción está MUY inspirada por el increíble proyecto que se encuentra aquí y la insignia SuperCON BASIC.

La computadora ejecuta una versión modificada de TinyBasic, aunque gran parte del software se basa en el proyecto de dan14. Por supuesto, puede seguir este Instructable, o incluso mejor, mejorarlo ya que cometí algunos errores.

Para este proyecto, también creé un manual. Menciona algunos errores y detalles para el monitor elegido, pero lo más importante es que tiene la lista de operaciones BÁSICAS.

Después de que esto se publicó, hice un video mostrando el proyecto.

Paso 1: Partes que utilicé

Partes que utilicé
Partes que utilicé
Partes que utilicé
Partes que utilicé
Partes que utilicé
Partes que utilicé

Para el IC principal:

  • ATmega 1284P
  • Cristal de 16 MHz
  • Condensador de cerámica de 2x 22pf
  • Resistencia de 10KΩ (para reiniciar pull up)
  • Botón de 4 pines (para reiniciar)
  • Reistor de 470Ω (para video compuesto)
  • Resistencia de 1 kΩ (para sincronización de video compuesto)
  • Puente de 3 pines (para señal de video)
  • Zumbador pasivo

Para control de teclado:

  • ATmega 328P (Como las que se usan en Arduino Uno)
  • Cristal de 16 MHz
  • Condensador de cerámica de 2x 22pf
  • Resistencia de 12x 10KΩ (para reiniciar pull up y botones)
  • Botón de 51x 4 pines (para el teclado real)

Por poder:

  • Regulador de voltaje L7805
  • LED de 3 mm
  • Resistencia de 220Ω (para LED)
  • 2 condensadores electrolíticos de 0,1 µF
  • Condensador electrolítico de 0,22 µF (puede sustituir este 0,22 y uno 0,1 por uno 0,33. También me han dicho que los valores realmente no importan, pero no soy bueno con los condensadores)
  • Puente de 2x 2 pines (para entrada de energía y para interruptor principal)

GPIO (tal vez agregue un par de motivos más):

  • Puente de 7 pines
  • 2 puentes de 8 pines
  • Puente de 2 pines (para 5V y GND)
  • Puente de 3-4 pines (para comunicación en serie)

Sin PCB:

  • Pantalla LCD de 4 "con video compuesto (la mía tenía un voltaje de entrada entre 7 y 30 V)
  • Soporte impreso en 3D para exhibición
  • Algún tipo de interruptor

Paso 2: el circuito

El circuito
El circuito

El circuito no es muy bonito y gran parte de la región IC principal está inspirada en dan14. Dicho esto, es un Arduino bastante sencillo en un circuito de placa de pruebas. El teclado es una cuadrícula simple y está controlado por el ATmega328. Los dos chips AVR se comunican a través de los pines serie UART.

Se adjuntan tanto una imagen como mis archivos Eagle y, con suerte, serán suficientes para recrear el circuito. Si no es así, no dudes en informarme y actualizaré el Instructable.

Paso 3: el PCB

El PCB
El PCB
El PCB
El PCB

El PCB tiene 2 capas y se crea usando Auto Route (¡Oh, qué agujero!). Tiene botones y LED indicador de encendido en la parte delantera y el resto en la parte trasera. Hice mi PCB con JCL PCB, e hicieron un trabajo increíble con él. Los archivos necesarios para recrear la PCB deben estar en los archivos Eagle de antes.

Le sugiero que rediseñe el PCB, ya que tengo algunas cosas que me gustaría haber hecho de manera diferente. Si te gusta mi diseño, todavía tengo (al momento de escribir) cuatro tableros sin usar que estoy más que dispuesto a vender.

La placa tiene cuatro taladros que he usado para montar la pantalla LCD.

Paso 4: carga del código

Subiendo el código
Subiendo el código
Subiendo el código
Subiendo el código
Subiendo el código
Subiendo el código

Tanto el 1284 como el 328, por supuesto, necesitan un código y el código que utilicé se puede encontrar aquí: https://github.com/PlainOldAnders/HAL1284 bajo ArduinoSrc / src. Simplemente utilicé el IDE de Arduino para modificar y cargar el código, pero antes de poder hacerlo, deberá grabar los cargadores de arranque en los circuitos integrados:

ATMega328:

Este es fácil, en el sentido de que hay mucho soporte sobre cómo grabar un cargador de arranque y cargar código en este IC. Por lo general, sigo esta guía, principalmente porque sigo olvidando los detalles.

El código para el 328 (bajo ArduinoSrc / keypad) es bastante simple. Se basa totalmente en la biblioteca Adafruit_Keypad-master-. En caso de que algo cambie sobre la lib, he incluido la versión que usé en mi página github en ArduinoSrc / lib.

ATmega1284:

Esto fue un poco difícil para mí cuando recibí el IC por primera vez. Comencé obteniendo el gestor de arranque desde aquí y seguí la guía de instalación. Para grabar el gestor de arranque, simplemente hice lo mismo que con el 328 y obtuve ayuda desde aquí. Para ambos circuitos integrados, solo usé un Arduino Uno para grabar el cargador de arranque y cargar el código (eliminé el IC de Arduino Uno al cargar).

El código (en ArduinoSrc / HAL1284Basic) es demasiado complicado para mí, pero pude modificar algunas partes del código:

Agregué un par de comandos (los marcados con [A] en el manual.pdf) y también cambié otros comandos:

Tono: el comando de tono solo usó la función de tono de Arduino antes, pero cuando se usaba la biblioteca TVout, esto hacía que el timbre no funcionara correctamente. Lo cambié para usar la función de tono de TVout, pero esto significa que el pin de tono TIENE que ser el pin 15 (para el atmega1284)

Comunicación en serie: dado que el teclado es de bricolaje, utiliza la comunicación en serie para leer los caracteres. Dado que el atmega1284 se usa aquí, hay dos líneas de comunicación serie disponibles, y cuando "sercom" está habilitado, el código también permite escribir a través del puerto serie (desde una computadora o lo que sea).

Resolución: el monitor utilizado para este proyecto es bastante tonto y se necesita una resolución pequeña, o la imagen parpadea. Si se utiliza un monitor mejor, le sugiero que cambie la resolución en la función de configuración.

Paso 5: Montaje

Montaje
Montaje
Montaje
Montaje
Montaje
Montaje

Con el código cargado y la PCB y las piezas listas, ahora es el momento del ensamblaje. Todas las piezas que utilicé eran a través del orificio, por lo que la soldadura no fue demasiado difícil (a diferencia de los tipos rudos-SMD-soldadores que hay). El monitor se fijó a los cuatro orificios de la placa de circuito impreso con un soporte impreso en 3D. Si se utiliza otro monitor, es de esperar que se puedan utilizar los cuatro taladros para montarlo.

El soporte del monitor utilizado aquí también está diseñado para albergar un interruptor de palanca (conectado al puente "interruptor" en la PCB) y los tres botones de control del monitor. El soporte se fija con tornillos y espaciadores de plástico M3.

Para el enchufe de alimentación utilicé un conector PCB JST, aunque un conector de barril liso habría sido un poco más suave. Para alimentar la placa, cambié entre una fuente de alimentación de 12V o tres baterías 18650 en serie. Un vaquero más suave que yo probablemente podría diseñar un soporte de batería elegante para la tabla.

Paso 6: Errores y trabajo futuro

Teclas de flecha: las teclas de flecha se colocaron accidentalmente y no tienen mucha función. Esto dificulta la navegación

E / S de archivos: existen capacidades de E / S de archivos, pero no están implementadas. Para combatir esto, el software HAL1284Com puede cargar archivos en la placa. También es posible cargar en la EEPROM.

PEEK / POKE: PEEK y POKE no han sido probados y no estoy seguro de cuáles son las direcciones.

Break: Break (Esc) a veces ha estado jugando con todo el código, cuando está en bucles infinitos.

Pin 7: El pin 7 de PWM puede resultar difícil cuando se intenta DWRITE High o AWRITE 255. Funciona bien con AWRITE 254.

Idiota: Sería ideal también poder cargar a través de UART1, pero la carga solo es posible a través de UART0, por lo que la carga deberá realizarse extrayendo el IC principal. La pantalla y el regulador de voltaje 5 se calientan demasiado cuando están funcionando durante mucho tiempo.

Recomendado: