SharpKey Interfaz Multi-HID Guia de Firmware

Vision general


Un problema importante con los ordenadores Sharp vintage es la falta de teclados. La mayoria de las maquinas MZ-2500/2800/3500/X1/X68000 se venden sin teclado. Sin teclado la maquina es inutilizable.

Desarrolladores japoneses (classicpc.org, Youkan) y Martin han desarrollado interfaces para convertir teclados PS/2 o USB. El MZ-2500 utiliza una matriz de teclado similar al MZ-80B, serializada sobre un bus de 4 bits entre la unidad principal y el teclado.

Protocolo de teclado MZ-2500

La interfaz hardware comprende 7 senales, 5V y GND con conector mini-DIN blindado de 8 pines.

KeyboardPinout

Senal Direccion Estado logico Descripcion
RTSN
Row Strobe
Main Unit -> Keyboard HIGH (‘1’) Direccion de fila transmitida.
    LOW (‘0’) El teclado transmite datos.
KD4
Type Strobe
Main Unit -> Keyboard HIGH (‘1’) Datos matriciales reales.
    LOW (‘0’) AND logico de todas las teclas.
MPX
Nibble MUX Strobe
Main Unit -> Keyboard HIGH (‘1’) Nibble superior.
    LOW (‘0’) Nibble inferior.
KD[3:0]
Bi-dir bus
Main Unit -> Keyboard   Numero de fila de 4 bits.
  Keyboard -> Main Unit   4 bits de datos de columna.

Dos modos: STROBEALL y recuperacion de datos de tecla. Protocolo detallado en la version inglesa.

MZ2500 Keyboard Protocol 1 MZ2500 Keyboard Protocol 2 MZ2500 Keyboard Protocol 3 MZ2500 Keyboard Protocol 6 MZ2500 Keyboard Protocol 4 KeyboardHardware MainUnitKeyboardHardware

Protocolo de teclado MZ-2800

El MZ-2800 es el sucesor del MZ-2500 con modo Z80 de 8 bits y modo 80286 de 16 bits. Protocolo similar pero con temporizado diferente y adicion de una fila 14.

MZ2800 Keyboard Protocol 2 Timing Key Read MZ2800 Keyboard Protocol 1 KeyboardHardware MainUnitKeyboardHardware


ESP-32S AI Thinker

La interfaz esta basada en un SoC ESP-32S de doble nucleo con FreeRTOS. Un nucleo esta dedicado a la interfaz MZ-2500 mientras el otro gestiona los codigos PS/2 y construye una matriz virtual.

Esquema electrico

Schematic

Placa de circuito impreso

PCB PCB Top View PCB Bottom View

Interfaz ensamblada

1 1 1 1 1

Interfaz MZ-2800 ensamblada

1 4 8

Firmware

El firmware esta escrito bajo el sistema de build Espressif IDF (gcc(++), git, CMake, Ninja) en C/C++.

Instalacion y build automatizados (recomendado)

La forma recomendada de compilar el firmware SharpKey es el script de instalacion autonomo para su plataforma. Instala la cadena de herramientas (ESP-IDF v4.4), clona el repositorio (con submodulos) y puede compilar el firmware, todo de forma interactiva, con valores por defecto sensatos que puede aceptar pulsando Enter. Cada script es autonomo: copie unicamente el archivo correspondiente a su plataforma y ejecutelo.

macOS / Linux / WSL — setup_SharpKey.sh

chmod +x setup_SharpKey.sh
./setup_SharpKey.sh
El script detecta automaticamente el sistema operativo y prefiere un build con Docker usando la imagen fijada espressif/idf:v4.4 (descarga unica de ~3 GB), sin cadena de herramientas en el host e identico en todas partes. Si Docker no esta disponible recurre a una instalacion nativa de ESP-IDF v4.4 (Python 3.8-3.11, CMake, Ninja, etc. mediante apt/dnf/pacman o Homebrew en macOS). En Linux/WSL puede instalar Docker Engine por usted.

