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, Jun
Anonim
Cat-a-way-Computer Vision Cat Sprinkler
Cat-a-way-Computer Vision Cat Sprinkler

Problem - Mačke koriste vaš vrt kao toalet

Rješenje - Provedite previše vremena u projektiranju prskalice za mačke s funkcijom automatskog otpremanja 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 okrene. Projekt nije natopiti mačku, već ih otkotrljati prije nego što mi zasute vrt s mačjom verzijom jaja Barkera.

Korak 1: Potrebne glavne stavke

Potrebne su glavne stavke
Potrebne su glavne stavke

Raspberry Pi zero & SD kartica

Raspberry Pi kamera

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 se metalnim čekićem udari u metaforički ekser

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

Korak 2: Sistem

Image
Image

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

2, Pi pokreće prskalicu

3, Mačka trči za zaklonom

4, Video se automatski postavlja 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, koristeći neke sjajne funkcije možete shvatiti koliko su te promjene velike i ako se nastavljaju s vremenom, i najvažnije saznati jesu li veličine mačke.

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

Pregled načina funkcioniranja koda

1, Kamera stalno snima kadrove i upoređuje ih sa posljednjim

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

3, ako se promjena veličine mačke nastavi 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, Snimci su postavljeni u dropbox radi finog podešavanja sistema

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 postoji potreba za arduinom (ili 555 tajmerom) da omogući solenoidu otvaranje i zatvaranje neovisno o skripti dok video se i dalje snima.

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

3, pi ne može direktno 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 okvir se može izrezati kako bi se uklonilo otkrivanje pokreta u neželjenim područjima, poput vrta susjeda. Ako to ne učinite, komšija će zbunjeno pogledati u vaš vrt jer se raspršivač isključuje svaki put kad želi ući u svoju šupu.

5, vjerovatno sam propustio nešto očigledno i potratio sam vrijeme postavljajući to ovako.

Kod ispod

uvoz cv2import numpy kao np uvoz argparse #cat vrijeme uvoza uvoz RPi. GPIO kao GPIO uvoz ili uvoz dropbox iz picamera.array uvoz PiRGBArray iz pikamere uvoz PiCamera #------------------ ------------------------------ Otpremite na youtube ----------------- ---------------------- def HDtoYoutube (): ctime = time.strftime ("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Relej trigera GPIO.output (11, Tačno) 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 na 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 kada 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 magičnu 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
Lažno pozitivni

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

Savjet - Postavite prekidač pored 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 bilo kojeg stručnjaka za programiranje, elektroniku i uradi sam sa svim greškama koje sam vjerovatno napravio, a posebno se nadam da ste uživali u svim mojim pravopisnim greškama.

Preporučuje se: