Autor Tema: Controlador inalámbrico para c64  (Leído 54044 veces)

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Controlador inalámbrico para c64
« en: Marzo 22, 2016, 15:19:49 »
¿Vas a conectar un monociclo real al commodore? :o

si. estoy pensado en algunas posibles maneras:

a)
me armo un "joystick" para el monociclo con una suerte de las alfombras de dance-dance-revolution, y con el monociclo tenes que pisar "arriba" y "abajo" para avanzar. claro que la alfombra no puede ser "alfombra" porque sino uno se patina con el monociclo.
Ya existen adaptadores de alfombra DDR para la c64: http://www.oursyntheticdreams.com/products/psx64-interface
http://kipper2k.com/psx.html
http://www.ebay.com/itm/NEW-Cyclone-RX-Playstation-Joystick-Gamepad-Adapter-for-Commodore-Amiga-/111338931916

el problema de esto, es que hay que tener:
  - una alfombra DDR
  - el conversor de la DDR para la c64

b)
"pegar" un smartphone al pedal (la parte de abajo) del monociclo, y usar el acelerómetro para detectar el movimiento. y luego enviar por wifi (o bluetooth) los movimientos.

el problema aca es que tengo que armar yo el receptor de wifi (o bluetooth) (y de esto se muy poco, asi que me a llevar varios meses en tratar de hacer algo).

c)
alguien ya hizo un joystick remoto usando RF: http://akikorhonen.org/projects/wireless-tac-2/
y ver  de adaptar eso

d)
alguna otra idea?



Esta claro que al público al que apunto es muy limitado:
- le tienen que gustar los jueguitos (mucha gente)
- tiene que saber andar en monociclo (muy poca gente)
- y además tener una commodore 64 (seguimos reduciendo la audiencia)
- y querer armar (o comprar) el adaptador para para enchufarlo al monociclo (probablemente la audiencia sean 1 o 2 personas en el mundo: yo y quizas alguien más).



 
« última modificación: Marzo 22, 2016, 15:58:12 por riq »

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Controlador inalámbrico para c64
« Respuesta #1 en: Marzo 22, 2016, 16:35:38 »
Eso es proyección de mercado y lo demás tonterías.  ;D

Creo que usar un mono-ciclo en el interior y sobre una superficie deslizante no es buena idea, excepto para los fabricantes de yeso, anti inflamatorios y calmantes en general.

Algo construible para cualquiera... barato... sencillo pero funcional...

Dime más sobre lo que podrías usar para gobernar el mono-ciclo .

Un nivel de inclinación para saber si vas hacia adelante o hacia atrás.
Un encoder que mida a la velocidad que pedaleas. y hacia qué dirección o un motorcillo DC de imanes permanentes acoplado a los pedales que genere corriente al pedalear. Con un divisor de tensión, se dejan 2.5V (dirección de pedaleo 0) .
Se conecta en serie y cuando pedaleas hacia adelante, aumente esa corriente y si pedaleas a la contra, que reste.   
Sensores de presión que detecten el salto (y/o la inclinación a la vez..2 quizás).

Sensores así los hay por 4 chavos en ebay y Arduinos baratisimos para prototipos.
« última modificación: Marzo 22, 2016, 17:00:00 por Maniako »
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Controlador inalámbrico para c64
« Respuesta #2 en: Marzo 22, 2016, 16:40:16 »
Madremia... el nivel de frikismo ha subido de repente en esta página :D :D
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Controlador inalámbrico para c64
« Respuesta #3 en: Marzo 22, 2016, 17:07:02 »
Se conecta en serie y cuando pedaleas hacia adelante, aumente esa corriente y si pedaleas a la contra, que reste.   

buenísimo!

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Controlador inalámbrico para c64
« Respuesta #4 en: Marzo 22, 2016, 18:42:15 »
ya esta medio offtopic esto, pero agrego que encontré más o menos lo que quiero usar:
http://hackaday.com/2008/07/05/wii-style-controls-for-the-commodore-64/

(pero usando un smartphone en vez de un acelerometro puro).
Si alguien sabe como armar la parte que se conecta a la c64, avise... ya que se bluetooth (o usb host + bluetooth) o wifi.
gracias!

en lo posible, quiero que sea wireless para que el monociclo (van a hacer 2) se muevan con más libertad. se va a complicar si hay cables.

actualizo: aca postié con más detalle lo que ando necesitando: http://www.lemon64.com/forum/viewtopic.php?p=726254#726254
« última modificación: Marzo 22, 2016, 19:08:30 por riq »

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Controlador inalámbrico para c64
« Respuesta #5 en: Marzo 22, 2016, 21:45:23 »
Ahí me pillas.
Me he hecho muchos cacharros con arduino pero ninguno con comunicación inalambrica.
Hay multitud de interfaces de todo tipo. Hablar con ellos no creo que sea dificil, lo complicado seria hablar con el movíl, en concreto con el acelerometro y procesar esos datos para hacerlos comprensibles para el Commodore.
Seguro que hay APP's que lo permiten.
Mmmmm... me voy a pillar algunos de estos cacharros para probar. Aunque tardarán en llegar de China.
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Controlador inalámbrico para c64
« Respuesta #6 en: Marzo 22, 2016, 21:46:58 »
Creo que tendrías que abrir un hilo sobre interfaces  ;)
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13630
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:Controlador inalámbrico para c64
« Respuesta #7 en: Marzo 22, 2016, 21:54:24 »
El puerto 1 del joystick tiene las opciones del paddle, seguro que sirven
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Controlador inalámbrico para c64
« Respuesta #8 en: Marzo 22, 2016, 22:40:11 »
@josepzin  ¿podrías mover estos mensajes a otro hilo?

@Maniako gracias. creo que va por ahí la cosa. Uno en lemon64 me dió el mismo tip: arduino + esp8266.

nunca usé un esp8266, pero siempre tuve ganas de jugar con uno. creo puedo hacer la parte de smartphone  <--> arduino + esp8266... luego veré como enviar las señales por el db9. supongo que no debería ser difícil, pero nunca hice nada de hardware para la c64 y tengo que tener mucho cuidado de no enviar voltaje por ciertos pines para no quemar nada... creo que voy a necesitar ayuda con eso.

con respecto a leer el acelerometro del smartphone, es relativamente sencillo. hay una API para eso. Solo hay que aplicarle un filtro de paso-alto. creo que todo el software lo puede hacer sin problemas.

Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1008
  • SYS 8*4096
    • Ver Perfil
Re:Controlador inalámbrico para c64
« Respuesta #9 en: Marzo 22, 2016, 23:11:36 »
Arduino y commodore son TTL. Muy dificil dañar algo. A no ser que hagas cortocircuitos directos ;)

Voy a encargar un par de la misma referencia que te han recomendado para tener lo mismo y poder ir paralelos si hay algun problema.

LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:Controlador inalámbrico para c64
« Respuesta #10 en: Marzo 22, 2016, 23:42:08 »
Si no vas a usar nada como salida es muy seguro usar los puertos de joystick, son 5 entradas TTL que leen 1 y hay que mandar a masa para que detecte 0, que es lo que hace el joystick al activar el boton o alguna direccion. Ademas de eso, hay dos entradas de potenciometro que se usan para los paddles o el raton de Commodore.
Las entradas (que tambien pueden programarse como salida) las manejan las CIA, las lineas del puerto 1 estan compartidas con la lectura del teclado y pueden interferirse mutuamente. Las entradas analogicas las lee el SID.
Si vas a hacer cosas mas complejas que requiera salidas, muchas mas de 5 lineas de E/S, entradas de pulsos que necesitas contar por hard, puerto serie o interrupciones, te conviene usar el puerto del usuario, pero ahi ya perdes la simpleza del juego, que ahora interpreta todo como si fuera un joystick.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Controlador inalámbrico para c64
« Respuesta #11 en: Marzo 22, 2016, 23:45:01 »
@Maniako
ok. buenisimo. gracias.

@pastbytes
gracias por el dato. si, por el momento prefiero que emule el joystick.



duda de novato: ¿se necesita un arduino para todo esto? ¿o se puede hacer todo directamente con el esp8266?
Por ejemplo el Huzzah de Adafruit: https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/overview parece tener todo lo necesario.
gracias!

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:Controlador inalámbrico para c64
« Respuesta #12 en: Marzo 22, 2016, 23:57:10 »
No se como funcionan esos modulos, pero deben ser parecidos a otros que se pueden controlar desde una terminal por uno de los puertos serie que tiene. Probablemente use comandos AT como los modems para cambiar parametros o activar funciones.
El tema es que la C64 para comunicacion RS232 no da mas de 1200 bps con las rutinas de la ROM, yo hice unas rutinas para enviar y recibir a 57600 bps, pero no podes hacer nada mas mientras las ejecutas, y requiere ejecutarlas durante el borde de pantalla o directamente deshabilitando el VIC. En un juego esto no es practico, asi que podes usar un PIC o AVR si no queres que el aparato sea muy grande, o un Arduino que es lo mismo.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Controlador inalámbrico para c64
« Respuesta #13 en: Marzo 23, 2016, 00:56:50 »
gracias @pastbytes

si digo alguna boludez, decime ya que soy novato en esto.

Por lo que leí, el esp8266 tiene GPIOs, y tiene una API para poder configurar estos GPIOs como uno quiera:
http://esp8266.co.uk/tutorials/introduction-to-the-gpio-api/
https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/pinouts

también esta la salida serial que vos comentabas, pero creo que se usa más para programar el chip.
No pensaba usar la salida serial del esp8266, y solo quiero usar los ports de joystick de la c64 (no quiero enchufar nada al port de usuario o al port de expansión de la c64).

teniendo en cuenta eso ¿puedo usar estos GPIOs para conectarme directamente al port del joystick? (más / menos alguna resistencia),  ¿o tengo que usar si o si un arduino (o similar)?

gracias!

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 556
  • SYS 0
    • Ver Perfil
Re:Controlador inalámbrico para c64
« Respuesta #14 en: Marzo 23, 2016, 04:10:23 »
Habria que ponerse a leer las hojas de datos, pero sin leer puedo suponer que no podes usar los pines de GPIO para comunicaciones.
Yo solo trabaje con modulos GSM, y por lo que vi algunos otros modulos son similares, como algun modulo bluetooth. Los modulos estos son basicamente modems, y usan comandos de modem (AT), se comunican por un puerto compatible con RS232, algunos tienen ademas SPI o I2C, pero siempre suele ser un puerto serie porque usa menos lineas y cualquier microcontrolador hoy tiene esos puertos por hard.
En otra epoca se usarian como modems puros, es decir solo se enviaria y recibirian datos, y la pila TCP/IP, es decir todo el paquete de conectividad a internet, habria que implementarlo en el host, que puede ser una PC, un arduino, raspberry pi, un PIC, o en este caso la C64. La C64 no tiene poder de proceso para esto, se puede comunicar a muy bajas velocidades para mantener la conexion a internet, y asi pasa tambien con arduinos y pics, que si bien pueden procesar eso, les resta mucho tiempo para hacer otras cosas.
Entonces lo que se hace es integrar la pila TCP/IP dentro del modulo, es decir que el propio modulo mantiene viva la conexion y se encarga del protocolo de internet. Esto es equivalente a conectar una C64 a internet usando una PC como "router", la PC hace todo el trabajo y la C64 solo envia y recibe por ejemplo el texto de un IRC o lo que envias y recibis de un BBS. Por lo tanto la C64 solo maneja la comunicacion util, no toda la informacion de protocolo de TCP/IP que pasa por debajo.
Este modulo se conecta a internet por wifi, entonces para el caso tambien funcionaria como un modulo GSM, es un modem, y tambien hace el trabajo de ocuparse del protocolo TCP/IP, por lo que en teoria podrias conectarte desde la C64 por RS232 a baja velocidad con el modulo, el problema es que esta comunicacion ocupa mucho tiempo que le roba al juego.
En el modulo GSM, el puerto GPIO esta destinado a manejarlo desde el RS232, la utilidad es darle conectividad al modulo con botones, displays, cosas asi. Imaginate que un modulo GSM lo podes usar para hacer tu propio celular, entonces podrias poner un PIC que se encargue de leer el teclado, marcar, llamar, y mostrar en un display lo que sea necesario. Estos perifericos se conectarian al GPIO, en particular el teclado telefonico, los leds o display LCD. El PIC programaria el modulo para que genere una interrupcion si detecta un cambio en el GPIO si se presiona alguna tecla, el PIC entonces detecta la señal y le pregunta al modulo si el usuario tipeo algo, y toma la accion que corresponda (hace la llamada, muestra el digito en el display, etc.).
Mirando por encima esa aplicacion del modulo wifi, parece que usa el GPIO de esa manera, uno puede consultarle al modulo el valor de un pin del GPIO, colocar un valor en otro pin, o habilitarle la generacion de interrupciones ante algun cambio de estado. No creo que este diseñado para operar en solitario, sino tendria que tener un procesador mas poderoso y tendrias que cargarle un firmware para que procese datos recibidos por internet y te active los pines del GPIO que quieras. No creo que funcione de esa manera, pero podria equivocarme.
Digo todo esto para que tengas un panorama de como puede ser que se use, habria que leer las hojas de datos para saber si es asi, y si es asi, no quedaria otra que poner un arduino que espere determinados comandos en cierto puerto TCP. Tendrias que definir los comandos, por ejemplo IZQ, DER, ARR, ABA, DIS, y que segun el comando active los pines correspondientes del GPIO del modulo o del arduino. En el celular tendria que haber una aplicacion que convierta los movimientos a direcciones del joystick, y segun la direccion, envie a la IP del modulo wifi, al puerto que hayas configurado, el comando correspondiente, que no seria mas que el texto anterior (IZQ, DER, etc.).