Obsah:
- Krok 1: Materiály
- Krok 2: Zapojenie
- Krok 3: Stavba puzdra
- Krok 4: Konfigurácia fotoaparátu
- Krok 5: Nastavenie Dockeru
- Krok 6: Spustenie skriptov zvončeka
- Krok 7: Použitie zvončeka
Video: Domový zvonček s rozpoznaním tváre: 7 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Motivácia
V poslednej dobe v mojej krajine došlo k vlne lúpeží, ktoré sú zamerané na starších ľudí v ich vlastných domovoch. Obvykle im prístup umožňujú samotní obyvatelia, pretože ich návštevníci presvedčia, že sú opatrovateľmi/zdravotnými sestrami. Nie je možné slovami, ako nahnevane a smutne vo mne vyvolávajú tieto príbehy. Domov by mal byť vašim prvým bezpečným útočiskom a ešte viac, ak ste už vonku v zraniteľnom postavení. S týmto vedomím som začal tento projekt.
Všeobecné informácie
Systém zvončeka je určený hlavne pre starších ľudí alebo osoby so zrakovým postihnutím a funguje veľmi jednoducho. Stručne povedané, spínač zvončeka spustí fotoaparát, aby získal zábery. Ďalej sú tváre na záberoch rozpoznané a priradené k bielej listine a čiernej listine. Obyvateľ dostane jasnú vizuálnu spätnú väzbu pomocou jasného semaforového displeja. Zelené, žlté alebo červené svetlo týmto označuje, že osoby sú na bielej listine, neznámej systému alebo na čiernej listine. Ak sa spustí žlté alebo červené svetlo, fotografiu odošle telegramový robot, aby informoval/varoval príbuzného alebo správcu.
Úroveň odbornosti
Projekt bol vytvorený pre nadšencov, ktorí sú obzvlášť zvedaví na používanie počítačového videnia a umelej inteligencie. Tento návod je určený pre publikum začiatočníkov, takže sa nemusíte obávať, ak nemáte žiadne skúsenosti! Navyše, projekt môže byť zaujímavý aj pre skúsenejších tvorcov, pretože kanál je zorganizovaný tak, že ho môžete bez väčších problémov rozšíriť o svoje vlastné nápady na počítačové videnie a rozpoznávanie tváre.
Krok 1: Materiály
Zoznam produktov s minimálnymi požiadavkami:
Výrobok | Odkaz | Komentovať |
---|---|---|
Raspberry Pi 3b | RPi | Link ukazuje RPi 4, pretože má oveľa lepší výkon a takmer rovnakú cenu ako RPi 3b. |
Micro SD | Amazon | Úlohu zvládne karta micro SD s veľkosťou 16 GB alebo väčšou. Ale 16 GB karty na Amazone sú teraz v zásade za rovnakú cenu ako 32 GB karty. |
Kamera Raspberry Pi | Amazon | Camera v1 je lacnejšia, ale v2 je lepšia a bude dlhšie podporovaná. |
15 -pinový flexibilný kábel FPC | Amazon | Dĺžka skutočne závisí od okolností uskutočnenia tohto projektu. Ak chcete len postaviť prototyp, originálny flex kábel to zvládne. |
Napájanie 5v micro usb | Adafruit | Tento sa nikdy nesklamal! Skvelá kvalita. (Nie je na fotografii) |
Arkádové tlačidlá so vstavanou diódou LED | Amazon | Vyberte požadovanú veľkosť, ale návrh CAD je založený na 60 mm tlačidlách |
Rezistory | Amazon | Potrebujete iba jeden odpor 1k a 100 ohmov. Bežné 1/4W sú v poriadku. |
Kondenzátory 0,1 uF | Amazon | Potrebné sú tri kondenzátory. (Nie je na fotografii) |
Prepojovacie vodiče / plochý kábel | AmazonAmazon | Ak chcete ušetriť nejaké peniaze, môžete tiež použiť starý plochý kábel disketovej mechaniky (pozri fotografiu). |
Zmršťovacia trubica / elektrická páska | AmazonAmazon |
Potrebné nástroje:
Nástroj | Nevyhnutné? | Komentovať |
---|---|---|
Spájkovačka | Áno | |
Multimeter | Áno | |
Odstraňovač drôtov | Áno | Alebo môžete použiť nôž/nožnice. |
Laserová rezačka | Nie | |
3D tlačiareň | Nie | |
Svorky | Nie | Užitočné na udržanie škatule spolu vo fáze testovania. |
Poznámky:
Aby som zvýšil prístupnosť projektu, rozhodol som sa ho vyvinúť pomocou Raspberry Pi 3b. Aj keď zvyšuje prístupnosť, znižuje možnosti aplikácie, pretože RPi nie sú také rýchle. Ak hľadáte jeden palubný počítač, ktorý je rýchlejší, možno by ste sa mali pozrieť na NVIDIA Jetson Nano
Krok 2: Zapojenie
Schematický diagram je pre tento krok najinformatívnejší a je dosť vysvetľujúci. V prípade, že ste v elektronike nováčik, môžete použiť obrázok legendy. Hodnota komponentu (ak existuje) je uvedená v schematickom diagrame. Fotografie môžu pomôcť vidieť, ako staviam obvod. V zásade som všetky komponenty pripojil čo najbližšie k arkádovému tlačidlu, čo má za následok jasný prehľad o tom, čo sa deje.
Poznámky:
- Veľmi rád používam konektory plochých káblov, pretože sú oveľa odolnejšie ako používanie prepojovacích káblov s jednoduchým prepojením.
- Ako bolo navrhnuté, použil som zachytený plochý kábel zo starého počítača. Je to však trochu zložité, pretože konfiguráciu kábla budete musieť potvrdiť ručne. V tomto projekte som napríklad zistil, že niektoré otvory sú navzájom spojené (pravdepodobne použité ako zem pre pôvodnú aplikáciu). Preto som neskôr musel dostať iný kábel, ako vidíte na obrázkoch.
Krok 3: Stavba puzdra
Plášť fotoaparátu
Mnoho puzdier pre pikameru je možné voľne stiahnuť z internetu. Rozhodol som sa teda neobnovovať koleso a vybral som si základný, ale pekný kryt z internetu: thingiverse.com - puzdro/kryt na fotoaparát Raspberry pi. (Výkrik dizajnéra VGera.)
Plášť semaforu
Pre kryt semaforu som navrhol malú škatuľu v programe Autodesk Fusion 360 (ktorú je možné voľne stiahnuť, pozrite si časť Poznámky), ktorá je vhodná pre všetok hardvér. V prílohe nájdete súbor, ktorý som odoslal svojej miestnej spoločnosti na rezanie laserom. Týmto je dizajn založený na hrúbke plechu 6 mm. Ak však chcete veci upraviť, pomocou tohto odkazu máte prístup k všetkým druhom formátov súborov. Ako je znázornené na obrázkoch, môžete použiť aj kartónovú škatuľu, ak nemáte prístup k laserovej rezačke. Kartónovú škatuľu na obrázku som použil na prototypovanie a funguje to ako kúzlo.
Zostava je celkom priama:
- Namontujte spínače Arcade.
- Dbajte na to, aby káble pre zvonček boli voľné.
- Pripojte plochý kábel k RPi.
- Naskrutkujte RPi na spodný panel.
- Pripojte drôty zvončeka k drôtovému konektoru a pripevnite ho aj k spodnému panelu.
- Pripojte Picameru k RPi.
- Do jedného z bočných panelov vyvŕtajte otvor pre drôt na zapínanie zvončeka a napájací vodič RPi.
Káblový konektor sa používa ako upevňovací bod pre spínače zvončekového zvončeka, aby ho bolo možné neskôr pripevniť k existujúcemu zvončeku. Všetko je teraz na svojom mieste a je možné ich zlepiť. Možno však budete chcieť najskôr dokončiť ďalšie kroky, aby ste sa presvedčili, že všetko funguje tak, ako má.
Poznámky:
Autodesk Fusion 360 je voľne dostupný pre domácich majstrov! Ak chcete získať svoju kópiu, navštívte tento odkaz: autodesk.com - Fusion 360 For Hobbyists. Existujú určité výrazy, preto si ich prečítajte a uplatňujte. Bol to môj prvý projekt s Fusion 360 a nemám veľké skúsenosti s používaním softvéru CAD, ale musím povedať, že sa mi softvér a všetky dodatočné nástroje, ktoré sú súčasťou Fusion 360, veľmi páčia
Krok 4: Konfigurácia fotoaparátu
Predpokladá sa, že máte nainštalovaný Raspbian a že beží v režime GUI. Ak ešte nemáte nainštalovaný Raspbian, môžete postupovať podľa tohto článku: raspberrypi.org - Inštalácia obrazov operačného systému. Ak spustíte Raspbian, mala by sa vám zobraziť pracovná plocha, ako je znázornené na obrázkoch.
Nastavme kameru na RPi a uvidíme, či funguje! Tu opísaná metóda pochádza priamo z dokumentácie raspberrypi.org -. Najprv aktualizujme najnovšie balíčky (vrátane firmvéru fotoaparátu) vykonaním nasledujúcich príkazov v okne terminálu (pozri obrázky):
sudo apt aktualizácia
sudo apt úplná aktualizácia
Ďalej je potrebné kameru povoliť pomocou nasledujúceho príkazu:
sudo raspi-config
V ponuke prejdite na 5. Možnosti rozhrania -> Kamera P1. Vyberte, či chcete kameru povoliť a reštartovať RPi, vykonaním:
reštartovať
Fotoaparát by mal byť teraz správne nakonfigurovaný. Môžete to otestovať otvorením okna terminálu a spustením:
raspistill -v -o /home/pi/test.jpg
Obrázok sa uloží do: /home /pi.
Krok 5: Nastavenie Dockeru
Aby sa predišlo závislostiam a chybám pri inštalácii, rozhodol som sa pre tento projekt vytvoriť vlastný obrázok Dockera (pozri wikipedia.org - Docker). Ak ste o Dockere nikdy nepoužili ani o ňom nepočuli, žiadne obavy, krok za krokom vám vysvetlím, ako ho v tomto projekte použiť. V skutočnosti je to veľmi jednoduché! V prípade, že chcete spustiť tento projekt na lokálnej inštalácii (namiesto v Docker kontajneri), dám vám niekoľko tipov. Dôrazne sa však odporúča použiť obrázok Dockera. Koniec koncov, staviam ho, aby ste vám uľahčili spustenie tohto projektu!
Čo je Docker?
Poznámka: Táto časť poskytuje niekoľko základných informácií o Dockere, ktoré je možné preskočiť, ak chcete iba spustiť kód.
Tento projekt používam Docker prvýkrát a je to jednoducho úžasné! Možno ste už počuli o virtualenv alebo Anaconda pre Python? Docker je veľmi podobný v tom zmysle, že môžete jednoducho spravovať verzie balíkov a spúšťať rôzne verzie Pythonu na jednom hostiteľskom systéme pomocou iného prostredia (alebo kontajnera, ako sa tomu hovorí v Dockere). Ale v porovnaní s virtualenv a Anaconda je Docker oveľa výkonnejší, pretože nie je obmedzený iba na balíky Pythonu. V kontajneri Docker môžete skutočne nainštalovať a spravovať aj balíky požadovaného operačného systému. Zvážte napríklad web, ktorý chcete migrovať a na ktorom je spustený webový framework Python (napr. Django) s databázou (napr. MySQL). Bez kontajnera Docker by ste museli nainštalovať všetky balíky na nový server, čo je proces, ktorý je veľmi náchylný na chyby a chyby. Na druhej strane, keď je váš web vytvorený v programe Docker, migrácia je v zásade taká jednoduchá, ako presunutie súboru/súborov s obrázkom na nový server a ich spustenie. Dokážete si asi predstaviť, Docker je veľmi užitočný aj pre projekty na Instructables;)! Ak sa chcete dozvedieť viac o Dockere, navštívte ich webovú stránku: docker.org - Docker: Enterprise Container Platform. Teraz sa poďme pustiť do práce s Dockerom!
Inštalácia Dockera
Nainštalujte Docker spustením:
curl -sSL https://get.docker.com | sh
Ďalej je užívateľ pridaný do skupiny užívateľov „docker“, ktorá poskytuje práva na spustenie Dockeru. Vykonáva to:
sudo usermod -aG docker $ USER
Teraz by ste mali mať možnosť spustiť Docker. To je možné overiť spustením obrazu ahoj sveta:
docker run ahoj svet
Nakoniec stiahneme obrázok Dockera, ktorý obsahuje všetky závislosti potrebné na spustenie skriptov Python pri zvončeku. Tento proces môže chvíľu trvať, pretože obrázok je dosť veľký (~ 1,5 GB). Vykonať:
docker pull erientes/domový zvonček
Poznámka: súbor Dockerfile sa nachádza v úložisku zvončekov na Github. Teraz je všetko pripravené na spustenie skriptov zvončeka, o ktorých sa bude diskutovať v nasledujúcom kroku.
Miestna inštalácia
Opäť by som veľmi odporučil použiť obrázok Docker namiesto lokálnej inštalácie. Aby bol tento návod kompletný, teraz popíšem niektoré kroky, ktoré som vykonal pri lokálnej inštalácii.
Aby bolo možné spustiť kód, verzia pythonu by mala byť> = 3,5 (použil som python 3.5.3) a je potrebné nainštalovať nasledujúce balíky:
- rozpoznávanie tváre
- pikamera
- otupený
- Vankúš
- python-telegram-bot
- RPi. GPIO
Tento odkaz je veľmi užitočný: Github - Nainštalujte dlib a face_recognition na Raspberry Pi. Existuje však niekoľko upozornení: 1) Vankúš potrebuje najmenej Python 3.5, ktorý sa podľa tejto metódy nenainštaluje. 2) Tiež nie všetky balíčky, ktoré sú potrebné v projekte zvončeka, nebudú nainštalované podľa tejto metódy. Mali by ste byť však schopní ho nainštalovať jednoducho pomocou pip3.
Krok 6: Spustenie skriptov zvončeka
Získajte skripty
Skripty je možné ručne stiahnuť z: github.com - Erientes/zvonček. Alebo ak máte nainštalovaný Git, spustite:
klon gitVytvárajte aliasy
Teraz, aby sme si uľahčili život, vytvorte si niekoľko aliasov na spustenie skriptov. Vykonať:
listová podložka ~/.bashrc
Pridajte nasledujúce riadky a súbor 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'
Testovacie skripty
Ak chcete otestovať, či je všetko správne nainštalované, otvorte nový terminál a spustite:
doorbell_run examples/0_test_installation.py
Výsledkom by mala byť jednoducho správa v okne terminálu, ktorá hovorí „Inštalácia zvončeka sa úspešne skončila!“. Ak chcete otestovať, či je ku kamere prístup z kontajnera Docker, spustite:
doorbell_run examples/1_test_camera.py
Spustením 1_test_camera.py bude nasnímaná fotografia a uložená ako „test.jpg“, ktorú nájdete v domove/home/pi/domový zvonček. Nakoniec ovládače LED je možné testovať vykonaním:
doorbell_run examples/2_test_voicehat_drivers.py
Keď je tento skript spustený, dióda LED v arkádovom prepínači by mala reagovať na stlačenie tlačidla.
Spustené skripty Doorbell
Na spustenie skriptov Doorbell je potrebné najskôr získať poverenia robota Telegramu. Nainštalujte si Telegram do telefónu a choďte na telegram.me - Botfather. Začnite konverzáciu a zadajte:
/newbot
Vyplňte meno a používateľské meno robota. Potom vám bude poskytnutý prístupový token. Skopírujte túto hodnotu do súboru 'credentials_telegram_template.py' v/home/pi/doorbell a uložte ju do nového súboru s názvom 'credentials_telegram.py'. Nakoniec začnite konverzáciu s robotom, ktorého ste práve vytvorili, kliknutím na odkaz, ktorý vám Botfather poskytne.
Nakoniec spustíme zvonček s rozpoznaním tváre:
doorbell_run main.py
Poznámky:
Ak sa chcete dozvedieť viac o tom, ako kód funguje, pozrite sa na komentáre v samotných skriptoch. Ak máte otázky týkajúce sa kódu, kontaktujte ma prostredníctvom Github
Krok 7: Použitie zvončeka
Spustime skript zvončeka spustením:
doorbell_run main.py Po načítaní balíkov skripty zostanú nečinné. V zásade sa môžu stať 2 veci:
- Niekto zazvoní pri dverách.
- Niekto je pridaný na bielu listinu.
Niekto zazvoní pri dverách
V takom prípade skript začne fotografovať, kým nenatočí fotografiu, na ktorej je rozpoznaná tvár. Po detekcii sú zavolané niektoré metódy z balíka python 'face_recognition' na výpočet 128 kódovania tváre. Ďalej sa získané kódovanie porovná s kódovaním v whitelist.csv a blacklist.csv. Možné výsledky vedú k nasledujúcej reakcii:
Na bielu listinu? | Na čiernej listine? | Odpoveď |
---|---|---|
Áno | Nie | Rozsvieti sa zelené svetlo. |
Áno | Áno | Rozsvieti sa žlté svetlo. Kamera pri dverách odošle fotografie robotovi Telegramu s oranžovou ikonou. Tento stav môže nastať, ak bol niekto pridaný do oboch zoznamov. Napríklad keď bol niekto najskôr vítaný, ale neskôr bol na čiernej listine. |
Nie | Nie | Rozsvieti sa žlté svetlo. Kamera pri dverách odošle fotografie robotovi Telegramu s oranžovou ikonou. |
Nie | Áno | Rozsvieti sa červené svetlo. Kamera pri dverách odošle fotografie robotovi Telegramu s červenou ikonou. |
Niekto je pridaný na bielu listinu
Ak chcete niekoho pridať do zoznamu povolených, stlačte žlté tlačidlo semaforu, keď je zvonček v kľude. Najprv sa rozsvieti žlté svetlo. Ak zelené svetlo trikrát zabliká, tvár osoby sa úspešne pridá na bielu listinu. Ak zelené svetlo trikrát neblikne, pokus nebol úspešný. V takom prípade znova stlačte žlté tlačidlo. To, či bol úspešný, si môžete ľahko overiť zazvonením pri dverách a skontrolovaním, či prejde zelené svetlo.
Ako pridať niekoho na čiernu listinu?
Očividne ľudia so zlým úmyslom neprejdú okolo, aby nám dali fotografiu svojej tváre. Namiesto toho teda môžete do priečinka img/blacklist pridať obrázky známych ľudí, ktoré (napríklad) polícia zverejnila. Každú hodinu sa v tomto priečinku kontrolujú nové obrázky. Ak existuje nový obrázok, kódovanie tváre sa vypočíta a pridá sa na blacklist.csv. Obrázok sa potom premenuje a presunie do priečinka/img/čiernej listiny/kódovaného.
Poznámky:
- Ovládanie skriptov prihlásením sa do RPi poskytuje oveľa väčšiu kontrolu a informácie, ale základné ovládanie a informácie je možné získať výhradne pomocou semaforového displeja.
- Rozpoznávanie tváre je implementované pomocou balíka python 'face_recognition'. Tento balík je založený na službe Dlib, ktorá obsahuje najmodernejší algoritmus rozpoznávania tvárí, ktorý v benchmarku Labeled Faces in the Wild dosahuje presnosť 99,38% (zdroj: dlib.net-High Quality Face Recognition with Deep Metric Learning)).
Prvá cena v asistenčnej technickej súťaži
Odporúča:
Britský zvonček pre zvonček Pro pracujúci s mechanickým zvonkohrou: 6 krokov (s obrázkami)
Britský zvonček pre zvonček Pro pracujúci s mechanickým zvonkom: ************************************** *************** Vezmite prosím na vedomie, že táto metóda momentálne funguje iba s napájaním striedavým prúdom. Aktualizujem, ak/keď nájdem riešenie pre zvončeky pomocou jednosmerného prúdu Medzitým, ak máte jednosmerné napájanie zásobovanie, budete potrebovať
Inteligentný domový zvonček Raspberry Pi, ktorý dokáže detekovať ľudí, autá a pod .: 5 krokov
Inteligentný zvonček Raspberry Pi DIY, ktorý dokáže detekovať ľudí, autá a pod.: Tento dizajn s tematikou steampunku sa integruje s domácim asistentom a naším viacpriestorovým audio systémom, aby komunikoval so zvyškom nášho inteligentného domu pre domácich majstrov. Namiesto kúpy zvončeka (alebo Nest, alebo jeden z ďalších konkurentov) Postavil som si vlastnú inteligentnú bránu
Domový zvonček koronavírusu Arduino: 6 krokov
Zvonček Coronavirus Arduino: V dôsledku globálneho prepuknutia koronavírusu chcem urobiť zvonček pri dverách, že ľuďom vo vnútri nemusíte tlačiť žiadne signály, že ste tu, a oni musia otvoriť dvere. Táto vec vám môže priniesť vírus dotykom na zvonček ostatných ľudí
Premeňte svoj drôtový zvonček na inteligentný zvonček s IFTTT: 8 krokov
Premeňte svoj drôtový zvonček na inteligentný zvonček s IFTTT: Zvonček WiFi zmení váš existujúci drôtový zvonček na inteligentný zvonček. https://www.fireflyelectronix.com/product/wifidoor
MQTT/Domový zvonček Google pomocou ESP-01: 6 krokov
MQTT/Domový zvonček Google pomocou systému ESP-01: Zmeškali ste niekedy odpoveď hosťovi, ktorý zazvonil pri dverách len preto, že ste v časti domu, ktorá je príliš ďaleko na to, aby ste počuli zvonček zvončeka? napríklad suterén, spálňa so zatvorenými dverami, alebo ste sa možno pozerali na televíziu alebo počúvali hudbu. Ak