Table of Contents

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:

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:

Jurnal

Download

Bibliografie