Cuprins:
- Pasul 1: elemente principale necesare
- Pasul 2: Sistemul
- Pasul 3: Timp de codare
- Pasul 4: Puneți-l împreună
- Pasul 5: Rezultate
- Pasul 6: Fals pozitive
Video: Cat-a-way - Computer Sprinkler pentru pisici: 6 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
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
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
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
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ă
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
Când funcționează, funcționează
Pasul 6: 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:
Sourino - Cea mai bună jucărie pentru pisici și copii: 14 pași (cu imagini)
Sourino - Cea mai bună jucărie pentru pisici și copii: imaginați-vă petreceri lungi cu copii și pisici jucând Sourino. Această jucărie va uimi atât pisicile, cât și copiii. Vă veți bucura să jucați în modul controlat de la distanță și să vă înnebuniți pisica. În modul autonom, veți aprecia să lăsați Sourino să se miște în jurul pisicii dvs.
Control acces acces la hrană pentru pisici (ESP8266 + servomotor + imprimare 3D): 5 pași (cu imagini)
Controlul accesului la hrană pentru pisici (ESP8266 + Servomotor + imprimare 3D): Acest proiect trece peste procesul pe care l-am folosit pentru a crea un castron automat pentru hrană pentru pisici, pentru pisica mea în vârstă, diabetică Chaz. Vezi, trebuie să mănânce micul dejun înainte să-și poată lua insulina, dar uit de multe ori să-i iau mâncarea înainte să mă culc, ceea ce strică
Repelent pentru pisici: 4 pași (cu imagini)
Cat Repellent: Pentru început, nu urăsc pisicile, dar iubesc păsările. În grădina mea avem niște cuști deschise unde păsările pot intra și ieși după bunul plac. Ei pot găsi mâncare și apă acolo. Din păcate, uneori o pisică din cartier intră în grădina mea și eu
Dispenser automat pentru hrana pentru pisici: 7 pași (cu imagini)
Dispenser automat pentru hrana pentru pisici: dacă nu controlați cantitatea de mâncare pe care o mănâncă pisica, acest lucru poate duce la supraalimentare și la probleme cu supraponderalitatea. Acest lucru este valabil mai ales dacă sunteți departe de casă și lăsați hrană suplimentară pentru ca pisica dvs. să o consume în propriul program. Alteori poți să
Dispozitiv de acoperire a bolului pentru hrană pentru pisici: 4 pași
Dispozitiv de acoperire a bolului pentru hrană pentru pisici: Acest material instructiv a fost creat pentru a îndeplini cerințele proiectului Makecourse de la Universitatea din Florida de Sud (www.makecourse.com). Acest dispozitiv era