Sadržaj:

Cat-a-way-Computer Vision Cat Sprinkler: 6 koraka (sa slikama)
Cat-a-way-Computer Vision Cat Sprinkler: 6 koraka (sa slikama)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 koraka (sa slikama)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 koraka (sa slikama)
Video: Как устроена IT-столица мира / Russian Silicon Valley (English subs) 2024, Studeni
Anonim
Cat-a-way-Mačka za prskanje s računalnim vidom
Cat-a-way-Mačka za prskanje s računalnim vidom

Problem - Mačke koriste vaš vrt kao toalet

Rješenje - Provedite previše vremena u projektiranju prskalice za mačke sa značajkom automatskog slanja na YouTube

Ovo nije korak po korak, već pregled konstrukcije i nekog koda

#BeforeYouCallPETA - Mačke su dobro, prskalica niskog pritiska, poput kiše, koju mogu nadmašiti prije nego što im se čak i okrene. Projekt nije natopiti mačku, već ih odbaciti prije nego što mi zasipaju vrt mačjom verzijom jaja Barkera.

Korak 1: Potrebne glavne stavke

Potrebne su glavne stavke
Potrebne su glavne stavke

Raspberry Pi zero & SD kartica

Fotoaparat Raspberry Pi

Relej

555 mjerač vremena … (ili arduino i drugi relej ako vam ne dođe 555 mjerača vremena)

Solenoid

Prskalica

Neka vrsta kućišta za elektroniku

Spremnost da udarite metaforičkim čavlom sa čekićem od 6 tona

Kamera s tako malom rezolucijom da jedva vidite vodu, ali i dalje možete vidjeti mačke kako trče za zaklonom

Korak 2: Sustav

Image
Image

1, Pi kamera detektira objekt veličine mačke koji se pomiče za nekoliko okvira kamere (pojašnjeno u sljedećem koraku)

2, Pi pokreće prskalicu

3, Mačka bježi u zaklon

4, Video se automatski prenosi na youtube radi uživanja u gledanju

Korak 3: Vrijeme kodiranja

Sastavljajući to zajedno
Sastavljajući to zajedno

Korištenjem openCV -a pomoću oduzimanja okvira možete pronaći područja okvira koja se mijenjaju s vremenom, pomoću nekih sjajnih funkcija možete shvatiti koliko su te promjene velike i ako se s vremenom nastavljaju, i što je najvažnije, saznati jesu li veličine mačke.

Postoji nekoliko tutoriala o oduzimanju okvira koji ulaze u velike detalje ako brzo pretražite Google.

Pregled načina funkcioniranja koda

1, Kamera nastavlja snimati kadrove i uspoređivati ih s posljednjima

2, Ako se otkrije oblik veličine mačke, to se bilježi

3, ako promjena veličine mačke potraje na oko 4 sličice, pi koristi svoj GPIO za napajanje releja za pokretanje arduina

4, Arduino šalje signal za napajanje drugog releja na 5 sekundi koji aktivira solenoid

5, solenoid kada se napaja dopušta vodu do prskalice

6, Dok je raspršivač aktivan, kamera prestaje otkrivati i snima video

7, Video se postavlja na Youtube

8, Stills uploaded to dropbox for fine tuning system

Napomena - Zašto sam na kraju upotrijebio 2 releja i arduino za uključivanje solenoida na 5 sekundi …

1, Pi ne može pokrenuti i zaustaviti solenoid tijekom snimanja videozapisa dok python skripte pauziraju dok videozapis ne završi, pa je potreba za arduinom (ili 555 mjeračem vremena) da omogući solenoidu otvaranje i zatvaranje neovisno o skripti dok video se još uvijek snima.

2, prvi relej i arduino mogu se zamijeniti mjeračem vremena 555, ali to nije stiglo na vrijeme za ovaj projekt, 555 bi uštedio mnogo vremena i novca.

3, pi ne može izravno pokrenuti solenoid jer Pi GPIO radi na 3.3v i 51mA max, a solenoid želi da se aktivira 5V i mnogo više od 51mA.

4, Svaki se okvir može izrezati kako bi se uklonilo otkrivanje pokreta na neželjenim područjima, poput vrta susjeda. Ako to ne učinite, susjeda će zbunjeno pogledati u vaš vrt jer se raspršivač isključuje svaki put kad želi ući u svoju šupu.

5, vjerojatno sam propustio nešto očito i potratio sam vrijeme postavljajući ga ovako.

Kod ispod

uvoz cv2import numpy kao np uvoz argparse #cat vrijeme uvoza uvoz RPi. GPIO kao GPIO uvoz os uvoz dropbox iz picamera.array uvoz PiRGBArray iz picamere uvoz PiCamera #------------------ ------------------------------ Prenesi na youtube ----------------- ---------------------- def HDtoYoutube (): ctime = time.strftime ("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Trigger relej GPIO.output (11, True) time.sleep (.5) GPIO.output (11, False) print ("Taking Video") pokušajte: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Upload to youtube print ("Uploading to YouTube") os. system ('sudo youtube-upload --title = "Mačka je postala mokra {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Uklonite video datoteku kad završite os.remove ('vid {0}.h264'.format (vidname)) print ("Video postavljen i uklonjen iz Pi") osim: pass #-------------------- ---------------------------- Stiže u dropbox ------------------- -------------------- def St. illsToDropbox (): print ("Uploading Still To Dropbox Function") access_token = 'Ah ah ah, nisi rekao čarobnu riječ … Ah ah ah, nisi rekao čarobnu riječ' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") try: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (naziv datoteke) client = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg", 'rb') client.put_file (naziv datoteke, slika) image.close () os.remove ("ToDropbox-j.webp

#HowToTriggerRealProgrammersWithBadCode

Korak 4: Sastavite to zajedno

Sastavljajući to zajedno
Sastavljajući to zajedno
Sastavljajući to zajedno
Sastavljajući to zajedno
Sastavljajući to zajedno
Sastavljajući to zajedno

Ugurajte elektriku u vodootporno kućište, uvrnite stvari u zidove i upotrijebite puno ljepljive trake i vrućeg ljepila

Korak 5: Rezultati

Image
Image
Rezultati
Rezultati

Kad radi, radi

Korak 6: Lažno pozitivni rezultati

Lažno pozitivni rezultati
Lažno pozitivni rezultati

Kad se to ne dogodi, raspršuje sjene mačaka, vašu ženu i kćer.

Savjet - Postavite prekidač kraj vrata koji pauzira program za otkrivanje pokreta ….. a zatim ga zaboravite koristiti i natopiti se prilikom vađenja kanti.

Nadam se da sam se naježio od stručnjaka za programiranje, elektroniku i DIY sa svim greškama koje sam vjerojatno napravio, a posebno se nadam da ste uživali u svim mojim pravopisnim pogreškama.

Preporučeni: