Cuprins:

Zombie Detection Smart Security Owl (Deep Learning): 10 pași (cu imagini)
Zombie Detection Smart Security Owl (Deep Learning): 10 pași (cu imagini)

Video: Zombie Detection Smart Security Owl (Deep Learning): 10 pași (cu imagini)

Video: Zombie Detection Smart Security Owl (Deep Learning): 10 pași (cu imagini)
Video: Night 2024, Noiembrie
Anonim

Bună tuturor, Bine ați venit la T3chFlicks! În acest tutorial de Halloween, vă vom arăta cum punem o întorsătură super-infricosatoare unui clasic banal de uz casnic: camera de securitate.

Cum?! Am realizat o bufniță de noapte care folosește procesarea imaginilor pentru a urmări oamenii. Oh, și se aude, la fel ca adevăratul lucru!

Am fost foarte entuziasmați de acest proiect și așteptăm să îl facem de când noul Raspberry Pi 4 a renunțat. Are o memorie RAM de 4 GB, care deschide ușa către o mulțime de posibilități cu adevărat interesante, inclusiv efectuarea unor procesări de imagini cu modele de învățare profundă în timp real.

Dacă doriți să fiți atenți la apropierea de zombi de Halloween sau pur și simplu să vă verificați grădina tot restul anului, acesta este cel pentru dvs. Securitatea nu trebuie să fie plictisitoare pentru a fi eficientă!

Provizii

Pentru această construcție, veți avea nevoie de:

  • Raspberry Pi 4 (4 GB Ram) Amazon
  • Camera de vizionare de noapte Amazon
  • Micro Servo Amazon
  • Fake Owl Amazon
  • Lipiți Amazon
  • Vopsea Amazon
  • Șuruburi Amazon
  • Difuzor USB Amazon
  • Alimentare portabilă mare (5v +) Amazon
  • Imprimantă 3D Amazon

Pasul 1: Pasul 1: Decapitate

Pasul 1: Decapitați
Pasul 1: Decapitați
Pasul 1: Decapitați
Pasul 1: Decapitați
Pasul 1: Decapitați
Pasul 1: Decapitați

A. Trageți capul de pe bufniță (uneori trebuie doar să fiți brutali) trăgându-l puternic de cap, unde se fixează la arc.

b. Capul bufniței se conectează la corp printr-un cilindru care se află deasupra unui arc mare. Scoateți acest cilindru scoțând șurubul.

c. Cilindrul pe care tocmai l-ați scos este format din două părți, o ceașcă de plastic și un rulment care se află în interiorul acestuia. Scoateți rulmentul din cilindru folosind o șurubelniță (sau un instrument similar).

d. Folosind șurubul care a conectat cilindrul la arc, atașați servo la cilindru.

e. Scoateți arcul deșurubând cele trei șuruburi care îl fixează de corp.

f. Faceți o gaură în partea superioară a corpului bufniței, care este suficient de mare pentru a se potrivi câtorva fire și cablul camerei. Am folosit o combinație neelegantă de burghiu și șurubelniță pentru a face acest lucru.

Pasul 2: Pasul 2: Adăugați Smart

Pasul 2: Adăugați Smart
Pasul 2: Adăugați Smart
Pasul 2: Adăugați Smart
Pasul 2: Adăugați Smart
Pasul 2: Adăugați Smart
Pasul 2: Adăugați Smart

A. Imprimați 3D carcasa camerei și vopsiți-o pentru a se potrivi cu bufnița - am folosit câteva vopsele acrilice ieftine. Pictura nu este un pas vital, dar îmbunătățește dramatic aspectul general!

b. Cu capul bufniței cu capul în jos, înșurubați partea superioară a carcasei camerei în interiorul capului său, unde ciocul iese.

c. Puneți camera în carcasă și conectați cablul camerei.

d. Lipiți servo pe panoul superior al arcului.

e. Conectați firele lungi la pinii servo (5V, Gnd, semnal)

f. Introduceți cablul camerei și firele pentru servo prin arc și prin orificiul pe care l-ați făcut în partea superioară a corpului, astfel încât să fie în interiorul corpului gol al bufniței.

Pasul 3: Pasul 3: Umple-o

Pasul 3: Umple-o
Pasul 3: Umple-o
Pasul 3: Umple-o
Pasul 3: Umple-o
Pasul 3: Umple-o
Pasul 3: Umple-o
Pasul 3: Umple-o
Pasul 3: Umple-o

A. Scoateți dopul din partea de jos a bufniței și măriți dimensiunea acestei găuri prin tăierea plasticului. Continuați să măriți dimensiunea până când Raspberry Pi și difuzorul se pot încadra în corpul bufniței.

b. Odată ce gaura este suficient de mare pentru ca toate componentele să se potrivească în interior, trageți cablul camerei pe care l-ați alimentat prin partea superioară a bufniței din bază și conectați-l la Raspberry Pi.

c. În mod similar, trageți firele servo și conectați-le la Raspberry Pi:

  • + 5v pe servo => + 5V pe Pi
  • Gnd servo => gnd Pi
  • Servo de semnal => pin 12 Pi

d. Conectați difuzorul USB la Pi.

e. Introduceți cardul SD în Pi.

f. Power Pi folosind sursa de alimentare portabilă.

g. Introduceți Pi, sursa de alimentare și difuzorul în bufniță prin orificiul din bază.

Pasul 4: Pasul 4: Configurați Pi

Pasul 4: Configurați Pi
Pasul 4: Configurați Pi

TOATE CODURILE POATE FI GĂSITE LA

A. Descărcați Raspian și încărcați-l pe cardul SD folosind Balena Etcher.

b. Pentru a vă accesa pi de la distanță

  • Adăugați un fișier numit ssh pe cardul de boot SD
  • Adăugați un fișier numit wpa_supplicant.conf și introduceți acreditările dvs. wifi

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

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

c. Introduceți cardul SD în pi și încercați un acces prin ssh.

Pasul 5: Pasul 5: Mișcarea capului

Pasul 5: Mișcarea capului
Pasul 5: Mișcarea capului

Tutorial de cod pentru mutarea capului (controlul unui servo cu un raspberry pi)

Pentru a controla un servo care rulează pe Pi, vom crea un script care controlează pinii GPIO la care este conectat servo-ul.

A. Conectați servo-ul la Pi:

  • + 5v pe servo => + 5V pe Pi
  • Gnd servo => gnd pe Pi
  • Servo de semnal => pin 12 pe Pi

b. Mai întâi trebuie să configurați pinii gpio pentru a utiliza PWM pe pinul de semnal al servo-ului.

c. Apoi, este la fel de simplu ca selectarea ciclului de funcționare (explicat aici) al pinului de semnal pentru a muta servo de la 90 de grade cu un ciclu de funcționare de 7,5 la 0 grade când ciclul de funcționare este de 2,5 și la 180 de grade cu un ciclu de funcționare de 12.5

importați RPi. GPIO ca GPIO

timp de import 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 grade time.sleep (1) p. ChangeDutyCycle (2.5) # 0 grade time.sleep (1) p. ChangeDutyCycle (12.5) # 180 grade time.sleep (1) cu excepția KeyboardInterrupt: p.stop () GPIO.cleanup ()

Pasul 6: Pasul 6: Făcându-l Hoot

Pasul 6: Faceți-l Hoot
Pasul 6: Faceți-l Hoot
Pasul 6: Faceți-l Hoot
Pasul 6: Faceți-l Hoot

Tutorial de cod pentru a face howl hoot (redarea audio cu un pi de zmeură)

A. Conectați difuzorul USB.

b. Descarcă un sunet - am ales un hohot infricosator.

c. Redați sunetul executând această comandă: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[d. Dacă acest lucru nu funcționează, verificați ce ieșire utilizează Pi-ul dvs. și la ce volum utilizând comanda alsamixer - veți fi întâmpinat cu ecranul mixerului, unde puteți schimba volumul și puteți selecta dispozitivul media. Pentru a crește volumul sunetului dvs., efectuați comanda ca acest omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 Pentru a reda acest sunet folosind Python, aruncați o privire la scriptul nostru de testare.]

subproces de import

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. PIPE)

Pasul 7: Pasul 7: Transmiteți videoclipul din Pi

Pasul 7: Transmiteți videoclipul din Pi
Pasul 7: Transmiteți videoclipul din Pi
Pasul 7: Transmiteți videoclipul din Pi
Pasul 7: Transmiteți videoclipul din Pi

Tutorial de cod pentru crearea unui flux de cameră cu raspberry pi

A. Rulați python app.py și vizualizați în rețeaua locală la https://raspberrypi.local: 5000

b. Acest cod a fost preluat și ușor adaptat de la Miguel Grinberg https://blog.miguelgrinberg.com/post/flask-video-… el explică frumos cum se face și tutorialele sale sunt minunate - deffo verificați-l! Conceptul de bază este că folosim filetări și generatoare pentru a îmbunătăți viteza de streaming.

Pasul 8: Pasul 8: Detectarea corpului

Pasul 8: Detectarea corpului
Pasul 8: Detectarea corpului

Cod pentru detectarea corpului (ImageNetSSD pe un flux video cu raspberry pi)

A. Întrucât folosim Raspberry Pi 4, ne-am gândit că este mai bine să încercăm câteva modele de învățare profundă pe acesta, în loc de metoda de bază HaarCascade la care ne-am limitat până acum.

b. Am aruncat o privire asupra unora dintre modelele pre-antrenate, cum ar fi YOLOv3, care arată super cool. YOLOv3 greutăți mici, care ar fi fost perfecte pentru Pi, dar nu am reușit să rulăm:(c. În schimb, am optat pentru modelul MobileSSD pe care îl putem rula folosind modulul openCVs DNN (deep neural net), așa cum am aflat din acest cod: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 și de la eroul tutorialelor de procesare a imaginilor, Adrian Rosebrock: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv /

d. Cu toate acestea, pe măsură ce încercăm să difuzăm acest conținut și să rulăm modele pe fiecare cadru, rezultă un videoclip fragmentat. Am aflat din nou de la Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ și am folosit modulul multiprocesare Python pentru a pune imaginile noastre în cozi unde pot fi procesate fără a bloca atât de intens fluxul camerei.

e. Încercați să rulați singur codul:)

Pasul 9: Pasul 9: Trimiterea notificărilor pentru zombi

Pasul 9: Trimiterea notificărilor pentru zombi
Pasul 9: Trimiterea notificărilor pentru zombi
Pasul 9: Trimiterea notificărilor pentru zombi
Pasul 9: Trimiterea notificărilor pentru zombi

Cod pentru trimiterea unei notificări (python la telefon)

A. Am decis să folosim serviciul de notificare

b. Puteți obține un cont gratuit și puteți descărca aplicația și puteți configura rapid rapid notificări mobile. Am creat notificările folosind un script Python de genul acesta.

solicitări de import

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Owl a detectat un zombie." } r = requests.post ("https://api.push.co/1/push", date = sarcină utilă)

Este foarte simplu și îți poți personaliza numele notificării!

Pasul 10: Ce hohot

Ce hohot!
Ce hohot!

Sperăm că ți-a plăcut proiectul nostru Smart Security Owl! Acesta a fost un model foarte distractiv și mă simt mult mai în siguranță știind că casa mea este păzită de bufnița noastră de încredere.

Dacă credeți că acesta ar fi un adaos fabulos de Halloween pentru casa dvs. inteligentă, vă rugăm să ne votați la concursul Instructables Halloween și, ca de obicei, nu uitați să vă place, să comentați și să vă abonați!

Înscrieți-vă la lista noastră de distribuție!

Recomandat: