Indholdsfortegnelse:

Zombie Detecting Smart Security Owl (Deep Learning): 10 trin (med billeder)
Zombie Detecting Smart Security Owl (Deep Learning): 10 trin (med billeder)

Video: Zombie Detecting Smart Security Owl (Deep Learning): 10 trin (med billeder)

Video: Zombie Detecting Smart Security Owl (Deep Learning): 10 trin (med billeder)
Video: "HIDE N' SEEK" & "DARK MATTER" GRIND w/ VIEWERS! (Black Ops 3 Multiplayer) 2024, November
Anonim

Hej alle, velkommen til T3chFlicks! I denne Halloween -tutorial viser vi dig, hvordan vi sætter et superhyggeligt twist på en dagligdags husstandsklassiker: sikkerhedskameraet.

Hvordan?! Vi har lavet en nattesynning, der bruger billedbehandling til at spore mennesker. Åh, og det tudser, ligesom den ægte vare!

Vi har været super begejstrede for dette projekt, og vi har ventet på at gøre det lige siden den nye Raspberry Pi 4 faldt. Den har 4 GB RAM, som åbner døren for masser af virkelig spændende muligheder, herunder billedbehandling med dybe læringsmodeller i realtid.

Hvis du vil holde øje med kommende zombier på Halloween, eller bare tjekke din have resten af året, er dette den for dig. Sikkerhed behøver ikke at være kedeligt for at være effektiv!

Forbrugsvarer

Til denne build skal du bruge:

  • Raspberry Pi 4 (4 GB Ram) Amazon
  • Nattesynskamera Amazon
  • Micro Servo Amazon
  • Falske ugle Amazon
  • Lim Amazon
  • Mal Amazon
  • Skruer Amazon
  • USB -højttaler Amazon
  • Stor (5v+) bærbar strømforsyning Amazon
  • 3D -printer Amazon

Trin 1: Trin 1: Halshugning

Trin 1: Halshugning
Trin 1: Halshugning
Trin 1: Halshugning
Trin 1: Halshugning
Trin 1: Halshugning
Trin 1: Halshugning

en. Træk hovedet af uglen (nogle gange skal du bare være brutal) ved at trække hårdt i hovedet, hvor det fastgøres til fjederen.

b. Uglehovedet forbinder kroppen med en cylinder, der sidder oven på en stor fjeder. Fjern denne cylinder ved at tage skruen ud.

c. Cylinderen, du lige har fjernet, er lavet af to dele, en plastikbæger og et leje, der sidder inde i den. Fjern lejet fra cylinderen ved hjælp af en skruetrækker (eller lignende værktøj).

d. Ved hjælp af skruen, der tilsluttede cylinderen til fjederen, fastgøres servoen til cylinderen.

e. Fjern fjederen ved at skrue de tre skruer, der fastgør den til kroppen, af.

f. Lav et hul i toppen af uglens krop, som er stort nok til at passe nogle ledninger og kamerakablet. Vi brugte en uelegant kombination af et bor og en skruetrækker til at gøre dette.

Trin 2: Trin 2: Tilføj Smart

Trin 2: Tilføj Smart
Trin 2: Tilføj Smart
Trin 2: Tilføj Smart
Trin 2: Tilføj Smart
Trin 2: Tilføj Smart
Trin 2: Tilføj Smart

en. 3D -print kamerahuset og mal det, så det matcher uglen - vi brugte nogle billige akrylmaling. Maling er ikke et vigtigt skridt, men det forbedrer det generelle udseende dramatisk!

b. Med uglehovedet på hovedet skrues toppen af kamerahuset ind i hovedets inderside, hvor næbbet stikker ud.

c. Sæt kameraet i etuiet, og tilslut kamerakablet.

d. Lim servoen til fjederens øverste panel.

e. Tilslut lange ledninger til servostifterne (5V, Gnd, signal)

f. Før kameraets kabel og ledninger til servoen gennem fjederen og gennem hullet, du lavede i toppen af kroppen, så de er inde i uglens hule krop.

Trin 3: Trin 3: Fyld hende op

Trin 3: Fyld hende op
Trin 3: Fyld hende op
Trin 3: Fyld hende op
Trin 3: Fyld hende op
Trin 3: Fyld hende op
Trin 3: Fyld hende op
Trin 3: Fyld hende op
Trin 3: Fyld hende op

en. Fjern proppen fra bunden af uglen og øg størrelsen på dette hul ved at skære plasten. Fortsæt med at øge størrelsen, indtil Raspberry Pi og højttaleren kan passe ind i uglens krop.

b. Når hullet er stort nok til at alle komponenterne kan passe ind, skal du trække kamerakablet, som du førte gennem uglens top, ud af basen og sætte det i Raspberry Pi.

c. Træk på samme måde servotrådene igennem og sæt dem i Raspberry Pi:

  • +5v på servo => +5V på Pi
  • Gnd servo => gnd Pi
  • Signalservo => pin 12 Pi

d. Sæt USB -højttaleren i Pi.

e. Indsæt SD -kortet i Pi.

f. Power Pi ved hjælp af bærbar strømforsyning.

g. Sæt Pi, strømforsyning og højttaler i uglen gennem hullet i basen.

Trin 4: Trin 4: Konfigurer Pi

Trin 4: Konfigurer Pi
Trin 4: Konfigurer Pi

ALLE KODEN KAN FINDES PÅ

en. Download Raspian, og upload det til dit SD -kort ved hjælp af Balena Etcher.

b. For at få adgang til dit pi eksternt

  • Tilføj en fil kaldet ssh til dit boot -sd -kort
  • Tilføj en fil kaldet wpa_supplicant.conf, og indtast dine wifi -legitimationsoplysninger

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

    netværk = {ssid = "MySSID" psk = "MyPassword"}

c. Indsæt SD -kortet i pi'en, og prøv en adgang via ssh.

Trin 5: Trin 5: Flyt hovedet

Trin 5: Flyt hovedet
Trin 5: Flyt hovedet

Kodevejledning til at flytte hovedet (styre en servo med en hindbærpi)

For at styre en servo, der kører på Pi, skal vi oprette script, der styrer GPIO -benene, som servoen er forbundet til.

en. Tilslut servoen til Pi:

  • +5v på servo => +5V på Pi
  • Gnd servo => gnd på Pi
  • Signalservo => pin 12 på Pi

b. Du skal først konfigurere gpio -benene for at bruge PWM på servostyrets signalpind.

c. Derefter er det så simpelt som at vælge driftscyklussen (forklaret her) for signalstiften for at flytte servoen fra 90 grader med en arbejdscyklus på 7,5 til 0 grader, når driftscyklussen er 2,5 og til 180 grader med en driftscyklus på 12.5

importer RPi. GPIO som GPIO

importtid GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (Falsk) GPIO.setup (12, GPIO. OUT) p = GPIO. PWM (12, 50) s. start (7.5) prøv: mens True: p. ChangeDutyCycle (7,5) # 90 grader tid. Søvn (1) s. Ændring af driftstid (2,5) # 0 graders tid. Søvn (1) s. Ændring af driftstid (12,5) # 180 graders tid. Søvn (1) undtagen tastaturafbrydelse: s. Stop () GPIO.cleanup ()

Trin 6: Trin 6: Making It Hoot

Trin 6: Making It Hoot
Trin 6: Making It Hoot
Trin 6: Making It Hoot
Trin 6: Making It Hoot

Kodevejledning til fremstilling af uglen (afspilning af lyd med en hindbær pi)

en. Tilslut USB -højttaleren.

b. Download en lyd - vi valgte et uhyggeligt tud.

c. Afspil lyden ved at køre denne kommando: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[d. Hvis dette ikke virker, skal du kontrollere, hvilket output din Pi bruger, og på hvilket volumen ved at bruge kommandoen alsamixer - du bliver mødt med mixer -skærmen, hvor du kan ændre lydstyrken og vælge din medieenhed. For at øge lydstyrken gør du kommandoen som denne omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 For at afspille denne lyd ved hjælp af Python, skal du kigge på vores test script.]

import delproces

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. RØR)

Trin 7: Trin 7: Stream videoen fra Pi

Trin 7: Stream videoen fra Pi
Trin 7: Stream videoen fra Pi
Trin 7: Stream videoen fra Pi
Trin 7: Stream videoen fra Pi

Kodevejledning til oprettelse af en hindbær pi-kamerastream

en. Kør python app.py og se på dit lokale netværk på https://raspberrypi.local: 5000

b. Denne kode blev taget og en smule tilpasset fra Miguel Grinberg https://blog.miguelgrinberg.com/post/flask-video-… han forklarer pænt, hvordan det er gjort, og hans tutorials er gode-tjek ham deffo! Det grundlæggende koncept er, at vi bruger trådning og generatorer til at forbedre streaminghastigheden.

Trin 8: Trin 8: Body Detection

Trin 8: Kropsregistrering
Trin 8: Kropsregistrering

Kode til kropsdetektering (ImageNetSSD på en videostream med hindbær pi)

en. Da vi bruger Raspberry Pi 4, tænkte vi, at det var bedst at prøve nogle deep learning -modeller på den i stedet for den grundlæggende HaarCascade -metode, vi hidtil har været begrænset til.

b. Vi kiggede på nogle af de foruddannede modeller derude, som YOLOv3, der ser super cool ud. YOLOv3 små vægte, som ville have været perfekte til Pi, men vi kunne ikke få det til at køre:(c. I stedet valgte vi MobileSSD-modellen, som vi kan køre ved hjælp af openCVs DNN-modul (dybt neuralt net), som vi lærte af denne kode: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 og fra helten i billedbehandlingsvejledninger, Adrian Rosebrock: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv/

d. Men da vi forsøger at streame dette indhold og køre modeller på alle rammer, resulterer dette i en forsinket, fragmenteret video. Vi lærte igen af Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ og brugte Python multiprocessingsmodulet til at sætte vores billeder i køer hvor de kan behandles uden at blokere kamerastrømmen så stærkt.

e. Prøv selv at køre koden:)

Trin 9: Trin 9: Afsendelse af Zombie -notifikationer

Trin 9: Afsendelse af Zombie -notifikationer
Trin 9: Afsendelse af Zombie -notifikationer
Trin 9: Afsendelse af Zombie -notifikationer
Trin 9: Afsendelse af Zombie -notifikationer

Kode til afsendelse af en meddelelse (python til telefon)

en. Vi besluttede at bruge https://pushed.co underretningstjeneste.

b. Du kan få en gratis konto og downloade appen og virkelig hurtigt blive konfigureret til at lave mobilunderretninger. Vi oprettede meddelelserne ved hjælp af et python -script som dette.

importanmodninger

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Ugle har fundet en zombie." } r = requests.post ("https://api.pushed.co/1/push", data = nyttelast)

Det er superenkelt, og du kan tilpasse dit meddelelsesnavn!

Trin 10: Sikke et tud

Sikke et tud!
Sikke et tud!

Vi håber, at du nød vores Smart Security Owl -projekt! Dette har været et super sjovt mærke, og jeg føler mig meget sikrere ved, at mit hus bliver bevogtet af vores trofaste ugle.

Hvis du synes, at dette ville være en fabelagtig Halloween -tilføjelse til dit smarte hjem, skal du stemme på os i Instructables Halloween -konkurrencen og som sædvanlig, husk at like, kommentere og abonnere!

Tilmeld dig vores mailingliste!

Anbefalede: