INHOUDSOPGAWE:

Deurbel met gesigherkenning: 7 stappe (met foto's)
Deurbel met gesigherkenning: 7 stappe (met foto's)

Video: Deurbel met gesigherkenning: 7 stappe (met foto's)

Video: Deurbel met gesigherkenning: 7 stappe (met foto's)
Video: Beste slimme deurbellen 2023-beste videodeurbel 2023-☑️ top 5 beste videodeurbellen 2023 2024, November
Anonim
Deurklokkie met gesigherkenning
Deurklokkie met gesigherkenning

Motivering

Onlangs was daar 'n golf van rooftogte in my land wat op bejaardes in hul eie huise gemik is. Gewoonlik word toegang deur die insittendes self verleen, aangesien die besoekers hulle oortuig dat hulle versorgers/verpleegsters is. Dit is net bo woorde, hoe kwaad en hartseer hierdie verhale my laat voel. Huis moet u eerste veilige hawe wees, en nog meer as u reeds in 'n kwesbare posisie is as u buite is. Met die oog hierop het ek hierdie projek begin.

Algemene inligting

Die deurklokkiesisteem is hoofsaaklik ontwerp vir bejaardes of gesiggestremdes en is redelik eenvoudig in sy werk. Kortom, die deurklokkie skakelaar veroorsaak dat die kamera beeldmateriaal kry. Vervolgens word gesigte in die beeldmateriaal opgespoor en gekombineer met 'n witlys en swartlys. Die insittende kry duidelike visuele terugvoer deur 'n duidelike verkeerslig. Hiermee dui die groen, geel of rooi lig daarop dat die persoon (s) onderskeidelik op die witlys is, onbekend aan die stelsel of op die swartlys. As die geel of rooi lig geaktiveer word, word die foto deur 'n Telegram -bot gestuur om 'n familielid of opsigter in kennis te stel/te waarsku.

Vlak van kundigheid

Die projek is opgestel vir entoesiaste wat veral nuuskierig is oor die gebruik van rekenaarvisie en kunsmatige intelligensie. Hierdie instruksies is geskryf vir 'n gehoor beginners, dus moenie bekommerd wees as u geen ervaring het nie! Die projek kan ook interessant wees vir meer ervare vervaardigers, aangesien die pyplyn so georganiseer is dat u dit sonder veel moeite kan uitbrei met u eie rekenaarvisie en gesigsherkenningsidees.

Stap 1: materiaal

Materiaal
Materiaal

Produklys met minimum vereistes:

Produk Skakel Lewer kommentaar
Framboos Pi 3b RPi Link toon RPi 4, aangesien dit beter prestasie en byna dieselfde prys as die RPi 3b het.
Mikro SD Amazon 'N Micro SD -kaart van 16 GB of groter sal die werk doen. Maar die 16 GB -kaarte op Amazon is nou ongeveer dieselfde prys as die 32 GB -kaarte.
Framboos Pi kamera Amazon Kamera v1 is goedkoper, maar v2 is beter en sal langer ondersteun word.
15 -pins FPC -flexkabel Amazon Die lengte hang eintlik af van die omstandighede van die uitvoering van hierdie projek. As u net 'n prototipe wil bou, sal die oorspronklike flexkabel die werk doen.
Kragtoevoer 5v mikro usb Adafruit Hierdie een het nooit in die steek gelaat nie! Goeie kwaliteit. (Nie op die foto nie)
Arcade-knoppies met ingeboude LED Amazon Kies die grootte wat u wil hê, maar die CAD -ontwerp is gebaseer op 60 mm -knoppies
Weerstande Amazon U benodig net 'n paar 1k en 100 ohm weerstande. Gereelde 1/4 W is goed.
Kondensators 0.1 uF Amazon Drie kapasitors is nodig. (Nie op die foto nie)
Springdrade / lintkabel Amazon Amazon As u geld wil bespaar, kan u ook 'n ou diskettekabel gebruik (sien foto).
Krimpbuis / Elektriese band Amazon Amazon

Gereedskap wat benodig word:

Gereedskap Noodsaaklik? Lewer kommentaar
Soldeerbout Ja
Multimeter Ja
Draadstropper Ja Of u kan 'n mes/skêr gebruik.
Lasersnyer Geen
3D -drukker Geen
Klampe Geen Nuttig om die boks bymekaar te hou tydens die toetsfase.

Opmerkings:

Om die toeganklikheid van die projek te verhoog, het ek besluit om dit te ontwikkel met 'n Raspberry Pi 3b. Alhoewel dit die toeganklikheid verhoog, verminder dit die vermoëns van die toepassing, aangesien RPi's nie so vinnig is nie. As u op soek is na 'n enkele boordrekenaar wat vinniger is, wil u miskien na die NVIDIA Jetson Nano kyk

Stap 2: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Die skematiese diagram is die mees insiggewende vir hierdie stap en is baie duidelik. As u nog nie elektronies is nie, kan u die legendebeeld gebruik. Die waarde van die komponent (indien van toepassing) word in die skematiese diagram aangedui. Die foto's kan help om te sien hoe ek die stroombaan bou. Ek het basies alle komponente so na as moontlik aan die arcade -knoppie gekoppel, wat lei tot 'n duidelike oorsig van wat aangaan.

Opmerkings:

  • Ek hou baie daarvan om lintkabelverbindings te gebruik, aangesien dit baie stewiger is as om enkeldraaddrade te gebruik.
  • Soos voorgestel, het ek 'n lintkabel van 'n ou rekenaar gebruik. Dit is egter 'n bietjie lastig, aangesien u die konfigurasie van die kabel handmatig moet bevestig. In hierdie projek het ek byvoorbeeld uitgevind dat sommige gate met mekaar verbind is (waarskynlik as grond vir die oorspronklike toepassing gebruik). Daarom moes ek later 'n ander kabel kry, soos u op die foto's kan sien.

Stap 3: Bou die omhulsel

Bou van die omhulsel
Bou van die omhulsel
Bou van die omhulsel
Bou van die omhulsel
Bou van die omhulsel
Bou van die omhulsel
Bou van die omhulsel
Bou van die omhulsel

Kamera omhulsel

Baie omhulsels vir die picamera kan gratis van die internet afgelaai word. Dus, ek kies om die wiel nie weer uit te vind nie en kies 'n basiese, maar mooi omhulsel van die internet: thingiverse.com - Framboos pi -kamera -omhulsel/omhulsel. (Skreeu na die ontwerper VGer.)

Verkeerslig omhulsel

Vir die verkeersligomhulsel het ek 'n klein boks in Autodesk Fusion 360 ontwerp (wat gratis afgelaai kan word, sien Opmerkings) wat by alle hardeware pas. In die aanhangsel vind u die lêer wat ek na my plaaslike lasersnyeronderneming gestuur het. Hierdeur is die ontwerp gebaseer op 'n plaatdikte van 6 mm. As u dinge egter wil aanpas, het u toegang tot allerhande lêerformate deur hierdie skakel te gebruik. Soos op die foto's getoon, kan u ook 'n kartondoos gebruik as u nie toegang tot 'n lasersnyer het nie. Ek het die kartondoos op die foto gebruik vir prototipering en dit werk soos 'n sjarme.

Die vergadering is redelik eenvoudig:

  1. Monteer die Arcade -skakelaars.
  2. Hou die drade vir die deurklokkie vry.
  3. Koppel die lintkabel aan die RPi.
  4. Skroef die RPi op die onderste paneel vas.
  5. Koppel die deurklokkies se drade aan 'n draadaansluiting en monteer dit ook op die onderste paneel.
  6. Koppel die Picamera aan die RPi.
  7. Boor 'n gaatjie in een van die sypanele vir die deurklokkie en die RPi -kragdraad.

Die draadverbinder word gebruik as 'n bevestigingspunt vir die deurklokkie se drade, sodat dit later aan 'n bestaande deurklokkie vasgemaak kan word. Alles is nou in plek en kan aan mekaar vasgeplak word. U wil egter eers die volgende stappe voltooi om seker te maak dat alles werk soos dit veronderstel is om te wees.

Opmerkings:

Autodesk Fusion 360 is gratis beskikbaar vir stokperdjies! Besoek hierdie skakel as u u kopie wil kry: autodesk.com - Fusion 360 For Hobbyists. Daar is 'n paar terme, dus lees dit en pas dit toe. Dit was my eerste projek met Fusion 360 en ek het nie veel ervaring met die gebruik van CAD -sagteware nie, maar ek moet sê dat ek baie van die sagteware hou en van al die ekstra gereedskap wat by Fusion 360 kom

Stap 4: Stel die kamera op

Die opstel van die kamera
Die opstel van die kamera
Die opstel van die kamera
Die opstel van die kamera
Die opstel van die kamera
Die opstel van die kamera

Daar word aanvaar dat u Raspbian geïnstalleer het en dat dit in die GUI -modus werk. As u nog nie Raspbian geïnstalleer het nie, kan u hierdie artikel volg: raspberrypi.org - installering van afbeeldings van die bedryfstelsel. As u Raspbian begin, moet u 'n lessenaar sien soos op die foto's getoon.

Kom ons stel die kamera op die RPi op en kyk of dit werk! Die metode wat hier beskryf word, is direk afkomstig van die raspberrypi.org - Documentation. Kom ons werk eers na die nuutste pakkette (insluitend kamera -firmware) deur die volgende opdragte in 'n terminale venster uit te voer (sien foto's):

sudo apt -opdatering

sudo apt volledige opgradering

Vervolgens moet die kamera met die volgende opdrag geaktiveer word:

sudo raspi-config

Gaan in die spyskaart na 5. Koppelvlakopsies -> P1 -kamera. Kies om die kamera in te skakel en herlaai die RPi deur die volgende uit te voer:

herlaai

Die kamera moet nou behoorlik gekonfigureer word. Dit kan getoets word deur 'n terminale venster oop te maak en uit te voer:

raspistill -v -o /home/pi/test.jpg

Die beeld word gestoor in: /home /pi.

Stap 5: Die opstel van Docker

Die opstel van Docker
Die opstel van Docker
Die opstel van Docker
Die opstel van Docker
Die opstel van Docker
Die opstel van Docker
Die opstel van Docker
Die opstel van Docker

Om die afhanklikheids- en installeringsfoute te vermy, het ek besluit om 'n aangepaste Docker -beeld vir hierdie projek te bou (sien wikipedia.org - Docker). As u nog nooit van Docker gebruik of gehoor het nie, hoef u nie bekommerd te wees nie; ek sal stap vir stap verduidelik hoe u dit in hierdie projek kan gebruik. Eintlik is dit super maklik! As u hierdie projek op 'n plaaslike installasie wil uitvoer (in plaas van in 'n Docker -houer), gee ek u 'n paar wenke. Maar dit word sterk aanbeveel om die Docker -beeld te gebruik. Ek bou dit immers om dit vir u makliker te maak om hierdie projek uit te voer!

Wat is Docker?

Let wel: hierdie deel bied agtergrondinligting oor Docker, wat oorgeslaan kan word as u net die kode wil laat loop.

Hierdie projek is die eerste keer dat ek Docker gebruik het, en dit is eenvoudig fantasties! Miskien het u gehoor van virtualenv of Anaconda vir Python? Docker is redelik soortgelyk in die sin dat u pakketweergawes maklik kan bestuur en verskillende Python -weergawes op een gasheerstelsel kan uitvoer deur 'n ander omgewing (of houer soos dit in Docker genoem word) te gebruik. Maar in vergelyking met virtualenv en Anaconda, is Docker baie kragtiger, aangesien dit nie net Python -pakkette bevat nie. In 'n Docker -houer kan u inderdaad ook die pakkette van die gewenste bedryfstelsel installeer en bestuur. Oorweeg byvoorbeeld 'n webwerf wat u wil migreer, wat 'n Python -webraamwerk (bv. Django) met 'n databasis (byvoorbeeld MySQL) bestuur. Sonder 'n Docker -houer moet u alle pakkette op die nuwe bediener installeer, 'n proses wat baie vatbaar is vir foute en foute. Aan die ander kant, as u webwerf in Docker gebou is, is dit basies net so maklik om te migreer as om die prentlêer/lêers na die nuwe bediener te skuif en dit/hulle uit te voer. Soos u kan dink, is Docker ook baie nuttig vir projekte op Instructables;)! As u meer wil weet oor Docker, gaan na hul webwerf: docker.org - Docker: Enterprise Container Platform. Laat ons nou aan die gang kom met Docker!

Docker installeer

Installeer Docker deur die volgende uit te voer:

curl -sSL https://get.docker.com | sh

Vervolgens word die gebruiker by die gebruikersgroep 'docker' gevoeg, wat die regte bied om Docker te laat loop. Dit word gedoen deur:

sudo usermod -aG docker $ USER

Nou moet u Docker kan bestuur. Dit kan bevestig word deur die hallo-wêreldbeeld uit te voer:

docker run hallo-wêreld

Laastens, laat ons die Docker -beeld trek wat alle afhanklikes bevat wat nodig is om die deurklokkie -Python -skrifte uit te voer. Hierdie proses kan 'n rukkie neem, aangesien die beeld redelik groot is (~ 1.5 GB). Voer uit:

docker pull erientes/deurklokkie

Let wel: die Dockerfile kan gevind word op die deurklokkie op Github. Nou is alles gereed om die deurklokkie -skrifte uit te voer, wat in die volgende stap bespreek sal word.

Plaaslike installasie

Weereens sou ek sterk aanbeveel om die Docker -beeld te gebruik in plaas van 'n plaaslike installasie. Maar om hierdie tutoriaal te voltooi, sal ek nou 'n paar van die stappe beskryf wat ek vir die plaaslike installasie geneem het.

Om die kode te kan gebruik, moet die python -weergawe> = 3.5 wees (ek het python 3.5.3 gebruik) en die volgende pakkette moet geïnstalleer word:

  • gesigherkenning
  • picamera
  • gevoelloos
  • Kussing
  • python-telegram-bot
  • RPi. GPIO

Hierdie skakel is baie nuttig: Github - Installeer dlib en face_recognition op 'n Raspberry Pi. Daar is egter 'n paar voorbehoude hier: 1) Kussing benodig ten minste Python 3.5, wat nie volgens hierdie metode geïnstalleer kan word nie. 2) Ook nie alle pakkette wat by die deurklokkieprojek benodig word nie, sal volgens hierdie metode geïnstalleer word. U moet dit egter kan installeer deur eenvoudig pip3 te gebruik.

Stap 6: Gebruik die deurklokkie -skrifte

Gebruik die deurklokkie -skrifte
Gebruik die deurklokkie -skrifte
Gebruik die deurklokkie -skrifte
Gebruik die deurklokkie -skrifte
Gebruik die deurklokkie -skrifte
Gebruik die deurklokkie -skrifte

Kry die skrifte

Die skrifte kan met die hand afgelaai word vanaf: github.com - Erientes/deurbel. Of as u Git geïnstalleer het, voer die volgende uit:

git -kloon

Skep aliasse

Om ons lewens 'n bietjie makliker te maak, laat ons 'n paar aliasse skep om die skrifte uit te voer. Voer uit:

bladblad ~/.bashrc

Voeg die volgende reëls by en stoor die lêer:

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'

Toets skrifte

Om te toets of alles reg geïnstalleer is, maak 'n nuwe terminale oop en voer uit:

doorbell_run voorbeelde/0_test_installation.py

Die resultaat moet eenvoudig 'n boodskap in die terminale venster wees wat sê 'Deurbelinstallasie is suksesvol beëindig!'. Voer die volgende uit om te toets of die Docker -houer toegang tot die kamera kan kry:

doorbell_run voorbeelde/1_test_camera.py

Deur 1_test_camera.py uit te voer, word 'n foto geneem en gestoor as 'test.jpg', wat gevind kan word in/home/pi/doorbell. Laastens kan die LED -bestuurders getoets word deur:

doorbell_run voorbeelde/2_test_voicehat_drivers.py

As hierdie skrif aan die gang is, behoort die LED in die arcade -skakelaar te reageer as die knoppie ingedruk word.

Hardloop deurklokkie skrifte

Om die Doorbell -skrifte uit te voer, moet u eers die Telegram -botbewyse verkry. Installeer Telegram op u telefoon en gaan na telegram.me - Botfather. Begin 'n gesprek en voer in:

/newbot

Vul 'n naam en 'n gebruikersnaam vir die bot in. Daarna kry u die toegangsteken. Kopieer die waarde na die lêer 'credentials_telegram_template.py' in/home/pi/doorbell en stoor dit in 'n nuwe lêer met die naam 'credentials_telegram.py'. Laastens, begin 'n gesprek met die bot wat u pas geskep het deur op die skakel te klik wat Botfather u verskaf.

Laastens, laat ons die deurklokkie met gesigsherkenning gebruik:

deurbel_loop main.py

Opmerkings:

As u meer wil weet oor hoe die kode werk, kyk dan na die opmerkings in die skrifte self. As u 'n vraag het oor die kode, kontak my asseblief via Github

Stap 7: Gebruik die deurklokkie

Image
Image
Gebruik die deurklokkie
Gebruik die deurklokkie
Gebruik die deurklokkie
Gebruik die deurklokkie

Laat ons die deurklokkie draf deur die volgende uit te voer:

deurbel_loop main.py Nadat die pakkette gelaai is, gaan die skrifte leeg. Daar is basies 2 dinge wat kan gebeur:

  1. Iemand lui die deurklokkie.
  2. Iemand word by die witlys gevoeg.

Iemand lui die deurklokkie

In hierdie geval begin die script foto's neem totdat dit 'n foto neem waarin 'n gesig opgespoor word. Na opsporing word 'n paar metodes van die python -pakket 'face_recognition' genoem om 'n 128 -kodering van die gesig te bereken. Vervolgens word die verkose kodering vergelyk met die enkodering in whitelist.csv en blacklist.csv. Die moontlike uitkomste lei tot die volgende reaksie:

In die witlys? Op swartlys? Reaksie
Ja Geen Groen lig brand.
Ja Ja Geel lig brand. Die deurklokkamera stuur foto's na die Telegram -bot met 'n oranje ikoon. Hierdie toestand kan gebeur as iemand by albei lyste gevoeg is. Byvoorbeeld, toe iemand eers welkom was, maar later op die swartlys was.
Geen Geen Geel lig brand. Die deurklokkamera stuur foto's na die Telegram -bot met 'n oranje ikoon.
Geen Ja Rooi liggie brand. Die deurklokkamera stuur foto's na die Telegram -bot met 'n rooi ikoon.

Iemand word by die witlys gevoeg

Om iemand by die witlys te voeg, druk die geel knoppie van die verkeerslig wanneer die deurklokkie in 'n ledige toestand is. Eerstens sal die geel lig brand. As die groen lig 3 keer knip, word die gesig van die persoon suksesvol by die witlys gevoeg. As die groen lig nie drie keer flikker nie, was die poging nie suksesvol nie. Druk in hierdie geval weer op die geel knoppie. U kan maklik verifieer of dit suksesvol was deur die deurklokkie te lui en te kyk of die groen lig verby is.

Hoe om iemand by die swartlys te voeg?

Dit is duidelik dat mense met 'n slegte voorneme nie verbygaan om 'n foto van hul gesig te gee nie. U kan dus foto's van berugte mense wat die polisie (byvoorbeeld) gepubliseer het, by die gids img/blacklist voeg. Elke uur word hierdie gids na nuwe beelde gekyk. As daar 'n nuwe beeld is, word die gesigskodering bereken en by swartlys gevoeg. Csv. Die prent word dan hernoem en na die map/img/blacklist/encoded verskuif.

Opmerkings:

  • Die gebruik van die skrifte deur aan te meld by die RPi bied meer beheer en inligting, maar die basiese beheer en inligting kan verkry word deur slegs die verkeersligskerm te gebruik.
  • Gesigsherkenning word geïmplementeer deur die python -pakket 'face_recognition' te gebruik. Hierdie pakket is gebaseer op Dlib, wat 'n nuutste algoritme bevat vir gesigsherkenning, wat 'n akkuraatheid van 99,38% op die etiketteer met die etiket van gesigte in die natuur verrig (bron: dlib.net-Gesigsherkenning van hoë gehalte met diep metrieke leer)).
Ondersteunende tegniese wedstryd
Ondersteunende tegniese wedstryd
Ondersteunende tegniese wedstryd
Ondersteunende tegniese wedstryd

Eerste prys in die Assistive Tech Contest

Aanbeveel: