Emulador del mítico MAC de los 80


Efectivamente, el MicroMac es un proyecto apasionante que ha resucitado el clásico Macintosh 128K de 1984 utilizando una placa Raspberry Pi Pico. Esta iniciativa, creada por el entusiasta Matt Evans, demuestra la versatilidad de estas placas de bajo costo, capaces de emular no solo ordenadores antiguos, sino también de convertirse en consolas retro o incluso en smartphones, hasta tal punto que podemos llegar a construirnos nuestro propio Mac casero.

¿Qué hace especial al MicroMac?

  • Bajo costo: Lo que más sorprende del MicroMac es su precio. Con un costo de apenas 5 euros por la placa base, se convierte en una opción muy accesible para aquellos que buscan revivir la experiencia del Macintosh original o simplemente adentrarse en el mundo de la emulación.
  • Facilidad de ensamblaje: El proceso de ensamblaje del MicroMac es relativamente sencillo, incluso para aquellos sin experiencia previa en electrónica. Las instrucciones detalladas y los diagramas proporcionados por el creador facilitan la construcción de este dispositivo.
  • Funcionalidad: A pesar de su bajo costo, el MicroMac es capaz de ejecutar de manera fluida aplicaciones clásicas del Macintosh 128K, como el procesador de textos MacWrite o el programa de gráficos vectoriales MacDraw. Esto lo convierte en una herramienta útil para aquellos que desean recordar la nostalgia de la era de las computadoras Macintosh o para aquellos que simplemente quieren experimentar con software retro.

Reviviendo el Macintosh 128K con una Raspberry Pi!

En efecto Matt Evans, un apasionado de la tecnología, ha logrado una hazaña impresionante: construir un clon funcional del Macintosh 128K original utilizando una placa Raspberry Pi Pico. Este proyecto, MicroMac, destaca por su bajo costo (menos de 5 euros) y su capacidad para emular con precisión la experiencia del Macintosh original.

¿Cómo funciona el MicroMac?

El MicroMac se basa en un microcontrolador RP2040, que cuenta con un procesador Arm Cortex-M0+ de doble núcleo y 264 kB de RAM. Para replicar la experiencia del Macintosh 128K, Evans ha conectado varios componentes adicionales, incluyendo:

  • Un monitor VGA.
  • Un teclado USB.
  • Un mouse USB.
  • Un adaptador USB OTG de Micro-B a Micro-A (para conectar el ratón y el teclado).
  • Una fuente de alimentación de 5V.
  • Un par de resistencias para adaptar niveles para la VGA.
  • Un Cable VGA.

Un microcontrolador Raspberry Pi RP2040 (en una placa Pico), manejando vídeo VGA monocromo y tomando entrada de teclado/ratón USB, emulando un ordenador Macintosh 128K y almacenamiento en disco. El RP2040 tiene fácilmente suficiente RAM para albergar la memoria del Mac, más la del emulador; es lo suficientemente rápido (con algunos trucos) para alcanzar el rendimiento de la máquina real, tiene capacidad de host USB, y los pines del GPIO hacen posible que el soporte de vídeo VGA sea bastante sencilla (con algunos trucos). Los 2 MB de memoria flash de la placa Pico básica son suficientes para una imagen de disco con el SO y el software.

Para su creación, Evans tuvo que combinar varios componentes actuales que le permitieran simular una experiencia similar a la de la máquina de Apple, con el mayor realismo posible.

En la imagen vemos todo el hw empleado. Junto al microcontrolador, consiguió un monitor VGA, un teclado, un mouse USB, un adaptador USB OTG de Micro-B a Micro-A, una fuente de alimentación de 5V y un par de resistencias, que montó sobre la placa de prototipos.

Tres pines GPIO de 3.3V son manejados por PIO para dar señales VSYNC, HSYNC, y salida de video. Los sincronismos son en muchos proyectos similares manejados directamente desde GPIO, pero aquí recomienda una resistencia en serie de 66Ω en cada uno para mantener los voltajes en el extremo VGA (¿presumiblemente en terminación de 75Ω?) en el rango correcto. Para la salida de video, un GPIO maneja los canales R,G,B para salida mono/blanco. Una resistencia de 100Ω da aproximadamente 0,7V (intensidad máxima) en 3*75Ω señales.

Esta es la configuración de pines usada:

GPIO/pinPico pinUsage
GP01UART0 TX
GP12UART0 RX
GP1824Video output
GP1925VSYNC
GP2127HSYNC
Gnd23, 28Video ground
VBUS (5V)40+5V supply
Gnd38Supply ground

Resumen de conexiones:

  • Cablea 5V a VBUS/Gnd
  • Salida de video –> 100Ω –> VGA
  • RGB (pines 1,2,3) todos conectados juntos
  • HSYNC –> 66Ω –> VGA pin 13
  • VSYNC –> 66Ω –> VGA pin 14
  • Tierra de video –> tierra VGA (pines 5-8, 10)

