Obsah:

Bezpečnostný systém rozpoznávania tváre pre chladničku s Raspberry Pi: 7 krokov (s obrázkami)
Bezpečnostný systém rozpoznávania tváre pre chladničku s Raspberry Pi: 7 krokov (s obrázkami)

Video: Bezpečnostný systém rozpoznávania tváre pre chladničku s Raspberry Pi: 7 krokov (s obrázkami)

Video: Bezpečnostný systém rozpoznávania tváre pre chladničku s Raspberry Pi: 7 krokov (s obrázkami)
Video: 粉红小战狼上街招祸全网课留学生被遣返,新冠病毒空气传播癌症患者死亡率加倍 Students will be repatriated if they take all online courses. 2024, Júl
Anonim
Image
Image
Bezpečnostný systém rozpoznávania tváre pre chladničku s Raspberry Pi
Bezpečnostný systém rozpoznávania tváre pre chladničku s Raspberry Pi
Bezpečnostný systém rozpoznávania tváre pre chladničku s Raspberry Pi
Bezpečnostný systém rozpoznávania tváre pre chladničku s Raspberry Pi

Pri prehliadaní internetu som zistil, že ceny za bezpečnostné systémy sa pohybujú od 150 $ do 600 $ a vyššie, ale nie všetky riešenia (dokonca aj tie veľmi drahé) je možné integrovať s inými inteligentnými nástrojmi u vás doma! Nemôžete napríklad nastaviť bezpečnostnú kameru na predné dvere, aby automaticky otvorila dvere vám alebo vašim priateľom!

Rozhodol som sa vytvoriť jednoduché, lacné a výkonné riešenie, ktoré môžete použiť kdekoľvek! Existuje mnoho manuálov o tom, ako vytvoriť lacné a domáce bezpečnostné systémy, ale chcem predviesť ich skutočne netriviálne použitie - bezpečnostný systém pre chladničku s rozpoznaním tváre!

Ako to funguje? IP kamera umiestnená na vrchu chladničky, senzory (dve tlačidlá) rozpoznajú, keď osoba otvorí dvere chladničky, potom Raspberry Pi odfotí túto osobu (s IP kamerou) a potom ju odošle do rozhrania Microsoft Face API analyzovať obrázok a prijať meno osoby. S týmito informáciami Raspberry Pi skenuje „prístupový zoznam“: ak osoba nemá povolenie na prístup do chladničky, Raspberry upozorní vlastníka e -mailom, textovou správou a twitterom! (Pozri obrázky vyššie)

Prečo? Tento systém vám umožňuje ovládať svojich rodinných príslušníkov, najmä ak držia diétu alebo zápasia s tým, že po polnoci už nejedia! Alebo ho použite len tak pre zábavu!

Okrem toho môžete skutočne nastaviť kameru na predné dvere a nakonfigurovať systém tak, aby otvoril dvere, keď sa blížite vy, vaši rodinní príslušníci alebo priatelia. A to nie je koniec! Možnosti aplikácie sú nekonečné!

Poďme začať!

Krok 1: Príprava

Príprava
Príprava

Budete potrebovať:

  • Raspberry Pi 3 (môžete použiť staršie verzie, ale tretia generácia má Wi-Fi, takže je to veľmi výhodné)
  • Gombíky
  • Drôty
  • Starý fotoaparát pre smartfóny alebo Raspberry Pi

Prvá vec, ktorú musíte urobiť, je nakonfigurovať váš Raspberry Pi. Podrobný návod, ako na to, nájdete tu a tu, ale my sa budeme zaoberať najdôležitejšími krokmi v tejto príručke.

  1. Stiahnite si Win32 DiskImager odtiaľto (ak používate Windows)
  2. Stiahnite si formátovač SD odtiaľto
  3. Vložte kartu SD do počítača a naformátujte ju pomocou formátovača SD
  4. Odtiaľto si stiahnite obrázok Raspbian (vyberte „Raspbian Jessie s pixelom“)
  5. Spustite program Win32 DiskImager, vyberte kartu SD, zadajte cestu k obrázku Raspbian a kliknite na položku „Napísať“
  6. Vložte kartu SD do svojho Raspberry Pi a zapnite napájanie!

Okrem toho budete musieť nakonfigurovať svoj Raspberry Pi tak, aby mal prístup k systému prostredníctvom SSH. Na internete je veľa návodov, ktoré môžete použiť napríklad alebo môžete pripojiť monitor a klávesnicu.

Teraz je vaše Pi nakonfigurované a ste pripravení pokračovať!

Krok 2: Vytvorenie senzora

Výroba senzora
Výroba senzora
Výroba senzora
Výroba senzora
Výroba senzora
Výroba senzora

Popis kroku: V tomto kroku vyrobíme senzor, ktorý detekuje, keď osoba otvorí dvere chladničky a aktivuje Raspberry Pi.

Na jeho nastavenie budete potrebovať 2 tlačidlá, ktoré ste pôvodne pripravili. Prvé tlačidlo bude detekovať pri otvorení dverí, druhé tlačidlo bude detekovať pri otvorení dverí až do bodu, kedy fotografujeme osobu.

  1. Spájkujte vodiče k tlačidlám.
  2. Pripojte prvé tlačidlo k dverám chladničky tak, aby sa pri zatváraní dverí zatlačilo (pozri obrázok vyššie)
  3. Pripojte druhé tlačidlo k dverám chladničky, ako je to znázornené na fotografii vyššie. Toto tlačidlo musí byť vždy uvoľnené, okrem prípadov, keď dvere dosiahnu bod, kedy systém urobí fotografiu. Na jeho nastavenie musíte k chladničke niečo pripevniť tak, aby sa toto tlačidlo stlačilo pri otvorení dverí v požadovanom rozsahu (pozri fotografie vyššie).
  4. Pripojte vodiče z tlačidiel k Raspberry Pi: prvé tlačidlo ku GPIO 23 a uzemneniu, druhé tlačidlo k GPIO 24 a uzemneniu (pozri schematický diagram).

Poznámka: Používam pinout BCM (nie Board), viac o rozdiele si prečítajte tu.

Po pripojení k vášmu Raspberry Pi cez SSH spustite shell pythonu a zadajte terminál:

python3

Ak k Raspberry Pi pripájate monitor a klávesnicu, spustite z ponuky „Python 3 IDLE“.

Ďalším krokom je, aby Raspberry Pi fungoval pomocou tlačidiel. K pinom GPIO 23 a 24 pripojíme špeciálnych poslucháčov, ktorí budú na týchto kolíkoch počúvať udalosť „stúpajúca hrana“a „klesajúca hrana“. V prípade udalosti budú poslucháči volať funkcie, ktoré sme definovali. „Nábežná hrana“znamená, že tlačidlo bolo stlačené a teraz uvoľnené (prvé tlačidlo - dvere sú otvorené), „zostupná hrana“znamená, že tlačidlo bolo uvoľnené a teraz stlačené (druhé tlačidlo - dvere dosiahli konkrétny bod). Viac o funkciách tlačidiel - tu.

Najprv importujte knižnicu, ktorá nám poskytuje prístup k pinom:

importujte RPi. GPIO ako GPIO

Teraz definujte špeciálne funkcie, ktoré sa budú volať pri spustení udalosti:

def senzor1 (kanál): tlač („snímač 1 spustený“) def senzor2 (kanál): tlač („senzor 2 spustený)

Nastaviť typ pinoutu:

GPIO.setmode (GPIO. BCM)

Konfigurácia pinov:

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

Pripojiť poslucháčov:

GPIO.add_event_detect (23, GPIO. RISING, callback = sensor1, bouncetime = 300) GPIO.add_event_detect (24, GPIO. FALLING, callback = sensor2, bouncetime = 300)

Teraz to môžete vyskúšať! Ak stlačíte tlačidlo 1, zobrazí sa správa na termináli „snímač 1 spustený“, tlačidlo 2 vám poskytne správu „senzor 2 spustený“.

Poznámka: Keď skončíte s experimentovaním, nezabudnite zavolať nasledujúcu funkciu: GPIO.cleanup ().

Nastavme ešte jednu funkciu, ktorá sa volá, keď dvere dosiahnu bod, kde urobíme fotografiu! Môžete to urobiť sami alebo použiť moju implementáciu, ktorú som pripojil tu (sensor.py)

Poznámka: sensor.py sa používa iba na testovacie účely, súbory s plnou funkčnosťou som pripojil k poslednému kroku.

Krok 3: Konfigurujte IP kameru

Konfigurácia IP kamery
Konfigurácia IP kamery
Konfigurácia IP kamery
Konfigurácia IP kamery
Konfigurácia IP kamery
Konfigurácia IP kamery

Popis kroku: Teraz nakonfigurujeme starý smartphone ako IP kameru.

Používanie smartfónu ako IP kamery sa vykonáva prostredníctvom aplikácie. Môžete použiť rôzne aplikácie pre Android, iOS a Windows Phone. Vybral som ten s názvom „IP Webcam“pre Android. Toto je bezplatná aplikácia a jej konfigurácia je jednoduchá.

Spustite aplikáciu, v časti „Predvoľby videa“nastavte rozlíšenie fotografií, ktoré aplikácia poskytne. Potom klepnite na „Spustiť server“(prvý obrázok vyššie). V spodnej časti obrazovky musíte vidieť IP adresu kamery (pozri druhý obrázok vyššie). Do prehliadača môžete napísať https://cam_ip_address/photo-j.webp

Nakoniec pripevnite fotoaparát k chladničke (posledný obrázok vyššie).

Krok 4: Face API

Face API
Face API

Popis kroku: V tomto kroku budeme hovoriť o rozhraní Microsoft Face API, ktoré rozpoznáva tváre a identifikuje ľudí.

Microsoft Face API je služba rozpoznávania tváre, pomocou ktorej môžeme analyzovať fotografie a identifikovať na nich ľudí.

Najprv potrebujete účet Microsoft Azure. Ak ho nemáte, môžete si ho zadarmo vytvoriť tu.

Za druhé, choďte na https://portal.azure.com, kliknite na „Nové“na ľavej strane, zadajte do formulára „API kognitívnych služieb“, vyberte ho a kliknite na „Vytvoriť“. Alebo môžete otvoriť tento odkaz. Teraz musíte zadať názov svojej služby, vybrať typ predplatného, typ rozhrania API, ktoré potrebujete (v našom prípade je to Face API), umiestnenie, cenovú úroveň, skupinu zdrojov a súhlasiť s právnymi podmienkami (pozri snímku obrazovky pridanú k tomuto kroku).

Po tretie, kliknite na „Všetky zdroje“, vyberte službu Face API a pozrite sa na štatistiky používania, poverenia atď.

Podrobnosti o rozhraní Face API nájdete tu, sú k dispozícii príklady v rôznych programovacích jazykoch. Na tento projekt používame python. Môžete si prečítať dokumentáciu a vytvoriť si vlastnú sadu funkcií alebo môžete použiť jednu z tu uvedených (toto nie je úplná sada funkcií poskytovaných spoločnosťou Microsoft, iba body, ktoré sú potrebné pre tento projekt). K tomuto kroku sú pripojené moje súbory python.

Prejdeme k štruktúre práce s Face API. Aby sme mohli používať funkciu „Identifikácia“, musíme vytvoriť knižnicu ľudí, pomocou ktorých bude služba Face API rozpoznávať fotografie, ktoré aplikácia nasníma. Ak ho chcete nastaviť, postupujte takto:

  1. Vytvorte skupinu
  2. Pridajte osoby do tejto skupiny
  3. Pridajte k týmto osobám tváre
  4. Vlaková skupina
  5. Odošlite fotografiu s osobou, ktorú chcete identifikovať (musíte poskytnúť fotografiu a ID skupiny, v ktorej službe bude hľadať kandidátov)
  6. Výsledok: V odpovedi dostanete zoznam kandidátov, ktorí môžu byť na vami odoslanej fotografii.

