Pet Feeder

Introducere

Proiectul constă în realizarea unui sistem mecatronic capabil să elibereze porții de hrană uscată pentru animalele de companie la intervale de timp prestabilite de utilizator. Sistemul monitorizează ora exactă și acționează un mecanism de dozare mecanic pentru a automatiza procesul de hrănire.

Scopul principal este crearea unui dispozitiv fiabil care să asigure nutriția animalelor de companie chiar și atunci când stăpânii nu sunt acasă, eliminând stresul legat de programul fix de masă.

Consider că acest proiect este util deoarece îmi oferă posibilitatea de a aplica practic noțiunile studiate în laborator într-un dispozitiv interactiv și vizual, care rezolvă o problemă reală de automatizare. Proiectul demonstrează cum, folosind resurse hardware limitate specifice sistemelor embedded, se poate crea un produs de tip „Smart Home” capabil să gestioneze sarcini critice în timp real, oferind în același timp un beneficiu direct utilizatorilor prin asigurarea unui regim alimentar controlat pentru animalele de companie.

Descriere generală

Proiectul este organizat în trei paliere principale care interacționează bidirecțional:

  • Modulul de Intrare (Interfața):

Cuprinde butoanele de control și senzorul de timp (RTC). Acestea furnizează microcontrolerului datele necesare pentru programare și referința temporală precisă.

  • Unitatea Centrală (ATmega328P):

Reprezintă nucleul software. Gestionează logica meniului, stochează setările în memoria permanentă (EEPROM) și decide momentul declanșării hrănirii prin compararea timpului curent cu cel programat.

  • Modulul de Ieșire (Execuția):

Include ecranul LCD pentru feedback vizual, buzzer-ul pentru alertă sonoră și servomotorul care acționează mecanismul fizic de distribuție a hranei.

Hardware Design

Bill of Materials

Componentă Cantitate Link Preț unitar (RON)
Placă dezvoltare Arduino UNO 1 Link30.93
Display LCD SPI 1 Link 13.99
Modul interfață I2C 1 Link 9.99
Buzzer pasiv 1 Link 2.99
Condensator electrolitic 1000µF 2 Link 5.08
Condensator ceramic 0.1uF 2 Link 6.30
Servomotor MG995 1 Link 44,53
Modul RTC DS3231 1 Link14,74
Set fire Jumper 1 Link11,72
Preț total 140.02 RON

Funcționalitatea Componentelor

Componentă Rol în proiect
LCD 1602 Afișează instrucțiunile, feedback-ul pentru cod și rezultatul accesului
Butoane push Îți permit să navighezi prin meniu, să schimbi orele de hrănire sau să dai o porție la cerere
Buzzer Pasiv Scoate un sunet scurt înainte de eliberarea hranei și în timpul setărilor
Servomotor MG995 Învârte axul pentru a împinge bobițele de mâncare afară din rezervor
Modul RTC Ține minte ora exactă (oră, minut, secundă) chiar și când aparatul este scos din priză
Condensator Stochează energie și o eliberează rapid atunci când servomotorul pornește brusc
Adaptor Sursă 5V/2A Transformă curentul de la priză în curent continuu sigur de 5V pentru tot circuitul

Schema Electrică

Pinout

Componentă Pin Arduino Tip Pin Utilitate
LCD 1602 A4 (SDA) Date I2C Transmite datele text către ecran
LCD 1602 A5 (SCL) Clock I2C Sincronizează transmisia datelor între Arduino și LCD
Buton UP 3 Digital Crește valoarea orelor/minutelor în meniul de setare
Buton DOWN 4 Digital Scade valoarea orelor/minutelor în meniul de setare
Buton MENU 2 PCINT Schimbă starea programului (afișare oră / setare mese)
Servomotor MG995 9 PWM Controlează unghiul și mișcarea precisă a spiralei de hrană
Modul RTC A4 (SDA) Date I2C Transmite datele de timp (oră, minut) către Arduino
Modul RTC A5 (SCL) Clock I2C Sincronizează citirea timpului de la cipul de ceas
Buzzer pasiv 8 Digital Trimite semnalul sonor
Linie de Tensiune 5V Power Distribuie tensiunea de 5V către magistrala de alimentare pozitivă a componentelor
Referință (GND) GND Power Închide circuitul pentru toate componentele

Software Design

Codul sursă al acestui proiect, scris în C++ pentru mediul Arduino, acționează ca centrul de comandă al întregului sistem. Nu este doar un simplu temporizator, ci un sistem integrat care gestionează precis timpul, interfața utilizatorului și controlul electromecanic.

Pentru a asigura un timp de răspuns instantaneu și o amprentă redusă în memorie, codul a fost optimizat folosind tehnici de programare la nivel coborât (Direct Port Manipulation).

Funcționalități și Tehnici Cheie:

  • Sincronizare Precisă (I2C & RTC): Sistemul preia timpul real de la un modul hardware DS3231 prin protocolul I2C. Aceasta garantează că orele de masă sunt respectate la secundă, independent de funcționarea microcontrolerului.
  • Sistem de Meniu tip „State Machine”: Logica meniului folosește o mașină de stări (modMeniu) pentru a gestiona tranzițiile dintre ecranul principal și ecranele de editare. Utilizatorul poate naviga și salva setări pentru 3 mese distincte, folosind doar 3 butoane tactile.
  • Optimizare Hardware prin Regiștri: O caracteristică distinctivă a acestui cod este renunțarea la funcțiile standard (precum digitalRead sau pinMode) în favoarea manipulării directe a regiștrilor microcontrolerului ATmega328P (DDRD, PORTD, PIND, DDRB). Această abordare:
    • Scade timpul de reacție al butoanelor la nivel de microsecunde.
    • Activează rezistențele interne de Pull-Up direct din hardware.
    • Oferă un control mult mai curat asupra buzzer-ului pentru feedback-ul acustic.
  • Control Mecanic Temporizat: Codul generează semnale PWM precise cu ajutorul bibliotecii Servo.h pentru a controla un motor de rotație continuă (360°). Hrănirea este transformată dintr-o mișcare fixă într-una bazată pe un interval de timp customizabil (în prezent, setat la 10 secunde de rotire inversă).
  • Filtrare Software (Debouncing): Citirea butoanelor este protejată de un algoritm de debouncing bazat pe funcția millis(), eliminând declanșările multiple cauzate de zgomotul mecanic al contactelor.

Rezultate Obţinute

A fost realizat un prototip electromecanic funcțional și autonom al unui dozator de hrană pentru animale de companie, echipat cu o interfață utilizator pe un display LCD 1602. Sistemul permite programarea orelor de masă folosind 3 butoane tactile, care controlează precis un mecanism elicoidal (sfredel Arhimedic) acționat de un servomotor de rotație continuă.

Sistemul include un meniu complex și multiple funcționalități hardware și software, precum:

  • Monitorizare în timp real a orei exacte cu ajutorul modulului hardware RTC DS3231 (comunicație I2C);
  • Meniu interactiv tip „State Machine” ce permite navigarea și programarea independentă a 3 mese distincte;
  • Mecanism de dozare DIY complet funcțional, construit din carton laminat ranforsat, capabil să transporte hrana uscată fără blocaje mecanice;
  • Control temporizat prin semnal PWM pentru servomotorul MG995, incluzând rotire inversă pentru eliberarea porțiilor și frânare electronică (punct neutru);
  • Feedback acustic (buzzer) pentru atenționarea animalului în momentul declanșării mesei;
  • Filtrare software (debounce) bazată pe temporizarea millis() pentru eliminarea citirilor false ale butoanelor;
  • Gestionarea eficientă a memoriei prin stocarea orelor de masă în vectori de date (arrays).

Implementarea finală a proiectului demonstrează o arhitectură software hibridă: utilizează biblioteci standard pentru comunicația I2C și generarea semnalelor PWM, combinate cu configurarea directă a registrelor hardware (PORTB, PORTD, DDRB, DDRD, PIND) pentru citirea rapidă a butoanelor cu rezistențe interne de Pull-Up și controlul pinilor GPIO.

Concluzii

Realizarea acestui proiect a demonstrat cu succes integrarea conceptelor de electronică, programare la nivel coborât și mecanică DIY într-un dispozitiv practic, autonom și util. Dozatorul automat de hrană își îndeplinește cu precizie scopul, oferind un sistem stabil pentru programarea meselor animalelor de companie.

Una dintre cele mai mari provocări, dar și realizări, a fost proiectarea și asamblarea mecanismului de dozare (sfredelul Arhimedic) folosind exclusiv materiale reciclabile (carton laminat). Această etapă a dovedit că limitările de resurse materiale pot fi depășite prin inginerie creativă. Din punct de vedere software, tranziția de la funcțiile Arduino standard la manipularea directă a registrelor ATmega328P a oferit o perspectivă valoroasă asupra arhitecturii hardware și a optimizării performanței.

Pe viitor, proiectul poate fi extins prin modelarea și printarea 3D a ansamblului mecanic pentru o rezistență sporită la uzură, sau prin integrarea unui modul Wi-Fi (ex. ESP8266) pentru controlul și monitorizarea hrănirii de la distanță printr-o aplicație mobilă.

Download

Arhiva atașată pe OCW conține codul sursă complet al proiectului realizat pentru Arduino UNO R3.

Fișier:

Jurnal

  • 29.04.2026 - Alegerea temei: Dozator Automat de Hrană.
  • 06.05.2026 - Crearea paginii wiki și definirea structurii proiectului.
  • 06.05.2026 - Adăugarea descrierii generale, a scopului proiectului și a schemei bloc.
  • 11.05.2026 - Stabilirea configurației hardware, identificarea pinilor și conectarea componentelor pe breadboard.
  • 16.05.2026 - Integrarea display-ului LCD 1602 prin protocol I2C și a modulului de timp real RTC DS3231.
  • 16.05.2026 - Proiectarea și asamblarea mecanismului de dozare DIY (sfredelul Arhimedic din carton laminat și componentele mecanice).
  • 19.05.2026 - Dezvoltarea sistemului de meniu (State Machine) pentru programarea celor 3 mese și calibrarea semnalului PWM pentru servomotor.
  • 19.05.2026 - Optimizarea finală a codului prin trecerea la manipularea directă a registrelor hardware (PORTB, PORTD) și testarea ansamblului electromecanic.
pm/prj2026/victor.stoica0203/robert.predeleanu.txt · Last modified: 2026/05/24 23:18 by robert.predeleanu
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