Tabla de contenido:

Cat-a-way - Aspersor para gatos con visión por computadora: 6 pasos (con imágenes)
Cat-a-way - Aspersor para gatos con visión por computadora: 6 pasos (con imágenes)

Video: Cat-a-way - Aspersor para gatos con visión por computadora: 6 pasos (con imágenes)

Video: Cat-a-way - Aspersor para gatos con visión por computadora: 6 pasos (con imágenes)
Video: Por andar de chistosito 😮‍💨 2024, Noviembre
Anonim
Cat-a-way - Aspersor para gatos con visión artificial
Cat-a-way - Aspersor para gatos con visión artificial

Problema: los gatos usan su jardín como baño

Solución: dedique demasiado tiempo a diseñar un aspersor para gatos con la función de carga automática de YouTube

Esto no es un paso a paso, sino una descripción general de la construcción y algo de código.

#BeforeYouCallPETA - Los gatos están bien, es un aspersor de baja presión como la lluvia, que pueden dejar atrás incluso antes de que gire hacia ellos. El proyecto no es empapar a un gato, sino mostrarlo antes de que ensucie mi jardín con la versión para gatos de Barkers Eggs.

Paso 1: Elementos principales necesarios

Elementos principales requeridos
Elementos principales requeridos

Raspberry Pi zero y tarjeta SD

Cámara Raspberry Pi

Relé

555 temporizador…. (o un arduino y otro relé si sus 555 temporizadores no llegan)

Solenoide

Aspersor

Algún tipo de carcasa para la electrónica.

La voluntad de golpear un clavo metafórico con un mazo de 6 toneladas

Una cámara con tan poca resolución que apenas puedes ver el agua, pero aún puedes ver a los gatos corriendo para cubrirse.

Paso 2: el sistema

Image
Image

1, la cámara Pi detecta un objeto del tamaño de un gato que se mueve durante unos pocos fotogramas de la cámara (se explica en el siguiente paso)

2, Pi pone en marcha el rociador

3, gato corre para cubrirse

4, video subido automáticamente a youtube para ver el placer

Paso 3: tiempo de codificación

Poniendo todo junto
Poniendo todo junto

Usando openCV usando la resta de cuadros, puede encontrar áreas del cuadro que cambian con el tiempo, usando algunas funciones ingeniosas puede averiguar qué tan grandes son estos cambios y si persisten en el tiempo, y lo más importante, averiguar si son del tamaño de un gato.

Hay bastantes tutoriales sobre la resta de cuadros que entran en gran detalle si haces una búsqueda rápida en Google.

Descripción general de cómo funciona el código

1, la cámara sigue tomando fotogramas y comparándolos con el último

2, si se detecta una forma del tamaño de un gato, se indica

3, si el cambio de tamaño del gato persiste en alrededor de 4 cuadros, el pi usa su GPIO para encender el relé para iniciar arduino

4, el arduino envía una señal para alimentar el segundo relé durante 5 segundos que activa el solenoide

5, el solenoide cuando se enciende permite que entre agua al rociador

6, mientras el rociador está activo, la cámara deja de detectar y graba video

7, el video se carga en Youtube

8, imágenes fijas cargadas en Dropbox para un sistema de ajuste fino

Nota: ¿Por qué terminé usando 2 relés y un arduino para encender un solenoide durante 5 segundos?

1, el pi no puede iniciar y detener el solenoide mientras graba el video, ya que los scripts de Python se detienen hasta que el video finaliza, de ahí la necesidad de que el arduino (o temporizador 555) permita que el solenoide se abra y cierre independientemente del script mientras el el video aún se está grabando.

2, el primer relé y arduino se pueden reemplazar con un temporizador 555, pero eso no llegó a tiempo para este proyecto, 555 ahorraría mucho tiempo, dinero y pasos.

3, el pi no puede disparar el solenoide directamente ya que el Pi GPIO funciona en 3.3vy 51mA max, y el solenoide quiere 5V y mucho más de 51mA para dispararse.

4, cada cuadro se puede recortar para eliminar la detección de movimiento en áreas no deseadas, como un jardín vecino. No hacer esto resultará en que dicho vecino mire confundido a su jardín porque el aspersor se apaga cada vez que quiere entrar a su cobertizo.

5, probablemente me perdí algo obvio y perdí el tiempo configurándolo así.

Código a continuación

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 # ------------------ ------------------------------ Subir a 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 ("Tomando video") intente: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Sube a youtube print ("Subiendo a YouTube") os. system ('sudo youtube-upload --title = "Cat Got Wet {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Eliminar el archivo de video cuando termine os.remove ('vid {0}.h264'.format (vidname)) print ("Video subido y eliminado de Pi") excepto: pass # -------------------- ---------------------------- Imágenes fijas en Dropbox ------------------- -------------------- def St illsToDropbox (): print ("Función de carga fija en Dropbox") access_token = 'Ah ah ah, no dijiste la palabra mágica … Ah ah ah, no dijiste la palabra mágica' ctime = time.strftime (" % H:% M:% S ") cdate = time.strftime ("% d-% m-% Y ") intente: filename =" /Motion/{0}/DetectedAt_{1}.jpg".format(cdate, ctime) print (nombre de archivo) client = dropbox.client. DropboxClient (access_token) image = open ("ToDropbox.jpg", 'rb') client.put_file (nombre de archivo, imagen) image.close () os.remove ("ToDropbox-j.webp

#HowToTriggerRealProgrammersWithBadCode

Paso 4: Armado

Poniendo todo junto
Poniendo todo junto
Poniendo todo junto
Poniendo todo junto
Poniendo todo junto
Poniendo todo junto

Coloque los componentes eléctricos en una carcasa impermeable, atornille las cosas en las paredes y use mucha cinta adhesiva y pegamento caliente

Paso 5: resultados

Image
Image
Resultados
Resultados

Cuando funciona, funciona

Paso 6: falsos positivos

Falsos positivos
Falsos positivos

Cuando no lo hace, rocía sombras de gatos, tu esposa y tu hija.

Consejo profesional: coloque un interruptor junto a la puerta que pausa el programa de detección de movimiento … luego olvídese de usarlo y empápese al sacar los contenedores.

Espero haber hecho que los expertos en programación, electrónica y bricolaje se avergüencen con todos los errores que probablemente cometí, y especialmente espero que hayan disfrutado todos mis errores ortográficos.

Recomendado: