Оглавление:

Cat-a-way - Спринклер для кошек с компьютерным зрением: 6 шагов (с изображениями)
Cat-a-way - Спринклер для кошек с компьютерным зрением: 6 шагов (с изображениями)

Видео: Cat-a-way - Спринклер для кошек с компьютерным зрением: 6 шагов (с изображениями)

Видео: Cat-a-way - Спринклер для кошек с компьютерным зрением: 6 шагов (с изображениями)
Видео: Как жестокий торгаш стал самым богатым на планете? | Краткая история Джеффа Безоса и Амазон 2024, Декабрь
Anonim
Cat-a-way - Спринклер для кошек с компьютерным зрением
Cat-a-way - Спринклер для кошек с компьютерным зрением

Проблема - Кошки используют ваш сад как туалет

Решение - потратьте слишком много времени на разработку спринклера для кошек с функцией автоматической загрузки на YouTube.

Это не пошаговая инструкция, а обзор конструкции и некоторый код.

#BeforeYouCallPETA - С кошками все в порядке, это разбрызгиватель низкого давления, как дождь, и они могут убежать, прежде чем он даже повернется к ним. Проект состоит не в том, чтобы замочить кошку, а в том, чтобы показать ее, прежде чем они засорят мой сад кошачьей версией Barkers Eggs.

Шаг 1. Необходимые основные элементы

Необходимые основные предметы
Необходимые основные предметы

Raspberry Pi zero и SD-карта

Камера Raspberry Pi

Реле

555 таймер…. (или Arduino и другое реле, если ваши таймеры 555 не приходят)

Соленоид

Спринклерный

Какой-то корпус для электроники

Готовность забить метафорический гвоздь 6-тонной кувалдой

Камера с таким маленьким разрешением, что вода едва видна, но кошки бегут в укрытие.

Шаг 2: Система

Image
Image

1, камера Pi обнаруживает объект размером с кошку, движущийся в течение нескольких кадров камеры (поясняется в следующем шаге).

2, Pi запускает спринклер

3, кошка бежит в укрытие

4, видео автоматически загружается на YouTube для просмотра удовольствия

Шаг 3: время кодирования

Собираем вместе
Собираем вместе

Используя openCV с использованием вычитания фрейма, вы можете найти области фрейма, которые меняются со временем, используя некоторые изящные функции, вы можете выяснить, насколько велики эти изменения и сохраняются ли они с течением времени, и, что наиболее важно, узнать, размером ли они с кошку.

Существует довольно много руководств по вычитанию кадров, в которых подробно рассказывается, если вы выполните быстрый поиск в Google.

Обзор того, как работает код

1. Камера продолжает снимать кадры и сравнивать их с последними.

2, если обнаруживается фигура размером с кошку, отмечается

3. Если изменение размера кошки сохраняется в течение примерно 4 кадров, Pi использует свой GPIO для питания реле для запуска Arduino

4, Arduino отправляет сигнал для включения второго реле в течение 5 секунд, которое активирует соленоид

5, соленоид при включении позволяет подавать воду в спринклер.

6. Пока активен спринклер, камера перестает обнаруживать и записывает видео.

7. Видео загружено на Youtube

8. Кадры загружены в Dropbox для точной настройки системы.

Примечание. Почему я использовал 2 реле и Arduino для включения соленоида на 5 секунд …

1, Pi не может запускать и останавливать соленоид во время записи видео, так как скрипт python делает паузу до тех пор, пока видео не будет закончено, поэтому необходимо, чтобы arduino (или таймер 555) позволял соленоиду открываться и закрываться независимо от сценария, в то время как видео все еще записывается.

2, первое реле и arduino можно заменить таймером 555, но это не пришло вовремя для этого проекта, 555 сэкономит много времени, денег и шагов.

3, Pi не может запускать соленоид напрямую, так как Pi GPIO работает при максимальном напряжении 3,3 В и 51 мА, а для срабатывания соленоида требуется 5 В и намного больше 51 мА.

4. Каждый кадр можно обрезать, чтобы убрать обнаружение движения в нежелательных областях, например в саду соседей. В противном случае сосед будет недоуменно смотреть на ваш сад, потому что ороситель срабатывает каждый раз, когда он хочет войти в свой сарай.

5, я, наверное, пропустил что-то очевидное и зря потратил время на его настройку.

Код ниже

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 # ------------------ ------------------------------ Загрузить на 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 ("Принимая видео") попробуйте: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Upload to youtube print ("Загрузка на YouTube") os. system ('sudo youtube-upload --title = "Cat Got Wet {0}" --client-secrets = client_secret.json vid {0}.h264'.format (vidname)) # По завершении удалить видеофайл os.remove ('vid {0}.h264'.format (vidname)) print («Видео загружено и удалено из Pi») за исключением: pass # -------------------- ---------------------------- Кадры в Dropbox ------------------- -------------------- def St illsToDropbox (): print ("Загрузка еще в функцию Dropbox") access_token = 'Ах, ах, ты не сказал волшебное слово … Ах, ах, ты не сказал волшебное слово' 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

Шаг 4: Собираем все вместе

Собираем вместе
Собираем вместе
Собираем вместе
Собираем вместе
Собираем вместе
Собираем вместе

Запихните электрику в водонепроницаемый корпус, прикрутите вещи к стенам и используйте клейкую ленту и горячий клей.

Шаг 5: результаты

Image
Image
Полученные результаты
Полученные результаты

Когда это работает, это работает

Шаг 6: ложные срабатывания

Ложные срабатывания
Ложные срабатывания

Когда этого не происходит, он распыляет кошачьи тени, вашу жену и вашу дочь.

Совет - поставьте возле двери выключатель, который приостанавливает программу обнаружения движения….. затем забудьте его использовать и промокните при выставлении мусорных баков.

Надеюсь, что я заставил любого эксперта по программированию, электронике и самоделкам съежиться от всех ошибок, которые я, вероятно, сделал, и особенно надеюсь, что вам понравились все мои орфографические ошибки.

Рекомендуемые: