Índice:

Cat-a-way - Sprinkler Cat-a-way com visão computacional: 6 etapas (com fotos)
Cat-a-way - Sprinkler Cat-a-way com visão computacional: 6 etapas (com fotos)

Vídeo: Cat-a-way - Sprinkler Cat-a-way com visão computacional: 6 etapas (com fotos)

Vídeo: Cat-a-way - Sprinkler Cat-a-way com visão computacional: 6 etapas (com fotos)
Vídeo: Generation Nord One-Shot 2024, Junho
Anonim
Cat-a-way - Sprinkler Cat com visão computacional
Cat-a-way - Sprinkler Cat com visão computacional

Problema - Gatos usando seu jardim como banheiro

Solução - Gaste muito tempo projetando um aspersor para gatos com o recurso de upload automático do YouTube

Este não é um passo a passo, mas uma visão geral da construção e alguns códigos

#BeforeYouCallPETA - Os gatos estão bem, é um aspersor de baixa pressão como a chuva, que eles podem correr antes mesmo de girar em torno deles. O projeto não é ensopar um gato, mas afastá-lo antes que sujem meu jardim com a versão para gatos do Barkers Eggs.

Etapa 1: itens principais necessários

Principais itens necessários
Principais itens necessários

Raspberry Pi zero e cartão SD

Câmera Raspberry Pi

Retransmissão

555 temporizador…. (ou um arduino e outro relé se seus 555 timers não chegarem)

Solenóide

Sprinkler

Algum tipo de caixa para os eletrônicos

A vontade de acertar um prego metafórico com uma marreta de 6 toneladas

Uma câmera com tão pouca resolução que você mal consegue ver a água, mas ainda consegue ver os gatos correndo para se proteger

Etapa 2: O Sistema

Image
Image

1, a câmera Pi detecta um objeto do tamanho de um gato se movendo por alguns quadros da câmera (mostrado na próxima etapa)

2, Pi dispara sprinkler

3, Cat corre para se proteger

4, vídeo carregado automaticamente para o youtube para o prazer de visualização

Etapa 3: tempo de codificação

Juntar as peças
Juntar as peças

Usando openCV usando subtração de quadro, você pode encontrar áreas do quadro que mudam com o tempo, usando algumas funções interessantes, você pode descobrir o quão grandes são essas mudanças e se persistem com o tempo, e o mais importante, descobrir se elas são do tamanho de um gato.

Existem alguns tutoriais sobre subtração de quadros que entram em grandes detalhes se você fizer uma pesquisa rápida no Google.

Visão geral de como o código funciona

1, a câmera continua tirando fotos e comparando-as com as últimas

2, se uma forma do tamanho de um gato for detectada, será notado

3, se a mudança no tamanho do gato persistir por cerca de 4 quadros, o pi usa seu GPIO para ligar o relé para iniciar o Arduino

4, o arduino envia um sinal para alimentar o segundo relé por 5 segundos, que ativa o solenóide

5, O solenóide quando alimentado permite água para o sprinkler

6, enquanto o aspersor está ativo, a câmera para de detectar e grava o vídeo

7, o vídeo é enviado ao Youtube

8, Imagens instantâneas enviadas para a caixa de depósito para o sistema de ajuste fino

Nota - Por que acabei usando 2 relés e um arduino para ligar um solenóide por 5 segundos …

1, O pi não pode iniciar e parar o solenóide durante a gravação do vídeo, pois os scripts python pausam até que o vídeo seja concluído, daí a necessidade do arduino (ou temporizador 555) para permitir que o solenóide abra e feche independentemente do script enquanto o o vídeo ainda está sendo gravado.

2, O primeiro relé e o arduino podem ser substituídos por um temporizador 555, mas isso não veio no correio a tempo para este projeto, o 555 economizaria muito tempo, dinheiro e etapas.

3, O pi não pode acionar o solenóide diretamente porque o Pi GPIO funciona em 3,3 V e 51 mA máx., E o solenóide quer 5 V e muito mais do que 51 mA para acionar.

4, cada quadro pode ser cortado para remover a detecção de movimento em áreas indesejadas, como um jardim de vizinhos. Deixar de fazer isso fará com que o referido vizinho olhe confusamente para o seu jardim porque o irrigador dispara toda vez que ele quer entrar em seu galpão.

5, provavelmente perdi algo óbvio e perdi meu tempo configurando-o assim.

Código abaixo

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 # ------------------ ------------------------------ Carregar para o 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") tente: #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 = "Gato molhou {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) #Remove arquivo de vídeo quando terminar os.remove ('vid {0}.h264'.format (vidname)) print ("Vídeo enviado e removido de Pi") exceto: pass # -------------------- ---------------------------- Instantâneos para caixa de depósito ------------------- -------------------- def St illsToDropbox (): print ("Upload Still To Dropbox Function") access_token = 'Ah ah ah, você não disse a palavra mágica … Ah ah ah, você não disse a palavra mágica' 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-j.webp

#HowToTriggerRealProgrammersWithBadCode

Etapa 4: juntando tudo

Juntar as peças
Juntar as peças
Juntar as peças
Juntar as peças
Juntar as peças
Juntar as peças

Enfie a parte elétrica em uma caixa à prova d'água, aparafuse as coisas nas paredes e use muita fita adesiva e cola quente

Etapa 5: Resultados

Image
Image
Resultados
Resultados

Quando funciona, funciona

Etapa 6: falsos positivos

Falso-positivo
Falso-positivo

Quando isso não acontece, borrifa sombras de gatos, sua esposa e sua filha.

Dica de profissional - Coloque um interruptor perto da porta que interrompa o programa de detecção de movimento….. depois esqueça de usá-lo e fique encharcado ao colocar as lixeiras para fora.

Espero ter feito qualquer especialista em programação, eletrônica e DIY se encolher com todos os erros que provavelmente cometi, e especialmente espero que você tenha gostado de todos os meus erros de ortografia.

Recomendado: