Съдържание:

Cat-a-way-Cat Vision Cat Sprinkler: 6 стъпки (със снимки)
Cat-a-way-Cat Vision Cat Sprinkler: 6 стъпки (със снимки)

Видео: Cat-a-way-Cat Vision Cat Sprinkler: 6 стъпки (със снимки)

Видео: Cat-a-way-Cat Vision Cat Sprinkler: 6 стъпки (със снимки)
Видео: Как устроена IT-столица мира / Russian Silicon Valley (English subs) 2024, Ноември
Anonim
Cat-a-way-Компютърно зрение Cat Cat
Cat-a-way-Компютърно зрение Cat Cat

Проблем - Котките използват вашата градина като тоалетна

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

Това не е стъпка по стъпка, а преглед на конструкцията и някакъв код

#BeforeYouCallPETA - Котките са добре, пръскачката с ниско налягане, точно като дъжд, която може да изпревари, преди дори да се завърти около тях. Проектът не е да накисваме котка, а да ги изхвърлим, преди да затрупат градината ми с котешката версия на яйцата на Barkers.

Стъпка 1: Изискват се основните елементи

Изискват се основните елементи
Изискват се основните елементи

Raspberry Pi нула и SD карта

Камера Raspberry Pi

Реле

555 таймер …. (или ардуино и друго реле, ако вашите 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.3v и 51mA max, а соленоидът иска 5V и много повече от 51mA да се задействат.

4, Всеки кадър може да бъде изрязан, за да се премахне откриването на движение в нежелани зони, като например градина в съседство. Неспазването на това ще доведе до това съседът да хвърли объркан поглед във вашата градина, защото пръскачката излиза всеки път, когато иска да влезе в навеса си.

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

Код по -долу

импортирайте cv2import numpy като np импортирайте argparse #cat време за импортиране импортирайте RPi. GPIO като GPIO импортирайте os импортирайте dropbox от picamera.array импортирайте PiRGBArray от пикамера импортирайте 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 ("Taking Video") опитайте: #Take Video os.system ('raspivid -w 1640 -h 922 -o vid {0}.h264 -t 15000'.format (vidname)) #Качете в 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: Фалшиви позитиви

Фалшиви позитиви
Фалшиви позитиви

Когато това не стане, той пръска котешки сенки, жена ви и дъщеря ви.

Pro -tip - Поставете превключвател до вратата, който спира програмата за откриване на движение ….. след това забравете да го използвате и се накиснете, когато изваждате кофите.

Надявам се, че съм накарал някой експерт по програмиране, електроника и DIY да се свие с всички грешки, които вероятно съм направил, и особено се надявам да се насладите на всичките ми правописни грешки.

Препоръчано: