Indholdsfortegnelse:

Cat-a-way-Computer Vision Cat Sprinkler: 6 trin (med billeder)
Cat-a-way-Computer Vision Cat Sprinkler: 6 trin (med billeder)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 trin (med billeder)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 trin (med billeder)
Video: My hotel mirror was TWO SIDED 😱 2024, November
Anonim
Cat-a-way-Computer Vision Cat Sprinkler
Cat-a-way-Computer Vision Cat Sprinkler

Problem - Katte, der bruger din have som toilet

Løsning - Brug for meget tid på at konstruere en kattesprinkler med automatisk youtube upload -funktion

Dette er ikke et trin for trin, men en oversigt over konstruktion og noget kode

#BeforeYouCallPETA - Kattene har det fint, det er et lavtrykssprinkler ligesom regn, at de kan løbe ud, før det overhovedet svinger rundt til dem. Projektet er ikke at lægge en kat i blød, men at vise dem væk, før de kaster min have med katteversionen af Barkers Eggs.

Trin 1: Hovedelementer påkrævet

Hovedelementer påkrævet
Hovedelementer påkrævet

Raspberry Pi zero & SD -kort

Hindbær Pi kamera

Relæ

555 timer…. (eller en arduino og et andet relæ, hvis dine 555 timere ikke ankommer)

Solenoid

Sprinkler

En slags hus til elektronikken

En vilje til at slå et metaforisk søm med en 6 tons slædehammer

Et kamera med så lidt opløsning, at du næsten ikke kan se vandet, men stadig kan se kattene løbe efter dækning

Trin 2: Systemet

Image
Image

1, Pi -kamera registrerer en katstørrelse, der bevæger sig i et par kamerarammer (forklaret i næste trin)

2, Pi sætter sprinkleren i gang

3, Cat løber efter dækning

4, video automatisk uploadet til youtube for at se nydelse

Trin 3: Kodningstid

At sætte det sammen
At sætte det sammen

Ved hjælp af openCV ved hjælp af rammesubtraktion kan du finde områder af rammen, der ændrer sig over tid, ved hjælp af nogle fiks funktioner kan du finde ud af, hvor store disse ændringer er, og hvis de vedvarer over tid, og vigtigst af alt finde ud af, om de er kattestørrede.

Der er en del tutorials om rammesubtraktion, der går i detaljer, hvis du laver en hurtig google -søgning.

Oversigt over hvordan koden fungerer

1, kameraet bliver ved med at tage billeder og sammenligne dem med det sidste

2, Hvis der registreres en kattestørrelsesform, noteres det

3, Hvis ændringen af kattestørrelsen vedvarer over omkring 4 billeder, bruger pi'en sin GPIO til at drive relæ til at starte arduino

4, Arduino sender et signal om at drive det andet relæ i 5 sekunder, som aktiverer solenoiden

5, solenoiden, når den drives, tillader vand til sprinkleren

6, mens sprinkleren er aktiv, stopper kameraet med at registrere og optage video

7, video uploades til Youtube

8, stillbilleder uploadet til dropbox til finjusteringssystem

Bemærk - Hvorfor jeg endte med at bruge 2 relæer og en arduino til at tænde en solenoid i 5 sekunder…..

1, pi'en kan ikke starte og stoppe solenoiden, mens videoen optages, mens python -scrips holder pause, indtil videoen er færdig, og derfor er det nødvendigt med arduino (eller 555 -timer) for at lade solenoiden åbne og lukke uafhængigt af scriptet, mens video optager stadig.

2, Det første relæ og arduino kan udskiftes med en 555 timer, men det kom ikke i posten i tide til dette projekt, 555 ville spare en masse tid penge og trin.

3, pi kan ikke udløse solenoiden direkte, da Pi GPIO fungerer på 3,3v og 51mA max, og solenoiden vil have 5V og meget mere end 51mA til at udløse.

4, Hver ramme kan beskæres for at fjerne bevægelsesdetektering i uønskede områder, såsom en naboskabshave. Undladelse af at gøre dette vil resultere i, at naboen giver forvirret blik ind i din have, fordi sprinkleren slukker hver gang, han vil gå ind i hans skur.

5, savnede jeg nok noget indlysende og spildte min tid på at konfigurere det sådan her.

Kode herunder

import cv2import numpy som np import argparse #cat importtid import RPi. GPIO som GPIO import os import dropbox fra picamera.array import PiRGBArray fra picamera import PiCamera #------------------ ------------------------------ Upload til youtube ----------------- ---------------------- def HDtoYoutube (): ctime = time.strftime ("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Trigger relay GPIO.output (11, True) time.sleep (.5) GPIO.output (11, False) print ("Optagelse af video") Prøv: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Upload til youtube print ("Upload til YouTube") os. system ('sudo youtube-upload --title = "Cat Got Wet {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Fjern videofil, når den er udført os.remove ('vid {0}.h264'.format (vidnavn)) print ("Video uploadet og fjernet fra Pi") undtagen: pass #-------------------- ---------------------------- Stillbilleder til dropbox ------------------- -------------------- def St. illsToDropbox (): print ("Uploader stadig til Dropbox -funktion") access_token = 'Ah ah ah, du sagde ikke det magiske ord … Ah ah ah, du sagde ikke det magiske ord' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") prøv: filnavn =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (filnavn) client = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg", 'rb') client.put_file (filnavn, image) image.close () os.remove ("ToDropbox-j.webp

#HowToTriggerRealProgrammersWithBadCode

Trin 4: Sæt det sammen

At sætte det sammen
At sætte det sammen
At sætte det sammen
At sætte det sammen
At sætte det sammen
At sætte det sammen

Pres elektroderne ind i et vandtæt hus, skru ting i vægge og brug masser af gaffatape og varm lim

Trin 5: Resultater

Image
Image
Resultater
Resultater

Når det virker virker det

Trin 6: Falske positive

Falske positive
Falske positive

Når det ikke gør det, sprøjter det katteskygger, din kone og din datter.

Pro -tip - Sæt en afbryder ved døren, der sætter bevægelsesdetekteringsprogrammet på pause….. glem derefter at bruge det og blive gennemblødt, når du lægger skraldespandene ud.

Håber jeg lavede nogen eksperter inden for programmering, elektronik og DIY krymper med alle de fejl, jeg sikkert har begået, og håber især at du nød alle mine stavefejl.

Anbefalede: