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: