Sisukord:
- Samm: materjalid
- 2. samm: juhtmestik
- 3. samm: korpuse ehitamine
- 4. samm: kaamera konfigureerimine
- Samm: Dockeri seadistamine
- 6. samm: uksekella skriptide käivitamine
- 7. samm: uksekella kasutamine
Video: Uksekell näotuvastusega: 7 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Motivatsioon
Viimasel ajal on minu riigis toimunud röövlaine, mis on suunatud eakatele inimestele nende kodus. Tavaliselt võimaldavad juurdepääsu inimesed ise, kuna külastajad veenavad neid, et nad on hooldajad/õed. See on lihtsalt sõnatu, kui vihased ja kurvad need lood mind tekitavad. Kodu peaks olema teie esimene turvapaik ja veelgi enam, kui olete väljas olles juba haavatavas olukorras. Seda silmas pidades alustasin selle projektiga.
Üldine informatsioon
Uksekellade süsteem on mõeldud peamiselt eakatele või nägemispuudega inimestele ning on oma ülesannetes üsna sirgjooneline. Lühidalt, uksekella lüliti käivitab kaamera kaadrite saamiseks. Seejärel tuvastatakse kaadrite näod ning sobitatakse need valge ja musta nimekirjaga. Sõitja saab selge visuaalse tagasiside selge valgusfoori ekraaniga. Seega näitab roheline, kollane või punane tuli, et isik (ud) on lubatud nimekirjas, süsteemile tundmatu või musta nimekirja. Kui süttib kollane või punane tuli, saadab foto Telegrami bot, et teavitada/hoiatada sugulast või hooldajat.
Asjatundlikkuse tase
Projekt loodi entusiastidele, kes on eriti huvitatud arvutinägemise ja tehisintellekti kasutamisest. See juhend on kirjutatud algajate publikule, nii et ärge muretsege, kui teil pole kogemusi! Lisaks võib projekt olla huvitav ka kogenumatele tegijatele, kuna torujuhe on korraldatud nii, et saate seda ilma palju probleemideta laiendada oma arvutinägemuse ja näotuvastuse ideedega.
Samm: materjalid
Tootenimekiri miinimumnõuetega:
Toode | Link | Kommenteeri |
---|---|---|
Vaarika Pi 3b | RPi | Link näitab RPi 4, kuna sellel on palju parem jõudlus ja peaaegu sama hind kui RPi 3b -l. |
Micro SD | Amazon | 16 GB või suurem micro SD -kaart teeb selle töö ära. Kuid Amazoni 16 GB kaardid on nüüd peaaegu sama hinnaga kui 32 GB kaardid. |
Raspberry Pi kaamera | Amazon | Kaamera v1 on odavam, kuid v2 on parem ja seda toetatakse kauem. |
15 kontaktiga FPC painduv kaabel | Amazon | Pikkus sõltub tegelikult selle projekti tegemise asjaoludest. Kui soovite lihtsalt prototüüpi ehitada, teeb originaal painduskaabel selle töö ära. |
Toiteallikas 5v micro usb | Adafruit | See ei lasknud end kunagi alt! Suurepärane kvaliteet. (Fotol pole) |
Arkaadnupud sisseehitatud LED-iga | Amazon | Valige soovitud suurus, kuid CAD -disain põhineb 60 mm nuppudel |
Takistid | Amazon | Teil on vaja vaid paari 1k ja 100 oomi takistit. Tavalised 1/4 W on head. |
Kondensaatorid 0,1 uF | Amazon | Vaja on kolme kondensaatorit. (Fotol pole) |
Jumper juhtmed / lint kaabel | AmazonAmazon | Kui soovite endale raha säästa, võite kasutada ka vana disketiseadme lintkaablit (vt fotot). |
Kahanev toru / elektrilint | AmazonAmazon |
Vajalikud tööriistad:
Tööriist | Oluline? | Kommenteeri |
---|---|---|
Jootekolb | Jah | |
Multimeeter | Jah | |
Traadi eemaldaja | Jah | Või võite kasutada nuga/käärid. |
Laserlõikur | Ei | |
3D printer | Ei | |
Klambrid | Ei | Kasulik testimisfaasis karbi koos hoidmiseks. |
Märkused:
Projekti kättesaadavuse suurendamiseks otsustasin selle välja töötada Raspberry Pi 3b abil. Kuigi see suurendab juurdepääsetavust, vähendab see rakenduse võimalusi, kuna RPi -d pole nii kiired. Kui otsite ühe lauaarvutit, mis on kiirem, võiksite vaadata NVIDIA Jetson Nano
2. samm: juhtmestik
Skemaatiline diagramm on selle sammu jaoks kõige informatiivsem ja üsna iseenesestmõistetav. Kui olete elektroonikaga uus, saate kasutada legendi pilti. Komponendi väärtus (kui see on olemas) on toodud skemaatilisel diagrammil. Fotod võivad aidata näha, kuidas ma vooluringi ehitan. Põhimõtteliselt ühendasin kõik komponendid arkaadinupule võimalikult lähedale, mille tulemuseks on selge ülevaade toimuvast.
Märkused:
- Mulle meeldib väga kasutada lintkaabli pistikuid, kuna need on palju vastupidavamad kui ühe hüppajaga juhtmed.
- Nagu soovitatud, olen kasutanud vanast arvutist eemaldatud lintkaablit. See on siiski natuke keeruline, kuna peate kaabli konfiguratsiooni käsitsi kinnitama. Näiteks selles projektis sain teada, et mõned augud olid omavahel ühendatud (tõenäoliselt kasutati algse rakenduse pinnasena). Seetõttu pidin hiljem hankima teistsuguse kaabli, nagu piltidel näha.
3. samm: korpuse ehitamine
Kaamera korpus
Paljusid picamera ümbriseid saab Internetist vabalt alla laadida. Niisiis, otsustan ratast mitte leiutada ja valin Internetist lihtsa, kuid kena ümbrise: thingiverse.com - Raspberry pi kaameraümbris/ümbris. (Karju disainer VGerile.)
Foori korpus
Fooride korpuse jaoks kujundasin Autodesk Fusion 360 -s väikese kasti (mis on vabalt allalaaditav, vt märkused), mis sobib kogu riistvaraga. Manusest leiate faili, mille olen saatnud oma kohalikule laserlõikusettevõttele. Seega põhineb disain 6 mm plaadi paksusel. Kui soovite aga asju kohandada, pääsete selle lingi abil juurde igasugustele failivormingutele. Nagu piltidel näidatud, võite kasutada ka pappkasti, kui teil pole laserlõikurit. Kasutasin prototüüpimiseks pildil olevat pappkasti ja see toimib nagu võlu.
Kokkupanek on üsna lihtne:
- Paigaldage Arcade'i lülitid.
- Veenduge, et uksekella juhtmed oleksid vabad.
- Ühendage lintkaabel RPi külge.
- Kruvige RPi alumisele paneelile.
- Ühendage uksekella juhtmed juhtmepistikuga ja kinnitage see ka alumisele paneelile.
- Ühendage Picamera RPi -ga.
- Puurige auk ühele külgpaneelile uksekella lülitusjuhtme ja RPi toitejuhtme jaoks.
Juhtmeühendust kasutatakse uksekella lüliti juhtmete kinnituspunktina, nii et seda saab hiljem olemasoleva uksekella külge kinnitada. Kõik on nüüd paigas ja saab kokku liimida. Siiski võiksite kõigepealt lõpetada järgmised sammud, veendumaks, et kõik toimib nii, nagu peaks.
Märkused:
Autodesk Fusion 360 on harrastajatele vabalt saadaval! Kui soovite oma koopia saada, külastage seda linki: autodesk.com - Fusion 360 For Hobbyists. Mõningaid termineid on, seega lugege neid kindlasti ja rakendage. See oli minu esimene projekt Fusion 360 -ga ja mul pole CAD -tarkvara kasutamisel palju kogemusi, kuid pean ütlema, et mulle väga meeldib tarkvara ja kõik Fusion 360 -ga kaasas olevad lisatööriistad
4. samm: kaamera konfigureerimine
Eeldatakse, et teil on Raspbian installitud ja see töötab GUI -režiimis. Kui teil pole veel Raspbiani installitud, saate seda artiklit järgida: raspberrypi.org - Operatsioonisüsteemi piltide installimine. Kui käivitate Raspbiani, peaksite nägema töölauda, nagu piltidel näidatud.
Seadistame kaamera RPi peal ja vaatame, kas see töötab! Siin kirjeldatud meetod pärineb otse aadressilt raspberrypi.org - Documentation. Esiteks värskendame uusimatele pakettidele (sh kaamera püsivara), täites terminaliaknas järgmised käsud (vt pilte):
sudo apt värskendus
sudo apt täielik uuendamine
Järgmisena tuleb kaamera lubada järgmise käsu abil:
sudo raspi-config
Avage menüüst 5. Liidesevalikud -> P1 kaamera. Valige kaamera lubamine ja taaskäivitage RPi, tehes järgmist.
taaskäivitage
Nüüd peaks kaamera olema õigesti konfigureeritud. Seda saab testida, avades terminaliakna ja käivitades:
raspistill -v -o /home/pi/test.jpg
Pilt salvestatakse kausta: /home /pi.
Samm: Dockeri seadistamine
Sõltuvuse ja installivigade vältimiseks otsustasin selle projekti jaoks koostada kohandatud Dockeri pildi (vt wikipedia.org - Docker). Kui te pole kunagi Dockerit kasutanud ega kuulnud, siis ärge muretsege, selgitan samm -sammult, kuidas seda selles projektis kasutada. Tegelikult on see ülilihtne! Kui soovite seda projekti käivitada kohalikus installis (mitte Dockeri konteineris), annan teile mõned näpunäited. Kuid on väga soovitatav kasutada Dockeri pilti. Lõppude lõpuks loon ma selle selleks, et teil oleks selle projekti juhtimine lihtne!
Mis on Docker?
Märkus: see osa sisaldab Dockeri kohta taustateavet, mille saate vahele jätta, kui soovite lihtsalt koodi käivitada.
See projekt on esimene kord, kui ma Dockerit kasutasin ja see on lihtsalt fantastiline! Võib -olla olete kuulnud virtualenvist või Anacondast Pythoni jaoks? Noh, Docker on selles mõttes üsna sarnane, et saate hõlpsalt hallata pakettide versioone ja käivitada ühes hostisüsteemis erinevaid Pythoni versioone, kasutades erinevat keskkonda (või konteinerit, nagu seda Dockeris nimetatakse). Kuid võrreldes virtualenvi ja Anacondaga on Docker palju võimsam, kuna see ei piirdu ainult Pythoni pakettidega. Tõepoolest, Dockeri konteineris saate installida ja hallata ka soovitud operatsioonisüsteemi pakette. Mõelge näiteks veebisaidile, mida soovite üle viia ja millel on Pythoni veebiraamistik (nt Django) koos andmebaasiga (nt MySQL). Ilma Dockeri konteinerita peaksite installima kõik paketid uude serverisse, mis on vigadele ja vigadele väga vastuvõtlik. Teisest küljest, kui teie veebisait on Dockeris üles ehitatud, on migreerimine põhimõtteliselt sama lihtne kui pildifaili/failide teisaldamine uude serverisse ja nende käivitamine. Nagu võite ette kujutada, on Docker väga kasulik ka Instructabeli projektide jaoks;)! Kui soovite Dockeri kohta rohkem teada saada, vaadake nende veebisaiti: docker.org - Docker: Enterprise Container Platform. Nüüd hakkame koos Dockeriga tööle!
Dockeri installimine
Installige Docker, käivitades:
curl -sSL https://get.docker.com | sh
Järgmisena lisatakse kasutaja kasutajarühma 'dokkija', mis annab Dockeri käitamise õigused. Seda teeb:
sudo usermod -aG dokkija $ USER
Nüüd peaksite saama Dockeri käivitada. Seda saab kinnitada, tervitades maailmapilti:
dokk jookseb tere-maailma
Lõpuks tõmbame Dockeri pildi, mis sisaldab kõiki sõltuvusi, mis on vajalikud uksekella Pythoni skriptide käivitamiseks. See protsess võib võtta aega, kuna pilt on üsna suur (~ 1,5 GB). Käivita:
dokkija tõmbab eriente/uksekella
Märkus: Dockerfile'i leiate Githubi uksekellahoidlast. Nüüd on kõik valmis uksekella skriptide käivitamiseks, mida arutatakse järgmises etapis.
Kohalik paigaldus
Jällegi soovitaksin tungivalt kasutada kohaliku installimise asemel Dockeri pilti. Kuid selle õpetuse täielikuks muutmiseks kirjeldan nüüd mõningaid samme, mida tegin kohaliku installimise jaoks.
Koodi käivitamiseks peaks pythoni versioon olema> = 3.5 (ma kasutasin python 3.5.3) ja installida tuleb järgmised paketid:
- näotuvastus
- picamera
- numpy
- Padi
- python-telegramm-bot
- RPi. GPIO
See link on üsna kasulik: Github - installige Raspberry Pi -le dlib ja face_recognition. Siiski on siin mõned hoiatused: 1) Padi vajab vähemalt Python 3.5, mida selle meetodi järgi ei installita. 2) Samuti ei installita seda meetodit järgides kõiki pakette, mida uksekella projektis vaja läheb. Siiski peaksite saama selle installida lihtsalt pip3 abil.
6. samm: uksekella skriptide käivitamine
Hankige skriptid
Skripte saab käsitsi alla laadida saidilt: github.com - Erientes/uksekell. Või kui teil on Git installitud, käivitage:
git kloon
Loo varjunimed
Nüüd, et muuta meie elu natuke lihtsamaks, loome skriptide käitamiseks mõned varjunimed. Käivita:
lehepilt ~/.bashrc
Lisage järgmised read ja salvestage fail:
alias doorbell_run = 'Docker run -privilegeeritud -v/home/pi/uksekell:/uksekell -w/uksekell -it erientes/uksekell python $ 1'
alias doorbell_login = 'Docker run -privilegeeritud -v/home/pi/uksekell:/uksekell -w/uksekell -it erientes/uksekell bash'
Testi skripte
Et kontrollida, kas kõik on õigesti installitud, avage uus terminal ja käivitage:
uksekellade näited/0_test_installation.py
Tulemuseks peaks lihtsalt olema terminaliaknas olev teade „Uksekella installimine lõppes edukalt!”. Et testida, kas kaamerale pääseb juurde Dockeri konteineri kaudu, tehke järgmist.
uksekellade näited/1_test_camera.py
Käivitades 1_test_camera.py, tehakse foto ja salvestatakse see nimega „test.jpg”, mille leiate aadressilt/home/pi/doorbell. Lõpuks saab LED -draivereid testida järgmiselt:
uksekellade näited/2_test_voicehat_drivers.py
Kui see skript töötab, peaks arkaadilüliti LED nupule vajutamisel reageerima.
Uksekella skriptide käitamine
Uksekella skriptide käivitamiseks tuleb kõigepealt hankida Telegrami bot -mandaat. Installige Telegram oma telefoni ja minge saidile telegram.me - Botfather. Alustage vestlust ja sisestage:
/newbot
Sisestage botile nimi ja kasutajanimi. Pärast seda antakse teile juurdepääsuluba. Kopeerige see väärtus kataloogi/home/pi/doorbell faili "credentials_telegram_template.py" ja salvestage see uude faili nimega "credentials_telegram.py". Lõpuks alustage vestlust äsja loodud botiga, klõpsates lingil, mille Botfather teile pakub.
Lõpuks käivitame näotuvastusega uksekella:
uksekell_run main.py
Märkused:
Kui soovite koodi toimimise kohta rohkem teada saada, vaadake skriptide enda kommentaare. Kui teil on koodi kohta küsimusi, võtke minuga Githubi kaudu ühendust
7. samm: uksekella kasutamine
Käivitame uksekella skripti, käivitades:
uksekell_run main.py Pärast pakettide laadimist jäävad skriptid jõude. Põhimõtteliselt võib juhtuda 2 asja:
- Keegi helistab uksekella.
- Keegi lisatakse lubatud loendisse.
Keegi helistab uksekella
Sel juhul hakkab skript pildistama, kuni pildistab näo tuvastamise foto. Pärast tuvastamist kutsutakse näo 128 kodeeringu arvutamiseks välja mõned meetodid pythoni paketist 'face_recognition'. Järgmisena võrreldakse saadud kodeeringut valgete nimekirja.csv ja musta nimekirja.csv kodeeringutega. Võimalikud tulemused annavad järgmise vastuse:
Valges nimekirjas? | Musta nimekirja? | Vastus |
---|---|---|
Jah | Ei | Roheline tuli süttib. |
Jah | Jah | Kollane tuli süttib. Uksekella kaamera saadab fotod Telegrami botile oranži ikooniga. See olek võib juhtuda, kui keegi lisati mõlemasse loendisse. Näiteks kui keegi oli alguses teretulnud, kuid hiljem musta nimekirja. |
Ei | Ei | Kollane tuli süttib. Uksekella kaamera saadab fotod Telegrami botile oranži ikooniga. |
Ei | Jah | Punane tuli süttib. Uksekella kaamera saadab fotod Telegrami robotile punase ikooniga. |
Keegi lisatakse lubatud loendisse
Kellegi lisamiseks valgete loendisse vajutage valgusfoori kollast nuppu, kui uksekell on jõudeolekus. Esiteks süttib kollane tuli. Kui roheline tuli vilgub 3 korda, lisatakse inimese nägu edukalt lubatud loendisse. Kui roheline tuli ei vilgu 3 korda, ei õnnestunud katse. Sellisel juhul vajutage kollast nuppu uuesti. Saate hõlpsalt kontrollida, kas see õnnestus, helistades uksekella ja kontrollides, kas roheline tuli on möödas.
Kuidas kedagi musta nimekirja lisada?
Ilmselgelt ei lähe halva kavatsusega inimesed mööda, et meile oma näost fotot teha. Seega saate selle asemel lisada kaadrisse img/blacklist pilte kurikuulsatest inimestest, mille (näiteks) politsei on avaldanud. Iga tund kontrollitakse selles kaustas uusi pilte. Kui on uus pilt, arvutatakse näokodeering ja lisatakse see musta nimekirja.csv. Seejärel nimetatakse pilt ümber ja teisaldatakse kausta/img/blacklist/kodeeritud.
Märkused:
- Skriptide käitamine RPi sisse logides annab palju rohkem kontrolli ja teavet, kuid põhijuhtimise ja teabe saab kätte ainult valgusfoori ekraani kasutades.
- Näotuvastust rakendatakse pythoni paketi 'face_recognition' abil. See pakett põhineb Dlibil, mis sisaldab tipptasemel näotuvastuse algoritmi, mis täidab 99,38% täpsust märgistatud nägude looduses võrdlusalusel (allikas: dlib.net-kvaliteetne näotuvastus koos sügava meetrilise õppimisega).
Abistavate tehnikavõistluste esimene auhind
Soovitan:
DIY nutikas uksekell: kood, seadistamine ja HA integreerimine: 7 sammu (piltidega)
DIY nutikas uksekell: kood, seadistamine ja HA integreerimine: Selles projektis näitan teile, kuidas saate oma tavalise uksekella nutikaks muuta, muutmata ühtegi praegust funktsiooni või katkestades juhtmeid. Kasutan ESP8266 plaati nimega Wemos D1 mini. Kas olete ESP8266 uus? Vaata minu tutvustust
Liikumisanduri uksekell: 5 sammu (piltidega)
Liikumisanduri uksekell: Kui rääkisin oma pojale Jaydenile väljakutsest, mõtles ta kohe LEGO WeDo komplekti kasutada. Ta on Legodega mänginud aastaid, kuid alles eelmise kooliaasta alguses sai ta võimaluse WeDo 2.0 -ga koodida
Traadita uksekell - (Vaarika PI ja Amazon Dash): 4 sammu (piltidega)
Traadita uksekell - (Vaarika PI ja Amazon Dash): mida see teeb? (vt videot) Nupule vajutamisel avastab Raspberry traadita võrgus uue seadme logimise. Nii saab see nupu vajutamise ära tunda ja edastada selle kohta teabe oma mobiiltelefonile (või teie seadmele)
Hip Hopi uksekell: 9 sammu (piltidega)
Hip Hopi uksekell: mitme näidise ja pöördlauaga uksekell, mida saate tegelikult kriimustada! Niisiis, paar aastat tagasi pärast Facebooki postitust, mis käsitleb idee luua uksekell, millel on eraldi helinad igale minu maja inimesele, mu kaaslane viskas idee, et see sisaldaks
Näotuvastusega IP-kaamera ESP32-CAM-plaadi abil: 5 sammu
Näotuvastusega IP-kaamera ESP32-CAM-plaadi kasutamine: see postitus on teistega võrreldes erinev ja vaatame väga huvitavat ESP32-CAM-plaati, mis on üllatavalt odav (alla 9 dollari) ja lihtne kasutada. Loome lihtsa IP -kaamera, mida saab kasutada otsevideo voogesitamiseks, kasutades 2