Përmbajtje:

Cat-a-way-Computer Vision Cat Sprinkler: 6 hapa (me fotografi)
Cat-a-way-Computer Vision Cat Sprinkler: 6 hapa (me fotografi)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 hapa (me fotografi)

Video: Cat-a-way-Computer Vision Cat Sprinkler: 6 hapa (me fotografi)
Video: Clinically proven stretch mark treatment ❤️ 2024, Nëntor
Anonim
Cat-a-way-Computer Vision Cat Spërkatës
Cat-a-way-Computer Vision Cat Spërkatës

Problem - Macet që përdorin kopshtin tuaj si tualet

Zgjidhja - Kaloni shumë kohë për të krijuar një spërkatës mace me funksionin e ngarkimit automatik në youtube

Ky nuk është një hap pas hapi, por një përmbledhje e ndërtimit dhe një kodi

#Para se të thërrisniPETA - Macet janë mirë, është një spërkatës me presion të ulët ashtu si shiu, që ata mund të kalojnë para se të rrotullohet rreth tyre. Projekti nuk është për të njomur një mace, por për t'i larguar ata para se të më pjellin kopshtin me versionin e maceve të Barkers Eggs.

Hapi 1: Kërkohen artikujt kryesorë

Kërkohen artikujt kryesorë
Kërkohen artikujt kryesorë

Raspberry Pi zero & kartë SD

Kamera Raspberry Pi

Stafetë

Kohëmatësi 555…. (ose një arduino dhe një stafetë tjetër nëse kohëmatësit tuaj 555 nuk mbërrijnë)

Solenoid

Spërkatës

Një lloj strehimi për pajisjet elektronike

Gatishmëria për të goditur një gozhdë metaforike me një çekiç me sajë 6 ton

Një aparat fotografik me aq pak rezolucion sa mezi mund të shihni ujin, por prapë mund të shihni macet që vrapojnë për mbulim

Hapi 2: Sistemi

Image
Image

1, kamera Pi zbulon një objekt me madhësinë e një mace që lëviz për disa korniza të kamerës (e përshkruar në hapin tjetër)

2, Pi nis spërkatësin

3, Mac vrapon për mbulesë

4, Video ngarkohet automatikisht në youtube për shikimin e kënaqësisë

Hapi 3: Koha e kodimit

Duke e vënë atë së bashku
Duke e vënë atë së bashku

Duke përdorur openCV duke përdorur zbritjen e kornizës, mund të gjeni zona të kornizës që ndryshojnë me kalimin e kohës, duke përdorur disa funksione të mrekullueshme mund të kuptoni se sa të mëdha janë këto ndryshime dhe nëse ato vazhdojnë me kalimin e kohës, dhe më e rëndësishmja të zbuloni nëse ato janë të përmasave të maceve.

Ka shumë mësime mbi zbritjen e kornizës që hyjnë në detaje të shkëlqyera nëse bëni një kërkim të shpejtë në Google.

Pasqyrë se si funksionon kodi

1, Kamera vazhdon të marrë korniza dhe i krahason ato me të fundit

2, Nëse zbulohet një formë e një madhësie maceje, vihet re

3, Nëse ndryshimi i madhësisë së maceve vazhdon për rreth 4 korniza, pi përdor GPIO -në e tij për të stafetuar fuqinë për të filluar arduino

4, arduino dërgon një sinjal për të fuqizuar stafetën e dytë për 5 sekonda i cili aktivizon solenoidin

5, Solenoidi kur mundësohet i lejon ujë spërkatës

6, Ndërsa spërkatësi është aktiv kamera ndalon zbulimin dhe regjistron video

7, Video është ngarkuar në Youtube

8, Stills ngarkuar në dropbox për sistem të mirë akordimi

Shënim - Pse përfundova duke përdorur 2 stafetë dhe një arduino për të ndezur një solenoid për 5 sekonda…..

1, Pi nuk mund të fillojë dhe ndalojë solenoidin gjatë regjistrimit të videos ndërsa python scrups ndalon derisa të përfundojë videoja, kështu që nevoja që arduino (ose kohëmatësi 555) të lejojë që solenoidi të hapet dhe mbyllet pavarësisht nga skenari ndërsa video është ende duke u regjistruar.

2, Stafeta e parë dhe arduino mund të zëvendësohen me një kohëmatës 555, por që nuk erdhi në postim në kohë për këtë projekt, 555 do të kursente shumë kohë para dhe hapa.

3, pi nuk mund të shkaktojë solenoidin drejtpërdrejt pasi Pi GPIO punon në 3.3v dhe 51mA max, dhe solenoidi dëshiron 5V dhe shumë më tepër se 51mA për të shkaktuar.

4, Çdo kornizë mund të shkurtohet për të hequr zbulimin e lëvizjes në zona të padëshiruara, të tilla si një kopsht i fqinjëve. Dështimi për ta bërë këtë do të rezultojë që fqinji i dhënë të shikojë të hutuar në kopshtin tuaj, sepse spërkatësi fiket sa herë që dëshiron të hyjë në hambarin e tij.

5, me siguri kam humbur diçka të qartë dhe kam humbur kohën duke e vendosur atë kështu.

Kodi më poshtë

import cv2import numpy si np import argparse #cat kohë import import import RPi. GPIO si GPIO import os import dropbox nga picamera.array import PiRGBArray nga picamera import PiCamera #------------------ ------------------------------ Ngarko në youtube ----------------- ---------------------- def HDtoYoutube (): ctime = time.strftime ("_%H-%M-%S") cdate = time.strftime ("_%d-%m-%Y") vidname = ctime + cdate #Tlayger stafetë GPIO.output (11, E vërtetë) time.sleep (.5) GPIO.putput (11, False) print ("Marrja e videos") provoni: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Ngarko në printimin e youtube ("Ngarkimi në YouTube") os. system ('sudo youtube-upload --title = "Macja u lag {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Hiq skedarin e videos kur të bëhet os.remove ('vid {0}.h264'.format (vidname)) print ("Video u ngarkua dhe u hoq nga Pi") përveç: kalimit #-------------------- ---------------------------- Ende në dropbox ------------------- -------------------- def Rr illsToDropbox (): print ("Ngarkimi akoma në funksionin Dropbox") access_token = 'Ah ah ah, nuk e the fjalën magjike … Ah ah ah, nuk e the fjalën magjike' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") provo: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (emri i skedarit) klienti = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg", 'rb') client.put_file (emri i skedarit, imazhi) image.close () os.remove ("ToDropbox.jpg ") përveç: kalimit #------------------------------------------ ------ Zbuloni lëvizjen --------------------------------------------- def DetectMotion (): #Përcaktoni vars min_area = 400 tolerancë = 25 #ndryshim në pixel bluramount = 21 timetoforget = 0.5 kernel = np.ones ((5, 5), np.uint8) #përdorur për dilatim MotionCounter = 0 MinTargetArea = 600 # madhësia më e vogël për të zbuluar MaxTargetArea = 5000 #Madhësia më e madhe për të zbuluar tani = koha.kohë () atëherë = kohë.kohë () #initialize camera camera = PiCamera () camera.resolution = (640, 480) camera.framerate = 10 raw Capture = PiRGBArray (kamera, madhësia = (640, 480)) #ngrohja e kohës së kamerës. Gjumë (1) #Kapni kornizën e parë dhe përgatiteni për të hyrë në cv2. Grumbulloni peshë të kamerës. Kapje (rawCapture, format = "bgr") mes = rawCapture.array #Prer rajonin e padëshiruar PolyCrop = np.array (

#SiToTriggerRealProgramuesitWithBadCode

Hapi 4: Vendosja së bashku

Duke e vënë atë së bashku
Duke e vënë atë së bashku
Duke e vënë atë së bashku
Duke e vënë atë së bashku
Duke e vënë atë së bashku
Duke e vënë atë së bashku

Mblidhni pajisjet elektrike në një strehim të papërshkueshëm nga uji, vidhosini gjërat në mure dhe përdorni shumë shirit ngjitës dhe zam të nxehtë

Hapi 5: Rezultatet

Image
Image
Rezultatet
Rezultatet

Kur punon funksionon

Hapi 6: Pozitivë të rremë

Pozitivë të rremë
Pozitivë të rremë

Kur jo, spërkat hijet e maceve, gruan tuaj dhe vajzën tuaj.

Këshillë - Vendosni një çelës pranë derës që ndalon programin e zbulimit të lëvizjes ….. pastaj harroni ta përdorni dhe njomuni kur i vendosni koshat jashtë.

Shpresoj se kam bërë ndonjë ekspert në programim, elektronikë dhe DIY duke u ngacmuar me të gjitha gabimet që ndoshta kam bërë, dhe veçanërisht shpresoj që të keni shijuar të gjitha gabimet e mia drejtshkrimore.

Recommended: