This shows you the differences between two versions of the page.
pm:prj2023:gpatru:wirelesscatfeeder [2023/05/29 19:38] andreea.prigoreanu Add hardware design |
pm:prj2023:gpatru:wirelesscatfeeder [2023/05/29 23:34] (current) andreea.prigoreanu Add video |
||
---|---|---|---|
Line 37: | Line 37: | ||
Schema electrica (realizata in Eagle): | Schema electrica (realizata in Eagle): | ||
- | {{:pm:prj2023:gpatru:ap_schema.png?600|}} | + | {{: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. |
+ | |||
+ | {{:pm:prj2023:gpatru:cat_feeder1.jpeg?300|}} {{:pm:prj2023:gpatru:cat_feeder2.jpeg?300|}} | ||
+ | |||
+ | {{:pm:prj2023:gpatru:cat_feeder3.jpeg?300|}} | ||
- | </note> | + | {{: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> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||