Sisukord:

Näotuvastuse turvasüsteem Raspberry Pi -ga külmkapi jaoks: 7 sammu (piltidega)
Näotuvastuse turvasüsteem Raspberry Pi -ga külmkapi jaoks: 7 sammu (piltidega)

Video: Näotuvastuse turvasüsteem Raspberry Pi -ga külmkapi jaoks: 7 sammu (piltidega)

Video: Näotuvastuse turvasüsteem Raspberry Pi -ga külmkapi jaoks: 7 sammu (piltidega)
Video: Funktionsprüfung PORTABKE CAMERA SYSTEM Elro CS77S , Functional testing CAMERA SECURITY SYSTEM 2024, Juuli
Anonim
Image
Image
Näotuvastuse turvasüsteem Raspberry Pi -ga külmkapi jaoks
Näotuvastuse turvasüsteem Raspberry Pi -ga külmkapi jaoks
Näotuvastuse turvasüsteem Raspberry Pi -ga külmkapi jaoks
Näotuvastuse turvasüsteem Raspberry Pi -ga külmkapi jaoks

Internetti sirvides olen avastanud, et turvasüsteemide hinnad varieeruvad 150 dollarist 600 dollarini ja üle selle, kuid mitte kõiki lahendusi (isegi väga kalleid) ei saa teie kodus teiste nutikate tööriistadega integreerida! Näiteks ei saa te välisuksele turvakaamerat seadistada, nii et see avab automaatselt ukse teie või teie sõprade jaoks!

Olen otsustanud teha lihtsa, odava ja võimsa lahenduse, mida saate kasutada kõikjal! Odavate ja omatehtud turvasüsteemide loomiseks on palju käsiraamatuid, kuid ma tahan näidata nende tõeliselt mittetriviaalset rakendamist - näotuvastusega külmiku turvasüsteem!

Kuidas see töötab? Külmiku ülaosale paigutatud IP -kaamera, andurid (kaks nuppu) tuvastavad, kui inimene avab külmiku ukse, pärast seda teeb Raspberry Pi sellest inimesest pildi (koos IP -kaameraga) ja saadab selle Microsoft Face API -le pildi analüüsimiseks ja isiku nime saamiseks. Selle teabe abil skaneerib Raspberry Pi “juurdepääsuloendit”: kui isikul pole luba külmkapi juurde pääseda, teavitab Raspberry omanikku e -posti, tekstisõnumi ja twitteri kaudu! (Vaata pilte ülal)

Miks? Süsteem võimaldab teil kontrollida oma pereliikmeid, eriti kui nad peavad dieeti või võitlevad pärast keskööd mitte söömisega! Või kasutage seda lihtsalt lõbu pärast!

Lisaks saate kaamera välisukse juurde seadistada ja seadistada süsteemi avama ukse, kui teie, teie pereliikmed või sõbrad lähenevad. Ja see pole lõpp! Rakenduse võimalused on lõputud!

Alustagem!

Samm: Ettevalmistus

Ettevalmistus
Ettevalmistus

Sa vajad:

  • Raspberry Pi 3 (saate kasutada vanemaid versioone, kuid kolmandal põlvkonnal on WiFi, seega on see väga mugav)
  • Nupud
  • Juhtmed
  • Vana nutitelefoni või Raspberry Pi kaamera

Esimene asi, mida peate tegema, on oma Raspberry Pi seadistamine. Üksikasjalikud juhised selle kohta leiate siit ja siit, kuid selles kasutusjuhendis käsitleme kõige olulisemaid samme.

  1. Laadige siit alla Win32 DiskImager (kui kasutate Windowsi)
  2. Laadige SD -vormindaja alla siit
  3. Sisestage SD -kaart arvutisse ja vormindage see SD -vormindajaga
  4. Laadige Raspbiani pilt alla siit (valige "Raspbian Jessie piksliga")
  5. Käivitage Win32 DiskImager, valige oma SD -kaart, määrake Raspbiani pildi tee, klõpsake nuppu "Kirjuta"
  6. Sisestage SD -kaart oma Raspberry Pi -sse ja lülitage toide sisse!

Lisaks peate konfigureerima oma Raspberry Pi, et teil oleks süsteemile juurdepääs SSH kaudu. Internetis on palju juhiseid, saate seda näiteks kasutada või lisada monitori ja klaviatuuri.

Nüüd on teie Pi konfigureeritud ja olete valmis jätkama!

2. samm: anduri valmistamine

Anduri valmistamine
Anduri valmistamine
Anduri valmistamine
Anduri valmistamine
Anduri valmistamine
Anduri valmistamine

Samm Kirjeldus: Selles etapis valmistame anduri, mis tuvastab, kui inimene avab külmiku ukse ja aktiveerib Raspberry Pi.

Selle seadistamiseks vajate 2 nuppu, mille olete algselt ette valmistanud. Esimene nupp tuvastab ukse avamise, teine nupp avab ukse avamise hetkeni, mil pildistame inimest.

  1. Jootke juhtmed nuppude külge.
  2. Kinnitage esimene nupp külmiku ukse külge nii, et seda vajutatakse, kui uks on suletud (vt ülaltoodud pilti)
  3. Kinnitage teine nupp külmiku ukse külge, nagu on näidatud ülaltoodud fotol. See nupp tuleb alati vabastada, välja arvatud siis, kui uks jõuab punkti, mil süsteem pildistab. Selle seadistamiseks peate külmiku külge midagi kinnitama, nii et seda nuppu vajutatakse, kui uks on soovitud ulatuses avatud (vt ülaltoodud fotosid).
  4. Kinnitage juhtmed nuppudest Raspberry Pi külge: esimene nupp GPIO 23 külge ja maandus, teine nupp GPIO 24 külge ja maandus (vt hõõrdumisskeemi).

Märkus: ma kasutan BCM pinouti (mitte tahvlit), lähemalt erinevuse kohta loe siit.

Kui olete SSH kaudu oma Raspberry Pi -ga ühendatud, sisestage python -kesta käivitamiseks terminal:

python3

Kui lisate Raspberry Pi külge monitori ja klaviatuuri, käivitage lihtsalt menüüst „Python 3 IDLE”.

Järgmine samm on panna Raspberry Pi nuppudega tööle. Kinnitame GPIO 23 ja 24 tihvtidele spetsiaalsed kuulajad, mis kuulavad nendel tihvtidel sündmust „tõusev serv” ja „langeva serva”. Sündmuse korral helistavad kuulajad meie määratletud funktsioonidele. „Tõusev serv” tähendab, et nuppu vajutati ja vabastati (esimene nupp - uks on avatud), „langev serv” tähendab, et nupp vabastati ja nüüd vajutati (teine nupp - uks on jõudnud kindlasse punkti). Lisateavet nuppude funktsionaalsuse kohta - siin.

Esiteks importige teek, mis annab meile juurdepääsu tihvtidele:

RPi. GPIO importimine GPIO -na

Nüüd määratlege erifunktsioonid, mis kutsutakse esile sündmuse käivitamisel:

def sensor1 (kanal): print („andur 1 käivitati“) def sensor2 (kanal): print („andur 2 käivitati)

Määra pinouti tüüp:

GPIO.setmode (GPIO. BCM)

Konfigureerige tihvtid:

GPIO.setup (23, GPIO. IN, pull_up_down = GPIO. PUD_UP) GPIO.setup (24, GPIO. IN, pull_up_down = GPIO. PUD_UP)

Kuulajate lisamine:

GPIO.add_event_detect (23, GPIO. RISING, tagasihelistamine = sensor1, tagasipöördumisaeg = 300) GPIO.add_event_detect (24, GPIO. FALLING, tagasihelistamine = sensor2, tagasipöördumisaeg = 300)

Nüüd saate seda testida! Kui vajutate nuppu 1, näete terminalis “andur 1 käivitunud” teadet, nupp 2 annab teate “andur 2 käivitunud”.

Märkus. Kui olete katsetamise lõpetanud, ärge unustage helistada järgmisele funktsioonile: GPIO.cleanup ().

