Sommario:
- Passaggio 1: elementi principali richiesti
- Passaggio 2: il sistema
- Passaggio 3: tempo di codifica
- Passaggio 4: metterlo insieme
- Passaggio 5: risultati
- Passaggio 6: falsi positivi
Video: Cat-a-way - Irrigatore per gatti con visione artificiale: 6 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Problema: i gatti usano il tuo giardino come toilette
Soluzione: dedicare troppo tempo alla progettazione di un irrigatore per gatti con la funzione di caricamento automatico su YouTube
Questo non è un passo dopo passo, ma una panoramica della costruzione e del codice
#BeforeYouCallPETA - I gatti stanno bene, è un irrigatore a bassa pressione proprio come la pioggia, che possono fuggire prima ancora che ruoti intorno a loro. Il progetto non è quello di inzuppare un gatto, ma di mostrarlo via prima che sporchi il mio giardino con la versione per gatti di Barkers Eggs.
Passaggio 1: elementi principali richiesti
Raspberry Pi zero e scheda SD
Fotocamera Raspberry Pi
relè
555 timer…. (o un arduino e un altro relè se i tuoi 555 timer non arrivano)
Solenoide
spruzzatore
Una sorta di alloggiamento per l'elettronica
La volontà di colpire un chiodo metaforico con una mazza da 6 tonnellate
Una fotocamera con una risoluzione così ridotta che riesci a malapena a vedere l'acqua, ma puoi ancora vedere i gatti che corrono ai ripari
Passaggio 2: il sistema
1, la fotocamera Pi rileva un oggetto delle dimensioni di un gatto che si muove per alcuni fotogrammi della fotocamera (spiegato nel passaggio successivo)
2, Pi fa partire l'irrigatore
3, il gatto corre ai ripari
4, video caricato automaticamente su youtube per la visualizzazione di piacere
Passaggio 3: tempo di codifica
Usando openCV usando la sottrazione di frame puoi trovare aree del frame che cambiano nel tempo, usando alcune funzioni ingegnose puoi capire quanto sono grandi questi cambiamenti e se persistono nel tempo e, soprattutto, scoprire se sono delle dimensioni di un gatto.
Ci sono alcuni tutorial sulla sottrazione dei fotogrammi che entrano in grande dettaglio se fai una rapida ricerca su Google.
Panoramica di come funziona il codice
1, la fotocamera continua a scattare fotogrammi e a confrontarli con l'ultimo
2, se viene rilevata una forma delle dimensioni di un gatto, viene notato
3, se il cambiamento della dimensione del gatto persiste per circa 4 frame, il pi usa il suo GPIO per alimentare il relè per avviare arduino
4, l'arduino invia un segnale per alimentare il secondo relè per 5 secondi che attiva il solenoide
5, il solenoide quando alimentato consente l'acqua all'irrigatore
6, mentre l'irrigatore è attivo, la fotocamera smette di rilevare e registra video
7, il video viene caricato su Youtube
8, immagini fisse caricate su Dropbox per il sistema di messa a punto fine
Nota - Perché ho finito per usare 2 relè e un arduino per accendere un solenoide per 5 secondi…
1, il pi non può avviare e arrestare il solenoide durante la registrazione del video mentre gli script Python si mettono in pausa fino al termine del video, da qui la necessità che l'arduino (o il timer 555) consenta al solenoide di aprirsi e chiudersi indipendentemente dallo script mentre il il video sta ancora registrando.
2, il primo relè e arduino possono essere sostituiti con un timer 555 ma questo non è arrivato nel post in tempo per questo progetto, 555 farebbe risparmiare un sacco di tempo, denaro e passaggi.
3, il pi non può attivare il solenoide direttamente poiché il Pi GPIO funziona a 3,3 V e 51 mA max e il solenoide richiede l'attivazione di 5 V e molto più di 51 mA.
4, ogni fotogramma può essere ritagliato per rimuovere il rilevamento del movimento in aree indesiderate, come un giardino dei vicini. In caso contrario, il vicino di casa farà sguardi confusi nel tuo giardino perché l'irrigatore si spegne ogni volta che vuole entrare nel suo capannone.
5, probabilmente mi sono perso qualcosa di ovvio e ho perso tempo a configurarlo in questo modo.
Codice sotto
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 #------------------ ---------------Carica su 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("Ripresa video") prova: #Take Video os.system('raspivid -w 1640 -h 922 -o vid{0}.h264 -t 15000'.format(vidname)) #Upload to youtube print("Upload to YouTube") os. system('sudo youtube-upload --title="Cat Got Wet {0}" --client-secrets=client_secret.json vid{0}.h264'.format(vidname)) #Rimuovi il file video al termine os.remove ('vid{0}.h264'.format(vidname)) print("Video caricato e rimosso da Pi") tranne: pass #-------------------- -------------Alambicchi nella casella personale----- -------------------- def St illsToDropbox(): print("Uploading Still To Dropbox Function") access_token = 'Ah ah ah, non hai detto la parola magica…Ah ah ah, non hai detto la parola magica' ctime = time.strftime(" %H:%M:%S") cdate = time.strftime("%d-%m-%Y") try: filename = "/Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print(filename) client = dropbox.client. DropboxClient(access_token) image = open("ToDropbox.jpg", 'rb') client.put_file(filename, image) image.close() os.remove("ToDropbox.jpg") eccetto: pass #-------------------------------------------------------- ------Rileva movimento------------------------------------------------------- def DetectMotion(): #Definisci vars min_area = 400 tolarance = 25 #change in pixel bluramount = 21 timetoforget = 0.5 kernel = np.ones((5, 5), np.uint8) #usato per dialate MotionCounter = 0 MinTargetArea = 600 # dimensione più piccola da rilevare MaxTargetArea = 5000 #Dimensione più grande da rilevare ora = time.time() then = time.time() #inizialise camera camera = PiCamera() camera.resolution = (640, 480) camera.framerate = 10 raw Capture = PiRGBArray(camera, size=(640, 480)) #warmup camera time.sleep(1) #Prendi il primo fotogramma e preparalo per andare in cv2.acumulate weight camera.capture(rawCapture, format="bgr") avg = rawCapture.array #Ritaglia la regione indesiderata PolyCrop = np.array(
#HowToTriggerRealProgrammersWithBadCode
Passaggio 4: metterlo insieme
Metti l'impianto elettrico in un alloggiamento impermeabile, avvita le cose nei muri e usa molto nastro adesivo e colla a caldo
Passaggio 5: risultati
Quando funziona, funziona
Passaggio 6: falsi positivi
Quando non lo fa spruzza ombre di gatto, tua moglie e tua figlia.
Suggerimento: metti un interruttore vicino alla porta che metta in pausa il programma di rilevamento del movimento… poi dimentica di usarlo e bagnati quando metti fuori i bidoni.
Spero di aver fatto rabbrividire gli esperti di programmazione, elettronica e fai-da-te con tutti gli errori che probabilmente ho commesso, e soprattutto spero che ti siano piaciuti tutti i miei errori di ortografia.
Consigliato:
Hackerare l'Hexbug Spider XL per aggiungere la visione artificiale utilizzando uno smartphone Android: 9 passaggi (con immagini)
Hackerare l'Hexbug Spider XL per aggiungere la visione artificiale utilizzando uno smartphone Android: Sono un grande fan dell'originale Hexbug™ Ragno. Ne ho posseduti più di una dozzina e li ho hackerati tutti. Ogni volta che uno dei miei figli va da un amico’ festa di compleanno, l'amico riceve un Hexbug™ ragno in regalo. Ho hackerato l'o
Bacchetta di Harry Potter funzionante con visione artificiale: 8 passaggi (con immagini)
Bacchetta di Harry Potter funzionante con visione artificiale: "Qualsiasi tecnologia sufficientemente avanzata è indistinguibile dalla magia" - Arthur C. Clarke Alcuni mesi fa mio fratello ha visitato il Giappone e ha avuto una vera esperienza magica nel mondo magico di Harry Potter agli Universal Studios
Sedia a rotelle controllata da visione artificiale con manichino: 6 passaggi (con immagini)
Sedia a rotelle controllata da visione artificiale con manichino: progetto di AJ Sapala, Fanyun Peng, Kuldeep Gohel, Ray LC. Instructable di AJ Sapala, Fanyun Peng, Ray LC. Abbiamo creato una sedia a rotelle con ruote controllate da una scheda Arduino, a sua volta controllata da un raspberry pi che esegue openCV tramite Processing
Braccio robotico per visione artificiale Arduino: 4 passaggi (con immagini)
Arduino Computer Vision Robot Arm: L'idea principale con questo istruibile era semplicemente creare un semplice braccio robotico 3DOF che raccogliesse oggetti e li posizionasse nel posto giusto. Materiali:4 servo SG90MDF 4mmArduino NanoJumpersLaptopCollaNylon
Trasformare la fotocamera in "visione notturna militare", aggiungere l'effetto di visione notturna o creare la modalità di visione notturna su qualsiasi telecamera!!!: 3 passaggi
Trasforma la tua fotocamera in "visione notturna militare", aggiungi l'effetto di visione notturna o crea la modalità di visione notturna" su qualsiasi telecamera!!!: *** Questo è stato inserito nel CONCORSO DIGITAL DAYS PHOTO, per favore votami** *Se hai bisogno di aiuto, invia un'e-mail a: [email protected] Parlo inglese, francese, giapponese, spagnolo e conosco altre lingue se