Kazalo:
- 1. korak: Materiali
- 2. korak: Ožičenje
- 3. korak: Izdelava ohišja
- 4. korak: Konfigurirajte kamero
- 5. korak: Nastavitev Dockerja
- 6. korak: Zaženite skripte zvonjenja pri vratih
- 7. korak: Uporaba zvonca na vratih
Video: Zvonec pri vratih s prepoznavanjem obrazov: 7 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Motivacija
V zadnjem času je v moji državi val ropov, ki so namenjeni starejšim ljudem na njihovih domovih. Običajno dostop omogočijo stanovalci sami, saj jih obiskovalci prepričajo, da so negovalci/medicinske sestre. Ne gre za besede, kako jezne in žalostne sem zaradi teh zgodb. Dom bi moral biti vaše prvo varno zatočišče, še bolj pa, če ste že zunaj v ranljivem položaju. S tem v mislih sem začel ta projekt.
Splošne informacije
Sistem vratnih zvoncev je namenjen predvsem starejšim ali slabovidnim osebam in je pri svojem delovanju precej preprost. Skratka, stikalo za zvonec sproži kamero, da pridobi posnetek. Nato se na posnetku zaznajo obrazi, ki se ujemajo s seznamom dovoljenih in črnim seznamom. Potnik dobi jasen vizualni odziv z jasnim prikazovalnikom na semaforju. Pri tem zelena, rumena ali rdeča luč označuje, da so osebe na seznamu belih, sistemu neznane oziroma na črnem seznamu. Če se sproži rumena ali rdeča luč, fotografijo pošlje bot Telegrama, da obvesti/opozori sorodnika ali skrbnika.
Raven strokovnosti
Projekt je bil zasnovan za navdušence, ki jih še posebej zanima uporaba računalniškega vida in umetne inteligence. Ta navodila so napisana za občinstvo začetnikov, zato ne skrbite, če nimate izkušenj! Poleg tega je projekt lahko zanimiv tudi za bolj izkušene izdelovalce, saj je cevovod organiziran tako, da ga lahko razširite z lastno računalniško vizijo in idejami za prepoznavanje obrazov brez veliko težav.
1. korak: Materiali
Seznam izdelkov z minimalnimi zahtevami:
Izdelek | Povezava | Komentiraj |
---|---|---|
Malina Pi 3b | RPi | Povezava prikazuje RPi 4, saj ima boljše zmogljivosti in skoraj enako ceno kot RPi 3b. |
Mikro SD | Amazon | To bo naredila kartica micro SD velikosti 16 GB ali več. Toda kartice s 16 GB na Amazonu so zdaj skoraj enake kot kartice s 32 GB. |
Fotoaparat Raspberry Pi | Amazon | Kamera v1 je cenejša, vendar je v2 boljša in bo podprta dlje. |
15 -polni FPC fleksibilni kabel | Amazon | Dolžina je dejansko odvisna od okoliščin pri izvedbi tega projekta. Če želite samo izdelati prototip, bo originalni flex kabel opravil svoje delo. |
Napajanje 5v micro usb | Adafruit | Ta nikoli ni razočaral! Odlična kakovost. (Ni na fotografiji) |
Arkadni gumbi z vgrajeno LED | Amazon | Izberite želeno velikost, vendar zasnova CAD temelji na gumbih 60 mm |
Upori | Amazon | Potrebujete le nekaj uporov 1k in 100 ohmov. Navadni 1/4W so v redu. |
Kondenzatorji 0,1 uF | Amazon | Potrebni so trije kondenzatorji. (Ni na fotografiji) |
Mostične žice / tračni kabel | AmazonAmazon | Če želite prihraniti nekaj dolarjev, lahko uporabite tudi star tračni kabel za disketo (glejte fotografijo). |
Krčljiva cev / električni trak | AmazonAmazon |
Potrebna orodja:
Orodje | Bistveno? | Komentiraj |
---|---|---|
Spajkalnik | Da | |
Multimeter | Da | |
Odstranjevalec žice | Da | Lahko pa uporabite nož/škarje. |
Laserski rezalnik | Ne | |
3D tiskalnik | Ne | |
Sponke | Ne | Uporabno za shranjevanje škatle skupaj v fazi testiranja. |
Opombe:
Za večjo dostopnost projekta sem se odločil, da ga bom razvil z Raspberry Pi 3b. Čeprav povečuje dostopnost, zmanjšuje zmogljivosti aplikacije, saj RPi niso tako hitri. Če iščete hitrejši enojni računalnik, si oglejte NVIDIA Jetson Nano
2. korak: Ožičenje
Shematski diagram je najbolj informativen za ta korak in je povsem samoumeven. Če ste novi v elektroniki, lahko uporabite podobo legende. Vrednost komponente (če obstaja) je navedena v shematičnem diagramu. Fotografije lahko pomagajo videti, kako sestavim vezje. V bistvu sem vse komponente povezal čim bližje arkadnemu gumbu, kar ima za posledico jasen pregled nad dogajanjem.
Opombe:
- Zelo rad uporabljam konektorje s tračnim kablom, saj so precej trdnejši od uporabe enosmernih žic.
- Kot je predlagano, sem uporabil počiščen trak iz starega računalnika. To je sicer nekoliko zapleteno, saj boste morali ročno potrditi konfiguracijo kabla. V tem projektu sem na primer ugotovil, da so bile nekatere luknje med seboj povezane (verjetno uporabljene kot podlaga za prvotno aplikacijo). Zato sem moral kasneje dobiti drug kabel, kot lahko vidite na slikah.
3. korak: Izdelava ohišja
Ohišje fotoaparata
Veliko ohišij za pikamero lahko prosto prenesete z interneta. Odločil sem se torej, da ne bom znova odkril kolesa in iz interneta izbral osnovno, a lepo ohišje: thingiverse.com - ohišje/ohišje kamere Raspberry pi. (Pokličite oblikovalcu VGerju.)
Ohišje semaforja
Za ohišje semaforja sem v Autodesku Fusion 360 oblikoval majhno škatlo (ki jo je mogoče brezplačno prenesti, glejte Opombe), ki ustreza vsej strojni opremi. V priponki najdete datoteko, ki sem jo poslala lokalnemu podjetju za lasersko rezanje. Pri tem zasnova temelji na debelini plošče 6 mm. Če pa želite stvari prilagoditi, lahko s te povezave dostopate do vseh vrst datotek. Kot je prikazano na slikah, lahko uporabite tudi kartonsko škatlo, če nimate dostopa do laserskega rezalnika. Za izdelavo prototipov sem uporabil kartonsko škatlo na sliki in deluje kot čar.
Sestavljanje je precej preprosto:
- Namestite arkadna stikala.
- Prepričajte se, da so žice za zvonec na vratih proste.
- Tračni kabel priključite na RPi.
- RPi privijte na spodnjo ploščo.
- Žice vratnega zvonca priključite na žični konektor in ga pritrdite tudi na spodnjo ploščo.
- Picamero priključite na RPi.
- V eni od stranskih plošč izvrtajte luknjo za preklopno žico pri vratih in napajalno žico RPi.
Žični konektor se uporablja kot pritrdilna točka za žice stikala za zvonec, tako da ga lahko pozneje pritrdite na obstoječi zvonec. Zdaj je vse na svojem mestu in ga je mogoče zlepiti. Morda pa boste najprej želeli dokončati naslednje korake in se prepričati, da vse deluje tako, kot bi moralo biti.
Opombe:
Autodesk Fusion 360 je prosto na voljo za ljubitelje! Če želite dobiti svoj izvod, obiščite to povezavo: autodesk.com - Fusion 360 Za ljubitelje. Obstaja nekaj pogojev, zato jih preberite in uporabite. To je bil moj prvi projekt s Fusion 360 in nimam veliko izkušenj z uporabo programske opreme CAD, vendar moram reči, da so mi programska oprema in vsa dodatna orodja, ki so priložena Fusion 360, zelo všeč
4. korak: Konfigurirajte kamero
Predpostavlja se, da imate nameščen Raspbian in da deluje v načinu grafičnega vmesnika. Če še nimate nameščenega Raspbiana, lahko sledite temu članku: raspberrypi.org - Nameščanje slik operacijskega sistema. Če zaženete Raspbian, bi morali videti namizje, kot je prikazano na slikah.
Nastavimo kamero na RPi in poglejmo, če deluje! Tu opisana metoda je neposredno iz dokumenta raspberrypi.org - Dokumentacija. Najprej posodobimo na najnovejše pakete (vključno z vdelano programsko opremo fotoaparata), tako da v terminalskem oknu izvedemo naslednje ukaze (glej slike):
sudo apt posodobitev
sudo apt popolna nadgradnja
Nato morate kamero omogočiti z naslednjim ukazom:
sudo raspi-config
V meniju pojdite na 5. Možnosti vmesnika -> Kamera P1. Izberite, da omogočite kamero in znova zaženete RPi tako, da izvedete:
znova zaženite
Kamero bi bilo treba zdaj pravilno konfigurirati. Preizkusite ga lahko tako, da odprete terminalsko okno in izvedete:
raspistill -v -o /home/pi/test.jpg
Slika se shrani v: /home /pi.
5. korak: Nastavitev Dockerja
Da bi se izognili odvisnostim in napakam pri namestitvi, sem se odločil za ta projekt zgraditi podobo Dockerja po meri (glej wikipedia.org - Docker). Če za Docker niste nikoli uporabljali ali slišali, brez skrbi, vam bom korak za korakom razložil, kako ga uporabiti v tem projektu. Pravzaprav je zelo enostavno! Če želite ta projekt zagnati v lokalni namestitvi (namesto v vsebniku Docker), vam bom dal nekaj nasvetov. Vendar je zelo priporočljivo uporabiti podobo Docker. Navsezadnje sem ga zgradil, da vam olajšam vodenje tega projekta!
Kaj je Docker?
Opomba: ta del vsebuje nekaj osnovnih informacij o Dockerju, ki jih lahko preskočite, če želite samo zagnati kodo.
Ta projekt sem prvič uporabil Docker in je preprosto super! Morda ste že slišali za virtualenv ali Anacondo za Python? No, Docker je precej podoben v smislu, da lahko preprosto upravljate različice paketov in zaženete različne različice Pythona na enem gostiteljskem sistemu z uporabo drugega okolja (ali vsebnika, kot se imenuje v Dockerju). Toda v primerjavi z virtualenv in Anacondo je Docker veliko močnejši, saj ni omejen samo na pakete Python. V vsebniku Docker lahko namestite in upravljate tudi pakete želenega operacijskega sistema. Na primer, razmislite o spletnem mestu, ki ga želite preseliti, ki izvaja spletni okvir Python (npr. Django) z bazo podatkov (npr. MySQL). Brez vsebnika Docker bi morali na nov strežnik namestiti vse pakete, proces, ki je zelo nagnjen k napakam in hroščem. Po drugi strani pa je selitev, ko je bilo vaše spletno mesto zgrajeno v Dockerju, v bistvu tako preprosto, kot da slikovno datoteko/datoteke premaknete na nov strežnik in jih zaženete. Kot si lahko predstavljate, je Docker zelo uporaben tudi za projekte na Instructables;)! Če želite izvedeti več o Dockerju, obiščite njihovo spletno stran: docker.org - Docker: Enterprise Container Platform. Zdaj pa začnimo z Dockerjem!
Namestitev Dockerja
Namestite Docker tako, da izvedete:
curl -sSL https://get.docker.com | sh
Nato je uporabnik dodan v uporabniško skupino 'docker', ki zagotavlja pravice za zagon Dockerja. To naredijo:
sudo usermod -aG docker $ USER
Zdaj bi morali zagnati Docker. To lahko potrdite z zagonom slike hello-world:
docker teči hello-world
Nazadnje potegnimo podobo Dockerja, ki vsebuje vse odvisnosti, potrebne za izvajanje skriptov Python za zvonjenje na vratih. Ta postopek lahko traja nekaj časa, saj je slika precej velika (~ 1,5 GB). Izvedite:
docker pull erientes/zvonec na vratih
Opomba: Dockerfile lahko najdete v skladišču zvoncev na vratih v Githubu. Zdaj je vse pripravljeno za izvajanje scenarijev zvonjenja na vratih, o katerih bomo razpravljali v naslednjem koraku.
Lokalna namestitev
Še enkrat, toplo priporočam uporabo slike Dockerja namesto lokalne namestitve. Da pa bo ta vadnica popolna, bom zdaj opisal nekaj korakov, ki sem jih naredil za lokalno namestitev.
Če želite zagnati kodo, mora biti različica pythona> = 3.5 (uporabil sem python 3.5.3) in namestiti naslednje pakete:
- face_recognition
- pikamera
- numpy
- Blazina
- python-telegram-bot
- RPi. GPIO
Ta povezava je zelo koristna: Github - Namestite dlib in face_recognition na Raspberry Pi. Vendar pa obstaja nekaj opozoril: 1) Vzglavnik potrebuje vsaj Python 3.5, ki po tej metodi ne bo nameščen. 2) Tudi vsi paketi, ki so potrebni pri projektu zvonjenja na vratih, ne bodo nameščeni po tej metodi. Vendar pa bi ga morali namestiti z uporabo pip3.
6. korak: Zaženite skripte zvonjenja pri vratih
Pridobite skripte
Skripte lahko ročno prenesete z: github.com - Erientes/doorbell. Ali če imate nameščen Git, izvedite:
git cloneUstvari vzdevke
Zdaj, da si olajšamo življenje, ustvarimo nekaj vzdevkov za izvajanje skriptov. Izvedite:
leafpad ~/.bashrc
Dodajte naslednje vrstice in shranite datoteko:
alias doorbell_run = 'docker run --privileged -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell python $ 1'
alias doorbell_login = 'docker run --privileged -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell bash'
Preskusni skripti
Če želite preveriti, ali je vse pravilno nameščeno, odprite nov terminal in izvedite:
examplebell_run examples/0_test_installation.py
Rezultat bi moral biti preprosto sporočilo v terminalskem oknu, ki pravi 'Namestitev vratnega zvonca je uspešno končana!'. Če želite preveriti, ali je do kamere mogoče dostopati iz vsebnika Docker, zaženite:
Primeri vratnega zvonjenja/1_test_camera.py
Z zagonom 1_test_camera.py bo fotografija posneta in shranjena kot 'test.jpg', ki jo najdete v/home/pi/doorbell. Nazadnje lahko gonilnike LED preskusite tako:
Primeri vratnega zvonjenja/2_test_voicehat_drivers.py
Ko se ta skript izvaja, se mora LED na arkadnem stikalu odzvati, ko pritisnete gumb.
Izvajanje skript vratnega zvonca
Če želite zagnati skripte Doorbell, morate najprej pridobiti poverilnice za Telegram bot. Namestite Telegram v telefon in pojdite na telegram.me - Botfather. Začnite pogovor in vnesite:
/newbot
Vnesite ime in uporabniško ime za bot. Po tem vam bo na voljo žeton za dostop. Kopirajte to vrednost v datoteko 'credentials_telegram_template.py' v/home/pi/doorbell in jo shranite v novo datoteko z imenom 'credentials_telegram.py'. Nazadnje začnite pogovor z botom, ki ste ga pravkar ustvarili, tako da kliknete povezavo, ki vam jo ponuja Botfather.
Nazadnje zaženimo zvonec na vratih s prepoznavanjem obrazov:
doorbell_run main.py
Opombe:
Če želite izvedeti več o delovanju kode, si oglejte komentarje v samih skriptah. Če imate vprašanje glede kode, me kontaktirajte prek Github -a
7. korak: Uporaba zvonca na vratih
Zaženimo skript zvonjenja na vratih tako, da izvedemo:
doorbell_run main.py Po nalaganju paketov skripti ne delujejo. V bistvu se lahko zgodita 2 stvari:
- Nekdo pozvoni na vrata.
- Nekdo je dodan na seznam dovoljenih.
Nekdo pozvoni na vrata
V tem primeru bo skript začel fotografirati, dokler ne posname fotografije, na kateri je zaznan obraz. Po zaznavi se pokličejo nekatere metode iz paketa python 'face_recognition' za izračun 128 kodiranja obraza. Nato dobljeno kodiranje primerjamo s kodiranji v whitelist.csv in blacklist.csv. Možni rezultati imajo za posledico naslednji odziv:
Na belem seznamu? | Na črnem seznamu? | Odziv |
---|---|---|
Da | Ne | Prižge se zelena luč. |
Da | Da | Prižge se rumena luč. Kamera na vratih pošilja fotografije botu Telegram z oranžno ikono. To stanje se lahko zgodi, če je bil nekdo dodan na oba seznama. Na primer, ko je bil nekdo sprva dobrodošel, pozneje pa je bil uvrščen na črni seznam. |
Ne | Ne | Prižge se rumena luč. Kamera na vratih pošilja fotografije botu Telegram z oranžno ikono. |
Ne | Da | Prižge se rdeča luč. Kamera na vratih pošilja fotografije v Telegram bot z rdečo ikono. |
Nekdo je dodan na seznam dovoljenih
Če želite nekoga dodati na seznam dovoljenih, pritisnite rumeni gumb semaforja, ko je zvonec na vratih v stanju mirovanja. Najprej se prižge rumena lučka. Če zelena lučka utripa 3 -krat, je obraz osebe uspešno dodan na seznam dovoljenih. Če zelena lučka ne utripa trikrat, poskus ni bil uspešen. V tem primeru ponovno pritisnite rumeni gumb. Če je bil uspešen, lahko preprosto preverite tako, da pozvonite na vrata in preverite, ali je prižgana zelena luč.
Kako nekoga dodati na črni seznam?
Očitno ljudje s slabimi nameni ne bodo šli mimo, da bi nam dali fotografijo svojega obraza. Namesto tega lahko v mapo img/blacklist dodate slike zloglasnih ljudi, ki jih je (na primer) objavila policija. Vsako uro se v tej mapi preverijo nove slike. Če je nova slika, se kodiranje obrazov izračuna in doda na blacklist.csv. Slika se nato preimenuje in premakne v mapo/img/blacklist/encoded.
Opombe:
- Upravljanje skriptov z prijavo v RPi zagotavlja veliko več nadzora in informacij, vendar je osnovno upravljanje in informacije mogoče pridobiti le z uporabo semaforja.
- Prepoznavanje obrazov se izvaja z uporabo paketa python 'face_recognition'. Ta paket temelji na Dlibu, ki vsebuje najsodobnejši algoritem za prepoznavanje obrazov, ki izvaja natančnost 99,38% pri merilu Označeni obrazi v divjini (vir: dlib.net-Visokokakovostno prepoznavanje obrazov z globokim metričnim učenjem).
Prva nagrada na tekmovanju v pomožni tehniki
Priporočena:
Dvotonski zvonec pri vratih z uporabo IC 555: 6 korakov
Dvotonski zvonec na vratih z uporabo IC 555: Videl sem nekoga, ki prodaja dvotonski zvočni signal na Aliexpressu za 10 USD. Takoj so mi možgani rekli, ali ste resni? Samo z vlaganjem malo svojega časa in navdušenja lahko to vezje naredite za manj kot 3 dolarje
Zvonec na vratih po meri sproži zvonec: 6 korakov
Zvonec na vratih po meri sproži zvonec: Pozdravljeni! Moje ime je Justin, jaz sem mlajši v srednji šoli, in ta Instructable vam bo pokazal, kako narediti zvonec na vratih, ki se sproži, ko nekdo stopi na vašo preprogo, in je lahko kakršna koli melodija ali pesem, ki jo želite! Ker preproga na vratih sproži vrata
Prostoročni zvonec pri vratih: 5 korakov
Prostoročni zvonec pri vratih: Med karanteno so zvonci odličen način za širjenje klic, saj se jih veliko ljudi dotakne. Tako smo izumili prostoročni zvonec na vratih, ki zazna gibanje ljudi zunaj in pošlje e-pošto na vaš telefon. V e -pošti bo prikazan obraz, kdo
Brezžični zvonec pri vratih - (Raspberry PI in Amazon Dash): 4 koraki (s slikami)
Brezžični zvonec pri vratih - (Raspberry PI in Amazon Dash): Kaj počne? (glejte videoposnetek) Ko pritisnete gumb, Raspberry odkrije prijavo nove naprave v brezžičnem omrežju. Tako lahko prepozna gumb, ki ga pritisnete, in posreduje podatke o tem dejstvu v vaš mobilni telefon (ali napravo vašega
Pametni zvonec pri vratih za dom Pomočnik: 4 koraki
Pametni zvonec pri vratih za dom Pomočnik: Torej, želel sem zvonec na vratih z naslednjimi funkcijami: Video z vrat Dvosmerni zvok Dva gumba Integracija s stensko tablico, ki prikazuje HomeAssistant UIS Nekatere možnosti so prišle kot Doorbird (drago in nimajo dvosmernega zvoka calli