Seadistame veel ühe funktsiooni, mida kutsutakse, kui uks jõuab punkti, kus pildistame! Saate seda ise teha või kasutada minu siin lisatud rakendust (sensor.py)

Märkus: sensorit.py kasutatakse ainult testimise eesmärgil, täieliku funktsionaalsusega failid olen lisanud viimasele sammule.

Samm: seadistage IP -kaamera

IP -kaamera seadistamine
IP -kaamera seadistamine
IP -kaamera seadistamine
IP -kaamera seadistamine
IP -kaamera seadistamine
IP -kaamera seadistamine

Sammu kirjeldus: Nüüd konfigureerime vana nutitelefoni IP -kaameraks.

Nutitelefoni kasutamine IP -kaamerana toimub rakenduse kaudu. Androidi, iOS -i ja Windows Phone'i jaoks on erinevaid rakendusi, mida saate kasutada. Androidi jaoks valisin selle nimega "IP -veebikaamera". See on tasuta rakendus ja seda on lihtne seadistada.

Käivitage rakendus, minge jaotisse „Video eelistused”, et seadistada rakenduse pakutavate fotode eraldusvõime. Seejärel puudutage "Käivita server" (esimene pilt ülal). Ekraani allosas peate nägema nuki ip -aadressi (vt ülaltoodud teist pilti). Brauserisse saate kirjutada https://cam_ip_address/photo-j.webp

Lõpuks kinnitage kaamera külmkapi külge (viimane pilt ülal).

Samm 4: Face API

Face API
Face API

Samm Kirjeldus: Selles etapis räägime Microsofti Face API -st, mis teeb näotuvastust ja tuvastab inimesi.

Microsofti näo API on näotuvastusteenus, mille kaudu saame fotosid analüüsida ja nendel olevaid inimesi tuvastada.

Esiteks vajate Microsoft Azure'i kontot. Kui teil seda pole, saate selle siin tasuta luua.

Teiseks minge aadressile https://portal.azure.com, klõpsake vasakul "Uus", tippige vorm "Kognitiivsete teenuste API -d", valige see ja klõpsake "Loo". Või saate selle lingi avada. Nüüd peate sisestama oma teenuse nime, valima tellimuse tüübi, vajaliku API tüübi (meie puhul on see Face API), asukoha, hinnaklassi, ressursirühma ja nõustuma juriidiliste tingimustega (vt sellele sammule lisatud ekraanipilt).

Kolmandaks klõpsake "Kõik ressursid", valige Face Face teenus ja vaadake kasutusstatistikat, mandaati jne.

Face API üksikasjad leiate siit, näiteid erinevates programmeerimiskeeltes. Selle projekti jaoks kasutame pythonit. Saate lugeda dokumentatsiooni ja luua oma funktsionaalsuskomplekti või kasutada siin pakutavat (see ei ole Microsofti täielik funktsionaalsus, vaid ainult selle projekti jaoks vajalikud punktid). Sellele sammule on lisatud minu pythoni failid.

Liigume edasi Face API -ga töötamise struktuuri juurde. Funktsiooni "Identifitseerimine" kasutamiseks peame looma raamatukogu inimestest, kes kasutavad Face API teenust rakenduse tehtud fotosid. Selle seadistamiseks toimige järgmiselt.

  1. Loo grupp
  2. Lisage sellesse gruppi inimesi
  3. Lisage neile isikutele näod
  4. Rongirühm
  5. Esitage foto isikuga, keda soovite tuvastada (peate esitama foto ja grupi ID, kust teenus kandidaate otsib)
  6. Tulemus: vastuseks saate nimekirja kandidaatidest, kes võivad teie esitatud fotol olla.

Olen loonud kolm erifunktsioonidega faili, mis võimaldavad töötada gruppide, üksikute isikute ja üksikute fotodega:

  • PersonGroup.py - sisaldab funktsioone, mis võimaldavad: grupi loomist, grupi kohta teabe hankimist, kõigi rühmade loendi hankimist, grupi koolitamist ja koolituse staatuse hankimist
  • Person.py - sisaldab funktsioone, mis võimaldavad: luua inimest, hankida isikuandmeid, loetleda kõik määratud grupi isikud, lisada nägusid määratud isikule
  • Face.py - sisaldab funktsioone, mis võimaldavad: tuvastada pildil nägu, tuvastada isik, saada tuvastatud isiku nimi

