Skip to content

Latest commit

 

History

History
183 lines (173 loc) · 8.1 KB

readmeSpanish.md

File metadata and controls

183 lines (173 loc) · 8.1 KB

Belial01

Este proyecto pretende continuar con el legado de la Diskmag multiplataforma Exilium (Belial 01), bajo un ATMEGA328 (arduinocade).
Primero necesitamos una plataforma hardware, que en este caso, será el arduinocade (Peter Barrett).
Para poder acercar la plataforma al máximo número de personas, se realizará un primer diseño bajo una placa de ARDUINO UNO sin necesidad de cambiar el cristal de 16 Mhz (sacrificando el color), así como la mayor compatibilidad de pines y hardware del arduinocade.



IDE Arduino

Se han realizado pruebas con el IDE 1.8.11.



Hardware

Se utiliza una placa ARDUINO UNO, dotada de ATMEGA328, así que también valdría DUEMILANOVE o NANO, respetando la localización de los pines.
Se hará uso de los mismos pines del arduinocade:

  • Video - D1 y 9
  • Audio - D6
Se dejarán libres para futuro los pines específicos del arduino:
  • A4,A5 - I2C para conectar EEPROM LC256
  • 13,12,11- Programador ISP
  • D2 y D3 - Teclado PS/2
Para el joystick usaremos:
  • ATARI - A0,A1,A2,A3,D4 y D5
Se ha quitado los pines y el módulo de infrarojos del arduinocade, pero a cambio usaremos mandos de norma ATARI y AMSTRAD CPC.

Video

Se utiliza el modo SPI (Dave Schmenk) para generar video, similar al arduinocade, pero con la diferencia, de seguir con el mismo cristal de 16 Mhz del arduino, de forma que se genera una señal:

  • CVBS RCA
  • NTSC blanco y negro
  • Hsync 63.55 microsegundos
  • 320x200 pixels
  • Tiles 40x25
  • DAC simple resistencia 1 K y 470 ohmios
El circuito a realizar es el siguiente:



Mezclador audio

El audio de arduinocade se caracteriza por:

  • PWM - pin D6
  • Salida mono
  • 4 canales
  • Resistencia 100 K
He decidido seguir usando el pin 6 de audio para compatibilidad, pero he sustituido la resistencia fija de 100 K por un pontenciómetro Logaritmico de 100 K, que permite regular el volumen.

También he añadido un mezclador de audio pasivo simple, de manera que podemos mezclar la salida del arduinocade MONO con una entrada de audio estereo. Para ello debe usarse resistencias de 1 K para cada entrada:

Gracias a este mezclador, podremos poner música de fondo de dispositivos de audio externos, mientras suena la música del arduinocade.

Test joystick ATARI

He creado un programa de Test de joystick ATARI para Arduino, que nos permite testear la pulsación de los botones:

joystickTestDB9

Se usa la norma de ATARI y AMSTRAD CPC de masa común, PULLUP, y los pines a usar en ARDUINO son:
  • Arriba - 14 (A0)
  • Abajo - 15 (A1)
  • Izquierda - 16 (A2)
  • Derecha - 17 (A3)
  • A - 4
  • B - 5
La representación del conector DB9 es la siguiente:

El circuito es muy simple:



Jukebox

Disponemos de:
  • Parte servidora (móvil u ordenador) en navegador web que recibe peticiones de comandos de sonido, via tonos de audio
  • Arduinocade generando comandos de control de canciones via sonido
Básicamente, el arduinocade envia tonos de audio a una aplicación web que los decodifica, para en función del comando, ejecutar una canción.
JUKEBOX DTMF (github)
JUKEBOX DTMF (online)
Los tonos que se generan son monotono cuadrados, pero de 2 tipos:
  • Con sincronismo NTSC de 63.55 microsegundos
  • Normales sin interrupción de sincronismo de video
En el primer caso, se generan unos tonos múltiplos del sincronismo horizontal de video, de forma que no se deja de dibujar en pantalla, pero la onda no es pura. Debemos pues en la parte HTML5, tener quitado el checkbox DTMF, es decir, escucharemos tonos monotono, y debemos tener activa la casilla NTSC.
Para el segundo caso, se dejará de dibujar en pantalla cada vez que se genere sonido, pero se generará una onda más pura. Debemos en la parte HTML5 tener quitado el checkbox DTMF y el NTSC.

Los comandos que se envian como nonotono son:
  • #00* - Track 0
  • #01* - Track 1
  • #02* - Track 2
  • #04* - Track 3
  • #07* - Track 4
  • #0D* - Track 5
  • #10* - Track 6
  • #11* - Track 7
  • #12* - Track 8
  • #14* - Track 9
  • #24* - Track 10
  • #20* - Next Track
  • #21* - Last Track
  • #22* - Play/Pause
  • #17* - + Volumen
  • #1D* - - Volumen
La conversión de tono a Hz con NTSC (sacando video):
  • 0 - 1336 Hz
  • 1 - 697 Hz
  • 4 - 770 Hz
  • 7 - 852 Hz
  • D - 1633 Hz
  • # - 561,98718669215 Hz
  • * - 393,3910306845 Hz
  • 2 - 302,60848514192 Hz
La conversión de tono a Hz sin NTSC (sin sacar video):
  • 0 - 1336 Hz
  • 1 - 697 Hz
  • 4 - 770 Hz
  • 7 - 852 Hz
  • D - 1633 Hz
  • # - 1477 Hz
  • * - 941 Hz
  • 2 - 1209 Hz
Desde la aplicación en Arduino, podemos usar los botones del mando:
  • Arriba - Subir volumen
  • Abajo - Bajar volumen
  • Izquierda - Canción anterior
  • Derecha - Canción siguiente
  • A - Play/Pause
  • B - Modo NTSC sin dejar de dibujar en pantalla, o sin interrupciones, dejando de dibujar
Para esta prueba, se ha usado un modo extra lento (500 ms tono, 500 ms silencio) y con 4 tonos de envio #xx*, pero modificando el código podemos poner el modo FAST con sólo 2 tonos y máxima velocidad. Debemos pues, también poner dichas opciones en la parte decodificador web.

HTML5

He creado varias herramientas:

  • Conversor de imágenes a Tiles (eliminación de repetidos)
  • Simulador visual 40x25 de todo el mapa de memoria del arduinocade en HTML5
  • Simulación de Joystick en HTML5
  • Simulación de sonido en HTML5
De esta forma, se puede ver e interactuar, tal y como si se dispusiera de un arduinocade, pero desde el navegador. Lamentablemente, todo el código js que utilizo es de uso propio, por lo que no es cómodo al usuario final, y no lo he subido al repositorio. El código de Arduino si esta subido.

Consola

La captura del test del joystick en el arduino:

La captura del Jukebox en el arduino:

Se puede meter en una simple caja de madera o de plástico.