Ir al contenido principal

ZX-Wespi: WiFi para el ZX81


La comunidad retro no para de sorprendernos continuamente con algo nuevo, esta vez con WiFi para el ZX81.

La idea es muy sencilla, un ESP32, dispositivo de la familia de Arduino con un chip WiFi, que se le instala un software para poder configurar la conexión a la red, cargar y guardar los programas en el ZX81, todo esto a través de una aplicación que se ejecuta con solo teclear el comando LOAD "". Además, en el ESP32 se instala un web server, al que podemos entrar desde cualquier navegador web y dispositivo, que nos permite dos cosas, gestionar facilmente nuestros programas favoritos en la memoria interna de aproximadamente 1 MB, para cargarlos luego en el ZX81, y actualizar el firmware vía OTA, y así, de esta forma, tener el dispositivo al día con los últimos cambios sin tener que estar abriendo el ZX81 para conectar el PC al ESP32.

Toda la información del ZX-Wespi la podemos encontrar en el siguiente foro en alemán, que con el Google Translator podéis traducir al cualquier idioma: 


¿Qué componentes necesitamos?

La instalación es super sencilla y se requiere de muy pocos componentes. 
  • Placa de desarrollo ESP32, la de 30 pines. 
  • Resistencias de 4K7, 1K y 100 ohm, de 1/4 de vatio. 
  • Condensador electrolítico de 4,7uF y 16V.
  • Cables para soldar en la placa base del ZX81 y conectarlos al ESP32. 
  • Multímetro, fundamental para medir valores de tensión y conectividad para ver que no hay ningún corto al Cablear.
Instalación del Software en el ESP32

Primero instalamos el software en el ESP32, para esto necesitamos un cable con conexión USB y micro-USB para conectar el ESP32 a un PC con Windows. 

Para la instalación del software hay que descargarse el programa Flash Download Tools (versión superior a la 3.8.5): 


Y descargar el paquete de instalación zx_iot_initial_flash_files.zip de https://github.com/holmatic/zx-iot-mi/releases/tag/v0.2.2.0

Una vez que tengamos todo listo en el PC, descomprimos el fichero zip en una carpeta y conectamos el ESP32 al PC con el cable. Se encenderá una luz roja en ESP32 y en la administración de dispositivos de Windows veremos que se está utilizando un nuevo puerto COM, nos anotamos este puerto para luego elegirlo en el Flash Download.

Al ejecutar la herramienta Flash Download, nos preguntará por el dispositivo que queremos utilizar, en nuestro caso el ESP32. Al abrise la aplicación aparecen dos pantallas, una con el entorno gráfico y otra, la consola, que es una pantalla negra de texto.

En la pantalla gráfica, en la pestaña SPI Download, se añaden los siguientes ficheros,  que vienen en el zip de instalación, junto a la posición de memoria:

partition-table.bin @ 0x8000 
ota_data_initial.bin @ 0xd000 
bootloader.bin @ 0x1000 
zx_iot.bin @ 0x10000

Los demás parámetros son:

SPI SPEED 40MHz 
SPI MODE DIO
FLSH SIZE 32MBit (=4MB) 
COM: el que nos salga en la administración de dispositivos al conectar el ESP32, en mi caso el COM3.
BAUD: Puede ser 460800, pero preferí una tasa menor de 230400.


Al tener todo ya configurado, se pulsa el botón Start quedando la pantalla en espera. En la consola se puede observar unos puntitos que van avanzando poco a poco, en este momento pulsamos continuamente el botón Boot del ESP32 y lo soltamos cuando veamos que dejan de salir los puntos y empieza la instalación del firmware.

En la consola se puede ver que se pasa de los puntos a uploading stub...


Si volvemos a la pantalla gráfica, en la parte inferior, se puede ver una barra verde que va avanzando hasta que ésta termina de completarse y aparece en azul el texto Finish. 

Cablear el circuito

Una vez instalado el software en el ESP32, tenemos que realizar el cableado y soldado de componentes para conectarlo al ZX81 siguiendo el siguiente esquema: 
Primero, soldamos los componentes en la parte posterior del ESP32, de esta forma quedan ocultos, dejando el chip del ESP32 como único elemento visible.