Failis nimega "tunnustamine.py" pakun funktsioone, mis võimaldavad teil kontrollida, kas pilt sisaldab nägu, ja lisada nägusid määratud isikule (lisab automaatselt näo paljudest piltidest määratud kaustast).

Laadige selle sammu juurde lisatud fail alla, pakkige see lahti, muutke globaalset muutujat „KEY” nendes kolmes failis: PersonGroup.py, Person.py ja Face.py endale võtmeks, mille leiate: portal.azure.com> kõik ressursid > näo api teenus (või kuidas te seda nimetasite)> klahvid sakk. Võite kasutada ühte kahest võtmest.

Märkus: siin treenime Face API teenust inimeste äratundmiseks, nii et järgmisi toiminguid saab teha igast arvutist (Raspberry Pi pole selleks vajalik) - muudatused salvestatakse Microsofti serverisse.

Pärast võtme muutmist käivitage tunnistus.py ja sisestage python shellis järgmine käsk:

PersonGroup.create ("perekond", 'fff-fff')) // saate kasutada oma nime ja ID-d

group printResJson (PersonGroup.getPersonGroup ('fff-fff'))

Peate nägema äsja loodud rühma andmeid. Nüüd sisestage:

printResJson (Person.createPerson ('fff-fff', 'isiku nimi'))

Nüüd saate isiku ID. Looge selle isiku piltidega kaust, et kõik pildid sisaldaksid selle inimese nägu. Funktsiooni detectFaceOnImages saate kasutada tuvastuses.py, mis näitab, millistel fotodel nägu tuvastatakse. Nüüd käivitage käsk:

addFacesToPerson ('piltidega kaust', 'isiku ID, mille saite pärast eelmist käsku', 'fff-fff')

Seejärel peame oma teenust koolitama, sisestades järgmise:

PersonGroup.trainPersonGroup ('fff-fff') printResJson (PersonGroup.getPersonGroupTrainingStatus ('fff-fff'))

Nüüd on meie rühm koolitatud ja valmis isiku tuvastamiseks.

Pildil oleva isiku kontrollimiseks saate teha järgmist.

Face.checkPerson (pilt, 'fff-fff')

Vastuseks saate nimekirja kandidaatidest ja tõenäosusest, kes fotol on.

Märkus: iga kord, kui lisate grupile inimesele või isikule nägu, peate rühma koolitama!

5. samm: sõlme-punane konfiguratsioon

Sõlme-punane konfiguratsioon
Sõlme-punane konfiguratsioon

Samm Kirjeldus: Selles etapis loome sõlme-punase voo, mis teavitab teid teie külmkapi juurdepääsu rikkumisest =)

Kui teie Raspberry Pi töötab Raspbian Jessie novembris 2015 või uuemas versioonis, ei pea te sõlmepunast installima, kuna see on juba eelinstallitud. Peate seda lihtsalt värskendama. Palun kasutage siin kasutusjuhendit.

Nüüd peame installima Twilio sõlme punasele sõlmele, et saaksime käivitada tekstisõnumi. Avage terminal ja sisestage:

cd ~/.node-rednpm install node-red-node-twilio

Lisateavet Twilio sõlme kohta leiate siit. Pärast seda käivitage sõlm-punane, tippides terminali:

sõlm-punane

Seejärel minge aadressile: https://127.0.0.1:1880/ - kui avate brauseri oma Raspberry Pihttps:// {raspberry_pi_ip}: 1880/ - kui soovite avada sõlmepunase redaktori teisest arvutist

Vaarika pi ip -aadressi teadmiseks kasutage seda juhist.

Nüüd peate oma sõlmepunase redaktori sõlmede loendist leidma Twilio sõlme (tavaliselt ilmub see pärast „sotsiaalset” rühma).

On aeg voolu luua!

