Tartalomjegyzék:
- 1. lépés: Anyagok
- 2. lépés: Kábelezés
- 3. lépés: A burkolat építése
- 4. lépés: A kamera konfigurálása
- 5. lépés: A Docker beállítása
- 6. lépés: Az ajtócsengő -parancsfájlok futtatása
- 7. lépés: Az ajtócsengő használata
Videó: Ajtócsengő arcfelismeréssel: 7 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Motiváció
Az utóbbi időben rablások hulláma volt hazámban, amelyek az otthonukban élő idős embereket célozzák meg. Általában maguk a lakók biztosítják a hozzáférést, mivel a látogatók meggyőzik őket arról, hogy gondozók/ápolók. Szavakon kívül, mennyire dühösek és szomorúak ezek a történetek. Az otthon legyen az első biztos menedék, és még inkább, ha már kiszolgáltatott helyzetben van, amikor kint tartózkodik. Ennek tudatában kezdtem el ezt a projektet.
Általános információ
A csengőrendszert elsősorban idős vagy látássérült személyek számára tervezték, és működése meglehetősen egyszerű. Röviden, az ajtócsengő kapcsolója aktiválja a kamerát, hogy felvételt kapjon. Ezután a felvételeken lévő arcokat észlelik, és egyeztetik egy fehér listával és feketelistával. Az utas világos vizuális visszajelzést kap a közlekedési lámpák világos kijelzőjén. Ezáltal a zöld, sárga vagy piros jelzőfény azt jelzi, hogy a személy (ek) szerepelnek az engedélyezőlistán, a rendszer számára ismeretlen, illetve a feketelistán. Ha a sárga vagy a piros lámpa kigyullad, a fényképet egy távirat bot küldi, hogy tájékoztassa/figyelmeztesse a hozzátartozót vagy a gondnokot.
Szaktudás szintje
A projektet olyan rajongók számára hozták létre, akik különösen kíváncsiak a számítógépes látás és a mesterséges intelligencia használatára. Ez az útmutató a kezdők közönségének készült, ezért ne aggódjon, ha nincs tapasztalata! Ezenkívül a projekt a tapasztaltabb gyártók számára is érdekes lehet, mivel a folyamat úgy van megszervezve, hogy a saját számítógépes látásmódjával és arcfelismerési ötleteivel nagy gond nélkül kibővítheti.
1. lépés: Anyagok
Terméklista minimális követelményekkel:
Termék | Link | Megjegyzés |
---|---|---|
Raspberry Pi 3b | RPi | A link az RPi 4 -et mutatja, mivel sokkal jobb a teljesítménye és majdnem azonos az ára, mint az RPi 3b -nek. |
Micro SD | amazon | Egy 16 GB -os vagy nagyobb méretű micro SD kártya elvégzi a feladatot. De az Amazon 16 GB -os kártyái most nagyjából ugyanolyan árúak, mint a 32 GB -os kártyák. |
Raspberry Pi kamera | amazon | A v1 kamera olcsóbb, de a v2 jobb és hosszabb ideig támogatott. |
15 tűs FPC flex kábel | amazon | A hossza valójában a projekt körülményeitől függ. Ha csak prototípust szeretne építeni, akkor az eredeti flex kábel teszi a dolgát. |
Tápegység 5V micro usb | Adafruit | Ez soha nem hagyott cserben! Kiváló minőség. (Nem a fotón) |
Arcade gombok beépített LED-del | amazon | Válassza ki a kívánt méretet, de a CAD kialakítás 60 mm -es gombokon alapul |
Ellenállások | amazon | Csak néhány 1k és 100 ohmos ellenállás kell. A normál 1/4W jó. |
Kondenzátorok 0,1 uF | amazon | Három kondenzátorra van szükség. (Nem a fotón) |
Jumper vezetékek / szalagkábel | AmazonAmazon | Ha pénzt szeretne spórolni magának, használhat régi floppy meghajtó szalagkábelt is (lásd a fotót). |
Zsugorcső / elektromos szalag | AmazonAmazon |
Szükséges eszközök:
Eszköz | Alapvető? | Megjegyzés |
---|---|---|
Forrasztópáka | Igen | |
Multiméter | Igen | |
Huzalcsupaszító | Igen | Vagy használhat kést/ollót. |
Lézervágó | Nem | |
3d nyomtató | Nem | |
Bilincsek | Nem | Hasznos a doboz együtt tartásához a tesztelési fázisban. |
Megjegyzések:
A projekt hozzáférhetőségének növelése érdekében úgy döntöttem, hogy Raspberry Pi 3b segítségével fejlesztem. Bár növeli a hozzáférhetőséget, csökkenti az alkalmazás képességeit, mivel az RPi -k nem olyan gyorsak. Ha egy gyorsabb fedélzeti számítógépet keres, érdemes megnézni az NVIDIA Jetson Nano -t
2. lépés: Kábelezés
A sematikus diagram a leginkább informatív ehhez a lépéshez, és teljesen magától értetődő. Ha még nem ismeri az elektronikát, használhatja a jelmagyarázatot. A komponens értékét (ha van) a vázlatos diagram tartalmazza. A fényképek segíthetnek abban, hogyan építsem fel az áramkört. Alapvetően minden összetevőt a lehető legközelebb az árkádgombhoz kötöttem, ami egyértelmű áttekintést eredményez a történésekről.
Megjegyzések:
- Nagyon szeretek szalagkábel -csatlakozókat használni, mivel ezek sokkal szilárdabbak, mint az egy jumper vezetékek.
- Ahogy javasolták, egy régi számítógép számítógépről lehúzott szalagkábelt használtam. Ez azonban kissé trükkös, mivel manuálisan kell megerősítenie a kábel konfigurációját. Ebben a projektben például megtudtam, hogy néhány lyuk össze van kötve egymással (valószínűleg az eredeti alkalmazás talajaként használták). Ezért később más kábelt kellett beszereznem, mint a képeken látható.
3. lépés: A burkolat építése
Kamera ház
A picamera számos burkolata szabadon letölthető az internetről. Tehát úgy döntök, hogy nem találom fel újra a kereket, és egy alapvető, de szép burkolatot választok az internetről: thingiverse.com - Raspberry pi kameratok/ház. (Kiáltás a tervező VGerhez.)
Közlekedési lámpa burkolata
A közlekedési lámpa burkolatához egy kis dobozt terveztem az Autodesk Fusion 360 -ban (amely szabadon letölthető, lásd Megjegyzések), amely minden hardverhez illeszkedik. A mellékletben megtalálja a helyi lézervágó cégnek küldött fájlt. Ezáltal a kialakítás 6 mm -es lemezvastagságon alapul. Ha azonban módosítani szeretné a dolgokat, akkor mindenféle fájlformátumhoz hozzáférhet ezen a linken keresztül. A képeken látható módon használhat kartondobozt is, ha nincs hozzáférése lézervágóhoz. A képen lévő kartondobozt használtam a prototípus készítéséhez, és varázslatosan működik.
Az összeszerelés meglehetősen egyszerű:
- Szerelje fel az Arcade kapcsolókat.
- Ügyeljen arra, hogy az ajtócsengő vezetékei ne legyenek szabadon.
- Csatlakoztassa a szalagkábelt az RPi -hez.
- Csavarja fel az RPi -t az alsó panelre.
- Csatlakoztassa a csengő vezetékét egy vezetékcsatlakozóhoz, és szerelje fel az alsó panelre is.
- Csatlakoztassa a Picamerát az RPi -hez.
- Fúrjon lyukat az egyik oldalsó panelbe a csengőváltó vezeték és az RPi tápkábel számára.
A huzalcsatlakozót a csengőkapcsoló vezetékeinek rögzítési pontjaként használják, így a későbbiekben egy meglévő csengőhöz rögzíthető. Most minden a helyén van és összeragasztható. Előbb azonban érdemes befejezni a következő lépéseket, hogy megbizonyosodjon arról, hogy minden megfelelően működik.
Megjegyzések:
Az Autodesk Fusion 360 szabadon elérhető a hobbisták számára! Ha meg szeretné kapni a példányát, látogasson el erre a linkre: autodesk.com - Fusion 360 For Hobbyists. Vannak bizonyos kifejezések, ezért feltétlenül olvassa el és alkalmazza azokat. Ez volt az első projektem a Fusion 360 -mal, és nincs sok tapasztalatom a CAD szoftver használatában, de meg kell mondanom, hogy nagyon szeretem a szoftvert és a Fusion 360 -hoz tartozó összes kiegészítő eszközt
4. lépés: A kamera konfigurálása
Feltételezzük, hogy a Raspbian telepítve van, és GUI módban fut. Ha még nincs telepítve a Raspbian, kövesse ezt a cikket: raspberrypi.org - Az operációs rendszer -lemezképek telepítése. Ha elindítja a Raspbian programot, látnia kell egy asztalt, ahogy a képeken látható.
Konfiguráljuk a kamerát az RPi -n, és nézzük meg, működik -e! Az itt leírt módszer közvetlenül a raspberrypi.org webhelyről származik - Dokumentáció. Először frissítsünk a legújabb csomagokra (beleértve a kamera firmware -jét is) a következő parancsok végrehajtásával egy terminál ablakban (lásd a képeket):
sudo apt frissítés
sudo apt teljes frissítés
Ezután engedélyezni kell a kamerát a következő paranccsal:
sudo raspi-config
A menüben lépjen az 5. Interfész opciók -> P1 kamera pontra. Válassza ki, hogy engedélyezi -e a fényképezőgépet, és indítsa újra az RPi -t a következők végrehajtásával:
újraindítás
A fényképezőgépet most megfelelően kell konfigurálni. A terminál ablakának megnyitásával tesztelhető, és végrehajtható:
raspistill -v -o /home/pi/test.jpg
A képet a /home /pi mappába menti.
5. lépés: A Docker beállítása
A függőség és a telepítési hibák elkerülése érdekében úgy döntöttem, hogy létrehozok egy egyedi Docker -képet ehhez a projekthez (lásd: wikipedia.org - Docker). Ha soha nem használt vagy hallott a Dockerről, ne aggódjon, lépésről lépésre elmagyarázom, hogyan kell használni ebben a projektben. Valójában szuper könnyű! Ha ezt a projektet helyi telepítésen szeretné futtatni (nem Docker -tárolóban), adok néhány tippet. De erősen ajánlott a Docker kép használata. Végül is azért építem, hogy megkönnyítsem a projekt futtatását!
Mi az a Docker?
Megjegyzés: ez a rész néhány háttérinformációt tartalmaz a Dockerről, amelyeket kihagyhat, ha csak a kódot szeretné futtatni.
Ez a projekt az első alkalom, amikor a Docker -t használtam, és egyszerűen fantasztikus! Talán hallott már a virtualenv -ről vagy az Anaconda for Python -ról? Nos, a Docker abban az értelemben nagyon hasonló, hogy könnyen kezelheti a csomagverziókat, és különböző Python verziókat futtathat egy gazdarendszeren egy másik környezet (vagy a Dockerben nevezett tároló) használatával. De a virtualenvhez és az Anacondához képest a Docker sokkal erősebb, mivel nem korlátozódik csak a Python csomagokra. Valóban, egy Docker tárolóban telepítheti és kezelheti a kívánt operációs rendszer csomagjait is. Vegyünk például egy áttelepíteni kívánt webhelyet, amely Python webkeretet (pl. Django) futtat, és rendelkezik adatbázissal (pl. MySQL). Docker -tároló nélkül minden csomagot telepítenie kell az új szerverre, ami nagyon hajlamos a hibákra és hibákra. Másrészt, amikor webhelyét Dockerben építették, az áttelepítés alapvetően olyan egyszerű, mint a képfájl/fájlok áthelyezése az új szerverre, és azok futtatása. Ahogy el tudod képzelni, a Docker nagyon hasznos az Instructables projektjeiben is;)! Ha többet szeretne tudni a Dockerről, keresse fel a weboldalukat: docker.org - Docker: Enterprise Container Platform. Most induljunk fel a Dockerrel!
A Docker telepítése
A Docker telepítéséhez hajtsa végre a következőket:
curl -sSL https://get.docker.com | SH
Ezután a felhasználó hozzáadódik a „docker” felhasználói csoporthoz, amely biztosítja a Docker futtatásának jogait. Ezt a következők végzik:
sudo usermod -aG dokkoló $ USER
Most már képesnek kell lennie a Docker futtatására. Ezt a hello-world kép futtatásával lehet érvényesíteni:
docker fuss hello-world
Végül húzzuk meg a Docker -képet, amely tartalmazza az ajtócsengő Python -szkriptek futtatásához szükséges összes függőséget. Ez a folyamat eltarthat egy ideig, mivel a kép meglehetősen nagy (~ 1,5 GB). Végrehajtás:
dokkoló erientes/csengő
Megjegyzés: A Dockerfile megtalálható a Github ajtócsengő -tárházában. Most minden készen áll az ajtócsengő -parancsfájlok futtatására, amelyeket a következő lépésben tárgyalunk.
Helyi telepítés
Ismételten javaslom a Docker kép használatát a helyi telepítés helyett. De hogy ez az oktatóanyag teljes legyen, most leírom a helyi telepítés során tett néhány lépést.
A kód futtatásához a python verziójának> = 3.5 -nek kell lennie (én a python 3.5.3 -at használtam), és a következő csomagokat kell telepíteni:
- arcfelismerés
- picamera
- szar
- Párna
- python-távirat-bot
- RPi. GPIO
Ez a link nagyon hasznos: Github - Telepítse a dlib -t és a face_recognition -t egy Raspberry Pi -re. Van azonban néhány figyelmeztetés: 1) A párnának legalább a Python 3.5 -re van szüksége, amelyet nem a módszer szerint telepítenek. 2) Ezenkívül nem minden csomagot kell telepíteni a csengőprojektben, ha ezt a módszert követik. Azonban telepítenie kell a pip3 használatával.
6. lépés: Az ajtócsengő -parancsfájlok futtatása
Szerezd meg a szkripteket
A szkriptek manuálisan letölthetők innen: github.com - Erientes/doorbell. Vagy ha telepítette a Git programot, hajtsa végre a következőket:
git klón
Hozzon létre álneveket
Most, hogy kicsit megkönnyítsük az életünket, hozzunk létre néhány álnevet a szkriptek futtatásához. Végrehajtás:
levélpad ~/.bashrc
Adja hozzá a következő sorokat, és mentse a fájlt:
alias doorbell_run = 'docker run -privilegizált -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'
Teszt szkriptek
Annak ellenőrzéséhez, hogy minden megfelelően van -e telepítve, nyisson meg egy új terminált, és hajtsa végre:
doorbell_run példa/0_test_installation.py
Az eredménynek egyszerűen egy üzenetnek kell lennie a terminál ablakában, amely azt mondja: „Ajtócsengő telepítése sikeresen befejeződött!”. Annak teszteléséhez, hogy a kamera elérhető -e a Docker -tároló segítségével, futtassa:
ajtócsengő_példák/1_test_camera.py
Az 1_test_camera.py futtatásával egy fénykép készül és mentésre kerül „test.jpg” néven, amely a/home/pi/doorbell mappában található. Végül a LED -illesztőprogramok tesztelhetők a következők végrehajtásával:
doorbell_run példa/2_test_voicehat_drivers.py
Amikor ez a szkript fut, az arcade kapcsoló LED -jének reagálnia kell a gomb megnyomásakor.
Ajtócsengő -szkriptek futtatása
A Doorbell szkriptek futtatásához először meg kell szerezni a Telegram bot hitelesítő adatait. Telepítse a Telegramot a telefonjára, és menjen a telegram.me - Botfather oldalra. Kezdjen beszélgetést, és írja be:
/newbot
Adja meg a bot nevét és felhasználónevét. Ezt követően megkapja a hozzáférési tokent. Másolja ezt az értéket a "credentials_telegram_template.py" fájlba a/home/pi/doorbell mappában, és mentse el egy új, "credentials_telegram.py" nevű fájlba. Végül kezdjen beszélgetést az imént létrehozott botjával a Botfather által biztosított linkre kattintva.
Végül futtassuk az Arcfelismeréses ajtócsengőt:
doorbell_run main.py
Megjegyzések:
Ha többet szeretne megtudni a kód működéséről, nézze meg a szkriptek megjegyzéseit. Ha kérdése van a kóddal kapcsolatban, kérjük, vegye fel velem a kapcsolatot a Githubon keresztül
7. lépés: Az ajtócsengő használata
Futtassuk le a csengő parancsfájlt a következő végrehajtással:
doorbell_run main.py A csomagok betöltése után a szkriptek tétlenné válnak. Alapvetően 2 dolog történhet:
- Valaki csenget az ajtón.
- Valaki felkerül az engedélyezőlistára.
Valaki csenget az ajtón
Ebben az esetben a forgatókönyv addig kezd fotózni, amíg egy olyan fotót nem készít, amelyben arcot észlel. Az észlelést követően a python „face_recognition” csomagjának néhány módszere meghívásra kerül az arc 128 -as kódolásának kiszámításához. Ezt követően a kapott kódolást összehasonlítjuk a whitelist.csv és a blacklist.csv kódolásokkal. A lehetséges eredmények a következő választ eredményezik:
Fehér listán? | Feketelistán? | Válasz |
---|---|---|
Igen | Nem | A zöld fény bekapcsol. |
Igen | Igen | A sárga fény bekapcsol. Az ajtócsengő kamera fotókat küld a narancssárga ikonnal ellátott Telegram botnak. Ez az állapot akkor fordulhat elő, ha valakit mindkét listához hozzáadtak. Például amikor valakit eleinte szívesen láttak, később azonban feketelistára került. |
Nem | Nem | A sárga fény bekapcsol. Az ajtócsengő kamera fotókat küld a narancssárga ikonnal ellátott Telegram botnak. |
Nem | Igen | A piros lámpa kigyullad. Az ajtócsengő kamera fényképeket küld a Telegram botnak, piros ikonnal. |
Valaki felkerül az engedélyezőlistára
Ha valakit fel kíván venni az engedélyezőlistára, nyomja meg a közlekedési lámpa sárga gombját, amikor a csengő készenléti állapotban van. Először is, a sárga lámpa kigyullad. Ha a zöld fény háromszor felvillan, a személy arca sikeresen felkerült az engedélyezőlistára. Ha a zöld jelzőfény nem villog háromszor, a kísérlet nem volt sikeres. Ebben az esetben nyomja meg újra a sárga gombot. Könnyedén ellenőrizheti, hogy sikeres volt -e, ha csenget, és ellenőrzi, hogy a zöld lámpa átment -e.
Hogyan lehet valakit felvenni a feketelistára?
Nyilvánvaló, hogy a rossz szándékú emberek nem fognak elmenni, hogy fényképet adjanak nekünk az arcukról. Így ehelyett felveheti az img/feketelista mappába a hírhedt emberek képeit, amelyeket (például) a rendőrség tett közzé. Óránként ellenőrzik, hogy vannak -e új mappák a mappában. Ha új kép van, az arckódolás kiszámításra kerül, és hozzáadódik a feketelistához.csv. A képet ezután átnevezik, és áthelyezik az/img/blacklist/kódolt mappába.
Megjegyzések:
- A szkripteknek az RPi -be való bejelentkezéssel történő kezelése sokkal több ellenőrzést és információt biztosít, de az alapvető vezérlés és információk csak a közlekedési lámpák kijelzőjével érhetők el.
- Az arcfelismerés a „face_recognition” python csomag használatával valósul meg. Ez a csomag a Dlib-en alapul, amely a legkorszerűbb arcfelismerő algoritmust tartalmazza, amely 99,38% -os pontosságot végez a Címkézett arcok a vadon benchmarkban (forrás: dlib.net-Kiváló minőségű arcfelismerés mély metrikus tanulással).
Első díj a segítő technikai versenyen
Ajánlott:
Nest Hello - Ajtócsengő hangjelzés integrált transzformátorral (220-240 V AC - 16 V AC): 7 lépés (képekkel)
Nest Hello - Ajtócsengő hangjelzés integrált transzformátorral UK (220-240V AC - 16V AC): Szeretnék otthon telepíteni egy Nest Hello ajtócsengőt, egy gizmo -t, amely 16V -24V AC -ről működik (MEGJEGYZÉS: egy 2019 -es szoftverfrissítés megváltoztatta Európát verziótartomány 12V-24V AC). A standard ajtócsengő integrált transzformátorokkal az Egyesült Királyságban kapható
Mozgásérzékelő ajtócsengő: 5 lépés (képekkel)
Mozgásérzékelő csengő: Amikor a fiamnak, Jaydennek elmondtam a kihívást, azonnal eszébe jutott, hogy használja a LEGO WeDo készletet. Évek óta játszott a Legos -szal, de csak a múlt tanév elején kapta meg a lehetőséget, hogy kódoljon a WeDo 2.0 -val
Vezeték nélküli ajtócsengő - (Raspberry PI és Amazon Dash): 4 lépés (képekkel)
Vezeték nélküli csengő - (Raspberry PI és Amazon Dash): Mit tesz? (lásd a videót) Amikor megnyomja a gombot, Raspberry felfedezi az új eszköz naplózását a vezeték nélküli hálózaton. Így felismeri a megnyomott gombot, és továbbítja az ezzel kapcsolatos információkat a mobiltelefonjához (vagy a készülékéhez)
A hip -hop ajtócsengő: 9 lépés (képekkel)
A hip -hop ajtócsengő: egy ajtócsengő több mintával és egy forgóasztallal, amelyet valóban megkarcolhat! Szóval, néhány évvel ezelőtt egy Facebook -bejegyzés után, amely arról szólt, hogy egy ajtócsengő ötlete van, külön csengetéssel a házam minden egyes személyének, barátom bevetette az ötletet, hogy tartalmazzon
IP kamera arcfelismeréssel az ESP32-CAM kártya használatával: 5 lépés
IP kamera arcfelismeréssel az ESP32-CAM kártya használatával: Ez a bejegyzés más, mint a többi, és megnézzük az nagyon érdekes ESP32-CAM táblát, amely meglepően olcsó (kevesebb mint 9 USD) és könnyen használható. Létrehozunk egy egyszerű IP kamerát, amellyel élő videofolyamot lehet streamelni a 2