Vytvoril som tri súbory so špecifickými funkciami, ktoré umožňujú pracovať so skupinami, jednotlivcami a fotografiami:

  • PersonGroup.py - obsahuje funkcie, ktoré umožňujú: vytvoriť skupinu, získať informácie o skupine, získať zoznam všetkých vašich skupín, trénovať skupinu a získať stav školenia
  • Person.py - obsahuje funkcie, ktoré umožňujú: vytvoriť osobu, získať informácie o osobe, uviesť zoznam všetkých osôb v zadanej skupine, pridať tváre zadanej osobe
  • Face.py - obsahuje funkcie, ktoré umožňujú: rozpoznať tvár na obrázku, identifikovať osobu, získať meno identifikovanej osoby

V súbore s názvom „recognition.py“poskytujem funkcie, ktoré vám umožňujú skontrolovať, či obrázok obsahuje tvár, a pridať tváre zadanej osobe (automaticky pridá tvár z mnohých obrázkov zo zadaného priečinka).

K tomuto kroku stiahnite súbor, rozbaľte ho a zmeňte globálnu premennú „KEY“v týchto troch súboroch: PersonGroup.py, Person.py a Face.py na vlastný kľúč, ktorý nájdete: portal.azure.com> všetky zdroje > služba face api (alebo ako ste to nazvali)> karta kľúčov. Môžete použiť ktorýkoľvek z týchto dvoch kľúčov.

Poznámka: Tu sa chystáme vycvičiť službu Face API, aby rozpoznávala ľudí, takže nasledujúce akcie je možné vykonať z ľubovoľného počítača (Raspberry Pi na to nie je potrebný) - zmeny sa uložia na server spoločnosti Microsoft.

Po zmene KEY spustite rozpoznávanie.py a zadajte nasledujúci príkaz do shellu python:

PersonGroup.create ("rodina", 'fff-fff'))) // môžete použiť svoje vlastné meno a ID pre

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

Musíte vidieť údaje o skupine, ktorú ste práve vytvorili. Teraz zadajte:

printResJson (Person.createPerson ('fff-fff', 'meno osoby'))

Teraz získate ID osoby. Vytvorte priečinok s obrázkami tejto osoby, aby všetky obrázky obsahovali tvár tejto osoby. Na rozpoznanie.py môžete použiť funkciu detectFaceOnImages, ktorá vám ukáže, na ktorých fotografiách sa rozpoznáva tvár. Teraz spustite príkaz:

addFacesToPerson ('priečinok s obrázkami', 'ID osoby, ktoré ste získali po predchádzajúcom príkaze', 'fff-fff')

Potom musíme vycvičiť našu službu zadaním nasledujúceho:

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

Teraz je naša skupina vyškolená a pripravená identifikovať osobu.

Ak chcete skontrolovať osobu na obrázku, môžete:

Face.checkPerson (obrázok, 'fff-fff')

Ako odpoveď dostanete zoznam kandidátov a pravdepodobnosť, kto je na fotografii.

Poznámka: Zakaždým, keď pridáte tváre k osobe alebo osobe do skupiny, musíte skupinu vycvičiť!

Krok 5: Konfigurácia Node-Red

Konfigurácia uzol-červená
Konfigurácia uzol-červená

Popis kroku: V tomto kroku vytvoríme tok Node-Red, ktorý vás upozorní na narušenie prístupu do vašej chladničky =)

Ak váš Raspberry Pi beží na verzii Raspbian Jessie z novembra 2015 alebo novšej, Node-Red nemusíte inštalovať, pretože je už predinštalovaný. Stačí ho aktualizovať. Tu prosím použite manuál.

Teraz musíme do uzla Red nainštalovať uzol Twilio, aby sme mohli spustiť textovú správu. Otvorte terminál a zadajte:

cd ~/.node-rednpm nainštalovať node-red-node-twilio

Viac o uzle Twilio tu. Potom spustite Node-Red zadaním do terminálu:

uzol-červený

Potom choďte na: https://127.0.0.1:1880/ - ak otvoríte prehliadač na svojom Raspberry Pihttps:// {raspberry_pi_ip}: 1880/ - ak chcete otvoriť editor Node -Red z iného počítača

Na zistenie IP adresy malinového pi použite tento návod.

Teraz musíte nájsť uzol Twilio v zozname uzlov vo vašom editore Node-Red (zvyčajne sa zobrazuje po „sociálnej“skupine).

Je čas vytvoriť tok!

