Autor Tema: Wifi en Commodore  (Leído 4354 veces)

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 535
  • SYS 0
    • Ver Perfil
Wifi en Commodore
« en: Octubre 03, 2016, 11:36:56 »
No se si alguien hizo alguna prueba con estos modulos basados en el ESP8266, se que riq lo uso para el unijoysticle, pero mucha gente lo esta usando para conectar a internet cualquier ordenador con RS232. Vengo publicando esto en retrocomputacion hace unos dias, lo resumo un poco aca.
Con estos modulos, el C64 se conecta por RS232 (por el puerto del usuario) con un programa terminal comun, porque cree que es una conexion por modem, pero el modulo wifi hace de puente entre lo que el C64 envia y recibe, y lo que envia y recibe un BBS remoto por telnet. Lo interesante de esto es justamente que no hace falta soft especial, se usa cualquier terminal.
Como tenia uno de estos modulos guardado esperando probarse, decidi intentar conectarlo al C64, ya que habia hecho pruebas de RS232 a 3,3V, y podia aprovechar eso (el modulo se alimenta con 3,3V y hay que adaptar todo para conectarlo al C64). Como habia hecho unas pruebas con la lectura de joystick de PC para el sintetizador de voz, y para esa ocasion saque del olvido al protoboard, aproveche para armar todo ahi y probarlo desde el PC, usando tambien una placa que adaptaba de RS232 estandar a RS232 de 3,3V, que use para conectar el PC con la Raspberry Pi 3.
Asi se veia el experimento:


« última modificación: Octubre 03, 2016, 11:40:42 por pastbytes »

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 535
  • SYS 0
    • Ver Perfil
Re:Wifi en Commodore
« Respuesta #1 en: Octubre 03, 2016, 11:44:33 »
La placa verde es la que arme para agregarle cosas a la Pi, tiene los pines para conectarse directamente a la maquina y un DB9 para conectar un RS232 normal, solo hacia falta tomar los 5V y 3,3V del protoboard.
El modulo wifi es esa plaquita a la que le solde unos alambres de resistencias para poder conectarla.
Aca se ve ya con los alambres soldados:



Una vez probada la conexion desde el PC, decidi armar una placa para conectar el modulo al C64, aprovechando nuevamente la placa que uso para los sintetizadores de voz, que en este caso solo me proporciona las lineas RX y TX del RS232, y masa, ya que la alimentacion la tomo aparte desde una fuente de 5V, por el elevado consumo que tiene el modulo para los modestos 100mA que da el puerto del usuario.
La placa quedo asi:




« última modificación: Octubre 03, 2016, 11:46:31 por pastbytes »

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 535
  • SYS 0
    • Ver Perfil
Re:Wifi en Commodore
« Respuesta #2 en: Octubre 03, 2016, 11:49:56 »
Esta placa va conectada en el zocalo de la que se conecta al C64, pero de esa solo uso el conector, el resto de los componentes quedan sin conectar:



Aca la placa ya conectada y lista para probar en el C64:



La placa conectada al C64, y la maquina corriendo el VIP Terminal XL:




« última modificación: Octubre 03, 2016, 11:53:26 por pastbytes »

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 535
  • SYS 0
    • Ver Perfil
Re:Wifi en Commodore
« Respuesta #3 en: Octubre 03, 2016, 11:58:41 »
El Commodore conectado a un BBS por telnet:



En una busqueda rapida no pude encontrar un BBS de C64 que estuviera andando o libre, habia uno que me aceptaba la conexion pero la cerraba porque estaba ocupado, ese que se ve en la foto es uno de Synchronet, que tengo que ver a 80 columnas por lo cual casi no se entiende nada.
Aca una foto "mejor":



En esta otra se ve en modo de 40 columnas, se lee mejor pero no todos los menus del BBS se ven bien con tan pocas columnas, en este caso se listan los usuarios que se conectaron hoy, ahi aparezco como "Puerto Madryn, Argentina":



Un par de fotos mas en 40 columnas, hay que aclarar que este C64 tiene DIN 5 en la salida de video, por lo que solo se puede ver por video compuesto, y que ademas al conectarle alguna otra cosa se mete bastante interferencia, por eso la imagen no se ve tan bien.



En la pantalla de preferencias del usuario en el BBS:

« última modificación: Octubre 03, 2016, 12:02:38 por pastbytes »

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 535
  • SYS 0
    • Ver Perfil
Re:Wifi en Commodore
« Respuesta #4 en: Octubre 03, 2016, 12:08:32 »
Lo que necesitamos para este proyecto es por empezar un modulo wifi basado en el ESP8266, hay un monton de modelos y fabricantes pero todos compatibles, el ESP8266 es un modulo inteligente que tiene casi todo, le falta la antena y unos componentes minimos, por eso hay mucha gente que hace placas donde esta todo incluido. La que yo probe es una ESP12E, los nombres de las señales varian segun la placa pero basicamente todas tienen las mismas cosas. Uno de estos modulos cuesta de 3 dolares para arriba.
Despues hace falta una fuente de 5V y un regulador de 3,3V, yo uso una fuente de 3A y un regulador GJ1117A, pero tambien hay muchas opciones.
Para conectar al C64, hace falta un conector para el puerto del usuario. El modelo aparentemente es el LW-N12A2G.
Para la parte de conexion RS232, se necesita adaptar los 5V del puerto del usuario a los 3,3V del modulo, ahi uso una resistencia de 10K y otra de 15K para bajar de 5V a 3,3V para la salida TX desde la C64, y para RX desde el modulo, uso un transistor BC548, una resistencia de 4K7 y otra de 10K.
Y aparte de esto, alguna placa donde soldar todo, y cables.
Este es el esquema de conexion:



Como se puede ver, esta todo hecho con componentes minimos y conseguibles.
Con respecto a la parte de soft, estos modulos admiten el cambio de firmware, que se carga por RS232, e incluso creo que se puede actualizar por internet. Hay firmware que lo hace funcionar como modem con comandos AT, que es el que venia en esta placa, pero hay otros que permiten cargarle scripts en distintos lenguajes, porque la placa misma seria algo parecido a un Arduino, tiene pines de entrada/salida que se pueden programar y conectar a otras cosas.
El detalle con este firmware es que viene preconfigurado para arrancar a 115200 bps, por lo que es necesario conectarlo a un PC y configurarlo para 1200 bps, que es lo que hice para poder "hablarle" desde el C64. Una vez que esta a 1200 ya se queda grabada esa configuracion y arranca siempre asi. Desde la terminal de C64 se puede listar las redes wifi disponibles y conectar a una especificando nombre y clave. Esto tambien queda grabado, y cuando arranca el modulo se establece la conexion automaticamente.
Una vez que se configuro todo, se enciende el modulo en el C64 y hay que hacer dos cosas, primero conectar a un BBS con un comando AT que especifica la direccion, el tipo de conexion y el puerto, por ejemplo para el BBS de las fotos use:

AT+CIPSTART="TCP", "bbs.synchro.net", 23

Esto le dice al modulo que iniciamos una conexion TCP a bbs.synchro.net por el puerto 23 (telnet).
Luego de eso se conecta al BBS y empieza a imprimir texto en pantalla, para poder tipear hay que poner un comando AT con el texto, pero este firmware viene preparado para el caso, y permite ingresar dos comandos que lo hacen de forma transparente. Hay que tipear esto:

AT+CIPMODE=1

y luego:  AT+CIPSEND

Con esto el modulo deja de estar en modo de comando y "puentea" la conexion TCP al puerto serie, por lo que lo que envia el C64 va directo al BBS y lo que recibe va al C64, sin tener que ingresar comandos AT.
Si queremos volver a modo comando, para cortar la conexion o cualquier otra cosa, hay que ingresar +++, pero tienen que ser caracteres enviados a maxima velocidad, no a velocidad de tipeo, esto se hace asi para que no se tipee de casualidad. Lo que hay que hacer es configurar la terminal para que se envie esa secuencia de caracteres al presionar una combinacion de teclas.
Una vez que se vuelve al modo comando, para cortar la conexion al BBS ingresamos:

AT+CIPCLOSE

Por supuesto el modulo sirve para otras cosas ademas de entrar a BBS, pero para aprovecharlo hay que escribir soft que lo use, no se si ya hay algo hecho para estos modulos.
« última modificación: Octubre 03, 2016, 12:11:33 por pastbytes »

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 535
  • SYS 0
    • Ver Perfil
Re:Wifi en Commodore
« Respuesta #5 en: Octubre 03, 2016, 12:21:44 »
Hice un video probando algunos comandos y despues entrando a un BBS de Commodore desde Novaterm 9.6.

Commodore 64 conectando a BBS con módulo wifi

Primero se configura Novaterm 9.6 para la RS232 del puerto del usuario a 1200,8N1, y se asignan los comandos para conectar y desconectar de BBS a las teclas de funcion, para poder responder mas rapido.
Despues de encender el modulo wifi, se prueban el comando AT+GMR para ver informacion del modulo y firmware, y luego AT+CWLAP para listar las redes wifi detectadas.
Al final se conecta al BBS Commodore Image, que aparentemente no deja entrar como invitado, luego se desconecta la sesion para que el BBS sepa que desconectamos, esto se confirma cuando se imprime en pantalla "CLOSED".

Una breve prueba entrando a IRC (chat hispano) por telnet:




pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 535
  • SYS 0
    • Ver Perfil
Re:Wifi en Commodore
« Respuesta #6 en: Octubre 03, 2016, 12:30:04 »
Para terminar por ahora, la novedad es que logre pasar la barrera de los 57600 bps.  8)
En realidad no sirve para mucho, pero hice una rutina que nos soluciona el problema de tener que conectar el modulo a un PC para enviarle el comando AT que lo configura a 1200 bps, para que se pueda comunicar con el Commodore 64. Ahora gracias a esta rutina, podemos conectar directamente el modulo al C64, y configurarlo a 1200 bps, para despues terminar de configurarlo desde el BASIC o cualquier programa terminal.
Lograr esto fue bastante trabajoso, pero por suerte hay herramientas de depuracion que en otra epoca no eran tan practicas o accesibles.
Ya antes de tener el modulo habia pensado en configurarlo a 115K desde el C64 para no depender de un PC, pero no habia podido lograrlo, y despues de armar la placa pude lograr enviar a 115K pero a un PC, sin embargo el modulo no recibia correctamente, pero por muy poco.
Del comando AT+UART_DEF=1200,8,1,0,0 que tenia que enviar al modulo, no llegaban correctamente los caracteres "=" y "_", esto se debia a que a veces se requiere una precision de medio microsegundo, y el tiempo minimo de ejecucion del 6502 a 1MHz es de 2us. Si bien el codigo generico andaba bien para lo demas, la particular combinacion de unos y ceros de esos dos caracteres hizo que hubiera que ajustar los tiempos a medida.
Por suerte, como comentaba antes, recorde que tenia un adaptador USB-RS232 con salida de 3,3V o 5V, asi que lo configure en 3,3V y lo conecte a la salida de datos del modulo, ya que viene con la funcion eco activada (devuelve cada caracter que recibe), esta respuesta me servia para espiar en el PC lo que el modulo estaba recibiendo realmente desde el C64.
En este video se puede ver que el modulo arranca a 115200 bps, se ven los mensajes en el PC "espia" a 115K, pero el C64 no puede comunicarse a 1200 bps. Despues se ejecuta la rutina que envia a 115200 bps el comando que lo configura a 1200, y luego se ejecuta un programa BASIC que lo reinicia (para ver el mensaje de arranque), muestra lo que se recibe del modulo, y permite tipear caracteres que se envian al mismo.
Por ultimo se prueba de nuevo el programa terminal Bobs Term, y esta vez se verifica que el modulo esta a 1200 bps. Como esta configuracion queda grabada, ya no hace falta volver a configurarlo.

Configuración del ESP8266 a 115K desde C64

Una foto del modulo con el cable "espia" conectado:



Maniako

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 1013
  • SYS 8*4096
    • Ver Perfil
Re:Wifi en Commodore
« Respuesta #7 en: Octubre 03, 2016, 17:35:24 »
Una vez más, para quitarse el sombrero.
Experto en telecomm de Commodore.
LDA #$50
STA $0400
RTS
Lloré cuando conseguí hacer esto con el monitor del FC1.

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Wifi en Commodore
« Respuesta #8 en: Octubre 03, 2016, 18:10:31 »
Excelente!

riq

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 567
    • Ver Perfil
    • From the C64 until today, a developer's perspective
Re:Wifi en Commodore
« Respuesta #9 en: Octubre 03, 2016, 19:20:50 »
ya que la alimentacion la tomo aparte desde una fuente de 5V, por el elevado consumo que tiene el modulo para los modestos 100mA que da el puerto del usuario.

debería ser posible alimentar la placa directamente del puerto de usuario. yo estoy alimentado el unijoysticle del datasette y no tengo problema el la mayoría de los casos.
Aca puse los distintos escenarios:
https://github.com/ricardoquesada/unijoysticle/blob/master/DOCUMENTATION.md#when-using-power-from-the-c64
El UniJoystiCle puede llegar a consumir más de 200mA, sobre todo cuando esta en Access Point y se conectan los clientes a él.

El WiModem, similar a lo que hiciste,  dice consumir en promedio 80ma:
http://www.cbmstuff.com/downloads/wimodem/wimodem_manual.pdf

Q: How much power does the WiModem use?
A: The WiModem uses an average of ~80mA while transmitting and ~25mA
while receiving. OLED option uses ~10mA more current.

pastbytes

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 535
  • SYS 0
    • Ver Perfil
Re:Wifi en Commodore
« Respuesta #10 en: Octubre 03, 2016, 21:09:28 »
Habria que investigarlo, lei algo de que ya tiene un regulador de 3,3V integrado y que conviene desconectarlo por comando para ahorrar consumo. Tendria que probarlo en una plus/4, que tiene UART asi que la RS232 funciona por hard a 19200 bps, tendria que poder descargar programas desde el BBS usando zmodem. Y tambien en la C128, que tiene un programa terminal para 80 columnas.
Lo que tengo que hacer ahora es activar el modo RTS/CTS y conectar esas señales en la placa.