Windows 10 / 11 — setup_SharpKey_windows.ps1 (nativo, sin WSL, sin Docker). Desde un simbolo de PowerShell (un simbolo de usuario normal es suficiente; winget puede solicitar elevacion):

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\setup_SharpKey_windows.ps1
El script de Windows usa winget para instalar Git y, si su Python por defecto es 3.12+ o falta, Python 3.10 en un venv aislado (su propio Python no se toca). Luego clona e instala la cadena de herramientas nativa ESP-IDF v4.4 para Windows de Espressif y compila el firmware. Requiere el App Installer de Microsoft (que proporciona winget).

Preguntas que hace el instalador, y que hacer. Cada solicitud tiene un valor por defecto seguro entre corchetes; la letra en mayuscula es el valor por defecto, asi que pulsar Enter lo acepta.

macOS / Linux / WSL (setup_SharpKey.sh):

Solicitud Por defecto Que hacer
Install Docker Engine now? [Y/n] (solo Linux/WSL, si falta Docker) Si Enter para instalar Docker (puede requerir sudo), o n para usar la cadena de herramientas nativa ESP-IDF en su lugar.
Install now? [Y/n] (para paquetes del SO / ESP-IDF que falten) Si Enter: instala las herramientas que faltan mediante apt/dnf/pacman o Homebrew; puede pedir sudo.
Repo URL [https://git.eaw.app/eaw/SharpKey.git] repo publico Enter para el repo publico, o pegue otra URL (p. ej. un repo de desarrollo privado).
Install directory [~/SharpKey] (al clonar) ~/SharpKey Enter para ~/SharpKey, o escriba una ruta.
Remove <dir> and re-clone? [y/N] (solo si ese directorio contiene un repo distinto o incompleto) No y solo si esta seguro; en caso contrario N y elija otro directorio.
Build the SharpKey firmware now? [Y/n] Si Enter para compilar de inmediato (verifica el entorno).

Windows (setup_SharpKey_windows.ps1):

Solicitud Por defecto Que hacer
Repo URL [https://git.eaw.app/eaw/SharpKey.git] repo publico Enter para el repo publico, o pegue otra URL.
SharpKey checkout directory [%USERPROFILE%\SharpKey] %USERPROFILE%\SharpKey Enter para el valor por defecto, o escriba una ruta.
Build the SharpKey firmware now? [Y/n] Si Enter para compilar de inmediato.
Para ejecuciones desatendidas ambos scripts respetan variables de entorno: defina SHARPKEY_REPO_URL para elegir el repositorio sin que se le pregunte, y (macOS/Linux/WSL) defina SHARPKEY_BUILD a docker o native para forzar el metodo de build.

Salida y recompilacion. Un build correcto escribe el firmware en build/main.bin (con una copia versionada en release/ en macOS/Linux). Para recompilar mas tarde sin volver a ejecutar el script de instalacion:

# Docker (macOS / Linux / WSL)
docker run --rm -it -v "$PWD":/project -w /project espressif/idf:v4.4 idf.py build

# Native ESP-IDF (macOS / Linux)
. "$IDF_PATH/export.sh" && idf.py build

# Windows (native ESP-IDF, from a new PowerShell)
& "$HOME\esp\esp-idf-v4.4\export.ps1"; idf.py build

Instalacion del firmware

git clone https://git.eaw.app/eaw/mz25key.git

Compilacion del firmware

idf.py menuconfig
idf.py build
idf.py -p /dev/ttyUSB0 build flash monitor

Build con Docker

docker run --rm -v $PWD:/project -w /project espressif/idf:v4.4 idf.py build

Integracion continua (Jenkins)

El proyecto utiliza Jenkins para builds automaticos. Vea la Guia del Desarrollador FusionX.

Uso

MZ-2500 Keyboard Wyse KB-3926 Keyboard

Hot Key Modo
ALT+F1 Mapa de teclado MZ-2500
ALT+F2 Mapa de teclado MZ-2000
ALT+F3 Mapa de teclado MZ-80B

Precios

Consulte la version inglesa para las tablas de precios.


Agradecimientos

El entorno de desarrollo Espressif IDF y los materiales de referencia ESP-32S fueron utilizados.

Licencias

Este diseno esta bajo licencia GNU Public Licence v3. No se permite uso comercial sin autorizacion.

Aviso de regulacion inalambrica

Este dispositivo incorpora un modulo ESP32-S pre-certificado en la banda ISM de 2,4 GHz. Es responsabilidad del constructor garantizar el cumplimiento de las regulaciones aplicables.