This is an old revision of the document!


Pet feeder

Introducere

Pet feeder este un dispozitiv inteligent de hranire pentru pisici, controlabil manual sau prin Wi-Fi. Scopul este de a facilita ingrijirea animalelor de companie, mai ales in lipsa stapanului. Ideea a pornit din nevoia de autonomie si siguranta, util tuturor proprietarilor ocupati.

Descriere generală

Proiectul reprezinta un hranitor automat pentru pisici, bazat pe microcontrolerul ESP32. Sistemul foloseste doua servomotoare SG90 pentru deschiderea compartimentelor de apa si mancare, controlate fie prin doua butoane fizice, fie printr-o interfata web accesibila prin WiFi. Utilizatorul poate interactiona local sau de la distanta, folosind aplicatia web. Un buzzer conectat la un pin GPIO emite un semnal sonor la fiecare actiune, iar un ecran LCD cu interfata I2C afiseaza mesaje precum “Eat well, my kittens” sau “Drink well, my kittens”, oferind feedback vizual.

Hardware Design

Lista de piese folosite

Descriere detaliata a functionalitatii hardware

Proiectul este bazat pe placa ESP32, care gestioneaza toate componentele si ofera conexiune WiFi. Doua servomotoare SG90 sunt folosite pentru a actiona mecanismele de eliberare a hranei si apei, fiind conectate pe pinii GPIO16 si GPIO17, controlati prin semnal PWM. Pentru comenzi manuale, sunt conectate doua butoane pe GPIO27 si GPIO14. Acestia sunt setati ca `INPUT_PULLUP`, deci nu au nevoie de rezistori externi. Cand un buton este apasat, ESP32 detecteaza nivelul LOW si executa actiunea corespunzatoare. Pe pinul GPIO4 este conectat un buzzer activ, care emite un semnal sonor scurt la fiecare alimentare. LCD-ul 1602 este conectat prin I2C, folosind pinii SDA (GPIO21) si SCL (GPIO22). Acesta afiseaza mesaje diferite in functie de comanda executata. Toate componentele sunt montate pe breadboard si alimentate printr-un cablu micro USB conectat la calculator. ESP32 alimenteaza si servomotoarele si display-ul, iar consumul total este potrivit pentru o alimentare pe USB, fara sursa externa.

Software Design

  • Link Github:

https://github.com/TeodoraTeo05/cat-feeder-esp32

Descrierea codului aplicatiei:

  • Mediu de dezvoltare: proiectul a fost implementat si testat folosind Arduino IDE, cu placa ESP32 configurata prin Board Manager. Codul a fost scris in C++ si incarcat direct prin cablu USB.
  • Librarii si surse 3rd-party utilizate:
    1. `WiFi.h` – pentru crearea unei retele Wi-Fi in mod Access Point (ESP32 functioneaza ca hotspot local).
    2. `WebServer.h` – pentru gestionarea cererilor HTTP si afisarea unei pagini HTML de control in browser.
    3. `ESP32Servo.h` – pentru controlul servomotoarelor SG90, oferind semnal PWM stabil.
    4. `LiquidCrystal_I2C.h` – pentru afisaj LCD 1602 cu interfata I2C.
  • Algoritmi si structuri implementate:
    1. Codul este organizat modular in functii dedicate: `giveFood()`, `giveWater()`, `handleRoot()`, `beepBuzzer()` etc.
    2. Se folosesc rutine de tip polling in `loop()` pentru citirea starii butoanelor fizice.
    3. Web serverul trateaza cererile GET pentru rutele `/food` si `/water`, si reda o pagina HTML responsiva pentru utilizator.
    4. Buzzerul si LCD-ul ofera feedback auditiv si vizual la fiecare actiune, confirmand comanda executata.
  • Surse si functii implementate:
    1. Servomotoarele sunt comandate pe pinii 16 si 17.
    2. Butoanele fizice sunt conectate la pinii 27 si 14, configurati cu `INPUT_PULLUP`.
    3. Buzzerul este conectat la pinul 4 si este activat prin `digitalWrite()` la fiecare comanda.
    4. Interfata HTML este livrata direct de pe ESP32 si poate fi accesata de pe orice dispozitiv conectat la reteaua locala ESP32 (`CatFeeder_AP`).
    5. Pe LCD sunt afisate mesaje personalizate in functie de comanda data (hranire sau apa).

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2025/aluca/teodora.teodorescu.1748188533.txt.gz · Last modified: 2025/05/25 18:55 by teodora.teodorescu
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