Turinys:
- 1 žingsnis: medžiagos
- 2 žingsnis: laidų prijungimas
- 3 žingsnis: korpuso statyba
- 4 veiksmas: fotoaparato konfigūravimas
- 5 veiksmas: „Docker“nustatymas
- 6 veiksmas: paleiskite durų skambučių scenarijus
- 7 veiksmas: naudokite durų skambutį
Video: Durų skambutis su veido atpažinimu: 7 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:45
Motyvacija
Pastaruoju metu mano šalyje kilo apiplėšimų banga, nukreipta į pagyvenusius žmones jų namuose. Paprastai prieigą suteikia patys keleiviai, nes lankytojai juos įtikina, kad jie yra globėjai/slaugytojai. Neįmanoma pasakyti, kokios piktos ir liūdnos šios istorijos verčia mane jaustis. Namai turėtų būti jūsų pirmasis saugus prieglobstis ir dar labiau, jei būdami lauke jau esate pažeidžiamoje padėtyje. Turėdamas tai omenyje, pradėjau šį projektą.
Bendra informacija
Durų skambučių sistema daugiausia skirta senyvo amžiaus arba silpnaregiams ir yra gana paprasta. Trumpai tariant, durų skambučio jungiklis priverčia fotoaparatą gauti filmuotą medžiagą. Be to, filmuotos medžiagos veidai aptinkami ir suderinami su baltuoju ir juoduoju sąrašu. Keleivis gauna aiškų vaizdinį grįžtamąjį ryšį šviesaus šviesoforo ekrane. Žalia, geltona arba raudona lemputė rodo, kad asmuo (-ai) yra įtrauktas į baltąjį sąrašą, atitinkamai sistemai nežinomas arba įtrauktas į juodąjį sąrašą. Jei užsidega geltona arba raudona lemputė, nuotrauka siunčiama „Telegram“roboto, kad informuotų/įspėtų giminaitį ar prižiūrėtoją.
Ekspertizės lygis
Projektas buvo skirtas entuziastams, kuriems ypač įdomu naudotis kompiuterine vizija ir dirbtiniu intelektu. Ši pamoka skirta pradedantiesiems, todėl nesijaudinkite, jei neturite patirties! Be to, projektas gali būti įdomus ir labiau patyrusiems kūrėjams, nes dujotiekis yra organizuotas taip, kad galėtumėte jį išplėsti savo kompiuterio vizija ir veido atpažinimo idėjomis be didelių rūpesčių.
1 žingsnis: medžiagos
Produktų sąrašas su minimaliais reikalavimais:
Produktas | Nuoroda | Komentuoti |
---|---|---|
Raspberry Pi 3b | RPi | Nuoroda rodo „RPi 4“, nes jo našumas yra geresnis ir kaina beveik tokia pati kaip „RPi 3b“. |
„Micro SD“ | „Amazon“ | Darbą atliks 16 GB ar didesnė „micro SD“kortelė. Tačiau 16 GB „Amazon“kortelių kaina dabar yra beveik tokia pati kaip ir 32 GB. |
„Raspberry Pi“fotoaparatas | „Amazon“ | Fotoaparatas v1 yra pigesnis, tačiau v2 yra geresnis ir bus palaikomas ilgiau. |
15 kontaktų FPC lankstus kabelis | „Amazon“ | Ilgis iš tikrųjų priklauso nuo šio projekto vykdymo aplinkybių. Jei norite tik sukurti prototipą, originalus lankstus kabelis atliks darbą. |
Maitinimo šaltinis 5v micro usb | Adafruit | Šis niekuomet nenuvylė! Puiki kokybė. (Ne nuotraukoje) |
Arkadiniai mygtukai su įmontuotu LED | „Amazon“ | Pasirinkite norimą dydį, tačiau CAD dizainas pagrįstas 60 mm mygtukais |
Rezistoriai | „Amazon“ | Jums tereikia poros 1k ir 100 omų rezistorių. Įprasti 1/4W yra gerai. |
Kondensatoriai 0,1 uF | „Amazon“ | Reikia trijų kondensatorių. (Ne nuotraukoje) |
Trumpieji laidai / juostos kabelis | AmazonAmazon | Jei norite sutaupyti šiek tiek pinigų, taip pat galite naudoti seną diskelių juostos kabelį (žr. Nuotrauką). |
Susitraukiantis vamzdis / elektros juosta | AmazonAmazon |
Reikalingi įrankiai:
Įrankis | Esminis? | Komentuoti |
---|---|---|
Lituoklis | Taip | |
Multimetras | Taip | |
Vielos nuėmiklis | Taip | Arba galite naudoti peilį/žirkles. |
Lazerinis pjoviklis | Ne | |
3D spausdintuvas | Ne | |
Spaustukai | Ne | Naudinga laikyti dėžutę kartu bandymo etape. |
Pastabos:
Norėdami padidinti projekto prieinamumą, nusprendžiau jį sukurti naudodami „Raspberry Pi 3b“. Tai padidina prieinamumą, tačiau sumažina programos galimybes, nes RPi nėra tokie greiti. Jei ieškote greitesnio vieno lentos kompiuterio, galbūt norėsite pažvelgti į „NVIDIA Jetson Nano“
2 žingsnis: laidų prijungimas
Scheminė diagrama yra informatyviausia šiam žingsniui ir yra savaime suprantama. Jei esate naujokas elektronikoje, galite naudoti legendos vaizdą. Komponento vertė (jei taikoma) nurodyta schemoje. Nuotraukos gali padėti pamatyti, kaip aš kuriu grandinę. Iš esmės aš prijungiau visus komponentus kuo arčiau pasažo mygtuko, todėl aiškiai matoma, kas vyksta.
Pastabos:
- Man labai patinka naudoti juostines kabelių jungtis, nes jos yra tvirtesnės nei naudojant vieno jungiklio laidus.
- Kaip siūloma, aš naudoju nušlifuotą juostinį kabelį iš seno kompiuterio. Tačiau tai yra šiek tiek sudėtinga, nes turėsite rankiniu būdu patvirtinti kabelio konfigūraciją. Pavyzdžiui, šiame projekte sužinojau, kad kai kurios skylės buvo sujungtos viena su kita (tikriausiai buvo naudojamos kaip pagrindas pradinei programai). Todėl vėliau turėjau gauti kitą kabelį, kaip matote nuotraukose.
3 žingsnis: korpuso statyba
Fotoaparato korpusas
Daugelį „picamera“korpusų galima laisvai atsisiųsti iš interneto. Taigi, aš nusprendžiu neišradinėti rato ir iš interneto išsirenku paprastą, bet gražų korpusą: thingiverse.com - Raspberry pi fotoaparato dėklas/gaubtas. (Šaukitės dizainerio VGerio.)
Šviesoforo korpusas
Šviesoforo korpusui sukūriau nedidelę dėžutę „Autodesk Fusion 360“(kurią galima nemokamai atsisiųsti, žr. Pastabas), kuri tinka visai aparatinei įrangai. Priede galite rasti failą, kurį išsiunčiau savo vietinei lazerinio pjovimo įmonei. Taigi dizainas grindžiamas 6 mm plokštės storiu. Tačiau, jei norite koreguoti dalykus, naudodami šią nuorodą galite pasiekti visų rūšių failų formatus. Kaip parodyta paveikslėliuose, taip pat galite naudoti kartoninę dėžę, jei neturite prieigos prie lazerinio pjaustytuvo. Prototipams panaudojau paveikslėlyje esančią kartoninę dėžutę ir ji veikia kaip žavesys.
Surinkimas yra gana tiesus:
- Sumontuokite „Arcade“jungiklius.
- Įsitikinkite, kad durų skambučio laidai nėra laisvi.
- Prijunkite juostinį kabelį prie RPi.
- Prisukite RPi prie apatinio skydo.
- Prijunkite durų skambučio laidus prie laido jungties ir taip pat pritvirtinkite prie apatinio skydo.
- Prijunkite „Picamera“prie RPi.
- Išgręžkite skylę vienoje iš šoninių skydų durų skambučio perjungimo laidui ir RPi maitinimo laidui.
Laido jungtis naudojama kaip durų skambučio jungiklių laidų tvirtinimo vieta, kad vėliau ją būtų galima pritvirtinti prie esamo durų skambučio. Dabar viskas yra savo vietose ir gali būti suklijuota. Tačiau pirmiausia galite užbaigti kitus veiksmus ir įsitikinti, kad viskas veikia taip, kaip turėtų būti.
Pastabos:
„Autodesk Fusion 360“yra laisvai prieinamas mėgėjams! Jei norite gauti savo kopiją, apsilankykite šioje nuorodoje: autodesk.com - „Fusion 360 For Hobbyists“. Yra keletas terminų, todėl būtinai perskaitykite ir taikykite. Tai buvo mano pirmasis projektas su „Fusion 360“ir neturiu daug patirties naudojant CAD programinę įrangą, tačiau turiu pasakyti, kad man labai patinka programinė įranga ir visi papildomi įrankiai, pateikiami kartu su „Fusion 360“
4 veiksmas: fotoaparato konfigūravimas
Daroma prielaida, kad turite įdiegtą „Raspbian“ir kad jis veikia GUI režimu. Jei dar neįdiegėte „Raspbian“, galite perskaityti šį straipsnį: raspberrypi.org - Operacinės sistemos vaizdų diegimas. Jei paleisite „Raspbian“, turėtumėte pamatyti darbalaukį, kaip parodyta paveikslėliuose.
Sukonfigūruokime kamerą RPi ir pažiūrėkime, ar ji veikia! Čia aprašytas metodas yra tiesiogiai iš raspberrypi.org - Documentation. Pirmiausia atnaujinkime naujausius paketus (įskaitant fotoaparato programinę įrangą), terminalo lange vykdydami šias komandas (žr. Paveikslėlius):
sudo apt atnaujinimas
sudo apt pilnas atnaujinimas
Tada fotoaparatas turi būti įjungtas naudojant šią komandą:
sudo raspi-config
Meniu eikite į 5. Sąsajos parinktys -> P1 kamera. Pasirinkite, kad įjungtumėte fotoaparatą ir iš naujo paleistumėte RPi, atlikdami šiuos veiksmus:
perkrauti
Dabar fotoaparatas turi būti tinkamai sukonfigūruotas. Tai galima patikrinti atidarius terminalo langą ir vykdant:
raspistill -v -o /home/pi/test.jpg
Vaizdas išsaugomas: /home /pi.
5 veiksmas: „Docker“nustatymas
Kad išvengčiau priklausomybės ir diegimo klaidų, nusprendžiau sukurti šiam projektui pritaikytą „Docker“vaizdą (žr. Wikipedia.org - „Docker“). Jei niekada nenaudojote ar negirdėjote apie „Docker“, nesijaudinkite, žingsnis po žingsnio paaiškinsiu, kaip jį naudoti šiame projekte. Tiesą sakant, tai labai paprasta! Jei norite paleisti šį projektą vietiniame diegime (o ne „Docker“konteineryje), pateiksiu keletą patarimų. Tačiau labai rekomenduojama naudoti „Docker“vaizdą. Galų gale, aš jį kuriu, kad jums būtų lengviau vykdyti šį projektą!
Kas yra Dokeris?
Pastaba: šioje dalyje pateikiama tam tikra pagrindinė informacija apie „Docker“, kurią galima praleisti, jei norite tik paleisti kodą.
Šis projektas pirmą kartą naudoju „Docker“ir yra tiesiog nuostabus! Galbūt esate girdėję apie virtualenv ar Anaconda for Python? Na, „Docker“yra gana panaši ta prasme, kad galite lengvai valdyti paketų versijas ir paleisti skirtingas „Python“versijas vienoje pagrindinėje sistemoje naudodami kitą aplinką (arba konteinerį, kaip jis vadinamas „Docker“). Tačiau, palyginti su „virtualenv“ir „Anaconda“, „Docker“yra daug galingesnis, nes jame nėra tik „Python“paketų. Iš tikrųjų „Docker“talpykloje taip pat galite įdiegti ir valdyti norimos operacinės sistemos paketus. Pvz., Apsvarstykite svetainę, kurią norite perkelti ir kurioje veikia „Python“žiniatinklio sistema (pvz., „Django“) su duomenų baze (pvz., „MySQL“). Be „Docker“konteinerio turėsite įdiegti visus paketus naujame serveryje, o tai labai linkusi į klaidas ir klaidas. Kita vertus, kai jūsų svetainė buvo sukurta „Docker“, perkelti iš esmės yra taip pat paprasta, kaip perkelti vaizdo failą/failus į naują serverį ir juos paleisti. Kaip galite įsivaizduoti, „Docker“taip pat yra labai naudingas projektams „Instructables“;)! Jei norite sužinoti daugiau apie „Docker“, apsilankykite jų svetainėje: docker.org - „Docker: Enterprise Container Platform“. Dabar atsikelkime kartu su „Docker“!
„Docker“diegimas
Įdiekite „Docker“atlikdami šiuos veiksmus:
curl -sSL https://get.docker.com | sh
Tada vartotojas įtraukiamas į vartotojų grupę „docker“, kuri suteikia teises paleisti „Docker“. Tai daro:
sudo usermod -aG docker $ USER
Dabar turėtumėte turėti galimybę paleisti „Docker“. Tai galima patvirtinti paleidus „hello-world“vaizdą:
„Docker Run Hello“pasaulis
Galiausiai ištraukime „Docker“atvaizdą, kuriame yra visos priklausomybės, reikalingos paleisti durų skambučio „Python“scenarijus. Šis procesas gali užtrukti, nes vaizdas yra gana didelis (~ 1,5 GB). Vykdyti:
prieplauka traukia erientes/durų skambutį
Pastaba: „Dockerfile“galima rasti „Github“durų skambučių saugykloje. Dabar viskas paruošta paleisti durų skambučių scenarijus, kurie bus aptarti kitame žingsnyje.
Vietinis montavimas
Vėlgi, labai rekomenduočiau naudoti „Docker“vaizdą, o ne vietinį diegimą. Bet kad ši pamoka būtų baigta, dabar aprašysiu kai kuriuos veiksmus, kurių ėmiausi diegdami vietinį.
Kad būtų galima paleisti kodą, „python“versija turėtų būti> = 3.5 (naudojau „python 3.5.3“) ir reikia įdiegti šiuos paketus:
- veido atpažinimas
- fotoaparatas
- kvailas
- Pagalvė
- python-telegram-bot
- RPi. GPIO
Ši nuoroda yra labai naudinga: „Github“- „Raspberry Pi“įdiekite „dlib“ir „face_recognition“. Tačiau čia yra keletas įspėjimų: 1) pagalvei reikia bent jau „Python 3.5“, kuri nebus įdiegta taikant šį metodą. 2) Be to, ne visi paketai, reikalingi durų skambučio projektui, bus įdiegti laikantis šio metodo. Tačiau turėtumėte turėti galimybę ją įdiegti tiesiog naudodami pip3.
6 veiksmas: paleiskite durų skambučių scenarijus
Gaukite scenarijus
Scenarijus galima atsisiųsti rankiniu būdu iš: github.com - Erientes/doorbell. Arba, jei įdiegėte „Git“, vykdykite:
git klonas
Sukurkite slapyvardžius
Dabar, norėdami šiek tiek palengvinti mūsų gyvenimą, sukurkime keletą slapyvardžių scenarijams paleisti. Vykdyti:
leafpad ~/.bashrc
Pridėkite šias eilutes ir išsaugokite failą:
alias doorbell_run = 'docker run -privilegijuotas -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell python $ 1 “
alias doorbell_login = 'docker run -privilegijuotas -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell bash'
Bandymo scenarijai
Norėdami patikrinti, ar viskas įdiegta teisingai, atidarykite naują terminalą ir vykdykite:
„doorbell_run“pavyzdžiai/0_test_installation.py
Rezultatas turėtų būti tiesiog pranešimas terminalo lange, kuriame sakoma: „Durų skambučio diegimas sėkmingai baigtas!“. Norėdami patikrinti, ar fotoaparatą galima pasiekti naudojant „Docker“konteinerį, paleiskite:
durų skambučio pavyzdžiai/1_test_camera.py
Paleidus 1_test_camera.py nuotrauka bus nufotografuota ir išsaugota kaip „test.jpg“, kurią galima rasti/home/pi/doorbell. Galiausiai, LED tvarkykles galima išbandyti atlikus šiuos veiksmus:
„doorbell_run“pavyzdžiai/2_test_voicehat_drivers.py
Kai šis scenarijus veikia, pasažo jungiklio šviesos diodas turėtų reaguoti, kai paspaudžiamas mygtukas.
Vykdomi durų skambučių scenarijai
Norėdami paleisti „Doorbell“scenarijus, pirmiausia turite gauti „Telegram“roboto kredencialus. Įdiekite „Telegram“savo telefone ir eikite į telegram.me - Botfather. Pradėkite pokalbį ir įveskite:
/newbot
Įveskite roboto vardą ir vartotojo vardą. Po to jums bus suteiktas prieigos raktas. Nukopijuokite šią vertę į failą „credentials_telegram_template.py“/home/pi/doorbell ir išsaugokite jį naujame faile pavadinimu „credentials_telegram.py“. Galiausiai pradėkite pokalbį su ką tik sukurtu robotu spustelėdami nuorodą, kurią jums teikia „Botfather“.
Galiausiai paleiskite durų skambutį su veido atpažinimu:
„doorbell_run main.py“
Pastabos:
Jei norite sužinoti daugiau apie kodo veikimą, peržiūrėkite komentarus pačiuose scenarijuose. Jei turite klausimų apie kodą, susisiekite su manimi per „Github“
7 veiksmas: naudokite durų skambutį
Paleiskite durų skambučio scenarijų vykdydami:
„doorbell_run main.py“Įkėlus paketus, scenarijai nenaudojami. Iš esmės gali įvykti 2 dalykai:
- Kažkas skambina durų skambučiu.
- Kažkas įtrauktas į baltąjį sąrašą.
Kažkas skambina durų skambučiu
Tokiu atveju scenarijus pradės fotografuoti, kol nufotografuos nuotrauką, kurioje aptinkamas veidas. Aptikus, iškviečiami kai kurie „python“paketo „face_recognition“metodai, norint apskaičiuoti veido 128 kodavimą. Tada gautas kodavimas lyginamas su baltojo sąrašo.csv ir juodojo sąrašo.csv koduotėmis. Galimi rezultatai lemia tokį atsakymą:
Į baltąjį sąrašą? | Į juodąjį sąrašą? | Atsakymas |
---|---|---|
Taip | Ne | Užsidega žalia lemputė. |
Taip | Taip | Užsidega geltona lemputė. Durų skambučio kamera siunčia nuotraukas į „Telegram“robotą su oranžine piktograma. Ši būsena gali atsirasti, jei kas nors buvo įtrauktas į abu sąrašus. Pavyzdžiui, kai kas nors iš pradžių buvo laukiamas, bet vėliau buvo įtrauktas į juodąjį sąrašą. |
Ne | Ne | Užsidega geltona lemputė. Durų skambučio kamera siunčia nuotraukas į „Telegram“robotą su oranžine piktograma. |
Ne | Taip | Užsidega raudona lemputė. Durų skambučio kamera siunčia nuotraukas į „Telegram“robotą su raudona piktograma. |
Kažkas įtrauktas į baltąjį sąrašą
Jei norite įtraukti ką nors į baltąjį sąrašą, paspauskite geltoną šviesoforo mygtuką, kai durų skambutis veikia laukimo režimu. Pirma, užsidegs geltona lemputė. Jei žalia lemputė mirksi 3 kartus, asmens veidas sėkmingai įtraukiamas į baltąjį sąrašą. Jei žalia lemputė nemirksi 3 kartus, bandymas nebuvo sėkmingas. Tokiu atveju dar kartą paspauskite geltoną mygtuką. Galite lengvai patikrinti, ar tai pavyko, paskambinę į durų skambutį ir patikrinę, ar žalia šviesa praėjo.
Kaip įtraukti ką nors į juodąjį sąrašą?
Akivaizdu, kad žmonės, turintys blogų ketinimų, nepraleis mums savo veido nuotraukos. Taigi vietoj to galite pridėti žinomų žmonių atvaizdus, kuriuos (pavyzdžiui) policija paskelbė aplanke img/blacklist. Kas valandą šiame aplanke tikrinama, ar nėra naujų vaizdų. Jei yra naujas vaizdas, veido kodavimas apskaičiuojamas ir įtraukiamas į juodąjį sąrašą.csv. Tada vaizdas pervadinamas ir perkeliamas į aplanką/img/blacklist/encoded.
Pastabos:
- Skriptų valdymas prisijungus prie RPi suteikia daug daugiau kontrolės ir informacijos, tačiau pagrindinį valdymą ir informaciją galima gauti tik naudojant šviesoforo ekraną.
- Veido atpažinimas įgyvendinamas naudojant „python“paketą „face_recognition“. Šis paketas yra sukurtas naudojant „Dlib“, kuriame yra moderniausias veido atpažinimo algoritmas, kuris atlieka 99,38% tikslumą „Labeled Faces in the Wild“etalonuose (šaltinis: dlib.net-Aukštos kokybės veido atpažinimas naudojant giluminį metrikos mokymąsi)).
Pirmasis prizas pagalbinių technologijų konkurse
Rekomenduojamas:
„Nest Hello“- durų skambutis su integruotu transformatoriumi JK (220–240 V kintamoji srovė - 16 V kintamosios srovės): 7 žingsniai (su nuotraukomis)
„Nest Hello“- durų skambutis su integruotu transformatoriumi JK (220–240 V kintamoji srovė - 16 V kintamosios srovės): norėjau namuose įdiegti „Nest Hello“durų skambutį, „Gizmo“, veikiantį 16–24 V kintamosios srovės (PASTABA: programinės įrangos atnaujinimas 2019 m. Pakeitė Europą) versijų diapazonas iki 12V-24V AC). Standartiniai skambučiai su integruotais transformatoriais JK parduodami
Judėjimo jutiklio durų skambutis: 5 žingsniai (su nuotraukomis)
Judėjimo jutiklio durų skambutis: Kai papasakojau savo sūnui Jaydenui apie iššūkį, jis iškart sumanė panaudoti „LEGO WeDo“rinkinį. Jis daugelį metų žaidė su „Legos“, tačiau tik praėjusių mokslo metų pradžioje jis gavo galimybę koduoti su „WeDo 2.0“
Belaidis durų skambutis - („Raspberry PI“ir „Amazon Dash“): 4 žingsniai (su nuotraukomis)
Belaidis durų skambutis - („Raspberry PI“ir „Amazon Dash“): ką tai daro? (žr. vaizdo įrašą) Paspaudus mygtuką, Raspberry aptinka naujų įrenginių registravimą belaidžiame tinkle. Tokiu būdu jis gali atpažinti paspaustą mygtuką ir perduoti informaciją apie šį faktą jūsų mobiliajam telefonui (arba jūsų įrenginiui
Belaidis skambutis / durų skambutis: 9 žingsniai
Belaidis skambutis / durų skambutis: Sveiki, vaikinai. šiandien mes ketiname gaminti belaidžius vartus arba skambinimo skambutį, kurio nuotolis yra 300 metrų atviroje vietoje, palyginti su 50 metrų komercinių durų varpų, kuriuos dažniausiai matome parduotuvėse. Šis projektas gali būti naudojamas kaip durų skambutis arba kaip nešiojamas
„Pasidaryk pats“muzikinis durų skambutis: 7 žingsniai (su nuotraukomis)
„Pasidaryk pats“muzikinis durų skambutis: sužinokite, kaip padaryti paprastą muzikinį skambutį naudojant UM66T melodijų generatorių IC. „Melody Generator“paleidžia Beethoveno „Für Elise“, kai jis suaktyvinamas, nes jis naudoja UM66T-19L. Yra skirtingos šio IC versijos, kiekviena sukonfigūruota paleisti skirtingą