Cuprins:

Cat-a-way - Computer Sprinkler pentru pisici: 6 pași (cu imagini)
Cat-a-way - Computer Sprinkler pentru pisici: 6 pași (cu imagini)

Video: Cat-a-way - Computer Sprinkler pentru pisici: 6 pași (cu imagini)

Video: Cat-a-way - Computer Sprinkler pentru pisici: 6 pași (cu imagini)
Video: Costeo biju ‼️luat la palme de interlopi‼️#bucuresti #emipian #florinsalam #dans #interlopi 2024, Noiembrie
Anonim
Cat-a-way - Computer Vision Cat Sprinkler
Cat-a-way - Computer Vision Cat Sprinkler

Problemă - Pisicile care folosesc grădina dvs. ca toaletă

Soluție - Petreceți prea mult timp lucrând la conceperea unui sprinkler pentru pisici cu funcție de încărcare automată pe YouTube

Acesta nu este un pas cu pas, ci o prezentare generală a construcției și a unor coduri

#BeforeYouCallPETA - Pisicile sunt în regulă, este un aspersor cu presiune scăzută la fel ca ploaia, pe care o pot depăși înainte ca acesta să se învârtă în jurul lor. Proiectul nu este acela de a înmuia o pisică, ci de a le arăta înainte de a-mi arunca grădina cu versiunea pentru pisici a Barkers Eggs.

Pasul 1: elemente principale necesare

Principalele elemente necesare
Principalele elemente necesare

Raspberry Pi zero și card SD

Camera Raspberry Pi

Releu

555 temporizator…. (sau un arduino și un alt releu dacă 555 cronometre nu ajung)

Solenoid

Sprinkler

Un fel de carcasă pentru electronică

Dorința de a lovi un cui metaforic cu un ciocan de sanie de 6 tone

O cameră cu o rezoluție atât de redusă încât abia vezi apa, dar totuși poți vedea pisicile alergând la acoperire

Pasul 2: Sistemul

Image
Image

1, camera Pi detectează un obiect de dimensiune pisică în mișcare pentru câteva cadre de cameră (exapline în pasul următor)

2, Pi declanșează sprinklerul

3, Cat aleargă pentru acoperire

4, Video încărcat automat pe youtube pentru plăcere de vizionare

Pasul 3: Timp de codare

Punând laolaltă
Punând laolaltă

Folosind openCV folosind scăderea cadrului, puteți găsi zone ale cadrului care se schimbă în timp, folosind câteva funcții inteligente, puteți afla cât de mari sunt aceste modificări și dacă persistă în timp și, cel mai important, aflați dacă sunt de dimensiunea pisicii.

Există destul de multe tutoriale despre scăderea cadrelor care intră în detalii foarte mari dacă faceți o căutare rapidă pe Google.

Prezentare generală a modului în care funcționează codul

1, Camera continuă să ia cadre și să le compare cu ultimele

2, Dacă se detectează o formă de dimensiune pisică, se notează

3, Dacă modificarea dimensiunii pisicii persistă în jur de 4 cadre, pi folosește GPIO-ul său pentru a alimenta releul pentru a porni arduino

4, Arduino trimite un semnal pentru alimentarea celui de-al doilea releu timp de 5 secunde, care activează solenoidul

5, solenoidul când este alimentat permite apei către aspersor

6, În timp ce sprinklerul este activ, camera nu mai detectează și înregistrează videoclipuri

7, Videoclipul este încărcat pe Youtube

8, Stills încărcate în dropbox pentru sistemul de reglare fină

Notă - De ce am ajuns să folosesc 2 relee și un arduino pentru a porni un solenoid timp de 5 secunde …..

1, pi nu poate porni și opri solenoidul în timp ce înregistrează videoclipul, pe măsură ce python se oprește până când videoclipul este terminat, de unde este nevoie ca arduino (sau temporizatorul 555) să permită solenoidului să se deschidă și să se închidă independent de script în timp ce videoclipul este încă în înregistrare.

2, Primul releu și arduino pot fi înlocuite cu un temporizator 555, dar acest lucru nu a venit în post la timp pentru acest proiect, 555 ar economisi mulți bani și pași.

3, Pi nu poate declanșa solenoidul direct deoarece Pi GPIO funcționează pe 3.3v și 51mA max, iar solenoidul dorește să declanșeze 5V și mult mai mult de 51mA.

4, fiecare cadru poate fi decupat pentru a elimina detectarea mișcării în zonele nedorite, cum ar fi o grădină vecină. Nerespectarea acestui lucru va avea ca rezultat ca vecinul respectiv să arate confuz în grădina dvs., deoarece sprinklerul se stinge de fiecare dată când vrea să intre în magazia sa.

5, probabil că am ratat ceva evident și mi-am pierdut timpul pregătindu-l așa.

Codul de mai jos

import cv2import numpy as np import argparse #cat import time import RPi. GPIO as GPIO import os dropbox import from picamera.array import PiRGBArray from picamera import PiCamera # ------------------ ------------------------------ Încărcați pe youtube ----------------- ---------------------- def HDtoYoutube (): ctime = time.strftime ("_% H-% M-% S") cdate = time.strftime ("_% d-% m-% Y") vidname = ctime + cdate # Declanșare releu GPIO.output (11, True) time.sleep (.5) GPIO.output (11, False) print ("Making Video")) încercați: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Încărcați pe youtube print („Încărcare pe YouTube”) os. system ('sudo youtube-upload --title = "Cat Got Wet {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Eliminați fișierul video când ați terminat os.remove ('vid {0}.h264'.format (vidname)) print („Video încărcat și eliminat din Pi”) cu excepția: pass # -------------------- ---------------------------- Stills to dropbox ------------------- -------------------- def St. illsToDropbox (): print ("Încărcarea funcției Dropbox") access_token = 'Ah ah ah, nu ai spus cuvântul magic … Ah ah ah, nu ai spus cuvântul magic' ctime = time.strftime (" % H:% M:% S ") cdate = time.strftime ("% d-% m-% Y ") try: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (nume fișier) client = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg", 'rb') client.put_file (nume fișier, imagine) image.close () os.remove ("ToDropbox-j.webp

#HowToTriggerRealProgrammersWithBadCode

Pasul 4: Puneți-l împreună

Punând laolaltă
Punând laolaltă
Punând laolaltă
Punând laolaltă
Punând laolaltă
Punând laolaltă

Introduceți electricitatea într-o carcasă impermeabilă, înșurubați lucrurile în pereți și folosiți o mulțime de bandă adezivă și lipici fierbinte

Pasul 5: Rezultate

Image
Image
Rezultate
Rezultate

Când funcționează, funcționează

Pasul 6: Fals pozitive

Fals pozitive
Fals pozitive

Când nu, stropeste umbre de pisică, soția și fiica ta.

Pro-tip - Puneți un comutator lângă ușă care întrerupe programul de detectare a mișcării ….. apoi uitați să-l folosiți și să vă înmuiați când scoateți coșurile.

Sper că am făcut experți în programare, electronică și bricolaj să se împotmolească cu toate greșelile pe care probabil le-am făcut și sper mai ales să vă fi plăcut toate greșelile mele de ortografie.

Recomandat: