
Furbygotchi
'Papá, ¿me haces un tamagotchi?' me pidió mi peque. Un Tamagotchi de verdad con ESP32-S3, pantalla a color y carcasa impresa en 3D, con ciclo de vida completo, energía y sueño automático, y dashboard web con mensajes de papá.
¿Qué es?
Un Tamagotchi de verdad, hecho desde cero: pantalla a color, carcasa impresa en 3D y un ciclo de vida fiel al original de 1997. Es la variante ESP32-S3 ("Furbygotchi") de un firmware que también corre, con el mismo motor de juego, sobre un ESP8266 más sencillo con pantalla OLED monocroma. Huevo, bebé, niño, adulto, anciano y fantasma; hambre, ánimo, salud y energía que decaen con el tiempo; se duerme y despierta sola; y un dashboard web desde el que le mando mensajes a mi peque.
¿Por qué lo hice?
"Papá, ¿me haces un tamagotchi?" me pidió mi peque. En vez de comprar uno, decidí construirlo: espíritu geek, electrónica y programación, desarrollo de producto de verdad y la IA como multiplicador. No quería un prototipo de fin de semana, sino algo que sobreviviera al uso diario de un niño —apagones, batería, "se me ha muerto"— con persistencia y tests detrás. Era también una pregunta abierta: ¿saldría de ahí un producto que de verdad funcione?
Cómo funciona
Ciclo de vida y cuidados
LifeFSM: huevo → bebé → niño → adulto → anciano → fantasma, con transiciones automáticas según la edad y los cuidados; tras un rato como fantasma, resucita en un huevo nuevo.StatsEngine: 7 stats (hambre, ánimo, salud y energía entre ellas) con decay en tiempo real, y 6 acciones —alimentar, jugar, limpiar, medicar, disciplinar y luces— desde el botón físico y desde la API REST.- Fiel al Tamagotchi del 97: la energía gobierna el sueño. Se duerme sola por debajo de 20 y despierta sola por encima de 80. La acción "Luces" solo aparece mientras duerme: apagarlas la deja descansar a tasa plena; dejarlas encendidas la molesta y penaliza ánimo y salud, con la pantalla en negro y unas Zs ascendiendo.
- Persistencia en LittleFS con CRC32 y migraciones de esquema encadenadas (v1→v2→v3): sobrevive a apagones y ciclos de encendido.
Pantalla y sprites a color
- TFT JD9853 de 240×296 IPS que no arranca con la secuencia de init ST7789 estándar —le escribí una subclase de arranque propia. El framebuffer vive en PSRAM con doble buffer, a 15 FPS sin parpadeo.
- Sprites pixel-art en RGB565 generados en un proyecto aparte, con clave de color magenta para la transparencia, servidos desde LittleFS y cacheados en PSRAM según etapa de vida y estado de ánimo.
Mensajes de papá
- Desde el dashboard, o con
POST /api/v1/message, le mando un texto que aparece en pantalla como marquee. Pasa por un canal productor-consumidor sin bloqueos que sanea UTF-8 a ASCII imprimible, y se descarta con el botón físico.
Red, OTA y dashboard
- WiFi no bloqueante, OTA con contraseña y un dashboard REST con autenticación básica y límite de peticiones, servido con mDNS en
tamagotchi.local. - Un supervisor de red relevanta el dashboard y el OTA solos si caen tras una reconexión, y un vigilante anti-bucle evita reinicios en cadena si el router está apagado.
Carcasa impresa en 3D
- Diseñada paramétricamente con un script de FreeCAD, en dos piezas atornilladas, exportada a STL y laminada para impresora Bambu Lab en PLA.
Stack
| Capa | Tecnología |
|---|---|
| Microcontrolador | Waveshare ESP32-S3 Zero (ESP32-S3FH4R2, 4 MB flash, 2 MB PSRAM) |
| Firmware | C++ con Arduino sobre PlatformIO; dominio de juego compartido con la variante ESP8266 |
| Pantalla | TFT JD9853 240×296 IPS vía Arduino_GFX, con subclase de arranque propia |
| Persistencia | LittleFS con CRC32 y migraciones de esquema |
| Red | WiFi STA, ArduinoOTA, servidor web asíncrono y mDNS |
| Tests | 203 tests host-native (14 suites) que validan el dominio de ambas variantes |
| Carcasa | FreeCAD (script paramétrico) + impresión 3D en PLA |
Estado
En desarrollo activo. El firmware de la variante color compila, pasa sus 203 tests y ya corre en hardware real —WiFi, OTA y dashboard probados en la propia placa ESP32-S3. Pendiente:
- Soldar el divisor de batería: el firmware, la API y el icono ya están listos, solo falta el hardware.
- Gestión de energía (auto-apagado de pantalla, modo ahorro de WiFi) para alargar la autonomía con la LiPo.
- Un menú de acciones navegable en pantalla con un solo botón, para poder jugar sin WiFi.