Poznámka: v tomto kroku môžete použiť môj postup, ale nezabudnite nakonfigurovať uzly: e -mail, twitter a twilio. Prečítajte si o tom neskôr.

Náš tok začína uzlom „upozorniť“, ktorý prijíma požiadavku POST z nášho hlavného programu s niektorými údajmi o narušení prístupu (príklad údajov nájdete v uzle komentárov „o prijímaní objektov“). Tento uzol okamžite odpovie správou „Ok“, takže hlavný program vie, že údaje boli prijaté (Tok: /oznámiť> odpoveď s Ok> odpoveď). Zelený uzol v spodnej časti s názvom msg.payload slúži na ladenie: ak niečo nefunguje, môžete to použiť.

Z prvého uzla (/upozornenia) sa údaje šíria do „Dátovej témy“a „Obrázkovej témy“, kde boli pridané témy „údaje“a „obrázok“.

V uzle „zostaviť“dostaneme údaje (ktoré získame počas prvého kroku) s témou „údaje“a obrázok s témou „obrázok“(obrázok je prevzatý z /home/pi/image.jpg). Tieto dve správy by mali byť skompilované do jedného objektu, ale tieto dva objekty sú prijaté v inom čase! Aby sme to zvládli, použijeme funkciu „kontext“, ktorá nám umožní ukladať údaje medzi vyvolaniami funkcií.

Ďalším krokom je skontrolovať, či je osoba z nášho prístupového zoznamu alebo je to cudzinec (uzol checkConditions). V údajoch, ktoré dostávame, je pole „TrustPerson“: „true“znamená, že túto osobu poznáme, ale porušila povolenie na prístup, „false znamená, že daná osoba je neznáma.

Keď je výsledok „pravdivý“, pošleme upozornenie na twitter, twilio a e -mail; keď je výsledok „falošný“- iba e -mail a twilio. Vytvoríme objekt pre e -mail so správou, priložený obrázok a predmet e -mailu, objekt pre twilio so správou. V prípade twitteru pridáme údaje k objektu, ak je „TrustPerson“pravdivé. Potom pošlite tieto tri objekty do troch rôznych uzlov.

Poznámka: Ak nasledujúci uzol nemá dostať správu, pošleme jej iba „null“.

Je čas nakonfigurovať uzly na odosielanie upozornení!

Twitter Pridajte do toku uzol „twitter“. Otvorte ho dvojitým kliknutím. Kliknite na ceruzku vedľa položky „Twitter ID“. Potom kliknite na „Kliknutím sem sa autentifikujete pomocou služby Twitter“. Vstúpte do svojho twitterového účtu a poskytnite Node-Red potrebné povolenia.

E -mail Pridajte do toku uzol „e -mail“. Ak nepoužívate Gmail, budete musieť zmeniť údaje v nasledujúcich poliach - „Server“a „Port“(server a port, ktorý by ste mali použiť, nájdete na stránkach pomoci svojho e -mailového agenta), inak tieto údaje nemeňte polia.

  • Na> e -mailovú adresu, na ktorú sa budú odosielať správy
  • Userid> prihlásenie z vášho e -mailu (môže byť rovnaké ako pole „Komu“)
  • Heslo> heslo z vášho e -mailového účtu
  • Názov> názov tohto uzla

Twilio Prejdite na stránku https://www.twilio.com/try-twilio a zaregistrujte si účet. Overte si to. Prejdite na https://www.twilio.com/console. Kliknite na „Telefónne čísla“(veľká ikona #) a vytvorte si bezplatné číslo. Ak sa nachádzate mimo USA, musíte pridať povolenia GEO, navštívte stránku https://www.twilio.com/console/sms/settings/geo-pe… a pridajte svoju krajinu.

Teraz prejdite do editora Node-Red, pridajte uzol Twilio, dvakrát naň kliknite a nakonfigurujte a vyplňte všetky polia:

  • Poverenia> Použiť miestne poverenia
  • Twilio> upraviť

    • Účet SID> odtiaľto
    • Od> zadajte virtuálne číslo, ktoré ste vytvorili
    • Token> vezmite odtiaľto
    • Meno> Twilio
  • Výstup> SMS
  • > Telefónne číslo
  • Názov> názov tohto uzla.

Kliknite na Nasadiť

