Kazalo:

Zombie Detecting Smart Security Owl (poglobljeno učenje): 10 korakov (s slikami)
Zombie Detecting Smart Security Owl (poglobljeno učenje): 10 korakov (s slikami)

Video: Zombie Detecting Smart Security Owl (poglobljeno učenje): 10 korakov (s slikami)

Video: Zombie Detecting Smart Security Owl (poglobljeno učenje): 10 korakov (s slikami)
Video: Smart Security Owl - Halloween Special 2024, November
Anonim

Pozdravljeni vsi, dobrodošli v T3chFlicks! V tej vadnici za noč čarovnic vam bomo pokazali, kako smo na mondeno gospodinjsko klasiko: varnostno kamero dali super sablastan preobrat.

Kako ?! Naredili smo sovo za nočno opazovanje, ki uporablja obdelavo slik za sledenje ljudem. Oh, in zavija, tako kot prava stvar!

Nad tem projektom smo bili zelo navdušeni in na to smo čakali, vse odkar je padla nova Raspberry Pi 4. Ima 4 GB RAM -a, ki odpira vrata množici resnično vznemirljivih možnosti, vključno z obdelavo slik z modeli globokega učenja v realnem času.

Če želite na noč čarovnic paziti na približevanje zombijev ali pa preostanek leta preverite samo svoj vrt, je to pravi za vas. Varnost ni nujno dolgčas, da bi bila učinkovita!

Zaloge

Za to gradnjo boste potrebovali:

  • Raspberry Pi 4 (4 GB RAM) Amazon
  • Kamera za nočno opazovanje Amazon
  • Mikro servo Amazon
  • Lažna sova Amazon
  • Lepilo Amazon
  • Slikajte Amazon
  • Vijaki Amazon
  • USB zvočnik Amazon
  • Velik (5v+) prenosni napajalnik Amazon
  • 3D tiskalnik Amazon

1. korak: 1. korak: Odsekajte glavo

1. korak: Odsekajte glavo
1. korak: Odsekajte glavo
1. korak: Odsekajte glavo
1. korak: Odsekajte glavo
1. korak: Odsekajte glavo
1. korak: Odsekajte glavo

a. Potegnite glavo sovi (včasih morate biti samo brutalni) tako, da jo močno povlečete za glavo, kjer se pritrdi na vzmet.

b. Sovina glava je povezana s telesom z valjem, ki sedi na vrhu velike vzmeti. Odstranite ta valj tako, da odstranite vijak.

c. Cilinder, ki ste ga pravkar odstranili, je sestavljen iz dveh delov, plastične skodelice in ležaja, ki sedi v njej. Odstranite ležaj iz valja z izvijačem (ali podobnim orodjem).

d. Z vijakom, ki je valj povezal z vzmetjo, servo pritrdite na valj.

e. Odstranite vzmet tako, da odvijete tri vijake, ki jo pritrdijo na ohišje.

f. Na vrhu telesa sove naredite luknjo, ki je dovolj velika, da se prilega nekaterim žicam in kablu kamere. Za to smo uporabili neelegantno kombinacijo vrtalnika in izvijača.

2. korak: 2. korak: dodajte pametno

2. korak: Dodajte pametno
2. korak: Dodajte pametno
2. korak: Dodajte pametno
2. korak: Dodajte pametno
2. korak: Dodajte pametno
2. korak: Dodajte pametno

a. 3D natisnite ohišje fotoaparata in ga pobarvajte, da se ujema s sovo - uporabili smo nekaj poceni akrilnih barv. Slikanje ni pomemben korak, vendar bistveno izboljša celoten videz!

b. Z glavo sove glave navzdol privijte zgornji del ohišja fotoaparata v notranjost njegove glave, kjer štrli kljun.

c. Kamero vstavite v ohišje in priključite kabel kamere.

d. Servo prilepite na zgornjo ploščo vzmeti.

e. Priključite dolge žice na servo zatiče (5V, Gnd, signal)

f. Kabel kamere in žice za servo napeljite skozi vzmet in skozi luknjo, ki ste jo naredili na vrhu telesa, tako da sta v votlem telesu sove.

3. korak: 3. korak: Napolnite jo

3. korak: Napolnite jo
3. korak: Napolnite jo
3. korak: Napolnite jo
3. korak: Napolnite jo
3. korak: Napolnite jo
3. korak: Napolnite jo
3. korak: Napolnite jo
3. korak: Napolnite jo

a. Odstranite čep z dna sove in povečajte velikost te luknje z rezanjem plastike. Še naprej povečujte velikost, dokler se Raspberry Pi in zvočnik ne moreta prilegati v telo sove.

b. Ko je luknja dovolj velika, da se vse komponente lahko namestijo v notranjost, izvlecite kabel kamere, ki ste ga napeljali skozi vrh sove, iz podstavka in ga priključite v Raspberry Pi.

c. Podobno povlecite servo žice in jih priključite v Raspberry Pi:

  • +5v na servo => +5V na Pi
  • Gnd servo => gnd Pi
  • Signalni servo => pin 12 Pi

d. Zvočnik USB priključite v Pi.

e. Vstavite kartico SD v Pi.

f. Power Pi s prenosnim napajalnikom.

g. Pi, napajalnik in zvočnik vstavite v sovo skozi luknjo na dnu.

4. korak: 4. korak: Nastavite Pi

4. korak: Nastavite Pi
4. korak: Nastavite Pi

VSE KODO LAHKO NAJDETE NA

a. Prenesite Raspian in ga naložite na kartico SD z uporabo Balene Etcher.

b. Za daljinski dostop do pi

  • Na zagonsko SD kartico dodajte datoteko ssh
  • Dodajte datoteko z imenom wpa_supplicant.conf in vnesite poverilnice za wifi

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

    network = {ssid = "MySSID" psk = "Moja geslo"}

c. Vstavite kartico SD v pi in poskusite dostopati prek ssh.

5. korak: 5. korak: premikanje glave

5. korak: Premikanje glave
5. korak: Premikanje glave

Koda za premikanje glave (krmiljenje servomotorja z malinovim pi)

Za nadzor servo, ki deluje na Pi, bomo ustvarili skript, ki nadzoruje zatiče GPIO, na katere je servo povezan.

a. Servo priključite na Pi:

  • +5v na servo => +5V na Pi
  • Gnd servo => gnd na Pi
  • Signalni servo => pin 12 na Pi

b. Najprej morate nastaviti zatiče gpio za uporabo PWM na signalnem zatiču servo.

c. Potem je tako preprosto, kot da izberete delovni cikel (razloženo tukaj) signalnega zatiča, da premaknete servo od 90 stopinj z obratovalnim ciklom od 7,5 do 0 stopinj, ko je obratovalni cikel 2,5 in do 180 stopinj z obratovalnim ciklom 12.5

uvozite RPi. GPIO kot GPIO

čas uvoza 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 stopinj časa. Spanje (1) str. ChangeDutyCycle (2,5) # 0 stopinj čas. Spanje (1) str. ChangeDutyCycle (12,5) # 180 stopinj čas. Spanje (1) razen KeyboardInterrupt: p.stop () GPIO.cleanup ()

Korak 6: Korak 6: Ustvarjanje zagona

Korak 6: Ustvarjanje
Korak 6: Ustvarjanje
Korak 6: Ustvarjanje
Korak 6: Ustvarjanje

Koda za ustvarjanje sove (predvajanje zvoka z malinovim pi)

a. Priključite zvočnik USB.

b. Prenesite zvok - izbrali smo grozljiv zvok.

c. Predvajajte zvok tako, da zaženete ta ukaz: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[d. Če to ne deluje, preverite, kateri izhod uporablja vaš Pi in pri kateri glasnosti z ukazom alsamixer - pozdravil vas bo zaslon mešalnika, kjer lahko spremenite glasnost in izberete svojo medijsko napravo. Če želite povečati glasnost zvoka, naredite ta ukaz omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 Če želite predvajati ta zvok s Pythonom, si oglejte naš testni skript.]

uvozni podproces

command = "omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500" player = podproces. Popen (command.split (''), stdin = podproces. PIPE, stdout = podproces. PIPE, stderr = podproces. PIPE)

7. korak: 7. korak: pretočno predvajajte videoposnetek iz Pi

7. korak: Pretočite videoposnetek iz Pi
7. korak: Pretočite videoposnetek iz Pi
7. korak: pretočno predvajajte videoposnetek iz Pi
7. korak: pretočno predvajajte videoposnetek iz Pi

Koda vadnica za ustvarjanje toka kamere maline pi

a. Zaženite python app.py in si oglejte v svojem lokalnem omrežju na naslovu https://raspberrypi.local: 5000

b. Ta koda je bila vzeta in rahlo prilagojena od Miguela Grinberga https://blog.miguelgrinberg.com/post/flask-video-… lepo razlaga, kako je to storjeno, in njegove vaje so odlične-deffo ga preverite! Osnovni koncept je, da uporabljamo navoje in generatorje za izboljšanje hitrosti pretakanja.

8. korak: 8. korak: Odkrivanje telesa

8. korak: Odkrivanje telesa
8. korak: Odkrivanje telesa

Koda za zaznavanje telesa (ImageNetSSD v video toku z malinovim pi)

a. Ker uporabljamo Raspberry Pi 4, se nam je zdelo najbolje, da namesto osnovne metode HaarCascade, na katero smo bili doslej omejeni, preizkusimo nekaj modelov poglobljenega učenja.

b. Ogledali smo si nekaj vnaprej usposobljenih modelov, kot je YOLOv3, ki izgleda super. Drobne uteži YOLOv3, ki bi bile kot nalašč za Pi, vendar nam tega ni uspelo:(c. Namesto tega smo se odločili za model MobileSSD, ki ga lahko zaženemo z modulom openCVs DNN (globoka nevronska mreža), kot smo izvedeli iz te kode: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 in od junaka vadnic za obdelavo slik, Adriana Rosebrocka: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv/

d. Ker pa poskušamo pretakati to vsebino in izvajati modele na vsakem kadru, to povzroči zaostanek, razdrobljen video. Ponovno smo se učili od Adriana Rosebrocka https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ in uporabili modul za več procesov Python, da smo naše slike postavili v čakalne vrste kjer jih je mogoče obdelati, ne da bi tako močno blokirali tok kamere.

e. Poskusite sami zagnati kodo:)

9. korak: 9. korak: pošiljanje obvestil o zombijih

9. korak: Pošiljanje obvestil o zombijih
9. korak: Pošiljanje obvestil o zombijih
9. korak: Pošiljanje obvestil o zombijih
9. korak: Pošiljanje obvestil o zombijih

Koda za pošiljanje obvestila (python na telefon)

a. Odločili smo se, da bomo uporabili https://pushed.co storitev obveščanja.

b. Lahko dobite brezplačen račun in naložite aplikacijo ter se zelo hitro nastavite na obvestila za mobilne naprave. Obvestila smo ustvarili s skriptom python, kot je ta.

uvozne zahteve

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Sova je zaznala zombija." } r = requests.post ("https://api.pushed.co/1/push", podatki = koristna obremenitev)

To je zelo preprosto in ime obvestila lahko prilagodite!

10. korak: Kakšen hud udarček

Kakšen hud!
Kakšen hud!

Upamo, da ste uživali v našem projektu Smart Security Owl! To je bilo zelo zabavno in počutim se veliko bolj varno, saj vem, da mojo hišo varuje naša zaupanja vredna sova.

Če menite, da bi to bil čudovit dodatek za noč čarovnic v vašem pametnem domu, vas prosimo, da glasujete za nas na natečaju za noč čarovnic Instructables in kot običajno ne pozabite všečkati, komentirati in se naročiti!

Prijavite se na naš poštni seznam!

Priporočena: