SPVP 2018./2019.
Matteo Samsa
Moj zadatak:
1. Glavni program za arduino (setup() i loop())
2. Detektor buke koji dojavljuje obavijest u mobilnu aplikaciju u slučaju buke
3. Igračka za mačke s laserom
Omogućiti vlasniku kućnog ljubimca izbivanje iz doma od nekoliko sati do dva dana tako da kućnom ljubimcu budu osigurane osnovne potrebe kao što su hrana, zabava i sigurnost, a vlasniku omogućen video nadzor ljubimca na zahtjev te obavijest u slučaju ugrožene sigurnosti.Omogućiti vlasniku kućnog ljubimca izbivanje iz doma od nekoliko sati do dva dana tako da kućnom ljubimcu budu osigurane osnovne potrebe kao što su hrana, zabava i sigurnost, a vlasniku omogućen video nadzor ljubimca na zahtjev te obavijest u slučaju ugrožene sigurnosti.
Sustav namijenjen psima i mačkama.
Automatska skrb od nekoliko sati do 2 dana (npr. odlazak vlasnika na posao ili kratkotrajno i neplanirano odsustvo)
Ključni dijelovi sustava koje je potrebno realizirati:
1.Hranilica (osigurati hranu)
2.Video-kamera (nadzor prostora na zahtjev)
3.Detektor buke (trajanje i razina buke)
4.Zabava (laser za mačke ili loptice za psa)
5.Mobilna aplikacija (koristi se za konfiguraciju i korištenje sustava)
6.Server (komunikacija između aplikacije i sustava)
Datum | Očekivani rezultat |
21.3. | Upoznavanje s problematikom |
28.3. | Intervju skorisnicima– prvi |
4.4. | Upoznavanje s postojećim rješenjima i mogućnostima |
11.4. | Intervju s korisnicima – drugi |
18.4. | Izrada projektnog zadatka |
2.5. | Idejno rješenje |
10.5. | Nabavka potrebnih komponenata |
16.5. | Izvedbeno rješenje – dizajn cijelog sustava |
Izrada sustava | |
30.5. | Provjera s korisnicima |
Dovršenje sustava | |
13.6. | Prezentacija sustava |
Kratki opis rješenja zadataka:
1. Glavni program za arduino
Prilikom pokretanja sustava izvršava se inicijalizacija svih dijelova, nakon čega program ulazi u beskonačnu petlju – loop(). U svakoj iteraciji petlje program očita vrijeme, izraženo u milisekundama, koje je proteklo od pokretanja sustava pomoću funkcije millis() za potrebe izvršavanja određenih funkcija. Nakon toga, provjerava međuspremnik serijske komunikacije, te u slučaju da ima novih podataka ih učita u polje tipa integer. Svaka poruka koju arduino prima u sebi sadrži 5 bajtova: bajt za provjeru, identifikator, i tri bajta podataka. Više o porukama koje se razmjenjuju biti će navedeno kasnije u tekstu.
S obzirom na identifikator izvršava se određena grana Swtich-Case funkcije. U svakoj grani se poziva funkcija za određenu funkcionalnost koja iskorištava jedan, dva ili sva tri bajta podataka iz poruke.
Uz navedeno, u glavnom programu se pozivaju i funkcije koje se neprestano izvršavaju, na primjer, funkcija za detekciju buke.
2. Detektor buke
Detektor buke služi za praćenje razine buke u okolini uređaja te javljanje prekomjerne razine i trajanja putem mobilne aplikacije. Detektor je realiziran pomoću mikrofon modula i Arduino Uno razvojne pločice. Programski kod je napisan u programskom okruženju Arduino IDE. Mogućnosti koje su programirane:
Vrijednosti se mijenjaju putem mobilne aplikacije. S obzirom na vrijednosti tih parametara korisnik će putem mobilne aplikacije primati obavijesti.
Za detekciju buke korišten je mikrofon modul VMA309 koji se na arduino povezuje putem analognog pina te daje napon ovisan o detektiranoj glasnoći.
Funkcija za detekciju buke, detektor(), se izvršava svakom iteracijom loop() petlje i provjerava trenutnu razinu buke te ju uspoređuje sa zadanom. Ako je razina buke veća od zadane razine, od tog trenutka započinje brojanje vremena. Ako buka traje duže od zadanog poslati će se poruka putem serijske komunikacije na Raspberry Pi razvojnu pločicu te će taj podatak biti zapisan na web server kojeg će aplikacija na mobitelu pročitati. U tom trenutku na mobitelu se ispisuje obavijest. Nakon što prođe zadano vrijeme u stanju bez buke, poslati će se poruka da nema buke. Poruke se šalju samo pri promjeni stanja.
3. Laser igračka za mačke
Jedinica za zabavu mačaka je napravljena pomoću dva servo motora i laserskog pokazivača. Servo motori se koriste zbog njihove jednostavne i precizne upravljivosti. Motori su spojeni tako da pružaju upravljivo pokretanje lasera u trodimenzionalnom prostoru. Servo motori i laser su upravljani Arduino Uno razvojnom pločicom.
Korišteni su 9g servo motori (VMA600) koji se upravljaju pwm signalom.
U funkciju za postavljanje lasera se primaju 3 varijable, od kojih prva ukazuje je li laser uključen ili ne, a druge dvije predstavljaju x i y koordinate. Implementiran je PID regulator kako bi se upravljala brzina motora.
Detaljniji opis nalazi se u dokumentaciji projekta.