Differences

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

Link to this comparison view

pm:prj2023:gpatru:wirelesscatfeeder [2023/05/04 18:33]
andreea.prigoreanu
pm:prj2023:gpatru:wirelesscatfeeder [2023/05/29 23:34] (current)
andreea.prigoreanu Add video
Line 8: Line 8:
 ===== Introducere ===== ===== Introducere =====
  
-Proiectul consta intr-un dispozitiv de hranire automata a pisicilor de companie. Stapanul seteaza prin Bluetooth cu ajutorul telefonului ora la care pisica urmeaza sa fie hranita ​si aparatul ​elibereaza mancarea la ora selectata. ​Un ecran LCD va afisa mereu ora urmatoarei hraniri ​si cat timp a mai ramas pana la acel moment, iar in momentul in care mancarea este eliberata va aparea mesajul "Feed time!". +Proiectul consta intr-un dispozitiv de hranire automata a pisicilor de companie. Stapanul seteaza prin Bluetoothcu ajutorul telefonuluiora la care pisica urmeaza sa fie hranita. Aparatul ​elibereaza mancarea la ora selectata ​si trimite stapanului cantitatea de mancare existenta in bolul animalutuluiInformatiile despre urmatoarea hranire sunt afisate pe un ecran LCD
-Orice stapan de pisici stie cat de pretentioase sunt pisicile cand vine vorba de masa, asa ca acest dipozitiv vine in ajutorul ​lor si le permite sa-si hraneasca animalutele ​chiar si atunci cand sunt plecati de acasa.+ 
 +Inspiratie ​si utilitate: Medicii veterinari recomanda ca pisicile sa fie hranite ​la ore fixe si cu cantitati exacteIn plus, orice stapan de pisici stie cat de pretentioase sunt pisicile cand vine vorba de orele de masa. Asfelm-am gandit la un dipozitiv ​care vine in ajutorul ​stapanilor de pisici ​si le permite sa respecte programul de masa al pisicilor ​chiar si atunci cand sunt foarte ocupati sau sunt plecati de acasa. 
 + 
 +<note tip> 
 +Sursa de inspiratie: [[https://​www.robotworld.ro/​tesla-smart-pet-feeder?​gclid=Cj0KCQjwmN2iBhCrARIsAG_G2i5OY_zvSqSLJgh5BTHL3E6b3F8ZLi5mddr3ffJyAKVIozzCkT8Rit0aAhVEEALw_wcB|Exemplu]] 
 +</​note>​
  
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Dispozitivul Wireless Cat Feeder utilizeaza un modul Bluetooth prin intermediul caruia stapanul poate seta ora urmatoarei mese a pisicii. Dispozitivul cunoaste ora exacta si timpul ramas pana la urmatoarea masa datorita unui modul RTC. Informatiile despre urmatoarea hranire sunt afisate pe un ecran LCD. Cand a venit timpul hranirii, un servomotor roteste capacul care astupa recipientul ​in care se afla mancarea ​si o elibereaza in bolul pisicii.+Dispozitivul Wireless Cat Feeder utilizeaza un modul Bluetooth prin intermediul caruia stapanul poate seta ora urmatoarei mese a pisicii. ​Cantitatea de mancare din bol se determina cu ajutorul senzorului de greutate de 1kg si cititorului HX711.  ​Dispozitivul cunoaste ora exacta si timpul ramas pana la urmatoarea masa datorita unui modul RTC. Cand a venit timpul hranirii, un servomotor roteste capacul care astupa recipientul ​cu mancare ​si o elibereaza in bolul pisicii. ​Un ecran LCD va afisa mereu ora urmatoarei hraniri si cat timp a mai ramas pana atunci, iar in momentul in care mancarea este eliberata va aparea mesajul "​Feeding time!"​. Dupa ce se termina procesul de eliberare a mancarii, stapanul primeste pe telefon un mesaj sugestiv si cantitatea de mancare existenta in bol. Ulterior, cantitatea de mancarea se poate verifica trimitand o comanda prin Bluetooth. Mesajele ce trebuie afisate sunt transmise catre ecranul LCD prin protocolul I2C. 
 + 
 +{{:​pm:​prj2023:​gpatru:​andreea_blockdiagr.png?​600|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 19: Line 26:
 Lista componentelor utilizate: Lista componentelor utilizate:
   * Arduino Uno   * Arduino Uno
-  * Motor Servo MG90S +  * Motor Servo MG90S      ​[[https://​cleste.ro/​motor-servo-mg90s-180g.html]] 
-  * Modul RTC +  * Senzor de greutate 1KG [[https://​ardushop.ro/​ro/​electronica/​247-senzor-greutate-1kg.html?​gclid=Cj0KCQjwmtGjBhDhARIsAEqfDEfWAN5ISO-UQY1OkYMn7AK_pIj1CEjs9nhosIPUxP37f24AS8IIQUEaAnM3EALw_wcB]] 
-  * Modul Bluetooth HC-05 +  * Modul HX711 ADC        [[https://​ardushop.ro/​ro/​electronica/​246-modul-citire-senzor-greutate-hx711.html?​search_query=hx711&​results=3]] 
-  * Ecran LCD+  * Modul RTC              ​[[https://​cleste.ro/​modul-rtc-ds3231-at24c32.html]] 
 +  * Modul Bluetooth HC-05  ​[[https://​cleste.ro/​modul-bluetooth-hc-05.html]] 
 +  * Ecran LCD I2C          [[https://​cleste.ro/​ecran-lcd-1602-iic-i2c.html]]  
 +  * Rezistente de 1k si 2k
   * Baterie   * Baterie
-  * Breadboard+ 
 +Schema electrica (realizata in Eagle): 
 + 
 +{{:​pm:​prj2023:​gpatru:​ap_schema.png?​700|}} 
  
 ===== Software Design ===== ===== Software Design =====
  
 +Mediul de dezvoltare: Arduino IDE
  
-<note tip>+Bibliotecile Arduino utilizate in dezvoltarea proiectului:​ 
 +  * Servo ([[https://​github.com/​arduino-libraries/​Servo]]) pentru a controla servo motorul MG90S 
 +  * SoftwareSerial ([[https://​github.com/​arduino/​ArduinoCore-avr/​blob/​master/​libraries/​SoftwareSerial/​src/​SoftwareSerial.h]]) pentru a realiza comunicarea seriala Bluetooth 
 +  * RTClib ([[https://​github.com/​NorthernWidget/​DS3231]]) pentru a utiliza functionalitatile modulului RTC 
 +  * hd44780 ([[https://​github.com/​duinoWitchery/​hd44780]]) pentru a utiliza ecranul LCD I2C 
 +  * HX711 ([[https://​github.com/​RobTillaart/​HX711]]) pentru a calibra si prelua greutatea de la cititorul de greutate
  
-</note>+Pentru a trimite comenzi prin Bluetooth de pe telefon catre Arduino am utilizat ​//Serial Bluetooth Terminal// disponibila in Play Store pe Android. Comenzile implementate sunt: 
 +  * prin trimiterea caracterului '​T'​ se semnaleaza setarea unei ore de hranire. Daca exista deja o ora de hranire setata, aceasta se va inlocui. Dupa primirea caracterului '​T'​ se asteapta primirea orei dupa formatul '​hour:​minutes'​ 
 +  * prin trimiterea caracterului '​F'​ se declanseaza eliberarea mancarii. Daca exista o ora de hranire setata, aceasta va fi stearsa. 
 +  * prin trimiterea caracterului '​W',​ se calculeaza cantitatea de mancare existenta in bol cu ajutorul senzorului de greutate si se trimite utilizatorului intr-un mesaj Bluetooth. 
 + 
 +Modulul de ceas este utlizat pentru a afla ora exacta. Odata ce se seteaza o ora de hranire printr-o comanda Bluetooth, se configureaza o alarma la ora selectata ce va genera o intrerupere pe pinul SQW a modulului RTC prin care se intra in starea de hranire. 
 + 
 +Pentru aflarea cantitatii din bolul animalutului se utilizeaza o celula de greutate de 1kg si un cititor de greutate. Pentru a obtine greutatea, functiile din biblioteca HX711 utilizeaza convertorul ADC.  
 + 
 +Dispozitivul functioneaza pe sistemul unui automat cu stari: 
 +  - Starea NO_FEED_SET:​ in aceasta stare, dispozitivul nu are setata o ora de hranire. Se asteapta comenzi Bluetooth. 
 +  - Starea SET_FEEDING_TIME:​ daca se primeste comanda Bluetooth '​T',​ se intra in modul de setare a orei de hranire. Odata primita ora, cu ajutorul modulului RTC se genereaza o alarma la ora respectiva si dispozitivul intra in starea IDLE. 
 +  - Starea IDLE: dispozitivul afiseaza pe ecran timpul ramas pana la hranire. Intre timp, se pot primi comenzi Bluetooth. Cand se ajunge la ora setata, alarma modulului RTC genereaza o intrerupere pe pinul PQW si starea se modifica in FEED_TIME. 
 +  - Starea FEED_TIME: se roteste servo motorul pentru a elibera mancarea. Se trimite utilizatorului un mesaj Bluetooth cu cantitatea de mancare din bol. La final se intra in starea NO_FEED_SET. 
 + 
 +La pornire dispozitivului se afla in starea NO_FEED_SET. 
 + 
 +Laboratoarele urilizate sunt: laboratul 1 UART, laboratorul 2 Intreruperi,​ laboratorul 4 ADC si laboratorul 6 I2C.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip>+Dsipozitivul final implementeaza toate functionalitatile mentionate in descrierea proiectului.
  
-</​note>​+{{:​pm:​prj2023:​gpatru:​cat_feeder1.jpeg?​300|}} {{:​pm:​prj2023:​gpatru:​cat_feeder2.jpeg?​300|}} 
 + 
 +{{:​pm:​prj2023:​gpatru:​cat_feeder3.jpeg?​300|}} 
 + 
 +{{:​pm:​prj2023:​gpatru:​cat_feeder_gif.gif?​300|}}
  
 ===== Concluzii ===== ===== Concluzii =====
 +A fost interesant sa lucrez la un proiect care implica si parte de hardware. Principalele dificultati intampinate au fost la aranjarea finala a componentelor astfel incat sa arate ca un dispozitiv compact. ​
  
 ===== Download ===== ===== Download =====
  
-<note warning>+Arhiva cu codul: {{:​pm:​prj2023:​gpatru:​cat_feeder_main.zip|}}
  
-</​note>​+Demo video: {{:​pm:​prj2023:​gpatru:​cat_feeder_video.zip|}}
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip>+  * 04.05.2023: scrierea documentatiei 
 +  * 13-14.05.2023:​ montaj hardware + incepere testare software 
 +  * 20-21.05.2023:​ lucru la software + testare 
 +  * 27-28.05.2023:​ finalizarea functionalitatilor software + testare
  
-</note>+===== Resurse ===== 
 +  * [[https://​arduinogetstarted.com/​tutorials/​arduino-lcd-i2c]] 
 +  * [[https://​randomnerdtutorials.com/​arduino-load-cell-hx711/​]] 
 +  * [[https://​randomnerdtutorials.com/​arduino-load-cell-hx711/​]] 
 +  * [[https://​github.com/​garrysblog/​DS3231-Alarm-With-Adafruit-RTClib-Library]] 
 +  * [[https://​docs.arduino.cc/​learn/​built-in-libraries/​software-serial]]
  
-===== Bibliografie/Resurse ===== +<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</a></html>
- +
-<note> +
- +
-</note>+
  
pm/prj2023/gpatru/wirelesscatfeeder.1683214415.txt.gz · Last modified: 2023/05/04 18:33 by andreea.prigoreanu
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