Märkus: saate kasutada minu voogu, mis on sellele sammule lisatud, kuid ärge unustage konfigureerida sõlme: e -post, twitter ja twilio. Lugege sellest hiljem.

Meie voog algab sõlmega "teavita", mis võtab vastu meie põhiprogrammi POST -päringu koos andmetega juurdepääsu rikkumise kohta (andmete näite leiate kommentaarisõlmest "objektide vastuvõtmise kohta"). See sõlm vastab kohe sõnumiga "Ok", nii et põhiprogramm teab, et andmed on vastu võetud (voog: /teate> vastus koos OK> vastusega). Roheline sõlm allosas nimega msg.payload on silumiseks: kui midagi ei tööta, saate seda kasutada.

Alates esimeste sõlmede (/märguande) andmetest, mis levitati andmetüübiks ja pilditeemaks, kuhu lisati vastavalt teemad "andmed" ja "pilt".

Sõlmes "kompileerimine" saame andmeid (mida saame esimese sammu ajal) koos teemaga "andmed" ja teemaga "pilt" (pilt on võetud /home/pi/image.jpg). Need kaks sõnumit tuleks koondada üheks objektiks, kuid need kaks objekti võetakse vastu eri ajal! Selle lahendamiseks kasutame funktsiooni "kontekst", mis võimaldab meil salvestada andmeid funktsioonikutsete vahel.

Järgmine samm on kontrollida, kas meie juurdepääsuloendist pärit isik on võõras (checkConditions sõlm). Saadud andmetes on väli "trustedPerson": "tõene" tähendab, et me teame seda inimest, kuid ta rikkus juurdepääsu luba, "vale" tähendab, et inimene on võõras.

Kui tulemus on “tõene”, saadame teate twitterile, twiliole ja meilile; kui tulemus on “vale” - ainult meil ja twilio. Loome meili jaoks objekti koos sõnumiga, lisatud pildi ja e -kirja teema, objekti twilio jaoks koos sõnumiga. Twitteri jaoks lisame objektile andmed, kui "trustedPerson" vastab tõele. Seejärel saatke need kolm objekti kolme erinevasse sõlme.

Märkus. Kui järgmine sõlm ei peaks sõnumit vastu võtma, saadame sellele lihtsalt "null".

On aeg seadistada sõlmed teatamiseks!

Twitter Lisa voosse "twitter" sõlm. Avage see topeltklõpsuga. Klõpsake pliiatsit „Twitteri ID” kõrval. Seejärel klõpsake "Twitteriga autentimiseks klõpsake siin". Sisestage oma Twitteri kontole ja andke Node-Redile vajalikud load.

EmailLisage voogu "e -posti" sõlm. Kui te Gmaili ei kasuta, peate muutma järgmiste väljade andmeid - "Server" ja "Port" (millist serverit ja pordi peaksite kasutama oma e -posti agendi abilehtedelt), muidu ärge muutke neid väljad.

  • To> e -posti aadress, kuhu sõnumid saadetakse
  • Userid> logige sisse oma e -posti aadressilt (võib -olla sama mis väli "Saaja")
  • Parool> parool oma e -posti kontolt
  • Nimi> selle sõlme nimi

Twilio Minge aadressile https://www.twilio.com/try-twilio ja registreerige konto. Kinnitage see. Minge aadressile https://www.twilio.com/console. Klõpsake "Telefoninumbrid" (suur # ikoon) ja looge tasuta number. Kui viibite väljaspool USA-d, peate lisama GEO load, minge aadressile https://www.twilio.com/console/sms/settings/geo-pe… ja lisage oma riik.

Nüüd minge sõlmepunase redaktori juurde, lisage Twilio sõlm, topeltklõpsake seda kõigi väljade konfigureerimiseks ja täitmiseks:

  • Mandaadid> Kasutage kohalikke mandaate
  • Twilio> redigeeri

    • Konto SID> võtke siit
    • Alates> sisestage loodud virtuaalne number
    • Märk> võtke siit
    • Nimi> Twilio
  • Väljund> SMS
  • > Oma telefoninumbrile
  • Nimi> selle sõlme nimi.

Klõpsake käsul Juuruta

Nüüd on teie voog valmis! Saate seda testida, saates määratud objektiga POST -päringu!

6. samm: kogu projekti koostamine

Kogu projekti koostamine
Kogu projekti koostamine
Kogu projekti koostamine
Kogu projekti koostamine

Samm Kirjeldus: Selles etapis paneme kõik osad kokku ja paneme need tööle eraldi süsteemina.

Selle sammu abil peate:

  1. Seadistage vana nutitelefon ip -kaameraks
  2. Olemas töötavad andurid
  3. Koolitatud Microsofti näo API
  4. Seadistatud sõlme-punane voog

Nüüd peame täiustama 2. etapis kirjutatud koodi. Täpsemalt funktsiooniprotsess (), mida kutsutakse siis, kui inimene avab ukse. Selles funktsioonis teeme järgmist:

  1. Hankige pilt ip -kaamerast ja salvestage see kausta „/home/pi/” nimega „image.jpg” (funktsioon „fromIpCam” failis „getImage”)
  2. Hankige sellel pildil oleva isiku nimi (funktsioon „checkPerson” failis „äratundmine”)
  3. Kontrollige selle isiku juurdepääsu luba (funktsioon „kontrolli” failis „juurdepääs”)
  4. Põhineb funktsiooni „kontroll” tulemusel koostatud sõnumil
  5. Saatke koostatud sõnum sõlmepunasele (funktsioon „toNodeRed” failis „sendData”)

Märkus: mainitud funktsioonide täieliku koodi nägemiseks laadige alla sellele sammule lisatud zip -fail.

Teave funktsiooni “fromIpCam” kohta. See funktsioon esitab GET -i päringu teie ip -kaamerale, saab vastuseks fokuseeritud pildi ja salvestab selle teie määratud teele. Selle funktsiooni jaoks peate esitama kaamera IP -aadressi.

Funktsiooni “checkPerson” kohta. Funktsioon saab parameetritena tee pildile ja grupile, kus soovite fotolt inimest otsida. Esiteks tuvastab see pakutaval pildil näo (fail Face.py, funktsioon „tuvasta”). Vastuseks saab ID, kui tuvastatud nägu. Seejärel helistatakse funktsioonile „identifitseerimine” (fail Face.py), mis leiavad sarnased isikud määratud rühmast. Vastuseks saab inimese leidmisel isiku ID. Seejärel helistage funktsioonile „isik” (fail Person.py), mille parameetriks on isiku ID, funktsioon „isik” tagastab määratud ID -ga isiku, saame isiku nime ja tagastame selle.

Funktsiooni "kontroll" kohta. See funktsioon paigutatakse faili „juurdepääs”, kuhu paigutatakse ka juurdepääsuloend globaalse muutujana (saate seda vastavalt soovile muuta). Eelmisest funktsioonist isiku nime hankimine, funktsioon „kontroll”, võrrelge seda inimest juurdepääsuloendiga ja tagastage tulemus.

Märkus: täielik projekt on lisatud järgmisele sammule.

Samm 7: Järeldus

Selles etapis lisasin kogu projekti, mille peaksite lahti pakkima ja oma Raspberry Pi külge panema.

Selle projekti toimimiseks käivitage fail „main.py”.

Kui juhite Raspberry Pi SSH kaudu, peate ühest kestast käivitama kaks programmi: python ja Node-Red. Sisestage terminali järgmine:

sõlm-punane

Vajutage "Ctrl + Z" ja tippige:

töökohti

Näete sõlme-punast protsessi. Vaadake protsessi ID -d ja tippige:

bg

Nüüd peavad Node-Red hakkama taustal töötama. Seejärel minge oma projektiga kataloogi ja käivitage põhiprogramm:

python3 main.py

Märkus: ärge unustage muuta PYTHON-failide KEY (4. samm) ja Node-Red flow voo volitusi (5. samm)

Valmis! Teie külmik on ohutu!

Loodan, et teile meeldis see raskesti lahendatav! Jäta oma mõtted julgelt kommentaaridesse.

Oleksin tänulik, kui hääletaksite minu projekti poolt =)

Aitäh!

Soovitan: