Obsah:

Cat-a-way-počítačový vízor Sprinkler pre mačky: 6 krokov (s obrázkami)
Cat-a-way-počítačový vízor Sprinkler pre mačky: 6 krokov (s obrázkami)

Video: Cat-a-way-počítačový vízor Sprinkler pre mačky: 6 krokov (s obrázkami)

Video: Cat-a-way-počítačový vízor Sprinkler pre mačky: 6 krokov (s obrázkami)
Video: Высокая плотность 2022 2024, November
Anonim
Cat-a-way-počítačový vízový postrekovač pre mačky
Cat-a-way-počítačový vízový postrekovač pre mačky

Problém - Mačky používajú vašu záhradu ako toaletu

Riešenie - Strávte príliš veľa času navrhovaním postrekovača pre mačky s funkciou automatického nahrávania na YouTube

Nejde o krok za krokom, ale o prehľad stavby a nejaký kód

#BeforeYouCallPETA - Mačky sú v poriadku, je to nízkotlakový postrekovač ako dážď, ktorý môžu predbehnúť skôr, ako sa k nim dokonca otočí. Cieľom nie je namočiť mačku, ale odhaliť ju skôr, ako moju záhradu posypú mačkou verziou Barkers Eggs.

Krok 1: Vyžadujú sa hlavné položky

Vyžadujú sa hlavné položky
Vyžadujú sa hlavné položky

Raspberry Pi nula a SD karta

Kamera Raspberry Pi

Relé

Časovač 555 … (alebo arduino a ďalšie relé, ak nedorazí vašich 555 časovačov)

Solenoid

Postrekovač

Nejaký kryt pre elektroniku

Ochota trafiť metaforický klinec 6 tonovým sánkovacím kladivom

Fotoaparát s tak malým rozlíšením, že sotva vidíte vodu, ale stále vidíte mačky, ako sa ukrývajú

Krok 2: Systém

Image
Image

1, Kamera Pi detekuje objekt veľkosti mačky, ktorý sa pohybuje po niekoľkých rámoch kamier (vysvetlené v nasledujúcom kroku)

2, Pi spustí postrekovač

3, Cat beží na úkryt

4, video sa automaticky nahráva na youtube kvôli potešeniu zo sledovania

Krok 3: Čas kódovania

Dať to dohromady
Dať to dohromady

Použitím openCV pomocou odčítania rámcov môžete nájsť oblasti rámca, ktoré sa časom menia, pomocou niektorých šikovných funkcií môžete zistiť, aké veľké sú tieto zmeny a či v priebehu času pretrvávajú, a čo je najdôležitejšie, zistiť, či majú veľkosť mačky.

Existuje niekoľko návodov na odčítanie rámcov, ktoré sa dajú veľmi rýchlo prejsť, ak urobíte rýchle vyhľadávanie v službe Google.

Prehľad fungovania kódu

1, Fotoaparát stále sníma snímky a porovnáva ich s poslednými

2, Ak sa zistí tvar veľkosti mačky, zaznamená sa to

3, Ak zmena veľkosti mačky pretrváva okolo 4 rámcov, pi použije svoje GPIO na napájanie relé na spustenie arduina

4, Arduino vyšle signál na napájanie druhého relé na 5 sekúnd, ktoré aktivuje solenoid

5, Solenoid pri napájaní prepúšťa vodu do postrekovača

6, Keď je postrekovač aktívny, kamera zastaví detekciu a zaznamenáva video

7, Video sa odovzdá na Youtube

8, Fotografie sa nahrávajú do schránky na jemné doladenie systému

Poznámka - Prečo som skončil s použitím 2 relé a arduina na zapnutie solenoidu na 5 sekúnd …

1, Pi nemôže zapínať a vypínať solenoid počas nahrávania videa, pretože pytón sa zastavuje, kým sa video nedokončí, a preto je potrebné, aby arduino (alebo časovač 555) umožnilo solenoidu otvoriť a zatvoriť nezávisle od skriptu, zatiaľ čo video sa stále nahráva.

2, Prvá štafeta a arduino môžu byť nahradené časovačom 555, ale to pre tento projekt neprišlo včas, 555 by ušetrilo veľa času a peňazí.

3, Pi nemôže spúšťať solenoid priamo, pretože Pi GPIO pracuje na max. 3,3 V a 51 mA a solenoid chce, aby sa spustilo 5 V a oveľa viac ako 51 mA.

4, každý rám možno orezať, aby sa odstránila detekcia pohybu v nechcených oblastiach, ako je napríklad záhrada susedov. Ak to neurobíte, bude mať uvedený sused zmätený pohľad do vašej záhrady, pretože postrekovač sa vypne vždy, keď chce ísť do svojej kôlne.

5, pravdepodobne mi uniklo niečo zrejmé a premrhal som čas tým, že som to takto nastavil.

Kód nižšie

import cv2import numpy as np import argparse #cat import time import RPi. GPIO as GPIO import os import dropbox from picamera.array import PiRGBArray from picamera import PiCamera #------------------ ------------------------------ Nahrať na 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 ("Taking Video") skúste: #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 = "Cat Got Wet {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Remove video file when done os.remove ('vid {0}.h264'.format (vidname)) print ("Video nahrané a odstránené z Pi") okrem: pass #-------------------- ---------------------------- Stále do schránky ------------------- -------------------- def St. illsToDropbox (): print ("Nahrávanie stále do funkcie Dropbox") access_token = 'Ah ah ah, nepovedali ste čarovné slovo … Ah ah ah, nepovedali ste kúzelné slovo' ctime = time.strftime (" %H:%M:%S ") cdate = time.strftime ("%d-%m-%Y ") try: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (názov súboru) klient = dropbox.client. DropboxClient (access_token) obrázok = otvorený ("ToDropbox.jpg", 'rb') client.put_file (názov súboru, obrázok) image.close () os.remove ("ToDropbox.jpg ") okrem: pass #------------------------------------------ ------ Detekcia pohybu ---------------------------------------- def DetectMotion (): #Define vars min_area = 400 tolarance = 25 #change in pixel bluramount = 21 timetoforget = 0.5 kernel = np.ones ((5, 5), np.uint8) #used for dialate MotionCounter = 0 MinTargetArea = 600 # najmenšia veľkosť na zistenie MaxTargetArea = 5000 #Najväčšia veľkosť na zistenie teraz = time.time () then = time.time () #initialise Camera Camera = PiCamera () camera.resolution = (640, 480) camera.framerate = 10 raw Capture = PiRGBArray (kamera, veľkosť = (640, 480)) #warmup kamera time.sleep (1) #Grab first frame & prep it to go into cv2.acumulate weight camera.capture (rawCapture, format = "bgr") avg = rawCapture.array #Vyrežte nechcenú oblasť PolyCrop = np.array (

#HowToTriggerRealProgrammersWithBadCode

Krok 4: Spojenie

Dať to dohromady
Dať to dohromady
Dať to dohromady
Dať to dohromady
Dať to dohromady
Dať to dohromady

Elektriku natlačte do vodotesného krytu, zaskrutkujte veci do stien a použite veľa lepiacej pásky a horúceho lepidla

Krok 5: Výsledky

Image
Image
Výsledky
Výsledky

Keď to funguje, funguje to

Krok 6: Falošné pozitíva

Falošné pozitíva
Falošné pozitíva

Keď nie, nastrieka tiene mačky, vašu manželku a dcéru.

Pro -tip - Zapnite spínač pri dverách, ktorý pozastaví program detekcie pohybu ….. potom ho zabudnite použiť a namočte sa pri vykladaní košov.

Dúfam, že som urobil všetkých odborníkov v oblasti programovania, elektroniky a domácich majstrov so všetkými chybami, ktoré som pravdepodobne urobil, a hlavne dúfam, že sa vám páčili všetky moje pravopisné chyby.

Odporúča: