Innholdsfortegnelse:

Zombie Detecting Smart Security Owl (Deep Learning): 10 trinn (med bilder)
Zombie Detecting Smart Security Owl (Deep Learning): 10 trinn (med bilder)

Video: Zombie Detecting Smart Security Owl (Deep Learning): 10 trinn (med bilder)

Video: Zombie Detecting Smart Security Owl (Deep Learning): 10 trinn (med bilder)
Video: A Show of Scrutiny | Critical Role: THE MIGHTY NEIN | Episode 2 2024, November
Anonim

Hei alle sammen, velkommen til T3chFlicks! I denne Halloween -opplæringen viser vi deg hvordan vi setter en superhyggelig vri på en dagligdagsk klassiker: sikkerhetskameraet.

Hvordan?! Vi har laget en nattsynugle som bruker bildebehandling for å spore mennesker. Åh, og det tuller, akkurat som den virkelige tingen!

Vi har vært veldig begeistret for dette prosjektet, og vi har ventet på å gjøre det helt siden den nye Raspberry Pi 4 droppet. Den har 4 GB RAM, som åpner døren for mange virkelig spennende muligheter, inkludert bildebehandling med dype læringsmodeller i sanntid.

Hvis du vil holde et øye med kommende zombier på Halloween, eller bare sjekke hagen din resten av året, er dette den for deg. Sikkerhet trenger ikke å være kjedelig for å være effektiv!

Rekvisita

For denne bygningen trenger du:

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

Trinn 1: Trinn 1: Halshugger

Trinn 1: Halshugger
Trinn 1: Halshugger
Trinn 1: Halshugger
Trinn 1: Halshugger
Trinn 1: Halshugger
Trinn 1: Halshugger

en. Trekk hodet av uglen (noen ganger må du bare være brutal) ved å trekke hardt i hodet der det festes til fjæren.

b. Uglens hode kobles til kroppen med en sylinder som sitter på toppen av en stor fjær. Fjern denne sylinderen ved å ta ut skruen.

c. Sylinderen du nettopp fjernet er laget av to deler, en plastkopp og et lager som sitter inne i den. Fjern lageret fra sylinderen ved hjelp av en skrutrekker (eller lignende verktøy).

d. Bruk skruen som koblet sylinderen til fjæren, fest servoen til sylinderen.

e. Fjern fjæren ved å skru ut de tre skruene som fester den til kroppen.

f. Lag et hull i toppen av uglens kropp som er stort nok til å passe noen ledninger og kamerakabelen. Vi brukte en uelegant kombinasjon av et bor og en skrutrekker for å gjøre dette.

Trinn 2: Trinn 2: Legg til Smart

Trinn 2: Legg til Smart
Trinn 2: Legg til Smart
Trinn 2: Legg til Smart
Trinn 2: Legg til Smart
Trinn 2: Legg til Smart
Trinn 2: Legg til Smart

en. 3D -utskrift av kamerahuset og male det for å passe til uglen - vi brukte noen billige akrylmaling. Maling er ikke et viktig skritt, men det forbedrer det generelle utseendet dramatisk!

b. Med uglehodet opp ned, skru toppen av kamerahuset inn i hodet, der nebbet stikker ut.

c. Sett kameraet inn i etuiet og koble til kamerakabelen.

d. Lim servoen til topplaten på fjæren.

e. Koble lange ledninger til servostiftene (5V, Gnd, signal)

f. Før kamerakabelen og ledningene til servoen gjennom fjæren og gjennom hullet du laget i toppen av kroppen slik at de er inne i uglens hule kropp.

Trinn 3: Trinn 3: Fyll henne opp

Trinn 3: Fyll henne opp
Trinn 3: Fyll henne opp
Trinn 3: Fyll henne opp
Trinn 3: Fyll henne opp
Trinn 3: Fyll henne opp
Trinn 3: Fyll henne opp
Trinn 3: Fyll henne opp
Trinn 3: Fyll henne opp

en. Fjern pluggen fra bunnen av uglen og øk størrelsen på dette hullet ved å kutte plasten. Fortsett å øke størrelsen til Raspberry Pi og høyttaleren kan passe inn i uglens kropp.

b. Når hullet er stort nok til at alle komponentene får plass inni, trekker du kamerakabelen som du førte gjennom toppen av uglen ut av basen og kobler den til Raspberry Pi.

c. På samme måte trekker du servoledningene gjennom og kobler dem til Raspberry Pi:

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

d. Koble USB -høyttaleren til Pi.

e. Sett inn SD -kortet i Pi.

f. Strøm Pi ved hjelp av bærbar strømforsyning.

g. Sett Pi, strømforsyning og høyttaler inn i uglen gjennom hullet i basen.

Trinn 4: Trinn 4: Sett opp Pi

Trinn 4: Sett opp Pi
Trinn 4: Sett opp Pi

ALLE KODEN KAN FINNES PÅ

en. Last ned Raspian og last det opp til SD -kortet ditt ved hjelp av Balena Etcher.

b. For å få tilgang til pi eksternt

  • Legg til en fil som heter ssh på boot -SD -kortet
  • Legg til en fil som heter wpa_supplicant.conf og legg inn wifi -legitimasjonen din

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

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

c. Sett inn SD -kortet i pi og prøv en tilgang via ssh.

Trinn 5: Trinn 5: Beveg hodet

Trinn 5: Beveg hodet
Trinn 5: Beveg hodet

Kodeopplæring for å flytte hodet (kontrollere en servo med en bringebær pi)

For å kontrollere en servo som kjører på Pi, skal vi lage et script som styrer GPIO -pinnene som servoen er koblet til.

en. Koble servoen til Pi:

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

b. Du må først sette opp gpio -pinnene for å bruke PWM på signalpinnen til servoen.

c. Deretter er det så enkelt som å velge driftssyklusen (forklart her) for signalpinnen for å flytte servoen fra 90 grader med en driftssyklus på 7,5 til 0 grader når driftssyklusen er 2,5 og til 180 grader med en driftssyklus på 12.5

importer RPi. GPIO som GPIO

importtid GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) 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. Endring av driftssyklus (2,5) # 0 grader tid. Søvn (1) s. Endring av driftssyklus (12,5) # 180 grader tid. Søvn (1) unntatt tastaturavbrudd: s. Stopp () GPIO.cleanup ()

Trinn 6: Trinn 6: Making It Hoot

Trinn 6: Making It Hoot
Trinn 6: Making It Hoot
Trinn 6: Making It Hoot
Trinn 6: Making It Hoot

Kodeopplæring for å lage uglehodet (spille av lyd med en bringebærpi)

en. Koble til USB -høyttaleren.

b. Last ned en lyd - vi valgte et skummelt tull.

c. Spill lyden ved å kjøre denne kommandoen: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[d. Hvis dette ikke fungerer, sjekk hvilken utgang Pi bruker og på hvilket volum ved å bruke kommandoen alsamixer - du vil bli møtt med mikserskjermen hvor du kan endre volumet og velge din medieenhet. For å øke lydstyrken, gjør kommandoen som denne omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 For å spille denne lyden ved hjelp av Python, ta en titt på testskriptet vårt.]

importere delprosessen

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)

Trinn 7: Trinn 7: Stream videoen fra Pi

Trinn 7: Stream videoen fra Pi
Trinn 7: Stream videoen fra Pi
Trinn 7: Stream videoen fra Pi
Trinn 7: Stream videoen fra Pi

Kodeopplæring for å lage en bringebær pi-kamerastrøm

en. Kjør python app.py og vis på ditt lokale nettverk på https://raspberrypi.local: 5000

b. Denne koden ble tatt og litt tilpasset fra Miguel Grinberg https://blog.miguelgrinberg.com/post/flask-video-… han forklarer pent hvordan det er gjort og opplæringen hans er flott-sjekk ham definitivt! Det grunnleggende konseptet er at vi bruker threading og generatorer for å forbedre strømningshastigheten.

Trinn 8: Trinn 8: Kroppsdeteksjon

Trinn 8: Kroppsdeteksjon
Trinn 8: Kroppsdeteksjon

Kode for kroppsdeteksjon (ImageNetSSD på en videostrøm med bringebær pi)

en. Siden vi bruker Raspberry Pi 4, tenkte vi at det var best å prøve noen dype læringsmodeller på den i stedet for den grunnleggende HaarCascade -metoden vi har vært begrenset til så langt.

b. Vi så på noen av de forhåndsutdannede modellene der ute, som YOLOv3 som ser superkul ut. YOLOv3 små vekter, som hadde vært perfekt for Pi, men vi kunne ikke få det til å gå:(c. I stedet valgte vi MobileSSD-modellen som vi kan kjøre ved hjelp av openCVs DNN-modul (dype nevrale nett), slik vi lærte av denne koden: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 og fra helten i opplæringsprogrammer for bildebehandling, Adrian Rosebrock: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv/

d. Imidlertid, som vi prøver å streame dette innholdet og kjøre modeller på hver ramme, resulterer dette i en forsinket, fragmentert video. Vi lærte igjen av Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ og brukte Python-multiprosesseringsmodulen for å sette bildene våre i køer der de kan behandles uten å blokkere kamerastrømmen så tungt.

e. Prøv å kjøre koden selv:)

Trinn 9: Trinn 9: Sende Zombie -varsler

Trinn 9: Sende Zombie -varsler
Trinn 9: Sende Zombie -varsler
Trinn 9: Sende Zombie -varsler
Trinn 9: Sende Zombie -varsler

Kode for å sende et varsel (python til telefon)

en. Vi bestemte oss for å bruke https://pushed.co varslingstjeneste.

b. Du kan få en gratis konto og laste ned appen og veldig raskt bli satt opp med mobilvarsler. Vi opprettet varslene ved hjelp av et python -skript som dette.

importforespørsler

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

Det er superenkelt, og du kan tilpasse varselnavnet ditt!

Trinn 10: Hva en Hoot

Hva en Hoot!
Hva en Hoot!

Vi håper du likte vårt Smart Security Owl -prosjekt! Dette har vært et veldig morsomt merke, og jeg føler meg mye tryggere når jeg vet at huset mitt blir voktet av vår trofaste ugle.

Hvis du tror dette ville være et fantastisk Halloween -tillegg til ditt smarte hjem, kan du stemme på oss i Instructables Halloween -konkurransen, og som vanlig, husk å like, kommentere og abonnere!

Registrer deg på vår adresseliste!

Anbefalt: