Inhoudsopgave:

Zombie Detecting Smart Security Owl (Deep Learning) - Ajarnpa
Zombie Detecting Smart Security Owl (Deep Learning) - Ajarnpa

Video: Zombie Detecting Smart Security Owl (Deep Learning) - Ajarnpa

Video: Zombie Detecting Smart Security Owl (Deep Learning) - Ajarnpa
Video: Smart Security Owl - Halloween Special 2024, November
Anonim

Hallo allemaal, welkom bij T3chFlicks! In deze Halloween-tutorial laten we je zien hoe we een super spookachtige draai geven aan een alledaagse huishoudelijke klassieker: de beveiligingscamera.

Hoe?! We hebben een nachtkijker gemaakt die beeldverwerking gebruikt om mensen te volgen. Oh, en het graait, net als het echte werk!

We waren super enthousiast over dit project en we hebben gewacht om het te doen sinds de nieuwe Raspberry Pi 4 uitkwam. Het heeft 4 GB RAM, wat de deur opent naar heel veel opwindende mogelijkheden, waaronder het in realtime uitvoeren van beeldverwerking met deep learning-modellen.

Als je op Halloween wilt letten op naderende zombies, of gewoon de rest van het jaar door je tuin wilt controleren, dan is dit iets voor jou. Beveiliging hoeft niet saai te zijn om effectief te zijn!

Benodigdheden

Voor deze build heb je nodig:

  • Raspberry Pi 4 (4 GB RAM) Amazon
  • Nachtzichtcamera Amazon
  • Micro Servo Amazon
  • Nep Uil Amazon
  • Lijm Amazon
  • Verf Amazone
  • Schroeven Amazon
  • USB-luidspreker Amazon
  • Grote (5v+) draagbare voeding Amazon
  • 3D-printer Amazon

Stap 1: Stap 1: Onthoofden

Stap 1: Onthoofden
Stap 1: Onthoofden
Stap 1: Onthoofden
Stap 1: Onthoofden
Stap 1: Onthoofden
Stap 1: Onthoofden

A. Trek de kop van de uil (soms moet je gewoon brutaal zijn) door hard aan zijn kop te trekken waar hij aan de veer vastzit.

B. De kop van de uil is verbonden met het lichaam door een cilinder die bovenop een grote veer zit. Verwijder deze cilinder door de schroef eruit te halen.

C. De cilinder die u zojuist hebt verwijderd, bestaat uit twee delen, een plastic beker en een lager dat erin zit. Verwijder het lager van de cilinder met een schroevendraaier (of soortgelijk gereedschap).

NS. Gebruik de schroef die de cilinder met de veer verbond en bevestig de servo aan de cilinder.

e. Verwijder de veer door de drie schroeven los te draaien waarmee deze aan het lichaam is bevestigd.

F. Maak een gat in de bovenkant van het lichaam van de uil dat groot genoeg is om wat draden en de camerakabel te passen. We gebruikten hiervoor een onelegante combinatie van een boormachine en een schroevendraaier.

Stap 2: Stap 2: Smart toevoegen

Stap 2: Smart toevoegen
Stap 2: Smart toevoegen
Stap 2: Smart toevoegen
Stap 2: Smart toevoegen
Stap 2: Smart toevoegen
Stap 2: Smart toevoegen

A. 3D-print de camerabehuizing en schilder deze zodat deze bij de uil past - we gebruikten goedkope acrylverf. Schilderen is geen essentiële stap, maar het verbetert de algehele look aanzienlijk!

B. Schroef met de kop van de uil ondersteboven de bovenkant van de camerabehuizing in de binnenkant van zijn kop, waar de snavel uitsteekt.

C. Plaats de camera in de hoes en sluit de camerakabel aan.

NS. Lijm de servo op het bovenpaneel van de veer.

e. Sluit lange draden aan op de servopinnen (5V, Gnd, signaal)

F. Leid de camerakabel en draden voor de servo door de veer en door het gat dat je in de bovenkant van het lichaam hebt gemaakt, zodat ze in het holle lichaam van de uil zitten.

Stap 3: Stap 3: Vul haar op

Stap 3: Vul haar op
Stap 3: Vul haar op
Stap 3: Vul haar op
Stap 3: Vul haar op
Stap 3: Vul haar op
Stap 3: Vul haar op
Stap 3: Vul haar op
Stap 3: Vul haar op

A. Verwijder de plug uit de onderkant van de uil en vergroot dit gat door het plastic door te snijden. Ga door met het vergroten van de maat totdat de Raspberry Pi en de luidspreker in het lichaam van de uil passen.

B. Zodra het gat groot genoeg is om alle componenten erin te laten passen, trekt u de camerakabel die u door de bovenkant van de uil hebt gevoerd uit de basis en steekt u deze in de Raspberry Pi.

C. Trek op dezelfde manier de servodraden door en sluit ze aan op de Raspberry Pi:

  • +5V op servo => +5V op Pi
  • Gnd servo => gnd Pi
  • Signaalservo => pin 12 Pi

NS. Sluit de USB-luidspreker aan op de Pi.

e. Plaats de SD-kaart in de Pi.

F. Power Pi met draagbare voeding.

G. Steek de Pi, voeding en luidspreker in de uil door het gat in de basis.

Stap 4: Stap 4: Stel de Pi. in

Stap 4: Stel de Pi. in
Stap 4: Stel de Pi. in

ALLE CODE IS TE VINDEN OP

A. Download Raspian en upload het naar uw SD-kaart met Balena Etcher.

B. Op afstand toegang krijgen tot uw pi

  • Voeg een bestand met de naam ssh toe aan je opstart-sd-kaart
  • Voeg een bestand toe met de naam wpa_supplicant.conf en plaats uw wifi-inloggegevens in

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

    netwerk={ ssid="MijnSSID" psk="MijnWachtwoord"}

C. Plaats de SD-kaart in de pi en probeer toegang te krijgen via ssh.

Stap 5: Stap 5: Het hoofd verplaatsen

Stap 5: Het hoofd verplaatsen
Stap 5: Het hoofd verplaatsen

Code-tutorial voor het verplaatsen van het hoofd (besturing van een servo met een raspberry pi)

Om een servo te besturen die op de Pi draait, gaan we een script maken dat de GPIO-pinnen bestuurt waarmee de servo is verbonden.

A. Sluit de servo aan op de Pi:

  • +5V op servo => +5V op Pi
  • Gnd servo => gnd op Pi
  • Signaal servo => pin 12 op Pi

B. U moet eerst de gpio-pinnen instellen om PWM op de signaalpin van de servo te gebruiken.

C. Dan is het zo simpel als het selecteren van de duty cycle (hier uitgelegd) van de signaalpin om de servo van 90 graden te verplaatsen met een duty cycle van 7,5 naar 0 graden wanneer de duty cycle 2,5 is en naar 180 graden met een duty cycle van 12.5

importeer RPi. GPIO als GPIO

importtijd 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 graden time.sleep(1) p. ChangeDutyCycle(2.5) # 0 graden time.sleep(1) p. ChangeDutyCycle(12.5) # 180 graden time.sleep(1) behalve KeyboardInterrupt: p.stop() GPIO.opschonen()

Stap 6: Stap 6: Maken het gieren

Stap 6: Het maken van een giller
Stap 6: Het maken van een giller
Stap 6: Maken het gieren
Stap 6: Maken het gieren

Code-tutorial voor het maken van de uil-hoot (audio afspelen met een raspberry pi)

A. Sluit de USB-luidspreker aan.

B. Download een geluid - we kozen voor een spookachtige giller.

C. Speel het geluid af door deze opdracht uit te voeren: omxplayer -o alsa:hw:1, 0 owl_sound.mp3