Luego, mediante el cableado, conectamos el ESP32 al ZX81. En mi caso la placa base es distinta a la del esquema, por lo que tuve que buscar la conexión para los 5V, GND y EAR. La conexión del TV/TAPE (pin 16 de la ULA), al tener un reemplazo no original de la ULA, hecho a partir de un diseño en CPLD/FPGA (vLA81), y como éste da una salida de vídeo compuesto en el pin 16, el cable lo he tirado directamente desde el conector de la antena del modulador de vídeo, que lo tengo deshabilitado para que, mediante un cable (en la foto cable rojo grueso que sale del modulador), coja directamente la señal de video compuesto del pin 16 de la ULA. 


El cable rojo fino, conectado al condensador, es la toma de 5V, el negro a GND, el azul a la entrada EAR y el naranja al pin 16 de la ULA, tomando la conexión desde dentro de la caja del modulador.

Finalmente, una vez que lo tengo todo según el esquema, compruebo, con la medida de continuidad del multímetro, que no hay ningún elemento en corto y con cinta aislante negra fijo el ESP32 a la carcasa del ZX81, quedando bien sujeto. 


Puesta en marcha

Si todo ha ido bien, al encender el ZX81 debería mostrar el prompt con la letra K que nos invita a introducir los comandos BASIC. El primer encendido lo hago sin conectar el teclado para ver las luces que se encienden en el ESP32, éstas deberían ser una luz roja, que indica que que se ha encendido el dispositivo, y una luz azul, que al principio aparece fija y luego se queda parpadeando. Si observamos esto en el primer arranque, tiene pinta de que la cosa va bien.
 

Apago el ZX81, conecto el teclado y esta vez sí, vamos a intentar cargar el programa del ZX-Wespi ejecutando el comando LOAD "". Si todo está bien hecho, en unos pocos segundos tiene que aparecer la siguiente pantalla:
 

Una vez dentro del programa, configuramos la WiFi pulsando la tecla W del ZX81.
 

De las distintas redes elegimos la nuestra pulsando su número en el teclado.


Se introduce la password de la WiFi siguiendo las instrucciones que se muestran en pantalla, por ejemplo, para introducir una letra en minúsculas es entrando en modo inverso (shift + 9) y se pulsa la letra.

Si no nos hemos equivocado al introducir la contraseña, se mostrará la URL del fileserver con la dirección ip asignada.


Al tener configurada una IP ya podemos entrar en el fileserver vía web utilizando la URL que nos muestra por pantalla e introduciéndola en cualquier navegador web de cualquier dispositivo, en mi caso, por comodidad, utilizo el del móvil.


Para probar a cargar juegos en el ZX81, me bajo unos pocos desde https://www.zx81.nl/files.html y los añado al fileserver.


Al Entrar en el ZX-Wespi nos saldrán estos mismos programas para poder cargarlos.


Actualizar el firmware del ESP32

En el paquete de la instalación viene una versión antigua del firmware (zx-iot-mi), que conviene actualizar para disponer de mejoras como son, el incremento de la longitud de la clave de la WiFi hasta 64 caracteres, mostrar la MAC o, en el fileserver, ver la información de espacio libre u ocupado por los ficheros.

Para la actualización hay que seguir los siguientes pasos:
  • Subir este fichero al fileserver, de la misma forma que se sube cualquier programa o juego. Al subirlo veremos que tarda un poco, en comparación con los programas de 16KB del ZX81, y una vez que ha terminado, veremos que no se muestra en el listado de ficheros.
Para ver los cambios tenemos que apagar y encender el ZX81, yo me esperé unos minutos por si la instalación necesitaba más tiempo, porque no se muestra ninguna información por pantalla, y aunque refescaba la página web del fileserver, no salía la nueva versión.

Al reiniciar ya se dispone de la última versión y se puede ver este dato tanto en el ZX81, en la opción SYS, como en el fileserver.
Grabar los programas

Posiblemente la mejor utilidad del ZX-WESPI es poder guardar nuestros programas de una forma segura y rápida.

Según vamos editando nuestros programas se puede ejecutar el comando de Basic SAVE "nombre del programa" y automáticamente se guardará en la memoria del ESP32. 

Conclusiones

Después de realizar varios usos, este mod funciona perfectamente, no me ha dado ningún problema, y lo considero como un imprescindible para el ZX81.

El ZX-Wespi son todo ventajas:
  • Fácil de instalar y de configurar. 
  • Muy sencillo de utilizar. 
  • La gestión de los ficheros vía web a través del fileserver, junto a la gestión del espacio utilizado y disponible, es una idea muy bien traída a este dispositivo. 
  • Grabar nuestros programas de una forma fiable, el grabado en cinta en el ZX81 era una auténtica lotería. 
  • Estéticamente le pega muy bien al ZX81, al encajar perfectamente en la carcasa y, al no necesitar muchos cables, queda todo muy limpio.
  • La aplicación que se carga con LOAD "" es minimalista, tampoco hace falta muchas opciones, y funciona perfectamente. 
Nada más que decir y nada que objetar a este ZX-Wespi, os animo a que hagáis este proyecto, que es muy entretenido de realizar y nos ofrece un resultado más que satisfactorio.

D.R Spectrum.

Comentarios

Entradas populares de este blog

El botiquín del Spectrum: Componentes de repuesto

Debido a la avanzada edad de nuestros Spectrum, hay que estar prevenidos ante cualquier imprevisto que pueda surgir en forma de avería. Como hemos podido ver en alguna de las reparaciones que he publicado en este blog, me ha hecho falta una serie de componentes electrónicos, que en algún caso no los tenía, y he tenido que esperar a conseguirlos yendo a una tienda de electrónica o comprándolos por internet.  Para no encontrarnos en esta situación, he identificado cuales son las averías más frecuentes y qué componentes harían falta para poner de nuevo en marcha a nuestro Spectrum.  CPU La CPU que nos podemos encontrar en el ZX Spectrum puede ser Zilog Z80A de 4MHz o NEC D780-C, ambas totalmente compatibles. Aunque el cristal de cuarzo para generar una señal de reloj estable es de 14MHz, realmente la señal de reloj que utiliza la CPU es la marcada por el pin 32 (CLK) de la ULA. Esta señal tiene una frecuenca de 3,5MHZ, que es el resultado de dividir por 4 la señal de reloj produci

Cargar juegos con la App PlayZX (ZX81, ZX Spectrum, +2A/B y +3)

Existen varias alternativas para cargar juegos de forma casi instantánea en formatos .TAP y .TZX, como DivIDE, Dandanator, etc... A los más nostálgicos que nos sigue gustando cargar desde cinta y esperar esos minutos mientras contemplamos el screen de turno, tenemos que buscar otras alternativas que sean parecidas para así dar descanso a las cintas de casete que tan buenos momentos nos dieron, y de esta forma proporcionarles ese merecido retiro en una estantería junto a sus viejas compañeras donde podamos contemplarlas y admirar sus carátulas. La alternativa más popular es TZXduino, que junto a una tarjeta de memoria sd podemos reproducir los juegos como si los cargásemos desde un casete. Esta opción nos obliga a tener otro dispositivo, y dada la situación, por un poco más de lo que puede valer casi sería mejor opción comprarse un Divide, aunque en concepto son dispositivos muy distintos.  Otra opción sería utilizar la aplicación para teléfonos móviles Android PlayZX . En la web del de

Mi primer Amstrad CPC 6128: Puesta a punto y cómo sacarle provecho en la actualidad

El Amstrad CPC era el ordenador que siempre quise tener de niño. Recuerdo que, por el año 1986, en el centro comercial Alcampo de mi barrio tenían una especie de "corner" donde se exhibían los ordenadores de Amstrad que se podían tocar y hacer cosas con ellos, una idea muy brillante para aquella época, ya que no era un método muy habitual para captar compradores, y sin embargo, hoy en día se sigue aplicando y funcionando. Al pillarme cerca del instituto nos acercábamos a la hora del recreo y nos poníamos a hacer nuestros pinitos en Basic, de esta forma surgió mi gusto y admiración por este potente ordenador. Sin embargo, al final, en mi casa optamos por comprar el ZX Spectrum +2A, por varias razones, el precio era casi la mitad, eso sí, sin incluir monitor, en el instituto aprendíamos Basic en ordenadores Sinclair, como el de 48K o el QL, y lo más importante, casi todos mis amigos tenían ordenadores Spectrum. Todo esto influyó en la decisión final, viendo como se alejaba la o