Table of Contents

Pet Feeder Automat

Introducere

Proiectul propune o soluție automatizată pentru hrănirea animalelor de companie, care permite distribuirea controlată a hranei la intervale regulate sau la cerere. Sistemul oferă posibilitatea de a seta frecvența și cantitatea porțiilor, asigurând astfel alimentația constantă și echilibrată a animalului, chiar și în absența proprietarului.

Scopul principal este de a automatiza procesul de hrănire, reducând astfel intervențiile manuale și timpul necesar pentru îngrijirea zilnică. Se urmărește totodată asigurarea unei alimentații corecte și prevenirea risipirii sau degradării hranei.

Inițiativa a plecat de la necesitatea de a gestiona eficient alimentația animalelor în situații în care proprietarii nu pot fi prezenți. A fost identificată oportunitatea de a dezvolta o soluție practică, cu aplicabilitate reală, care să îmbunătățească rutina zilnică a posesorilor de animale.

Proiectul este valoros prin faptul că adresează o nevoie comună și oferă beneficii clare: hrănire constantă, control al porțiilor, economie de hrană și liniște pentru proprietar. În plus, dezvoltarea unei astfel de soluții contribuie la aprofundarea cunoștințelor tehnice în domeniul sistemelor automate și al controlului digital.

Descriere generală

Schema bloc

Module hardware

Module software

Interacțiunea dintre module

Hardware Design

Listă de componente

Componentă Descriere Interfață / Pini Link
Placă Arduino UNO Microcontroller ATmega328P, 5V, 16MHz GPIO, I2C, PWM Link
Servomotor MG995 Servo digital, 180°, 4.8–7.2V PWM: pin 9 (OC1A) Link
Modul RTC DS3231 Ceas de timp real cu baterie CR2032 I2C: A4 (SDA), A5 (SCL) Link
LCD 1602 cu I2C Ecran 16×2 caractere, 5V, cu backlight I2C: A4 (SDA), A5 (SCL) Link
3 Butoane push Butoane folosite pentru interacțiune PD2 (pin 2 – porții), PD3 (pin 3 – interval), PD5 (pin 5 – manual) Link
Breadboard Conectarea tuturor componentelor, pentru a asigura funcționarea sistemului - Link
Fire jumper Conectarea butoanelor - Link
Fire tată-tată Conectarea breadboardului cu celelalte componente - Link
Tijă metalică M3 Conectarea servomotorului la elicea de eliberare a hranei - -
Elice imprimată 3D Eliberează hrana prin rotire, odată cu acționarea servomotorului - -
Capac și pereți din polistiren Favorizează căderea boabelor în elice - -
Bureți Sunt lipiți de pereții marginilor, în jurul tijei și nu permit boabelor să ajungă în locuri nedorite - -
Tub cilindric din hârtie Evită supraaglomerarea de boabe a orificiului din capac - -
Sticlă tip pâlnie Are introdus în locul dopului tubul de hârtie, asigurând un număr mare de porții - -

Schema electrică

Diagramă realizată în Cirkit– include: Arduino, servo, RTC, LCD și butoane.

Schemă electrică realizată în Tinkercad.

Pini utilizați și interfețe hardware

Componentă Pin Arduino Descriere Tehnologie utilizată
Buton porții D2 (PD2) Setează numărul de porții GPIO + Interrupt (INT0)
Buton interval D3 (PD3) Setează intervalul de hrănire GPIO + Interrupt (INT1)
Buton manual D5 (PD5) Activează hrănirea manual GPIO (polling)
Servomotor MG995 D9 (PB1) Comandă rotația servomotorului PWM (Timer1 – OC1A)
RTC DS3231 A4, A5 Comunică ora cu microcontrollerul I2C (SDA/SCL)
LCD 1602 (I2C) A4, A5 Afișează info pe ecran I2C (SDA/SCL)

Stadiul implementării hardware

Proiectul este funcțional și implementat fizic pe breadboard. Sistemul include toate modulele descrise în diagrama bloc, conectate la placa de dezvoltare Arduino UNO.

Componentele esențiale includ:

Sistemul a fost testat și validat în condiții reale, conform descrierii din documentație.

Imagini și videoclip cu implementarea hardware

Vedere frontală: rezervor + bol Ansamblu cu pâlnie și elice 3D LCD cu informații despre hrănire LCD în timpul FEEDING

Implementarea hardware

Software Design

Stadiul actual al implementării software

Sistemul software al proiectului este complet implementat și funcționează pe baza codului C scris pentru platforma Arduino IDE, varianta 2.3.6, cu acces direct la registrele microcontrolerului ATmega328P. Toate funcțiile critice (gestionare butoane, PWM pentru servo, afișare I2C, RTC, întreruperi externe) sunt testate și validate.

Biblioteci folosite și justificare

Elemente de noutate

Proiectul combină mai multe funcționalități critice pentru un sistem embedded:

Legătura cu laboratoarele

Proiectul folosește activ toate conceptele predate în laboratoarele următoare:

Scheletul software și interacțiuni

Structura proiectului este modulară:

Validarea s-a făcut prin rulare reală pe breadboard, cu alinierea exactă a orei de hrănire cu DS3231. LCD-ul indică starea, iar servomotorul răspunde precis la comenzi.

Funcții implementate

Algoritmi și structuri utilizate

Algoritmul de funcționare este bazat pe:

Structura codului este modulară, cu funcții dedicate pentru:

Calibrare

Unghiurile au fost alese pentru a face o rotație completă (0–180°) per porție distribuită. S-a folosit următorul cod pentru generarea semnalului PWM:

  c
  void set_servo_angle(int angle) {
    uint16_t pulse_us = map(angle, 0, 180, 1000, 2000);
    OCR1A = pulse_us * 2;  
  }
  

Modulul DS3231 este conectat prin I2C (SDA/SCL) și inițializat în setup():

  c
  rtc.begin();
  
  Ora curentă este citită periodic în bucla principală:
  c
  t = rtc.getTime();
  
  Valorile orei, minutului și secundelor sunt apoi comparate cu ora programată pentru a declanșa hrănirea:
  c
  if (t.hour == next_feed_hour && t.min == next_feed_minute && t.sec == next_feed_seconds) {
    feed_active = true;
  }
  
  Calibrarea s-a făcut prin setarea manuală inițială a orei modulului, folosind funcția rtc.setTime(...) într-un sketch separat (neinclus în proiectul final), pentru a corespunde cu ora reală a sistemului.

Pentru a evita activări multiple din cauza zgomotului electric, s-a adăugat un delay software:

  c
  if (!(PIND & (1 << BTN_MANUAL))) {
    feed_active = true;
    _delay_ms(300);  // debounce
  }
  

Optimizări

Rezultate Obţinute

Mai jos este o demonstrație completă a funcționării sistemului Pet Feeder automat:

Demonstrația video a proiectului

Videoclipul prezintă funcționarea sistemului în regim real, ilustrând:

Funcționalitățile de bază ale proiectului

În videolicpul de mai sus, sunt prezentate următoarele funcționalități de bază:

Concluzii

Proiectul “Pet Feeder Automat” a demonstrat utilitatea unui sistem de hrănire automată pentru animale de companie. Sistemul oferă o soluție practică pentru proprietarii ocupați, asigurând o alimentație regulată chiar și în absența acestora.

Beneficii obținute

Posibile îmbunătățiri

Cod sursă

Codul sursă complet al proiectului este disponibil în repository-ul GitHub: GitHub Repository - Arduino Pet Feeder

Jurnal

Etapa 1: Planificare și alegerea componentelor

Etapa 2: Testarea individuală a componentelor

Etapa 3: Dezvoltarea funcționalității de hrănire programată

Etapa 4: Asamblare hardware și integrare finală

Etapa 5: Testare completă și ajustări

Bibliografie/Resurse

Resurse Hardware

Resurse Software