[NS. Als dit niet werkt, controleer dan welke uitvoer je Pi gebruikt en op welk volume door het commando alsamixer te gebruiken - je wordt begroet met het mixerscherm waar je het volume kunt wijzigen en je media-apparaat kunt selecteren. Om het volume van je geluid te verhogen, voer je het commando uit zoals dit omxplayer -o asa:hw:1, 0 owl_sound.mp3 --vol 500 Bekijk ons testscript om dit geluid af te spelen met Python.]

subproces importeren

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

Stap 7: Stap 7: Stream de video vanaf de Pi

Stap 7: Stream de video vanaf de Pi
Stap 7: Stream de video vanaf de Pi
Stap 7: Stream de video vanaf de Pi
Stap 7: Stream de video vanaf de Pi

Code-tutorial voor het maken van een Raspberry Pi-camerastream

A. Voer python app.py uit en bekijk op uw lokale netwerk op

B. Deze code is overgenomen en enigszins aangepast van Miguel Grinberg https://blog.miguelgrinberg.com/post/flask-video-… hij legt mooi uit hoe het moet en zijn tutorials zijn geweldig - bekijk hem zeker! Het basisconcept is dat we threading en generators gebruiken om de streamingsnelheid te verbeteren.

Stap 8: Stap 8: Lichaamsdetectie

Stap 8: Lichaamsdetectie
Stap 8: Lichaamsdetectie

Code voor lichaamsdetectie (ImageNetSSD op een videostream met raspberry pi)

A. Omdat we de Raspberry Pi 4 gebruiken, dachten we dat het het beste was om er enkele deep learning-modellen op uit te proberen in plaats van de standaard HaarCascade-methode waartoe we tot nu toe beperkt waren.

B. We hebben een aantal van de vooraf getrainde modellen bekeken, zoals YOLOv3, die er super cool uitziet. YOLOv3 kleine gewichten, die perfect zouden zijn geweest voor de Pi, maar we kregen hem niet aan de gang:(C. In plaats daarvan hebben we gekozen voor het MobileSSD-model dat we kunnen gebruiken met de openCVs DNN-module (deep neural net), zoals we uit deze code hebben geleerd: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 en van Adrian Rosebrock, de held van de beeldverwerkingstutorials: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv/

NS. Omdat we echter proberen deze inhoud te streamen en modellen op elk frame uit te voeren, resulteert dit in een laggy, gefragmenteerde video. We leerden opnieuw van Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ en gebruikten de Python multiprocessing-module om onze afbeeldingen in wachtrijen te plaatsen waar ze kunnen worden verwerkt zonder de camerastream zo zwaar te blokkeren.

e. Probeer de code zelf uit te voeren:)

Stap 9: Stap 9: Zombiemeldingen verzenden

Stap 9: Zombie-meldingen verzenden
Stap 9: Zombie-meldingen verzenden
Stap 9: Zombie-meldingen verzenden
Stap 9: Zombie-meldingen verzenden

Code voor het verzenden van een melding (python naar telefoon)

A. We hebben besloten om de meldingsservice https://pushed.co te gebruiken.

B. Je kunt een gratis account krijgen en de app downloaden en heel snel instellen om mobiele meldingen te maken. We hebben de meldingen gemaakt met een python-script zoals dit.

importverzoeken

payload = { "app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Uil heeft een zombie gedetecteerd." } r = requests.post("https://api.pushed.co/1/push", data=payload)

Het is supereenvoudig en je kunt je meldingsnaam aanpassen!

Stap 10: Wat een giller

Wat een Hoot!
Wat een Hoot!

We hopen dat je genoten hebt van ons Smart Security Owl-project! Dit was een superleuke make-up en ik voel me een stuk veiliger omdat ik weet dat mijn huis wordt bewaakt door onze trouwe uil.

Als je denkt dat dit een fantastische Halloween-toevoeging aan je slimme huis zou zijn, stem dan op ons in de Instructables Halloween-wedstrijd en zoals gewoonlijk, vergeet niet te liken, reageren en je te abonneren!

Schrijf je in op onze mailinglijst!

Aanbevolen: