This shows you the differences between two versions of the page.
pm:prj2025:aluca:teodora.teodorescu [2025/05/25 18:57] teodora.teodorescu [Software Design] |
pm:prj2025:aluca:teodora.teodorescu [2025/05/30 10:25] (current) teodora.teodorescu [Jurnal] |
||
---|---|---|---|
Line 43: | Line 43: | ||
* Link Github: | * Link Github: | ||
https://github.com/TeodoraTeo05/cat-feeder-esp32 | https://github.com/TeodoraTeo05/cat-feeder-esp32 | ||
+ | * Link Demo video: | ||
+ | https://youtu.be/CCG9btgEeA4 | ||
Descrierea codului aplicatiei: | Descrierea codului aplicatiei: | ||
Line 48: | Line 50: | ||
</note> | </note> | ||
* Librarii si surse 3rd-party utilizate: | * Librarii si surse 3rd-party utilizate: | ||
- | - `WiFi.h` – pentru crearea unei retele Wi-Fi in mod Access Point (ESP32 functioneaza ca hotspot local). | + | - WiFi.h – pentru crearea unei retele Wi-Fi in mod Access Point (ESP32 functioneaza ca hotspot local). |
- | - `WebServer.h` – pentru gestionarea cererilor HTTP si afisarea unei pagini HTML de control in browser. | + | - WebServer.h – pentru gestionarea cererilor HTTP si afisarea unei pagini HTML de control in browser. |
- | - `ESP32Servo.h` – pentru controlul servomotoarelor SG90, oferind semnal PWM stabil. | + | - ESP32Servo.h – pentru controlul servomotoarelor SG90, oferind semnal PWM stabil. |
- | - `LiquidCrystal_I2C.h` – pentru afisaj LCD 1602 cu interfata I2C. | + | - LiquidCrystal_I2C.h – pentru afisaj LCD 1602 cu interfata I2C. |
* Algoritmi si structuri implementate: | * Algoritmi si structuri implementate: | ||
- | - Codul este organizat modular in functii dedicate: `giveFood()`, `giveWater()`, `handleRoot()`, `beepBuzzer()` etc. | + | - giveFood() – activeaza servomotorul de mancare, afiseaza un mesaj pe LCD si porneste buzzerul. |
- | - Se folosesc rutine de tip polling in `loop()` pentru citirea starii butoanelor fizice. | + | - giveWater() – activeaza servomotorul pentru apa, afiseaza un mesaj relevant pe LCD si activeaza buzzerul. |
- | - Web serverul trateaza cererile GET pentru rutele `/food` si `/water`, si reda o pagina HTML responsiva pentru utilizator. | + | - beepBuzzer() – produce un sunet scurt pentru confirmarea comenzii. |
- | - Buzzerul si LCD-ul ofera feedback auditiv si vizual la fiecare actiune, confirmand comanda executata. | + | - handleRoot() – serveste pagina HTML principala catre browserul utilizatorului. |
+ | - handleGiveFood() si handleGiveWater() – trateaza cererile GET de la butoanele web si apeleaza functiile corespunzatoare. | ||
+ | |||
+ | * In loop(), se foloseste o structura de polling pentru a verifica starea butoanelor fizice, iar la apasare se declanseaza functiile corespunzatoare (mancare sau apa). | ||
+ | |||
+ | * Interfata HTML include doua butoane care trimit cereri HTTP catre rutele /food si /water, iar serverul ESP32 le gestioneaza in timp real. | ||
* Surse si functii implementate: | * Surse si functii implementate: | ||
- | - Servomotoarele sunt comandate pe pinii 16 si 17. | + | - setup() initializeaza toate componentele: LCD-ul, servomotoarele, butoanele, buzzerul si serverul web. Creeaza reteaua Wi-Fi cu SSID-ul `CatFeeder_AP`. |
- | - Butoanele fizice sunt conectate la pinii 27 si 14, configurati cu `INPUT_PULLUP`. | + | - loop() verifica permanent daca au fost apasate butoanele fizice si trateaza cererile web de la clientii conectati la retea. |
- | - Buzzerul este conectat la pinul 4 si este activat prin `digitalWrite()` la fiecare comanda. | + | - Servomotoarele sunt comandate pe pinii 16 (mancare) si 17 (apa). |
- | - Interfata HTML este livrata direct de pe ESP32 si poate fi accesata de pe orice dispozitiv conectat la reteaua locala ESP32 (`CatFeeder_AP`). | + | - Butoanele fizice sunt conectate pe pinii 27 si 14 si sunt citite cu `digitalRead()` in combinatie cu `INPUT_PULLUP`. |
- | - Pe LCD sunt afisate mesaje personalizate in functie de comanda data (hranire sau apa). | + | - Buzzerul este conectat la pinul 4 si este controlat simplu cu `digitalWrite()`. |
+ | - Pe ecranul LCD apar mesajele: `Eat well, my kittens` sau `Drink well, my kittens`, in functie de comanda primita. | ||
Line 71: | Line 78: | ||
<note tip> | <note tip> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Pet feeder - produs final: |
+ | * https://youtube.com/shorts/fqGpPC8dX_Y?feature=share | ||
</note> | </note> | ||
- | ===== Concluzii ===== | ||
- | ===== Download ===== | ||
- | |||
- | <note warning> | ||
- | 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**. | ||
- | </note> | ||
- | |||
- | ===== Jurnal ===== | ||
- | |||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
- | |||
- | ===== Bibliografie/Resurse ===== | ||
- | |||
- | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
- | </note> | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||