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