Reescritura del firmware de la Watchy en Rust y gestión de pantallas e-paper

Fuentes: Rewriting the Watchy firmware in Rust and managing e-paper displays

El desarrollo de firmware para el reloj inteligente Watchy (SQFMI) ha sido reescrito en Rust para superar las limitaciones del código original en C++ y las librerías de Arduino. Este proyecto técnico detalla el proceso de migración, que comenzó con la adopción de Rust en el ESP32, un microcontrolador que inicialmente presentaba desafíos de estabilidad y compatibilidad con las librerías esp-rs. El autor resuelve problemas de soporte para chips ESP32 v1.0 mediante configuraciones específicas en el entorno de compilación, logrando así una base sólida para el desarrollo de funciones avanzadas como notificaciones por Bluetooth y alarmas configurables.

Un componente central del proyecto es la implementación de un controlador asíncrono para la pantalla e-paper GDEH0154D67, impulsada por el driver SSD1681. Dado que las librerías existentes en crates.io no eran completas ni soportaban la asincronía requerida por el framework Embassy, el desarrollador creó una versión personalizada del controlador. El proceso de implementación reveló complejidades técnicas, específicamente en la gestión de actualizaciones parciales de la pantalla. El análisis de los datos técnicos del panel mostró que el modo de actualización parcial requiere la sincronización precisa de dos buffers de memoria (b/w RAM y red RAM) para evitar artefactos visuales. La solución final implementó la función 'ping-pong' del controlador SSD1681, permitiendo intercambiar los buffers de memoria para mantener la coherencia de los píxeles durante las actualizaciones, lo que resultó en una experiencia de desarrollo que, aunque desafiante, demostró la viabilidad de la reescritura en Rust para dispositivos embebidos.