Cat Feeder

Introducere

Proiectul meu va consta in construirea unui dispozitiv ce are rolul de a pune intr-un recipient mancarea destinata consumului pisicii in momentul cand aceasta se apropie de aparat.De asemenea, va trimite si un mesaj prin Bluetooth propritarului cu mesajul “The cat has just been fed”. Ideea mi-a venit deaorece imi doresc o pisica, insa programul incarcat nu imi permite sa am grija mereu de nevoile acesteia, iar dispozitivul meu ar combate acest neajuns. Cred ca este util pentru ca usureaza munca proprietarului pisicii, programul propus fiind adaptat unei diete zilnice recomandate pentru o felina.

Descriere generala

Aceasta este schema proiectului:

Proiectul meu consta in dezvoltarea unui dispozitiv de hranire a unei pisici, care functioneaza astfel:

  • Senzorul ultrasonic detecteaza miscare in jurul aparatului la aproximativ 10 cm.
  • In momnetul in care animalul de companie se afla in prezenta aparatului se activeaza servomotorul, care va deschide trapa de la recipientul cu mancare si ii va permite sa lase o anumita cantiate sa curga, am optat ca pentru fiecare miscare detectata de senzor, trapa se va deschide de doua ori.
  • De asemenea, de fiecare data cand se deschide trapa se va trimite un mesaj pe telefon prin Bluetooth care anunta proprietarul ca pisica a fost hranita.

Hardware Design

Lista de piese:

Schema electrica:

Software Design

  1. Pentru actionarea servomotorului s-a ales o implmentare simplista, prin generarea unor pulsuri pe pinul PB4, folosind delay -uri pentru a obtine diverse pozitii ale acestuia. O alternativa mai eleganta ar fi fost implementarea folosind intreruperi pe Timer-ul 0, deaorece Timer -ul 1 este alocat pentru senzorul ultrasonic. Implementarea functionalitatii servpmotorului se face in functia servo_rotate(). Pentru mine aceasta bucata de cod a fost bucata de testare si am ales sa raman cu o implementare dummy, deorece se mula foarte bine pe ce mi doream sa faca dispozitivul.
  2. Pentru inregistrarea distantei la care se afla un obiect folosesc un senzor ultrasonic. Am implementat doua metode importante: HC_SR04_init() si HC_SR04_get_distance() (care returneaza un double, anume distanta la care se afla un obiect detectat).
  3. O alta parte importanta a codului sunt rutinele de tratare a intreruperilor, folosind Timer1, adaptate dupa laboratorul 3.
  4. Modulul Bluetooth este utilizat folosind biblioteca “usart.h” disponibila in laboratorul 1.
  5. Pentru a comunica prin Bluetooth se foloseste aplicatia Bluetooth Terminal HC-05, disponibila pe Google Play.
  6. Functia main() contine logica programului care ruleza pe microcontroller. Intr-o bucla while(1) se obtine distanta detectata de senzor pana la cel mai apropiat obiect la interval de 80ms si se verifica daca este mai mica decat 10cm, pentru a permite servomotorului sa se declanseze si pentru a trimite un mesaj prin Bluetooth.
  7. Inspiratia software a venit din codul de laborator si din sursele din anii trecuti.

Setup proiect:

  1. make
  2. sudo ./bootloadHID -r catfeeder_main.hex

Rezultate obtinute

Am reusit sa fac proiectul functional si sa indeplineasca cerintele mentionate.

Recipientul de stocare al mancarii pentru pisici este compatibil doar cu bobite de mici dimensiuni, cele mai mari se mai blocheaza.

Cu o saptmana inainte de finalizarea proiectlui am decis sa aleg sa integrez si un modul Bluetooth HC-05, care sa trimita un mesaj pe telefon in momentul in care pisica a fost hranita, adica cand s-a activat servomotorul.

Concluzie:

  • Experienta a fost una placuta, una dintre partile mele favorite a fost lipirea placutei.
  • Designul aparatului a fost mai greu de elaborat, dar a fost o provocare sa gasesc ceva care sa arate bine in final. In prima faza am ales ceva mai complicat si am ajuns la concluzia ca nu aveam toate unelete, keep it simple.
  • Mi-a placut si partea de software pentru ca am fixat niste notiuni.
  • Este satisfactor sa faci un lucru de la zero singur si sa iasa ceva utilizabil.
  • Mi-a placut la PM Fair si a fost distractiv sa admir si proiectele colegilor, unel dintre ele foarte impresionante.

Jurnal

  • 17.04.2019: Inceperea lipirii placii de baza
  • 8.05.2019: Finalizarea lipiturilor
  • 15.05.2019: Incarcare Bootloader pe placuta
  • 16.05.2019 - 24.05.2019: Procurare piese, asamblare proiect si scriere de cod + testare.
  • 24.05.2019: PM Fair

Download

Bibliografie

pm/prj2019/adragan/claudia-preda-87755-cat-feeder.txt · Last modified: 2021/04/14 17:07 (external edit)
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