Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:amocanu:eduard.levinschi [2024/05/27 01:29]
eduard.levinschi [Hardware Design]
pm:prj2024:amocanu:eduard.levinschi [2024/07/03 14:38] (current)
eduard.levinschi
Line 1: Line 1:
-====== ​Food Dispenser ​======+====== ​Pet Feeder ​======
 ===== Introducere ===== ===== Introducere =====
  
Line 13: Line 13:
 Proiectul constă într-un dispozitiv care eliberează hrană dintr-un recipient atunci când este activat printr-o comandă vocală dată cu ajutorul Google Home. Voi folosi un ESP32 care trimite un semnal către un driver pentru a acționa o motorul, astfel încât să dozeze mancare. Cantitatea de hrană eliberată este determinată de senzorul de greutate în care clapeta rămâne ridicată. Proiectul constă într-un dispozitiv care eliberează hrană dintr-un recipient atunci când este activat printr-o comandă vocală dată cu ajutorul Google Home. Voi folosi un ESP32 care trimite un semnal către un driver pentru a acționa o motorul, astfel încât să dozeze mancare. Cantitatea de hrană eliberată este determinată de senzorul de greutate în care clapeta rămâne ridicată.
  
-Exemplu de schemă bloc: http://​www.robs-projects.com/​mp3proj/​newplayer.html 
 </​note>​ </​note>​
  
Line 20: Line 19:
 <note tip> <note tip>
  
-Listă de piese:+**Listă de piese**:
   * Placă de Dezvoltare ESP32 cu WiFi și Bluetooth 4.2   * Placă de Dezvoltare ESP32 cu WiFi și Bluetooth 4.2
   * Blue Gearmotor with Metal Gears and Extended Axis (1:90, 110 rpm, 3 - 6 V)   * Blue Gearmotor with Metal Gears and Extended Axis (1:90, 110 rpm, 3 - 6 V)
Line 30: Line 29:
   * Adaptor 5.7V 800 mA   * Adaptor 5.7V 800 mA
   * jumper wires   * jumper wires
-{{:​pm:​prj2024:​amocanu:​schematic_pet_feeder.jpg?​500|}}+**Schema electrica**:​\\ ​{{:​pm:​prj2024:​amocanu:​schematic_pet_feeder.jpg?​500|}}\\ 
 +**Poze cu proiectul**:​\\ 
 +{{:​pm:​prj2024:​amocanu:​whatsapp_image_2024-05-27_at_01.35.54.jpeg?​300|}}\\ 
 +{{:​pm:​prj2024:​amocanu:​whatsapp_image_2024-05-27_at_01.35.56.jpeg?​300|}}\\ 
 +{{:​pm:​prj2024:​amocanu:​whatsapp_image_2024-05-27_at_03.06.11.jpeg?​300|}}\\
 </​note>​ </​note>​
  
Line 38: Line 41:
 <note tip> <note tip>
 Descrierea codului aplicaţiei (firmware): Descrierea codului aplicaţiei (firmware):
-  ​mediu de dezvoltare ​(if any) (e.gAVR Studio, CodeVisionAVR) +**Mediu ​de dezvoltare**: Arduino IDE 2\\ 
-  * librării şsurse 3rd-party (e.gProcyon AVRlib) +**Librării**: ​  
-  ​* algoritmi şstructuri pe care plănuiţsă le implementaţ+  - HX711.h: Pentru interfatarea cu senzorul de greutate HX711.\\ 
-  * (etapa 3) surse şi funcţii implementate+  ​- WiFi.h: Pentru conectivitatea WiFi a ESP32.\\ 
 +  - Adafruit_MQTT.h și Adafruit_MQTT_Client.h:​ Pentru conexiunea MQTT cu Adafruit IO.\\ 
 +**Algoritmi șstructuri implementate** 
 +  ​Conexiunea la WiFi: În setup(), ESP32 se conectează la rețeaua WiFi folosind credențialele furnizate. 
 +  - Configurarea MQTT: Este configurată conexiunea MQTT cu Adafruit IO pentru a primi comenzi de la platformă
 +  ​- Configurarea senzorului de greutate: Senzorul HX711 este inițializat șcalibrat pentru a măsura corect greutatea. 
 +  - Controlul motorului: Motorul este controlat folosind un driver H-Bridge, iar viteza acestuia este controlată prin PWM (Pulse Width Modulation). Motorul poate funcționa la viteză normală sau redusă pentru ajustări fine. 
 +  - Algoritm de hrănire: În funcție de comanda primită (normal sau overweight),​ motorul va funcționa până când se atinge greutatea țintă specificată. Greutatea este măsurată continuu șmotorul se ajustează între viteză normală șviteză redusă pentru a atinge cât mai precis greutatea țintă. 
 +  ​- Hrănire automată: Odată ce comanda este dată, pet feeder-ul continuă să hrănească animalul o dată la 8 ore până când se primește o nouă comandă. 
 +**Surse și funcții implementate**\\ 
 + Codul firmware este structurat în jurul a trei funcții principale. Funcția setup() inițializează motorul și senzorul de greutate, realizează conexiunea la WiFi și la serviciul MQTT Adafruit IO. Funcția loop() menține conexiunea MQTT activă, citește comenzile primite și controlează motorul pentru hrănirea animalului în funcție de modul selectat (normal sau overweight). Funcția MQTT_connect() gestionează procesul de conectare și reconectare la Adafruit IO pentru a asigura o comunicare continuă.
 </​note>​ </​note>​
  
Line 47: Line 60:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Rezultatul proiectului este ca am reusit sa creez un pet feeder functional cu comanda vocala (cu ajutorul Google Assistant). Acesta are doua moduri: Un mod pentru animale cu greutate normala dar si unu mod pentru animale supraponderale. Dupa ce o comanda este data, acesta va continua sa hraneasca animalul o data la opt ore pana cand i se da alta comanda. Cantitatea este de 16 grame pentru animale cu greutate ideala iar 13 grame pentru animale cu greutate mare(portiile ​au fost luate de pe eticheta unui sac de bobite pentru pisici). Pet feeder-ul are o eroare de 2-3 grame. De asemnea am testat cu boabe de porumb si doua tipuri de bobite pentru pisica. Pentru boabele de porumb am folosit dutycycle mic, iar pentru boabe de pisica am folosit duty cycle mare(iar ocazional de blocheaza mancare pe teava).
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +In concluzie, acest proiect este ușor de folosit deoarece necesită efort minim din partea utilizatorului și va ajuta toate animalele care au nevoie de o dietă strictă din punct de vedere al cantității de mâncare.
 ===== Download ===== ===== Download =====
  
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etcUn fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). +Schema electrica si codul sursa{{:pm:prj2024:amocanu:petfeeder.zip|}}
- +
-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>​ </​note>​
  
Line 69: Line 81:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** ​şi **Resurse Hardware**.+**Resurse Software** 
 +  * https://​randomnerdtutorials.com/​esp32-load-cell-hx711/​ 
 +  * https://​randomnerdtutorials.com/​esp32-dc-motor-l298n-motor-driver-control-speed-direction/​ 
 +  * https://​www.youtube.com/​watch?​v=Do3lz5W3ZFY&​ab_channel=ElectronicClinic  
 +  * https://​esp32io.com/​tutorials/​esp32-ifttt 
 +  * https://​io.adafruit.com/​ 
 +  * https://​ifttt.com/​ 
 +**Resurse Hardware**. 
 +  * https://​www.thingiverse.com/​thing:​3623148 
 +  * https://​www.optimusdigital.ro 
 +  * https://​ardushop.ro/​ 
 +  * https://​www.conexelectronic.ro/​
 </​note>​ </​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>​
  
pm/prj2024/amocanu/eduard.levinschi.1716762595.txt.gz · Last modified: 2024/05/27 01:29 by eduard.levinschi
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