Satura rādītājs:

Cat-a-way-Computer Vision Cat smidzinātājs: 6 soļi (ar attēliem)
Cat-a-way-Computer Vision Cat smidzinātājs: 6 soļi (ar attēliem)

Video: Cat-a-way-Computer Vision Cat smidzinātājs: 6 soļi (ar attēliem)

Video: Cat-a-way-Computer Vision Cat smidzinātājs: 6 soļi (ar attēliem)
Video: Шпатлевка стен и потолка. З способа. Какой самый быстрый? 2024, Novembris
Anonim
Cat-a-way-Computer Vision Cat smidzinātājs
Cat-a-way-Computer Vision Cat smidzinātājs

Problēma - kaķi izmanto jūsu dārzu kā tualeti

Risinājums - pavadiet pārāk daudz laika, lai izstrādātu kaķu smidzinātāju ar automātisku YouTube augšupielādes funkciju

Tas nav soli pa solim, bet gan pārskats par būvniecību un daži kodi

#BeforeYouCallPETA - Kaķiem viss ir kārtībā, tā zema spiediena smidzinātājs ir gluži kā lietus, ka viņi var apsteigt, pirms tas pat pagriežas apkārt. Projekta mērķis nav mērcēt kaķi, bet gan atraut viņu, pirms tas pakaiš manu dārzu ar kaķu versiju Barkers Eggs.

1. darbība. Nepieciešamie galvenie vienumi

Nepieciešami galvenie priekšmeti
Nepieciešami galvenie priekšmeti

Raspberry Pi nulles un SD karte

Raspberry Pi kamera

Stafete

555 taimeris … (vai arduino un citu stafeti, ja neierodas jūsu 555 taimeri)

Solenoīds

Smidzinātājs

Kaut kāds elektronikas korpuss

Gatavība trāpīt metaforiskā naglā ar 6 tonnu smagu kameru

Kamera ar tik mazu izšķirtspēju, ka jūs tik tikko neredzat ūdeni, bet joprojām varat redzēt kaķus, kas skrien aizsegā

2. darbība: sistēma

Image
Image

1, Pi kamera nosaka kaķa izmēra objektu, kas pārvietojas dažus kameras kadrus (piemērs nākamajā darbībā)

2, Pi ieslēdz smidzinātāju

3, Kaķis skrien aizsegā

4, video automātiski augšupielādēts youtube, lai skatītos prieku

3. darbība: kodēšanas laiks

Liekot to kopā
Liekot to kopā

Izmantojot openCV, izmantojot kadru atņemšanu, jūs varat atrast kadra apgabalus, kas laika gaitā mainās, izmantojot dažas lieliskas funkcijas, lai noskaidrotu, cik lielas ir šīs izmaiņas un vai tās saglabājas laika gaitā, un pats galvenais - noskaidrot, vai tās ir kaķa izmēra.

Ir diezgan daudz pamācību par kadru atņemšanu, kas ir ļoti detalizētas, ja veicat ātru meklēšanu Google.

Pārskats par koda darbību

1, kamera turpina uzņemt kadrus un salīdzināt tos ar pēdējo

2, Ja tiek konstatēta kaķa izmēra forma, tā tiek atzīmēta

3, ja kaķa izmēra izmaiņas turpinās aptuveni 4 kadrus, pi izmanto savu GPIO, lai ieslēgtu releju, lai palaistu arduino

4, arduino nosūta signālu, lai 5 sekundes darbinātu otro releju, kas aktivizē solenoīdu

5, elektromagnētiskais barošanas avots ļauj ūdeni smidzinātājam

6, Kamēr smidzinātājs ir aktīvs, kamera pārstāj noteikt un ierakstīt video

7, video tiek augšupielādēts Youtube

8, attēli, kas augšupielādēti Dropbox, lai precizētu sistēmu

Piezīme - Kāpēc es izmantoju 2 relejus un arduino, lai ieslēgtu solenoīdu uz 5 sekundēm…..

1, pi nevar iedarbināt un apturēt solenoīdu video ierakstīšanas laikā, jo pitona skrubēšana tiek pārtraukta, līdz video ir pabeigts, tāpēc ir nepieciešams arduino (vai 555 taimeris), lai ļautu solenoīdam atvērt un aizvērt neatkarīgi no skripta, kamēr video joprojām tiek ierakstīts.

2, Pirmo releju un arduino var aizstāt ar 555 taimeri, bet šis projekts netika saņemts laikā, 555 ietaupītu daudz laika un naudas.

3, pi nevar iedarbināt solenoīdu tieši, jo Pi GPIO darbojas ar 3.3v un 51mA max, un solenoīds vēlas, lai iedarbinātu 5V un daudz vairāk nekā 51mA.

4, katru rāmi var apgriezt, lai novērstu kustības noteikšanu nevēlamās vietās, piemēram, kaimiņu dārzā. Ja to neizdarīsit, minētais kaimiņš jūsu dārzā ieskatīsies neizpratnē, jo smidzinātājs izslēdzas katru reizi, kad viņš vēlas iekļūt savā šķūnītī.

5, es, iespējams, palaidu garām kaut ko acīmredzamu un izšķērdēju savu laiku, iestatot to šādi.

Kods zemāk

importēt cv2import numpy kā np importēt argparse #cat importēšanas laiks importēt RPi. GPIO kā GPIO importēt os importēšanas dropbox no picamera.array importēt PiRGBArray no picamera importa PiCamera #------------------ ------------------------------ Augšupielādēt youtube ----------------- ---------------------- def HDtoYoutube (): ctime = time.strftime ("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Trigger relejs GPIO.output (11, True) time.sleep (.5) GPIO.output (11, False) print ("Video uzņemšana") mēģiniet: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Augšupielādēt uz youtube print ("Uploading to YouTube") os. sistēma ('sudo youtube-upload --title = "Cat Got Wet {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Noņemt video failu, kad pabeigts os.remove ('vid {0}.h264'.format (vidname)) print ("Video augšupielādēts un noņemts no Pi"), izņemot: caurlaide #-------------------- ---------------------------- Stills to dropbox ------------------- -------------------- def St illsToDropbox (): print ("Faila augšupielāde uz Dropbox funkciju") access_token = 'Ah ah ah, tu neteici burvju vārdu … Ah ah ah, tu neteici burvju vārdu' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") try: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (faila nosaukums) client = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg", 'rb') client.put_file (faila nosaukums, attēls) image.close () os.remove ("ToDropbox-j.webp

#HowToTriggerRealProgrammersWithBadCode

4. solis: salieciet to kopā

Liekot to kopā
Liekot to kopā
Liekot to kopā
Liekot to kopā
Liekot to kopā
Liekot to kopā

Ielieciet elektrību ūdensnecaurlaidīgā korpusā, ieskrūvējiet lietas sienās un izmantojiet daudz līmlentes un karstu līmi

5. darbība. Rezultāti

Image
Image
Rezultāti
Rezultāti

Kad tas darbojas, tas darbojas

6. solis: viltus pozitīvi

Kļūdaini pozitīvi
Kļūdaini pozitīvi

Ja tas nenotiek, tas izsmidzina kaķu ēnas, jūsu sieva un meita.

Ieteikums - pie durvīm novietojiet slēdzi, kas aptur kustības noteikšanas programmu….. pēc tam aizmirstiet to lietot un iemērciet, izliekot tvertnes.

Es ceru, ka es liku kādiem programmēšanas, elektronikas un DIY ekspertiem saskarties ar visdrīzāk pieļautajām kļūdām, un īpaši ceru, ka jums patika visas manas pareizrakstības kļūdas.

Ieteicams: