MimiPet este un sistem autonom de divertisment care aduce la viață un companion digital interactiv.
Ce face: Dispozitivul simulează ciclul de viață și stările emoționale ale unui personaj virtual.
Acesta este afisat pe un ecran OLED de $128 \times 64$ pixeli și își schimbă comportamentul în timp real. MimiPet, prin intermediul senzorilor, poate detecta dacă în cameră este lumină sau întuneric, reacționează la zgomote puternice (cum ar fi bătăile din palme) și comunică cu utilizatorul prin expresii faciale animate și semnale acustice. Utilizatorul poate avea grija de MimiPet prin intermediul butoanelor, care ofera functionalitati precum hranire, somn si joaca.
Proiectul este structurat pe o arhitectură hardware-software integrată, unde microcontrolerul ATmega328P acționează ca punct central de control.
Componentele principale ale sistemului:
Unitatea Logică (Logic Engine):
Este nucleul software care rulează pe microcontroler. Acesta primește datele brute de la senzori (prin ADC și GPIO), calculează starea de spirit a animalului și trimite comenzi către restul modulelor.
Sistemul de Input (Senzori):
Sistemul de Output (Feedback):
Interacțiunea dintre module: Interacțiunea dintre module este bidirecțională la nivel logic: senzorii modifică starea internă a programului, iar programul actualizează imediat feedback-ul vizual și sonor pentru utilizator.
Lista componentelor hardware utilizate:
Tabelul de mai jos prezinta alocarea pinilor microcontrolerului si justificarea alegerii fiecarui pin:
Pini I2C (comunicare display OLED):
Pin 27 (PC4/SDA) — linia de date I2C. Ales pentru ca este pinul hardware TWI dedicat al ATmega328P.
Pin 28 (PC5/SCL) — linia de ceas I2C. Pin hardware TWI dedicat.
Pini ADC (intrari analogice):
Pin 23 (PC0/ADC0) — citeste tensiunea din voltage divider-ul LDR + rezistor 10 kOhm. Valori ADC mari indica lumina puternica, valori mici indica intuneric.
Pin 24 (PC1/ADC1) — citeste iesirea analogica (A0) a senzorului KY-037 pentru nivelul sonor ambiental.
Pin 25 (PC2/ADC2) — citeste pozitia cursorului potentiometrului (valori 0-1023).
Pini digitali cu functii speciale:
Pin 4 (PD2/INT0) — iesirea digitala (D0) a senzorului KY-037. Ales specific pentru functia de intrerupere externa INT0, permitand detectia zgomotelor fara polling continuu.
Pin 5 (PD3/OC2B) — semnalul de control al buzzer-ului pasiv. Ales pentru iesirea PWM a Timer2, necesara generarii tonurilor de frecventa variabila.
Pini digitali pentru butoane (intrari cu pull-up intern):
Pin 6 (PD4) — butonul K4 de pe modulul OLED
Pin 11 (PD5) — butonul K3
Pin 12 (PD6) — butonul K1
Pin 13 (PD7) — butonul K2
Butoanele sunt configurate ca intrari cu rezistenta de pull-up interna activata prin registrul PORTD. Apasarea unui buton trage pinul la LOW.
Pini digitali pentru LED-uri (iesiri):
Pin 14 (PB0) — LED verde, prin rezistor de limitare 220 Ohm
Pin 15 (PB1) — LED rosu, prin rezistor de limitare 220 Ohm
Pini de alimentare:
Pin 7 (VCC) si Pin 20 (AVCC) — alimentare la 5V. AVCC este conectat la VCC pentru functionarea ADC-ului.
Pin 8 (GND) si Pin 22 (GND1) — masa.
Schema electrica prezinta conexiunile complete dintre ATmega328P si toate componentele periferice. Modulele prefabricate (display OLED cu butoane, senzor KY-037, buzzer pe PCB) sunt reprezentate prin headere cu pinii etichetati.
Alimentarea la 5V si masa sunt distribuite prin sinele breadboard-ului, conectate la pinii VCC si GND ai placii ATmega328P. Comunicarea cu display-ul OLED se realizeaza prin protocolul I2C pe pinii hardware dedicati (SDA si SCL). Fotorezistenta formeaza un voltage divider cu rezistorul de 10 kOhm, iar punctul de mijloc este citit pe canalul ADC0.
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.