Wireless Pet Feeder

Nume si prenume: Catalin-Lucian Patrascu

Grupa: 335CB

E-mail: catalinptr3@gmail.com

Descriere

Wireless Pet Feeder va fi un dispozitiv ce se va ocupa cu hranirea unui animal de companie astfel:

La apasarea unui buton sau dupa trecerea unui anumit timp setat de timer se va declansa o intrerupere, iar servomotorul se va roti si va elibera o cantitate de hrana pentru animalul de companie. Voi atasa un modul Bluetooth pentru a citi statistici si pentru controlul fortat al dispozitivului. De asemenea optional voi adauga un senzor de miscare pentru animalul de companie astfel incat dispozitivul sa elibereze hrana cand animalul este prin preajma. Timerul va contoriza si timpul asa incat aparatul sa nu elibereze mancare de prea multe ori intr-un timp scurt.

Componente hardware

Voi folosi urmatoarele componente de baza, cu posibilitatea de a mai adauga si altele pentru a realiza functionalitati noi:

  • Arduino Uno
  • Servomotor
  • Led-uri
  • Modul Bluetooth
  • Fire M-M, T-T
  • Rezistente
  • Buton
  • Ultrasonic

Schema bloc

Schema electrica

Software design

Proiectul va fi implementat folosind Arduino IDE.

Arhiva proiectului contine urmatoarele fisiere:

  • bluetooth.h
  • bluetooth.cpp
  • servomotor.h
  • servomotor.cpp
  • ultrasonic.h
  • ultrasonic.cpp
  • utils.h
  • utils.cpp
  • wireless_pet_feeder.ino

Descrierea implementarii:

  • Proiectul a constat din mai multe functionalitati ce au trebuit implementate: rotirea servomotorul, transmiterea wireless, transmiterea datelor de la ultrasonic, realizarea intreruperilor externe venite de la buton, aprinderea ledurilor pentru a stabili daca dispozitivul este on sau off
  • Initial, dispozitivul asteapta o comanda de la stapan. Comenzile pe care stapanul le poate transmite pe interfata seriala prin modulul bluetooth sunt urmatoarele:
    • Feeder_On
    • Feeder_Off
    • Ultrasonic_On
    • Ultrasonic_Off
    • Open
  • Stapanul poate trimite aceste comenzi oricand pe parcursul executiei. Daca trimite “Feeder_On”, atunci dispozitivul este pornit.
  • Butonul declanseaza o intrerupere de fiecare data cand este apasat, iar in intrerupere se schimba starea astfel incat servomotorul sa se invarta.
  • Intreruperea este initializata cu AVR, iar semnatura functiei este ISR(INT0_vect) deoarece este intrerupere externa
  • Senzorul ultrasonic citeste date in mod continuu (doar daca stapanul nu a trimis comanda “ultrasonic off”), iar daca se citeste o distanta mai mica de 8 cm atunci se roteste servomotorul si se elibereaza hrana
  • Dupa ce se elibereaza hrana, dispozitivul este oprit, iar acest lucru este semnificat prin aprinderea unui LED-ul rosu
  • Dupa ce se stinge LED-ul rosu, se aprinde unul verde ce semnifica faptul ca dispozitivul functioneaza iar
  • Stapanul poate citi datele trimise de ultrasonic deoarece sunt trimise pe interfata seriala
  • Controlul servomotorului este realizat in functia rotate_servo()
  • Citirea datelor de la ultrasonic si rotirea servomotorului sunt realizate in functia control_servo()
  • receiveWirelessCommand() este functia prin care stapanul interactioneaza prin bluetooth cu sistemul

Rezultate obtinute

Cod

Concluzii

Proiectul m-a ajutat sa inteleg notiunile prezentate la laborator. Problemele in cadrul acestui proiect au fost diferite fata de altele la care am lucrat. Am intampinat mult mai multe bug-uri si probleme la hardware decat ma asteptam, dar proiectul a fost o experienta unica si placuta din care am reusit sa invat multe notiuni legate de programarea embedded.

Documentul PDF: Patrascu_Catalin_335CB

pm/prj2021/dbrigalda/pet-feeder.txt · Last modified: 2021/06/03 13:39 by catalin.patrascu99
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