Teraz je váš tok pripravený! Môžete to vyskúšať odoslaním požiadavky POST so zadaným objektom!

Krok 6: Zostavenie celého projektu

Zostavenie celého projektu
Zostavenie celého projektu
Zostavenie celého projektu
Zostavenie celého projektu

Popis kroku: V tomto kroku spojíme všetky časti a zaistíme, aby fungovali ako samostatný systém.

V tomto kroku musíte:

  1. Nakonfigurujte starý smartphone ako ip kameru
  2. Majú funkčné senzory
  3. Vycvičené rozhranie Microsoft Face API
  4. Konfigurovaný tok Node-Red

Teraz musíme vylepšiť kód, ktorý sme napísali v kroku 2. Konkrétnejšie funkčný proces (), ktorý sa volá, keď osoba otvorí dvere. V tejto funkcii urobíme nasledujúce:

  1. Získajte obrázok z ip kamery a uložte ho do „/home/pi/“s názvom „image.jpg“(funkcia „fromIpCam“v súbore „getImage“)
  2. Získajte meno osoby na tomto obrázku (funkcia „checkPerson“v súbore „rozpoznanie“)
  3. Skontrolujte povolenie na prístup pre túto osobu (funkcia „skontrolovať“v súbore „prístup“)
  4. Na základe výsledku funkcie „kontrola“napíšte správu
  5. Odoslať zloženú správu na Node-Red (funkcia „toNodeRed“v súbore „sendData“)

Poznámka: Ak si chcete pozrieť úplný kód uvedených funkcií, stiahnite si súbor zip priložený k tomuto kroku.

O funkcii „fromIpCam“. Táto funkcia odošle požiadavku GET na vašu IP kameru, v reakcii na ňu zaostrí obraz a uloží ho na vami zadanú cestu. K tejto funkcii musíte zadať IP adresu kamery.

O funkcii „checkPerson“. Funkcia získa ako parameter cestu k obrázku a skupine, v ktorej chcete podľa fotografie hľadať osobu. Najprv detekuje tvár na poskytnutom obrázku (súbor Face.py, funkcia „detekovať“). V odpovedi dostane ID, ak bola rozpoznaná tvár. Potom zavolá funkciu „identifikovať“(súbor Face.py), ktorá nájde podobné osoby v zadanej skupine. Ako odpoveď dostane identifikátor osoby, ak sa nájde. Potom zavolajte funkciu „osoba“(súbor Person.py) s parametrom ID osoby, funkcia „osoba“vráti osobu so zadaným identifikátorom, my získame meno osoby a vrátime ju.

O funkcii „skontrolovať“. Táto funkcia je umiestnená v súbore „prístup“, kde tiež je „prístupový zoznam“umiestnený ako globálna premenná (môžete ju ľubovoľne upravovať). Získaním mena osoby z predchádzajúcej funkcie, funkcie „kontrola“, porovnajte túto osobu s prístupovým zoznamom a vráťte výsledok.

Poznámka: celý projekt je pripojený k ďalšiemu kroku.

Krok 7: Záver

V tomto kroku som pripojil celý projekt, ktorý by ste mali rozbaliť a vložiť do svojho Raspberry Pi.

Aby tento projekt fungoval, spustite súbor „main.py“.

Ak ovládate Raspberry Pi cez SSH, musíte spustiť dva programy z jedného shellu: program python a Node-Red. Do terminálu zadajte nasledujúce:

uzol-červený

Stlačte „Ctrl + Z“a zadajte:

zamestnania

Uvidíte proces Node-Red. Pozrite sa na ID procesu a zadajte:

bg

Teraz musí Node-Red začať pracovať na pozadí. Potom prejdite do adresára so svojim projektom a spustite hlavný program:

python3 main.py

Poznámka: nezabudnite zmeniť KĽÚČ v súboroch pythonu (krok 4) a poverenia v toku Node-Red (krok 5)

Hotový! Vaša chladnička je v bezpečí!

Dúfam, že sa vám toto neriešiteľné páčilo! Neváhajte zanechať svoju myseľ v komentároch.

Ocenil by som, keby ste hlasovali za môj projekt =)

Ďakujem!

Odporúča: