Obsah:
- Krok 1: Materiály
- Krok 2: Zapojení
- Krok 3: Stavba pouzdra
- Krok 4: Konfigurace kamery
- Krok 5: Nastavení Dockeru
- Krok 6: Spuštění skriptů zvonku
- Krok 7: Použití zvonku
Video: Domovní zvonek s rozpoznáváním tváře: 7 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Motivace
V poslední době v mé zemi došlo k vlně loupeží, které jsou zaměřeny na starší lidi v jejich vlastních domovech. Obvykle je přístup umožněn samotnými obyvateli, protože je návštěvníci přesvědčují, že jsou pečovateli/zdravotními sestrami. Je jen za slovy, jak naštvaný a smutný ve mně tyto příběhy působí. Domov by měl být vaším prvním bezpečným útočištěm a ještě více, pokud jste již ve zranitelné situaci, když jste venku. S tímto vědomím jsem zahájil tento projekt.
Obecná informace
Systém dveřních zvonků je navržen hlavně pro starší osoby nebo osoby se zrakovým postižením a funguje velmi jednoduše. Stručně řečeno, spínač zvonku spustí kameru, aby získala záběry. Dále jsou tváře na záběrech detekovány a přiřazeny k whitelist a blacklist. Cestující získá jasnou vizuální zpětnou vazbu díky přehlednému semaforovému displeji. Zelené, žluté nebo červené světlo tímto označuje, že osoby jsou na seznamu povolených, neznámých v systému nebo na černé listině. Pokud se spustí žluté nebo červené světlo, fotografii odešle telegramový robot, aby informoval/varoval příbuzného nebo správce.
Úroveň odbornosti
Projekt byl vytvořen pro nadšence, kteří jsou obzvláště zvědaví na používání počítačového vidění a umělé inteligence. Tento návod je určen pro publikum začátečníků, takže se nemusíte bát, pokud nemáte žádné zkušenosti! Kromě toho může být projekt zajímavý i pro zkušenější tvůrce, protože potrubí je organizováno tak, že jej můžete bez větších potíží rozšířit o vlastní nápady pro počítačové vidění a rozpoznávání tváří.
Krok 1: Materiály
Seznam produktů s minimálními požadavky:
Produkt | Odkaz | Komentář |
---|---|---|
Raspberry Pi 3b | RPi | Link ukazuje RPi 4, protože má mnohem lepší výkon a téměř stejnou cenu jako RPi 3b. |
Micro SD | Amazonka | Práci zvládne karta micro SD o velikosti 16 GB nebo větší. Ale 16 GB karty na Amazonu jsou nyní do značné míry za stejnou cenu jako 32 GB karty. |
Fotoaparát Raspberry Pi | Amazonka | Camera v1 je levnější, ale v2 je lepší a bude delší dobu podporována. |
15kolíkový flex kabel FPC | Amazonka | Délka ve skutečnosti závisí na okolnostech provádění tohoto projektu. Pokud chcete jen postavit prototyp, původní flex kabel to udělá. |
Napájecí zdroj 5v micro usb | Adafruit | Tenhle se nikdy nezklamal! Skvělá kvalita. (Není na fotce) |
Arkádová tlačítka s vestavěnou LED | Amazonka | Vyberte požadovanou velikost, ale návrh CAD je založen na 60mm tlačítkách |
Rezistory | Amazonka | Potřebujete jen pár odporů 1k a 100 ohmů. Pravidelné 1/4W jsou v pořádku. |
Kondenzátory 0,1 uF | Amazonka | Jsou potřeba tři kondenzátory. (Není na fotce) |
Propojovací vodiče / plochý kabel | Amazon Amazon | Pokud chcete ušetřit nějaké peníze, můžete také použít starý plochý kabel disketové mechaniky (viz foto). |
Smršťovací bužírka / Elektrická páska | Amazon Amazon |
Potřebné nástroje:
Nářadí | Nezbytný? | Komentář |
---|---|---|
Páječka | Ano | |
Multimetr | Ano | |
Odstraňovač drátů | Ano | Nebo můžete použít nůž/nůžky. |
Laserová řezačka | Ne | |
3D tiskárna | Ne | |
Svorky | Ne | Užitečné pro udržení krabice pohromadě ve fázi testování. |
Poznámky:
Aby se zvýšila přístupnost projektu, rozhodl jsem se jej vyvinout pomocí Raspberry Pi 3b. Zatímco zvyšuje přístupnost, snižuje možnosti aplikace, protože RPi nejsou tak rychlé. Pokud hledáte rychlejší jednodeskový počítač, můžete se podívat na NVIDIA Jetson Nano
Krok 2: Zapojení
Schematický diagram je pro tento krok nejinformativnější a je zcela samozřejmý. Pokud jste v elektronice nováčkem, můžete použít obrázek legendy. Hodnota součásti (pokud existuje) je uvedena ve schematickém diagramu. Fotografie mohou pomoci zjistit, jak stavím obvod. V zásadě jsem připojil všechny komponenty co nejblíže k arkádovému tlačítku, což má za následek jasný přehled o tom, co se děje.
Poznámky:
- Opravdu rád používám konektory plochých kabelů, protože jsou mnohem odolnější než použití jednoduchých propojovacích vodičů.
- Jak jsem navrhl, použil jsem uklizený plochý kabel ze starého počítače. To je ale trochu ošidné, protože konfiguraci kabelu budete muset potvrdit ručně. V tomto projektu jsem například zjistil, že některé otvory byly navzájem spojeny (pravděpodobně použity jako zem pro původní aplikaci). Proto jsem později musel získat jiný kabel, jak vidíte na obrázcích.
Krok 3: Stavba pouzdra
Pouzdro kamery
Mnoho obalů pro pikameru lze volně stáhnout z internetu. Rozhodl jsem se tedy, že neobjevím znovu kolo a vyberu si základní, ale pěkné pouzdro z internetu: thingiverse.com - pouzdro/pouzdro na fotoaparát Raspberry pi. (Výkřik designérovi VGerovi.)
Plášť semaforu
Pro pouzdro semaforu jsem navrhl malou krabičku v Autodesk Fusion 360 (která je volně ke stažení, viz Poznámky), která se hodí pro veškerý hardware. V příloze najdete soubor, který jsem zaslal své místní laserové řezací společnosti. Přitom je design založen na tloušťce plechu 6 mm. Pokud však chcete věci upravit, můžete pomocí tohoto odkazu přistupovat ke všem druhům formátů souborů. Jak je znázorněno na obrázcích, můžete také použít kartonovou krabici, pokud nemáte přístup k laserové řezačce. Kartonovou krabici na obrázku jsem použil pro prototypování a funguje to jako kouzlo.
Sestava je docela přímočará:
- Namontujte přepínače Arcade.
- Dbejte na to, aby vodiče zvonku zůstaly volné.
- Připojte plochý kabel k RPi.
- Zašroubujte RPi na spodní panel.
- Připojte vodiče zvonku k drátovému konektoru a připevněte jej také ke spodnímu panelu.
- Připojte Picameru k RPi.
- Do jednoho z bočních panelů vyvrtejte otvor pro spínací drát zvonku a napájecí vodič RPi.
Drátový konektor se používá jako montážní bod pro kabely spínače zvonku, takže jej lze později připevnit ke stávajícímu zvonku. Vše je nyní na svém místě a lze je slepit. Nejprve však možná budete chtít dokončit další kroky, abyste se ujistili, že vše funguje tak, jak má.
Poznámky:
Autodesk Fusion 360 je volně dostupný pro fandy! Pokud chcete získat svou kopii, navštivte tento odkaz: autodesk.com - Fusion 360 For Hobbyists. Existují určité podmínky, proto si je přečtěte a použijte je. Byl to můj první projekt s Fusion 360 a nemám s používáním CAD softwaru mnoho zkušeností, ale musím říci, že se mi software a všechny další nástroje, které s Fusion 360 přicházejí, opravdu líbí
Krok 4: Konfigurace kamery
Předpokládá se, že máte nainstalovaný Raspbian a že běží v režimu GUI. Pokud ještě nemáte nainstalovaný Raspbian, můžete se řídit tímto článkem: raspberrypi.org - Instalace obrazů operačního systému. Pokud spustíte Raspbian, měla by se vám zobrazit pracovní plocha, jak je znázorněno na obrázcích.
Pojďme nakonfigurovat kameru na RPi a uvidíme, jestli to funguje! Zde popsaná metoda je přímo z raspberrypi.org - dokumentace. Nejprve aktualizujme nejnovější balíčky (včetně firmwaru fotoaparátu) spuštěním následujících příkazů v okně terminálu (viz obrázky):
sudo apt aktualizace
sudo apt plná aktualizace
Dále je třeba kameru povolit pomocí následujícího příkazu:
sudo raspi-config
V nabídce přejděte na 5. Možnosti rozhraní -> Kamera P1. Zvolte kameru a restartujte RPi spuštěním:
restartovat
Kamera by nyní měla být správně nakonfigurována. Lze jej otestovat otevřením okna terminálu a spuštěním:
raspistill -v -o /home/pi/test.jpg
Obrázek se uloží do: /home /pi.
Krok 5: Nastavení Dockeru
Abych se vyhnul závislostem a chybám při instalaci, rozhodl jsem se pro tento projekt vytvořit vlastní obrázek Dockeru (viz wikipedia.org - Docker). Pokud jste o Dockeru nikdy nepoužili ani neslyšeli, nemusíte mít obavy, krok za krokem vysvětlím, jak jej v tomto projektu použít. Ve skutečnosti je to super snadné! V případě, že chcete tento projekt spustit na místní instalaci (místo v kontejneru Dockeru), dám vám pár tipů. Důrazně se však doporučuje použít obrázek Dockeru. Koneckonců jsem to postavil, abych vám usnadnil spuštění tohoto projektu!
Co je Docker?
Poznámka: tato část poskytuje několik základních informací o Dockeru, které lze přeskočit, pokud chcete spustit kód.
Tento projekt jsem poprvé použil Docker a je prostě úžasný! Možná jste slyšeli o virtualenv nebo Anaconda pro Python? Docker je velmi podobný v tom smyslu, že můžete snadno spravovat verze balíčků a spouštět různé verze Pythonu na jednom hostitelském systému pomocí jiného prostředí (nebo kontejneru, jak se tomu říká v Dockeru). Ale ve srovnání s virtualenv a Anaconda je Docker mnohem výkonnější, protože není omezen pouze na balíčky Pythonu. V kontejneru Docker můžete skutečně instalovat a spravovat také balíčky požadovaného operačního systému. Zvažte například web, který chcete migrovat a který provozuje webový framework Python (např. Django) s databází (např. MySQL). Bez kontejneru Dockeru byste museli nainstalovat všechny balíčky na nový server, což je proces, který je velmi náchylný k chybám a chybám. Na druhou stranu, když byl váš web vytvořen v Dockeru, je migrace v podstatě stejně snadná jako přesunutí souboru/souborů obrázku na nový server a jejich spuštění. Dokážete si asi představit, Docker je velmi užitečný i pro projekty na Instructables;)! Pokud se chcete o Dockeru dozvědět více, podívejte se na jejich web: docker.org - Docker: Enterprise Container Platform. Pojďme tedy začít pracovat s Dockerem!
Instalace Dockeru
Nainstalujte Docker spuštěním:
curl -sSL https://get.docker.com | sh
Dále je uživatel přidán do skupiny uživatelů „docker“, která poskytuje práva ke spuštění Dockeru. To provádí:
sudo usermod -aG docker $ USER
Nyní byste měli mít možnost spustit Docker. To lze ověřit spuštěním obrazu hello-world:
docker run hello-world
Nakonec si stáhneme obrázek Dockeru, který obsahuje všechny závislosti potřebné ke spuštění skriptů domovského zvonku Pythonu. Tento proces může chvíli trvat, protože obrázek je poměrně velký (~ 1,5 GB). Vykonat:
docker pull erientes/domovní zvonek
Poznámka: soubor Dockerfile najdete v úložišti zvonků na Githubu. Nyní je vše připraveno ke spuštění skriptů zvonku, o nichž bude řeč v dalším kroku.
Místní instalace
Opět bych velmi doporučil použít obrázek Dockeru místo lokální instalace. Ale aby byl tento návod kompletní, nyní popíšu některé kroky, které jsem provedl pro místní instalaci.
Aby bylo možné spustit kód, verze pythonu by měla být> = 3,5 (použil jsem python 3.5.3) a je třeba nainstalovat následující balíčky:
- rozpoznávání obličejů
- pikamera
- otupělý
- Polštář
- python-telegram-bot
- RPi. GPIO
Tento odkaz je docela užitečný: Github - Nainstalujte dlib a face_recognition na Raspberry Pi. Zde však existuje několik upozornění: 1) Pillow potřebuje alespoň Python 3.5, který nebude nainstalován podle této metody. 2) Také ne všechny balíčky, které jsou potřebné v projektu zvonku, nebudou nainstalovány podle této metody. Měli byste jej však nainstalovat jednoduše pomocí pip3.
Krok 6: Spuštění skriptů zvonku
Získejte skripty
Skripty lze ručně stáhnout z: github.com - Erientes/domovní zvonek. Nebo pokud máte nainstalovaný Git, spusťte:
klon git
Vytvářejte aliasy
Abychom si teď trochu usnadnili život, vytvořme si nějaké aliasy pro spouštění skriptů. Vykonat:
listová podložka ~/.bashrc
Přidejte následující řádky a soubor uložte:
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'
Testovací skripty
Chcete -li vyzkoušet, zda je vše správně nainstalováno, otevřete nový terminál a spusťte:
doorbell_run examples/0_test_installation.py
Výsledkem by měla být jednoduše zpráva v okně terminálu, která říká „Instalace zvonku úspěšně skončila!“. Chcete -li otestovat, zda je ke kameře přístupný pomocí kontejneru Docker, spusťte:
doorbell_run examples/1_test_camera.py
Spuštěním 1_test_camera.py bude fotografie pořízena a uložena jako 'test.jpg', který najdete v/home/pi/doorbell. A konečně, ovladače LED lze testovat spuštěním:
doorbell_run examples/2_test_voicehat_drivers.py
Když je tento skript spuštěn, LED dioda v arkádovém přepínači by měla reagovat na stisknutí tlačítka.
Spuštění skriptů zvonku
Abyste mohli spouštět skripty Doorbell, je třeba nejprve získat pověření robota Telegramu. Nainstalujte si do telefonu Telegram a přejděte na telegram.me - Botfather. Zahajte konverzaci a zadejte:
/newbot
Vyplňte jméno a uživatelské jméno pro robota. Poté vám bude poskytnut přístupový token. Zkopírujte tuto hodnotu do souboru 'credentials_telegram_template.py' v/home/pi/doorbell a uložte ji do nového souboru s názvem 'credentials_telegram.py'. Nakonec začněte konverzaci s robotem, kterého jste právě vytvořili, kliknutím na odkaz, který vám Botfather poskytne.
Nakonec spustíme zvonek s rozpoznáváním tváře:
doorbell_run main.py
Poznámky:
Pokud se chcete dozvědět více o tom, jak kód funguje, podívejte se na komentáře v samotných skriptech. Pokud máte dotaz ohledně kódu, kontaktujte mě prostřednictvím Github
Krok 7: Použití zvonku
Spustíme skript zvonku spuštěním:
doorbell_run main.py Po načtení balíků skripty zůstanou nečinné. V zásadě se mohou stát 2 věci:
- Někdo zazvoní u dveří.
- Někdo je přidán na seznam povolených.
Někdo zazvoní u dveří
V takovém případě začne skript pořizovat fotografie, dokud nevytvoří fotografii, na které je detekován obličej. Po detekci jsou volány některé metody z balíčku pythonu 'face_recognition' pro výpočet 128 kódování obličeje. Dále je získané kódování porovnáno s kódováním v whitelist.csv a blacklist.csv. Možné výsledky vedou k následující reakci:
Na seznamu povolených? | Na černé listině? | Odezva |
---|---|---|
Ano | Ne | Rozsvítí se zelené světlo. |
Ano | Ano | Rozsvítí se žluté světlo. Kamera u zvonku odesílá fotografie robotovi Telegramu s oranžovou ikonou. K tomuto stavu může dojít, pokud byl někdo přidán do obou seznamů. Například když byl někdo nejprve vítán, ale později byl na černé listině. |
Ne | Ne | Rozsvítí se žluté světlo. Kamera u zvonku odesílá fotografie robotovi Telegramu s oranžovou ikonou. |
Ne | Ano | Rozsvítí se červené světlo. Kamera u zvonku odesílá fotografie robotovi Telegramu s červenou ikonou. |
Někdo je přidán na seznam povolených
Pokud chcete někoho přidat na seznam povolených, stiskněte žluté tlačítko semaforu, když je zvonek v klidovém stavu. Nejprve se rozsvítí žluté světlo. Pokud zelené světlo třikrát zabliká, obličej osoby se úspěšně přidá na seznam povolených. Pokud zelené světlo 3x nebliká, pokus nebyl úspěšný. V takovém případě stiskněte znovu žluté tlačítko. Můžete snadno ověřit, zda byl úspěšný, zazvonit na zvonek a zkontrolovat, zda prošlo zelené světlo.
Jak přidat někoho na černou listinu?
Lidé se špatnými úmysly zjevně neprojdou kolem, aby nám poskytli fotografii své tváře. Místo toho tedy můžete do složky img/blacklist přidat obrázky známých lidí, které (například) policie zveřejnila. Každou hodinu se v této složce kontrolují nové obrázky. Pokud existuje nový obrázek, vypočítá se kódování tváře a přidá se na blacklist.csv. Obrázek je poté přejmenován a přesunut do složky/img/blacklist/encoded.
Poznámky:
- Ovládání skriptů po přihlášení do RPi poskytuje mnohem větší kontrolu a informace, ale základní ovládání a informace lze získat pouze pomocí semaforového displeje.
- Rozpoznávání obličejů je implementováno pomocí balíčku pythonu 'face_recognition'. Tento balíček je založen na Dlib, který obsahuje nejmodernější algoritmus rozpoznávání obličejů, který dosahuje přesnosti 99,38% na benchmarku Labeled Faces in the Wild (zdroj: dlib.net-High Quality Face Recognition with Deep Metric Learning).
První cena v asistenční technické soutěži
Doporučuje:
Plovoucí chytré magické zrcadlo ze starého notebooku s rozpoznáváním hlasu Alexa: 6 kroků (s obrázky)
Plovoucí chytré magické zrcadlo ze starého notebooku s rozpoznáváním hlasu Alexa: Přihlaste se do mého kurzu „Elektronika v kostce“zde: https://www.udemy.com/electronics-in-a-nutshell/?couponCode=TINKERSPARK Podívejte se také na můj kanál youtube zde pro další projekty a výukové programy pro elektroniku: https://www.youtube.com/channel/UCelOO
Proměňte svůj drátový zvonek na inteligentní zvonek s IFTTT: 8 kroků
Proměňte svůj drátový zvonek na inteligentní zvonek s IFTTT: Zvonek WiFi změní váš stávající kabelový zvonek na inteligentní zvonek. https://www.fireflyelectronix.com/product/wifidoor
Držák klíče pro kytaru Arduino Jack s rozpoznáváním jacku a OLED: 7 kroků
Držák klíče pro kytaru Arduino Jack s rozpoznáváním jacku a OLED: Úvod: Tento instruktáž podrobně popisuje stavbu mého držáku klíče pluginu Guitar Jack založeného na Arduinu. Toto je můj vůbec první instruktáž, takže mějte prosím se mnou, protože na cestě mohu provádět změny / aktualizace
Proměňte svůj drátový zvonek na inteligentní zvonek s domácím asistentem: 6 kroků
Proměňte svůj drátový zvonek na inteligentní zvonek s domácím asistentem: Proměňte svůj stávající kabelový zvonek na inteligentní zvonek. Získejte oznámení do svého telefonu nebo spárujte se svou stávající kamerou předních dveří a získejte upozornění na fotografii nebo video, kdykoli někdo zazvoní u vašeho zvonku. Další informace naleznete na adrese: fireflyelectronix.com/pro
Domovní zvonek Raspberry Pi: 3 kroky
Raspberry Pi Doorbell: Nedávno jsem si koupil dům se zlomeným zvonkem. Postavil jsem tedy takový, který umí dělat vlastní zvuky. Použil jsem balíček Adafruit Stereo Bonnet Pack s RPI Zero W Další součásti: SD karta USB zásuvka - Nebo můžete použít napájecí adaptér Pi, pokud máte vypnuté