Si no tiene exactamente una resistencia de 100Ω, puede usar otra un poco de mas valor pero la pantalla será más tenue. Si no tiene resistencia de 66Ω para los sincronismos, conectarlos directamente es «probablemente OK», pero YMMV. Pruebe sus conexiones: la parte clave es no conseguir más de 0.7V en las señales de su conector VGA. Conecta el ratón USB, y el teclado si quiere, y encienda.

Software

Después de solucionar el tema del hw, Evans inició el proceso para adaptar el RP2040 para que pudiera manejar los periféricos y emitir una señal de video. En el lado del software, tuvo que conseguir una imagen de System 3.2, la última versión compatible con Macintosh 128, que incluía algunos de los programas utilizados por el sistema operativo.

El emulador umac y la salida de vídeo se ejecutan en el núcleo 1, mientras que el núcleo 0 se encarga de la entrada USB HID. El DMA de vídeo se inicializa apuntando al framebuffer en la RAM del Mac. Aparte de eso, es sólo un bucle principal en main.c barajando cosas en umac. Se ha hecho bastante optimización en umac y Musashi para aumentar el rendimiento en Cortex-M0+ y el RP2040, como la ubicación cuidadosa de ciertas rutinas en la RAM, asegurando que los inlining/constantes puedan ser foldeados, etc. Es 5 veces más rápido de lo que era al principio. El proyecto de nivel superior podría ser un marco útil para otros emuladores, u otros proyectos que necesitan entrada USB HID y un framebuffer (por ejemplo, un emulador VT220). El código USB HID es en gran parte robado del ejemplo TinyUSB, pero muestra cómo en la práctica se podría capturar las pulsaciones de teclas / tratar con eventos del ratón.

Todo el sw esta disponible en su respositoriio de Github:https://github.com/evansm7/pico-mac?tab=readme-ov-file#hardware-contruction

En cuanto a la imagen del System 3.2, esta es la última versión compatible con el Macintosh 128K. Esto le permite ejecutar programas clásicos como el procesador de textos MacWrite y el programa de gráficos vectoriales MacDraw.

El trabajo principal de Evans se enfocó en hacer un equipo que fuera capaz de correr con un hardware que cataloga como «muy simple«, por lo que la estética no estaba realmente contemplada, tal como se muestra en sus distintas fotografías.

Más allá del MicroMac:

El proyecto MicroMac es un claro ejemplo del potencial de las placas Raspberry Pi. Estas pequeñas placas han abierto un mundo de posibilidades para la creación de dispositivos electrónicos personalizados, desde ordenadores retro hasta consolas de videojuegos y objetos inteligentes para el hogar.

Se puede decir que esta computadora que emula a la Macintosh es toda una ganga para el usuario. Según su creador, se trata de un equipo que cuesta menos de 5 euros, es decir,  aunque este precio es únicamente por su placa base y no por el resto de componentes y accesorios.

Enlaces de interés:

Como se puede ahorrar la suscripción de Blink


En efecto el ecosistema de cámaras de Amazon llamado Blink ofrecen una relación calidad /precio sin igual ofreciendo prestaciones muy interesantes como opción de videoportero para hablar con la persona llamante, detección de movimiento, gran autonomia ,etc.

Lamentablemente tiene un pequeño problema, y es que aunque podemos usar Blink sin suscripción ( no se grabaría video no habría avisos por video), lo mas normal es usar una suscripción en la nube de las grabaciones que oscila entre los 3€/mes por una cámara hasta 10€/mes para 10 cámaras , no habiendo por el momento ninguna opción intermedia por ejemplo para dos cámaras.

Afortunadamente hay una sencilla solución si queremos soslayar la suscripción que en unos pocos meses se amartizará: El Blink Sync Module 2,un dispositivo central para controlar sus cámaras Blink. Puede conectar hasta 10 cámaras Blink Indoor, Blink Outdoor, XT2, XT, Blink Video Doorbell o dispositivos Blink Mini al Sync Module 2. Además, admitiendo almacenamiento local de vídeos de hasta 10 cámaras, permitiéndole guardar y almacenar vídeos de movimiento en una unidad USB (admite unidades de hasta 256 GB)

Lo importante: estas funciones de grabación de video ,alertas, etc ya no requerirían cuotas mensuales y nos permite ver, compartir y descargar alertas de movimiento almacenadas en su unidad local desde la app de Blink. Sin embargo, tenga en cuenta que no es compatible con las cámaras Blink XT2, XT o las cámaras Blink Indoor de 1.ª generación ( es decir las cámaras Blink antiguas).


Blink Sync Module 2 es por tanto una parte esencial de un sistema de seguridad Blink que se suele olvidar posiblemente para no tener mas dispositivos conectados, pero creemos que merece la pena máxime cuando tenga mas de una cámara pues permite la comunicación, el control y el almacenamiento local de sus grabaciones ( asegurándose ademas de la privacidad ya que el almacenamiento no es una nube pública) .

Resumidamente por tanto El Blink Sync Module 2 es un dispositivo que actúa como el cerebro de su sistema de cámaras Blink. Algunos detalles clave sobre su función:

  • Comunicación y Control: El módulo de sincronización (Sync Module) facilita la transferencia de comandos entre la aplicación del teléfono, los servidores de Blink y tus cámaras. Esencialmente, ayuda a que todo funcione en conjunto.
  • Almacenamiento Local: Una característica destacada del Sync Module 2 es que permite almacenar grabaciones localmente en una unidad USB. Esto significa que no necesita una suscripción a Blink Basic o Plus para acceder a tus clips de video. Puedes insertar una memoria USB y respaldar los clips de detección de movimiento para verlos en tu computadora o dispositivo compatible.
  • Conexión de Cámaras: Puede conectar hasta 10 cámaras Blink Indoor, Blink Outdoor, XT2, XT, Blink Video Doorbell o dispositivos Blink Mini al Sync Module 2. Esto simplifica la administración y programación de tus dispositivos desde la aplicación Blink.

Memorias USB a emplear

El Blink Sync Module 2 admite unidades USB con capacidades de 1 GB a 256 GB. Estas memorias deben estar diseñadas para conectarse a un puerto USB tipo A (no tipo C). El protocolo utilizado por el Sync Module 2 es USB 2.0, por lo que puede utilizar unidades USB 2.0, 3.0 o 3.

Una de las facilidades precisamente de que la grabación sea en unidades USB es que podemos extraerla del módulo sync y conectarlas a nuestro ordenador para revisar ,borrar , renombrar nuestros videos.

Por cierto algo también a tener en cuenta es precisamente la privacidad ya que al ser responsabilidad de los usuarios el almacenamiento no se alojan los videos en la nube pública , quedando por tanto estos en el ámbito exclusivamente local.

Instalación

La instalación del Blink Sync Module 2 es bastante sencilla, pero por resumir estos son los puntos mas importantes a tener en cuenta en orden secuencial:

  1. Conexión eléctrica: Enchufe el Sync Module a una toma de corriente cercana. Asegúrese de que esté cerca de su enrutador Wi-Fi para una buena señal.
  2. Configuración en la aplicación Blink:
    • Si no lo tiene en uso aun ,descargue la aplicación Blink en su teléfono o tableta.
    • Si no tiene cuenta en Blink cree una cuenta o inicie sesión si ya tiene una.
    • Agregue un nuevo dispositivo y selecciona “Sync Module”.
    • Siga las instrucciones en pantalla para conectar el módulo a su red Wi-Fi.
  3. Conexión de cámaras:
    • Una vez que el Sync Module esté configurado, puede conectar sus cámaras Blink al módulo. Esto se hace a través de la aplicación Blink.
    • Seleccione “Agregar dispositivo” y siga las instrucciones para emparejar sus cámaras con el Sync Module.
  4. Prueba y ajustes:
    • Verifique que las cámaras estén funcionando correctamente en la aplicación.
    • Puedes ajustar la sensibilidad de detección de movimiento y otras configuraciones según sus preferencias.

¡Y eso es todo! Ahora debería tener su sistema de cámaras Blink funcionando sin pagar ningún suscripción por el servicio de almacenamiento en la nube de los videos , ya que con este modulo todos los nuevos videos que generen las cámaras se salvaran en la memoria USB al que conectada al sync.

Pros y contras

Pros:

  1. Almacenamiento Local: Permite almacenar grabaciones de cámaras Blink en una memoria USB, lo que puede ser más seguro y económico a largo plazo
  2. Compatibilidad con Alexa: Puede integrar sus cámaras Blink con dispositivos Alexa para control por voz y visualización en dispositivos Echo
  3. Fácil Configuración: La instalación y configuración del módulo es sencilla y rápida
  4. Extiende la Vida de la Batería: Ayuda a reducir el consumo de batería de las cámaras Blink al manejar la comunicación con la red
  5. Gran ahorro: si tenemos mas de dos cámaras el dispositivo en unos pocos meses se amortiza. Incluso con una sóla cámara/videotimbre aunque necesitemos unos cuantos meses mas también se amortiza
  6. Privacidad: los videos sólo quedan almacenados localmente.
  7. Facilidad de vision: solo tenemos que extraer la unidad USB ( ojo ordenadamente desde la app) y podremos ver los videos cómodamente desde cualquier dispositivo, asi como porsupuesto renombrarlso , borrarlos, copiarlos, etc muy facilmente

Contras:

  1. Costo Adicional: Necesita comprar una memoria USB por separado para el almacenamiento local
  2. Dependencia de Wi-Fi: Requiere una conexión Wi-Fi estable para funcionar correctamente
  3. Limitaciones de Almacenamiento: Aunque permite almacenamiento local, la capacidad está limitada al tamaño de la memoria USB que se utilice
  4. Compatibilidad Limitada: Solo es compatible con dispositivos Blink, lo que puede ser una limitación si tienes otros dispositivos de seguridad
  5. Los videos no se pueden ver desde la aplicación: En efecto este aspecto es algo que debería mejorar la app , porque por el momento necesitamos extraer el USB y verlo en un ordenador o en el smartphone/tableta con un adaptador OTG