This shows you the differences between two versions of the page.
pm:prj2023:gpatru:wirelesscatfeeder [2023/05/05 11:25] andreea.prigoreanu Added block diagram |
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. Informatiile despre urmatoarea hranire sunt afisate pe un ecran LCD. | + | 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. Aparatul elibereaza mancarea la ora selectata si trimite stapanului cantitatea de mancare existenta in bolul animalutului. Informatiile 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 exacte. In plus, orice stapan de pisici stie cat de pretentioase sunt pisicile cand vine vorba de orele de masa. Asfel, m-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. Comunicatia se realizeaza prin protocolul SPI. 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 "Feed time!". Mesajele ce trebuie afisate sunt transmise catre ecranul LCD prin protocolul I2C. | + | 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:catfeeder_diagram.png?200|}} | + | {{:pm:prj2023:gpatru:andreea_blockdiagr.png?600|}} |
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 21: | 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> | + | |