This is an old revision of the document!


MoodPet - A Smart Digital Pet

Autor: Florin Bădilaș

Introducere

MoodPet este un companion virtual embedded inspirat de jocurile de tip Tamagotchi. Proiectul este bazat pe microcontrollerul ATmega328P-XMINI și combină senzori de mediu, afișare pe LCD, interacțiune prin butoane, feedback vizual prin LED RGB și feedback sonor prin buzzer.

Scopul proiectului este realizarea unui animal virtual care reacționează la mediul înconjurător și la acțiunile utilizatorului. MoodPet are nume propriu, stări interne, nivel de foame, energie, fericire, XP și level.

Descriere generală

La pornire, utilizatorul intră în meniul de alegere a numelui. Numele este introdus literă cu literă folosind cele patru butoane.

Funcționalitatea butoanelor în meniul de nume:

  • Buton 1 - crește litera curentă
  • Buton 2 - scade litera curentă
  • Buton 3 - adaugă litera în nume
  • Buton 4 - confirmă numele

După confirmarea numelui, MoodPet intră în meniul principal de informații. Aici sunt afișate mai multe pagini cu informații despre pet și despre mediul înconjurător.

În meniul principal:

  • Buton 1 - intră în meniul de hrănire
  • Buton 2 - pornește mini-game-ul de dexteritate
  • Buton 4 - schimbă pagina de informații

MoodPet își modifică starea în funcție de:

  • temperatura detectată
  • umiditatea ambientală
  • nivelul de lumină
  • nivelul de foame
  • nivelul de energie
  • nivelul de fericire
  • interacțiunea utilizatorului

Stările principale sunt:

  • HAPPY
  • CALM
  • HUNGRY
  • SLEEPY
  • SAD
  • ANGRY

Schema bloc

Schema bloc MoodPet

Prototip

MoodPet - prototip initial

Prototipul inițial MoodPet: ATmega328P-XMINI, LCD I2C, senzor DHT11, senzor de lumină TEMT6000, LED RGB, buzzer și butoane.

Video demonstrativ

Hardware Design

Lista de piese

Componentă Model Rol
Microcontroller ATmega328P-XMINI Unitate centrală de control
Display LCD LCD 16×2 I2C Afișare meniu, status și informații
Senzor temperatură DHT11 Detectare temperatură și umiditate
Senzor lumină TEMT6000 Detectare lumină ambientală
LED RGB CJMCU RGB LED Module Feedback vizual pentru stări și joc
Buzzer Active Buzzer 5V Feedback sonor
Butoane Push Button 6x6x6 Control meniu și interacțiune
Breadboard 830 puncte Prototipare
Fire jumper Dupont wires Conexiuni

Conexiuni principale

  • DHT11 DATA → PD2
  • Buzzer → PD4
  • RGB RED → PD5
  • RGB GREEN → PD6
  • RGB BLUE → PD7
  • Buton 1 → PB0
  • Buton 2 → PB1
  • Buton 3 → PB2
  • Buton 4 → PB3
  • TEMT6000 OUT → PC0 / A0
  • LCD SDA → PC4 / SDA
  • LCD SCL → PC5 / SCL

Software Design

Mediu de dezvoltare

  • PlatformIO
  • AVR-GCC
  • Limbaj C/C++

Periferice utilizate

Periferic Utilizare
ADC Citire senzor TEMT6000
GPIO Butoane, LED RGB și buzzer
TWI / I2C Comunicare LCD
Timer / millis Actualizare stări, joc și evenimente
DHT library Citire temperatură și umiditate

Structura software

  • citirea periodică a senzorilor
  • calcularea stării companionului virtual
  • gestionarea meniului de nume
  • gestionarea meniului principal de informații
  • gestionarea meniului de hrănire
  • implementarea mini-game-ului de dexteritate
  • controlul LED-ului RGB
  • generarea efectelor sonore
  • sistem de XP și level

Meniuri implementate

Meniul de nume

La pornire, utilizatorul alege numele companionului virtual. Numele poate fi introdus literă cu literă folosind butoanele.

  • Buton 1 - litera următoare
  • Buton 2 - litera anterioară
  • Buton 3 - adaugă litera selectată
  • Buton 4 - confirmă numele

Meniul principal

După alegerea numelui, MoodPet afișează informații despre companion și despre mediu.

Pagini afișate:

  • nume + mood
  • temperatură, umiditate și lumină
  • food, energy și happiness
  • level, XP și timp de funcționare

Meniul de hrănire

Meniul de hrănire permite alegerea unei porții de mâncare.

  • Buton 2 - scade porția
  • Buton 3 - crește porția
  • Buton 4 - confirmă hrănirea

După hrănire, nivelul de foame scade, iar happiness și XP cresc. O porție mai mare oferă un bonus mai mare de happiness, dar scade puțin energia.

Mini-game de dexteritate

Mini-game-ul este pornit din meniul principal cu Butonul 2.

Funcționare:

  • LED-ul RGB se stinge
  • utilizatorul trebuie să aștepte
  • după un timp aleator, LED-ul devine verde
  • utilizatorul trebuie să apese rapid Butonul 1
  • timpul de reacție influențează recompensa

Dacă utilizatorul apasă prea devreme sau prea târziu, happiness scade. Dacă reacționează rapid, happiness și XP cresc.

State Machine

MoodPet utilizează o mașină de stări pentru meniuri și comportament.

Meniuri principale:

  • NAME_MENU
  • INFO_MENU
  • FEED_MENU
  • PLAY_MENU

Stări de joc:

  • PLAY_START
  • PLAY_WAIT
  • PLAY_SIGNAL

Mood-ul companionului este calculat pe baza unui scor intern influențat de foame, energie, fericire, temperatură, umiditate și lumină.

Rezultate obținute

Până în acest stadiu, proiectul permite:

  • alegerea numelui companionului virtual
  • afișarea mai multor pagini de informații pe LCD
  • citirea temperaturii și umidității cu DHT11
  • citirea luminii ambientale cu TEMT6000
  • controlul LED-ului RGB în funcție de stare
  • feedback sonor prin buzzer
  • hrănirea pet-ului printr-un meniu interactiv
  • mini-game de dexteritate pentru creșterea happiness și XP
  • sistem de mood, food, energy, happiness, XP și level

Concluzii

MoodPet este un sistem embedded interactiv care transformă datele citite de la senzori într-un comportament virtual. Proiectul nu se limitează la afișarea unor valori, ci implementează un companion digital cu meniuri, stări, reacții, sunete și interacțiune prin butoane.

Download

Jurnal

  • 09.05.2026 - Alegerea temei și stabilirea componentelor necesare
  • 10.05.2026 - Crearea paginii OCW și realizarea schemei bloc
  • 11.05.2026 - Testarea componentelor principale și realizarea prototipului inițial
  • 12.05.2026 - Implementarea meniului de nume, meniului de hrănire și mini-game-ului de dexteritate

Bibliografie / Resurse

pm/prj2026/alexandru.jipa2803/florin.badilas.1779632124.txt.gz · Last modified: 2026/05/24 17:15 by florin.badilas
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0