Skip to content

cifertech/TamaFi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TamaFi Banner

 

πŸ“– Explore the Full Documentation

Ready to dive deeper into TamaFi's details? Discover the full story, in-depth tutorials, and all the exciting features in our comprehensive documentation. Click the link and explore further!

 

🌟 About the Project

TamaFi is a modern, WiFi-aware virtual pet.
V2 rebuilds the original project with new hardware, smarter logic, and a clean, compact PCB that actually feels like a finished device.

The pet lives on an ESP32-S3, eats nearby WiFi, evolves over time, and makes its own decisions based on the environment around it.

YouTube-Thumbnailtamafiaaa
 

✨ Highlights (V2)

  • βš™ ESP32-S3 based – more performance, native USB, better room for future features
  • πŸ–₯ TFT ST7789 240Γ—240 – full-color UI, custom sprites, status bars, menus
  • 🧠 Autonomous behavior engine – the pet hunts, explores, rests, and reacts on its own
  • πŸ“Ά WiFi-fed – nearby networks affect hunger, happiness, and health
  • πŸŽ› Full menu system – Pet Status, Environment, System Info, Controls, Settings, Diagnostics
  • πŸ’Ύ Persistent state – age, stats, stage, settings stored in flash (Preferences)
  • 🌈 4Γ— WS2812-2020 NeoPixels – mood & activity feedback (happy/sad/wifi/rest patterns)
  • πŸ”Š Retro sound engine – non-blocking chiptune-style beeps and sequences
  • πŸ”‹ Battery-ready – TP4056 charger + MOSFET-controlled TFT backlight
  • πŸ–± 6 soft tactile switches – three on each side for navigation and shortcuts
  • πŸ›  DisplayKit-ready UI workflow – UI graphics can be designed/exported via DisplayKit

⚠️ Some advanced / sensitive behaviors are intentionally simplified or left as placeholders in the public firmware.
This project is for learning, tinkering, and fun β€” not for breaking things.

 

🧩 How TamaFi V2 Behaves

TamaFi isn’t just a sprite animation loop. It runs a small decision engine that constantly evaluates:

  • Pet stats: hunger, happiness, health
  • Traits: curiosity, activity, stress
  • Environment: number of nearby networks, open/hidden networks, average RSSI
  • Time: age (minutes β†’ hours β†’ days)

From that, it decides whether to:

  • πŸ– Hunt – use WiFi scan results to β€œfeed” and adjust hunger/happiness/health
  • πŸ‘ Explore – react to open/hidden networks and network diversity
  • 😴 Rest – enter a sleep cycle with special egg animation and recovery stats
  • 😐 Idle – chill on the home screen with mood-based idle animations

Mood system

The pet mood changes based on stats + environment:

  • HUNGRY – low hunger
  • HAPPY – good stats + decent WiFi
  • CURIOUS – hidden/open networks nearby
  • BORED – no WiFi for too long
  • SICK – low health or bad conditions
  • EXCITED / CALM – good conditions & variety

Mood affects:

  • Idle animation speed
  • LED patterns
  • How often it wants to hunt / explore / rest

Evolution

Age is tracked in minutes, hours, and days:

  • BABY β†’ TEEN β†’ ADULT β†’ ELDER

Evolution depends on:

  • Time alive
  • Average of hunger / happiness / health
  • Environment quality

Reaching a new stage triggers special SFX + animations.

 

πŸ–₯ UI & Menu System

All rendering goes through a 240Γ—240 framebuffer (TFT_eSPI + TFT_eSprite) to avoid flicker.

Home Screen

  • Pet sprite (idle / hunt / rest / special states)
  • Background image
  • Stats bars: Hunger, Happiness, Health
  • Mood + Stage text
  • Activity label in the top bar (Idle, Hunting…, Resting…, etc.)
  • Overlays for special effects (e.g. hunger effect)

Menus

Navigation is done using the left 3 buttons (UP / OK / DOWN).

Main Menu:

  1. Pet Status – stats, mood, age, stage, short description
  2. Environment – WiFi network counts, hidden/open, β€œsignal mood”
  3. System Info – firmware version, uptime, battery (if implemented), etc.
  4. Controls – brightness, LED level, sound on/off, NeoPixel on/off
  5. Settings – auto-sleep, auto-save interval, soft reset options
  6. Diagnostics – debug info, test modes (non-destructive)
  7. Back to Home

Changes in Controls/Settings are saved to NVS via Preferences, so they persist across reboots.

 

πŸ”Œ Hardware Overview

This is a summary of the V2 hardware stack.
Check the PCB/ and Schematic/ directories for full details.

Core

  • MCU: ESP32-S3 module
  • Display: 1.3–1.54" TFT ST7789 @ 240Γ—240
  • Buttons: 6Γ— soft tactile switches
  • LEDs: 4Γ— WS2812-2020 addressable RGB
  • Buzzer: driven with PWM (LEDc) for retro SFX

Power

  • Charger: TP4056 (single-cell Li-ion/Li-Po)
  • Backlight control: MOSFET on TFT LED pin, driven by PWM for brightness levels
  • Power input: USB-C (on PCB)

Connectivity / Dev

  • ESP32-S3 native USB for firmware upload
  • Optional CP2102 USB-to-TTL on the board for easier flashing / serial during development
 

🧰 Firmware

The firmware is written for Arduino IDE using:

  • TFT_eSPI
  • Adafruit_NeoPixel
  • WiFi
  • Preferences

Core modules (conceptual)

  • main.ino – hardware init, timers, logic tick, button handling
  • ui.cpp / ui.h – rendering, menus, bar drawing, layout
  • ui_anim.h – sprite frame tables for idle, egg, hunt, etc.
  • sound – non-blocking retro sound sequencer using LEDc
  • state – pet stats, traits, persistence with Preferences

The code is structured around non-blocking updates:
no delay() in the main logic, so animations, WiFi, sound, and UI can all coexist smoothly.

 

πŸ§ͺ Status

V2 is still under active development. Expect rough edges.

Area Status Notes
Core stats βœ… Stable Hunger, happiness, health, age
Mood system βœ… Stable Driven by stats + WiFi environment
Evolution βœ… Stable Multi-stage, environment-aware
WiFi β€œfeeding” βœ… Stable Logic works; tuning values ongoing
Rest system βœ… Stable Enter/exit animations + stat recovery
Hunt animation βœ… Stable Uses dedicated attack frames
Menus & UI ⚠ In progress Layout & styling still evolving
Sound engine βœ… Stable Non-blocking retro SFX
NeoPixel effects ⚠ In progress Mood + activity patterns, still tweaking
Desktop tooling ⚠ Planned Companion webapp / deeper integration
 

⚠️ License

Distributed under the MIT License. See LICENSE.txt for more information.

🀝 Contact

β–Ά Support me on Patreon patreon.com/cifertech

CiferTech - @twitter - CiferTech@gmali.com

Project Link: https://github.com/cifertech/TamaFi

πŸ’Ž Acknowledgements

The libraries and projects listed below are used in this software: