Съдържание:

Зомби откриване на интелигентна защитна бухал (дълбоко обучение): 10 стъпки (със снимки)
Зомби откриване на интелигентна защитна бухал (дълбоко обучение): 10 стъпки (със снимки)

Видео: Зомби откриване на интелигентна защитна бухал (дълбоко обучение): 10 стъпки (със снимки)

Видео: Зомби откриване на интелигентна защитна бухал (дълбоко обучение): 10 стъпки (със снимки)
Видео: секрет будущего кроется в прошлом. Стереть прошлое и начать жить сейчас в новом состоянии. 2024, Ноември
Anonim

Здравейте всички, добре дошли в T3chFlicks! В този урок за Хелоуин ще ви покажем как поставяме супер призрачен обрат върху обикновена битова класика: охранителната камера.

Как ?! Направихме бухал за нощно виждане, който използва обработка на изображения за проследяване на хората. О, и свири, точно като истинското нещо!

Бяхме много развълнувани от този проект и чакахме да го направим още откакто падна новата Raspberry Pi 4. Той има 4 GB RAM, което отваря вратата за множество наистина вълнуващи възможности, включително обработка на изображения с модели за дълбоко обучение в реално време.

Ако искате да следите приближаването на зомбита на Хелоуин или просто да проверите градината си през останалата част от годината, това е за вас. Сигурността не трябва да е скучна, за да бъде ефективна!

Консумативи

За тази конструкция ще ви трябва:

  • Raspberry Pi 4 (4GB RAM) Amazon
  • Камера за нощно виждане Amazon
  • Микро серво Amazon
  • Фалшива бухал Amazon
  • Лепило Amazon
  • Боядисвайте Amazon
  • Винтове Amazon
  • USB говорител Amazon
  • Голямо (5v+) преносимо захранване Amazon
  • 3D принтер Amazon

Стъпка 1: Стъпка 1: Обезглавяване

Стъпка 1: Обезглавете
Стъпка 1: Обезглавете
Стъпка 1: Обезглавете
Стъпка 1: Обезглавете
Стъпка 1: Обезглавете
Стъпка 1: Обезглавете

а. Издърпайте главата на бухала (понякога просто трябва да бъдете брутални), като дърпате силно главата му, където се прикрепя към пружината.

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

° С. Цилиндърът, който току -що свалихте, е направен от две части, пластмасова чаша и лагер, който седи вътре в нея. Свалете лагера от цилиндъра с помощта на отвертка (или подобен инструмент).

д. С помощта на винта, който свързва цилиндъра към пружината, прикрепете серво към цилиндъра.

д. Свалете пружината, като развиете трите винта, които я фиксират към тялото.

е. Направете дупка в горната част на тялото на совата, която е достатъчно голяма, за да побере някои проводници и кабела на камерата. Използвахме неелегантна комбинация от бормашина и отвертка, за да направим това.

Стъпка 2: Стъпка 2: Добавете Smart

Стъпка 2: Добавете Smart
Стъпка 2: Добавете Smart
Стъпка 2: Добавете Smart
Стъпка 2: Добавете Smart
Стъпка 2: Добавете Smart
Стъпка 2: Добавете Smart

а. 3D отпечатайте корпуса на камерата и го нарисувайте, за да съответства на бухала - използвахме евтини акрилни бои. Боядисването не е жизненоважна стъпка, но драстично подобрява цялостния вид!

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

° С. Поставете камерата в кутията и свържете кабела на камерата.

д. Залепете серво към горния панел на пружината.

д. Свържете дълги проводници към серво щифтовете (5V, Gnd, сигнал)

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

Стъпка 3: Стъпка 3: Напълнете я

Стъпка 3: Напълнете я
Стъпка 3: Напълнете я
Стъпка 3: Напълнете я
Стъпка 3: Напълнете я
Стъпка 3: Напълнете я
Стъпка 3: Напълнете я
Стъпка 3: Напълнете я
Стъпка 3: Напълнете я

а. Извадете щепсела от дъното на бухала и увеличете размера на този отвор, като изрежете пластмасата. Продължете да увеличавате размера, докато Raspberry Pi и високоговорителят могат да се поберат в тялото на бухала.

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

° С. По същия начин издърпайте серво проводниците и ги включете в Raspberry Pi:

  • +5v на серво => +5V на Pi
  • Gnd серво => gnd Pi
  • Сигнално серво => пин 12 Pi

д. Включете USB високоговорителя в Pi.

д. Поставете SD картата в Pi.

е. Power Pi с помощта на преносимо захранване.

g. Поставете Pi, захранването и високоговорителя в бухал през отвора в основата.

Стъпка 4: Стъпка 4: Настройка на Pi

Стъпка 4: Настройте Pi
Стъпка 4: Настройте Pi

ВСИЧКИ КОД може да се намери на

а. Изтеглете Raspian и го качете на вашата SD карта с помощта на Balena Etcher.

б. За достъп от разстояние до вашия pi

  • Добавете файл, наречен ssh, към вашата зареждаща sd карта
  • Добавете файл с име wpa_supplicant.conf и поставете вашите идентификационни данни за wifi

    ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdev update_config = 1

    network = {ssid = "MySSID" psk = "MyPassword"}

° С. Поставете SD картата в pi и опитайте достъп чрез ssh.

Стъпка 5: Стъпка 5: Преместване на главата

Стъпка 5: Преместване на главата
Стъпка 5: Преместване на главата

Урок за код за преместване на главата (управление на серво с малиново пи)

За да контролираме серво, работещо на Pi, ще създадем скрипт, който контролира GPIO щифтовете, към които е свързано серво.

а. Свържете серво към Pi:

  • +5v на серво => +5V на Pi
  • Gnd серво => gnd на Pi
  • Сигнално серво => щифт 12 на Pi

б. Първо трябва да настроите пиновете на gpio, за да използвате PWM на сигналния щифт на серво.

° С. След това е толкова просто, колкото да изберете работен цикъл (обяснен тук) на сигналния щифт, за да преместите серво от 90 градуса с работен цикъл от 7,5 до 0 градуса, когато работният цикъл е 2,5 и до 180 градуса с работен цикъл от 12.5

импортирайте RPi. GPIO като GPIO

време за импортиране GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) GPIO.setup (12, GPIO. OUT) p = GPIO. PWM (12, 50) p.start (7.5) try: while True: p. ChangeDutyCycle (7.5) # 90 градуса time.sleep (1) p. ChangeDutyCycle (2.5) # 0 градуса time.sleep (1) p. ChangeDutyCycle (12.5) # 180 градуса time.sleep (1) с изключение на KeyboardInterrupt: p.stop () GPIO.cleanup ()

Стъпка 6: Стъпка 6: Включване

Стъпка 6: Превключване
Стъпка 6: Превключване
Стъпка 6: Превключване
Стъпка 6: Превключване

Урок за код за създаване на бухал (свирене на аудио с малиново пи)

а. Включете USB високоговорителя.

б. Изтеглете звук - избрахме призрачен звук.

° С. Пуснете звука, като изпълните тази команда: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[д. Ако това не работи, проверете какъв изход използва вашият Pi и на какъв обем, като използвате командата alsamixer - ще бъдете посрещнати с екрана на миксера, където можете да промените силата на звука и да изберете вашето медийно устройство. За да увеличите силата на звука си, изпълнете командата по този начин omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 За да възпроизведете този звук с помощта на Python, разгледайте нашия тест скрипт.]

подпроцес на импортиране

command = "omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500" player = subprocess. Popen (command.split (''), stdin = subprocess. PIPE, stdout = subprocess. PIPE, stderr = subprocess. ТРЪБА)

Стъпка 7: Стъпка 7: Предавайте поточно видеото от Pi

Стъпка 7: Предавайте поточно видеото от Pi
Стъпка 7: Предавайте поточно видеото от Pi
Стъпка 7: Предавайте поточно видеото от Pi
Стъпка 7: Предавайте поточно видеото от Pi

Урок за код за създаване на поток от камера с малинов пи

а. Стартирайте python app.py и прегледайте в локалната си мрежа на https://raspberrypi.local: 5000

б. Този код е взет и леко адаптиран от Мигел Гринберг https://blog.miguelgrinberg.com/post/flask-video-… той обяснява добре как се прави и неговите уроци са страхотни-deffo го проверете! Основната концепция е, че използваме нишки и генератори за подобряване на скоростта на поточно предаване.

Стъпка 8: Стъпка 8: Откриване на тялото

Стъпка 8: Откриване на тялото
Стъпка 8: Откриване на тялото

Код за откриване на тялото (ImageNetSSD във видео поток с малиново пи)

а. Тъй като използваме Raspberry Pi 4, решихме, че е най -добре да изпробваме някои модели за задълбочено обучение, вместо основния метод HaarCascade, с който сме се ограничавали досега.

б. Разгледахме някои от предварително обучените модели, като YOLOv3, който изглежда супер готин. Малки тежести на YOLOv3, които биха били идеални за Pi, но не успяхме да го стартираме:(° С. Вместо това, ние избрахме модела MobileSSD, който можем да стартираме с помощта на openCVs DNN (дълбока невронна мрежа) модул, както научихме от този код: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 и от героя на уроците за обработка на изображения, Адриан Роузброк: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv/

д. Въпреки това, тъй като се опитваме да предаваме поточно това съдържание и да изпълняваме модели на всеки кадър, това води до забавено, фрагментирано видео. Научихме отново от Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ и използвахме многопроцесорния модул Python, за да поставим нашите изображения в опашки където те могат да бъдат обработени, без да блокират потока на камерата толкова силно.

д. Опитайте сами да стартирате кода:)

Стъпка 9: Стъпка 9: Изпращане на известия за зомбита

Стъпка 9: Изпращане на известия за зомбита
Стъпка 9: Изпращане на известия за зомбита
Стъпка 9: Изпращане на известия за зомбита
Стъпка 9: Изпращане на известия за зомбита

Код за изпращане на известие (python на телефон)

а. Решихме да използваме услугата за уведомяване

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

заявки за импортиране

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Бухалът е открил зомби." } r = requests.post ("https://api.pushed.co/1/push", данни = полезен товар)

Това е супер просто и можете да персонализирате името на известието си!

Стъпка 10: Какъв шум

Какъв хук!
Какъв хук!

Надяваме се, че сте харесали нашия проект Smart Owl Owl! Това беше супер забавно направление и се чувствам много по -сигурен, знаейки, че къщата ми се пази от нашата надеждна бухал.

Ако смятате, че това би било страхотно допълнение към Хелоуин във вашия интелигентен дом, моля, гласувайте за нас в конкурса за Хелоуин Instructables и както обикновено, не забравяйте да харесате, коментирате и да се абонирате!

Регистрирайте се в нашия пощенски списък!

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