Мазмұны:
- 1 -қадам: материалдар
- 2 -қадам: Сымдарды жалғау
- 3 -қадам: корпусты салу
- 4 -қадам: камераны конфигурациялау
- 5 -қадам: Докерді орнату
- 6 -қадам: Есік қоңырауының сценарийлерін іске қосу
- 7 -қадам: Есік қоңырауын пайдалану
Бейне: Есікті тану функциясы: 7 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Мотивация
Жақында менің елімде қарт адамдарға жеке үйлерінде қарақшылық шабуыл жасалды. Әдетте, кіруге рұқсатты тұрғындардың өздері береді, өйткені келушілер оларды күтуші/медбике екендігіне сендіреді. Бұл әңгімелер мені қаншалықты ашуландырады және қайғылы сезінеді. Үй сіздің бірінші қорғаныс орныңыз болуы керек, ал егер сіз сыртта болған кезде осал жағдайда болсаңыз. Осыны ескере отырып, мен бұл жобаны бастадым.
Негізгі ақпарат
Есік қоңырау жүйесі негізінен қарт адамдарға немесе көру қабілеті нашар адамдарға арналған және олардың жұмысында өте қарапайым. Қысқаша айтқанда, есік қоңырауының қосқышы камераны түсіруге мүмкіндік береді. Содан кейін, кадрлардағы беттер анықталады және ақ тізім мен қара тізіммен сәйкес келеді. Жолаушы бағдаршамның айқын дисплейі арқылы визуалды кері байланыс алады. Осылайша, жасыл, сары немесе қызыл шамдар (лар) ақ тізімге, сәйкесінше жүйеге белгісіз немесе қара тізімге енгенін көрсетеді. Егер сары немесе қызыл шам жанса, фото Telegram ботында туысына немесе қамқоршысына хабарлау/ескерту үшін жіберіледі.
Біліктілік деңгейі
Жоба компьютерлік көру мен жасанды интеллектке қызығушылық танытатын энтузиастарға арналған. Бұл нұсқаулық жаңадан бастаушыларға арналған, сондықтан сізде тәжірибе болмаса, алаңдамаңыз! Сонымен қатар, жоба тәжірибелі өндірушілер үшін қызықты болуы мүмкін, өйткені құбыр сіздің компьютерлік көзқарасыңызбен және танымдық идеяларыңызбен еш қиындықсыз кеңейтуге болатын етіп ұйымдастырылған.
1 -қадам: материалдар
Минималды талаптары бар өнімдер тізімі:
Өнім | Сілтеме | Пікір |
---|---|---|
Raspberry Pi 3b | RPi | Сілтеме RPi 4 -ті көрсетеді, себебі оның өнімділігі жақсы және бағасы RPi 3b -ге тең. |
Micro SD | Амазонка | 16 ГБ немесе одан үлкен micro SD картасы бұл тапсырманы орындайды. Бірақ Амазондағы 16 ГБ карталар қазір 32 ГБ карталармен бірдей. |
Raspberry Pi камерасы | Амазонка | Камера v1 арзанырақ, бірақ v2 жақсы және ұзақ қолдау болады. |
15 істікшелі FPC икемді кабелі | Амазонка | Ұзақтығы бұл жобаны жүзеге асыру жағдайына байланысты. Егер сіз тек прототип жасағыңыз келсе, түпнұсқалық икемді кабель бұл жұмысты орындайды. |
Қуат көзі 5 Вт микро USB | Адафрут | Бұл адам ешқашан кездесуден бас тартпаған! Тамаша сапа. (Фотода жоқ) |
Кірістірілген жарық диоды бар аркадалық түймелер | Амазонка | Қажетті өлшемді таңдаңыз, бірақ CAD дизайны 60 мм түймелерге негізделген |
Резисторлар | Амазонка | Сізге тек 1к және 100 Ом резисторлары қажет. Тұрақты 1/4 Вт жақсы. |
Конденсаторлар 0,1 uF | Амазонка | Үш конденсатор қажет. (Фотода жоқ) |
Өткізгіш сымдар / таспа кабелі | AmazonAmazon | Егер сіз өзіңізді бірнеше доллар үнемдегіңіз келсе, ескі дискета таспасын қолдана аласыз (суретті қараңыз). |
Шөгілетін түтік / Электрлік таспа | AmazonAmazon |
Қажетті құралдар:
Құрал | Маңызды ма? | Пікір |
---|---|---|
Пісіру темірі | Иә | |
Мультиметр | Иә | |
Сымды тазартқыш | Иә | Немесе пышақ/қайшыны қолдануға болады. |
Лазерлік кескіш | Жоқ | |
3D принтері | Жоқ | |
Қысқыштар | Жоқ | Сынақ кезеңінде қорапты бірге ұстау үшін пайдалы. |
Ескертулер:
Жобаның қолжетімділігін арттыру үшін мен оны Raspberry Pi 3b көмегімен дамытуды шештім. Бұл қол жетімділікті арттырғанымен, ол қосымшаның мүмкіндіктерін төмендетеді, себебі RPi жылдам емес. Егер сіз тезірек жұмыс істейтін бір тақталы компьютерді іздесеңіз, NVIDIA Jetson Nano -ны қарастырғыңыз келуі мүмкін
2 -қадам: Сымдарды жалғау
Схемалық диаграмма бұл қадам үшін ең ақпараттық болып табылады және өзін -өзі түсіндіреді. Егер сіз электрониканы жаңадан білсеңіз, легендадағы бейнені қолдана аласыз. Компоненттің мәні (егер қолданылса) схемалық схемада көрсетілген. Фотосуреттер тізбекті қалай құратынымды білуге көмектеседі. Негізінде, мен барлық компоненттерді аркадалық түймеге мүмкіндігінше жақын қостым, бұл не болып жатқанын нақты шолуға әкеледі.
Ескертулер:
- Мен таспалы кабель қосқыштарын қолданғанды ұнатамын, өйткені олар бір өтпелі сымдарға қарағанда берік.
- Ұсынылғандай, мен ескі компьютерден тазартылған таспалы кабельді қолдандым. Бұл біршама қиын, бірақ кабельдің конфигурациясын қолмен растауға тура келеді. Бұл жобада, мысалы, мен кейбір тесіктердің бір -бірімен байланысқанын білдім (бастапқы қолданба үшін негіз ретінде пайдаланылуы мүмкін). Сондықтан суреттерде көріп тұрғандай кейінірек басқа кабель алуға тура келді.
3 -қадам: корпусты салу
Камера корпусы
Пикамераға арналған көптеген корпустар интернеттен еркін жүктеледі. Сонымен, мен дөңгелекті қайта ойлап таппауды және интернеттен қарапайым, бірақ жақсы қаптаманы таңдауды жөн көрдім: thingiverse.com - Raspberry pi камерасының корпусы/корпусы. (Дизайнер В. Герге айқайлау.)
Бағдаршамның корпусы
Бағдаршамның корпусы үшін мен барлық жабдықтарға сәйкес келетін Autodesk Fusion 360 шағын қорапшасын жасадым (оны еркін жүктеуге болады, Ескертулерді қараңыз). Қосымшада сіз менің жергілікті лазерлік кесу компаниясына жіберген файлды таба аласыз. Осылайша, дизайн 6 мм пластинаның қалыңдығына негізделген. Алайда, егер сіз заттарды реттегіңіз келсе, осы сілтеме арқылы файл форматтарының барлық түрлеріне қол жеткізе аласыз. Суреттерде көрсетілгендей, егер сізде лазерлік кескішке қол жетпесе, картон қорапты қолдануға болады. Мен суреттегі картон қорапты прототиптеу үшін қолдандым және ол әдемілік сияқты жұмыс істейді.
Құрастыру өте қарапайым:
- Аркада қосқыштарын орнатыңыз.
- Есік қоңырауының сымдарының бос болуын қадағалаңыз.
- Таспалы кабельді RPi -ге қосыңыз.
- RPi төменгі панельге бұраңыз.
- Есік қоңырауының сымдарын сым қосқышына жалғап, оны төменгі панельге де орнатыңыз.
- Picamera -ны RPi -ге қосыңыз.
- Бүйірлік панельдердің бірінде есік қоңырауын ауыстыратын сым мен RPi қуат сымына тесік жасаңыз.
Сым қосқышы есік қоңырауының сымдарын бекіту нүктесі ретінде пайдаланылады, сондықтан оны кейінірек бар қоңырауға бекітуге болады. Қазір бәрі орнында, оларды бір -біріне жабыстыруға болады. Дегенмен, сіз алдымен келесі әрекеттерді аяқтағыңыз келуі мүмкін, бәрі ойдағыдай жұмыс істейтініне көз жеткізу үшін.
Ескертулер:
Autodesk Fusion 360 әуесқойлар үшін еркін қол жетімді! Егер сіз көшірмеңізді алғыңыз келсе, мына сілтемеге кіріңіз: autodesk.com - Fusion 360 әуесқойлар үшін. Кейбір терминдер бар, сондықтан оларды оқып, қолданыңыз. Бұл менің Fusion 360 -пен алғашқы жобам болды, менде CAD бағдарламалық қамтамасыз етуді қолдану тәжірибесі жоқ, бірақ мен Fusion 360 -пен бірге келетін бағдарламалық жасақтама мен барлық қосымша құралдарды қатты ұнататынымды айтуым керек
4 -қадам: камераны конфигурациялау
Сізде Raspbian орнатылған және ол GUI режимінде жұмыс істейді деп болжануда. Егер сізде Raspbian әлі орнатылмаған болса, мына мақаланы орындауға болады: raspberrypi.org - Операциялық жүйенің суреттерін орнату. Егер сіз Raspbian -ды жүктесеңіз, суретте көрсетілгендей жұмыс үстелін көресіз.
Камераны RPi -де конфигурациялап, оның жұмыс істейтінін көрейік! Мұнда сипатталған әдіс raspberrypi.org - Құжаттардан тікелей алынған. Алдымен терминал терезесінде келесі пәрмендерді орындау арқылы соңғы пакеттерді (камераның микробағдарламасын қоса) жаңартайық (суреттерді қараңыз):
sudo apt жаңарту
sudo apt толық жаңарту
Әрі қарай, камераны келесі пәрмен арқылы қосу керек:
sudo raspi-config
Мәзірде 5. Интерфейс опциялары -> P1 камерасына өтіңіз. Камераны қосу үшін келесі әрекеттерді орындау арқылы RPi қайта жүктеуді таңдаңыз:
қайта жүктеу
Енді камераны дұрыс конфигурациялау керек. Оны терминал терезесін ашу арқылы тексеруге болады:
raspistill -v -o /home/pi/test.jpg
Сурет сақталады: /home /pi.
5 -қадам: Докерді орнату
Тәуелділік пен орнатудағы қателіктерден аулақ болу үшін мен осы жобаға Docker -дің жеке бейнесін құруды шештім (wikipedia.org - Docker қараңыз). Егер сіз Docker туралы ешқашан қолданбаған немесе естімеген болсаңыз, уайымдамаңыз, мен оны осы жобада қалай қолдану керектігін біртіндеп түсіндіремін. Шындығында, бұл өте оңай! Егер сіз бұл жобаны жергілікті қондыруда іске қосқыңыз келсе (Docker контейнерінде емес), мен сізге бірнеше кеңестер беремін. Бірақ Docker бейнесін пайдалану ұсынылады. Ақыр соңында, мен сізге бұл жобаны іске қосуды жеңілдету үшін салдым!
Докер дегеніміз не?
Ескертпе: бұл бөлімде сіз тек кодты іске қосқыңыз келсе, өткізіп жіберуге болатын Docker туралы негізгі ақпарат береді.
Бұл жоба мен Docker -ды бірінші рет қолдандым және бұл керемет! Python үшін virtualenv немесе Anaconda туралы естіген шығарсыз? Докер өте ұқсас, сондықтан сіз басқа ортаны (немесе Docker деп аталатын контейнерді) қолдана отырып, пакеттік нұсқаларды оңай басқара аласыз және бір хост жүйесінде әртүрлі Python нұсқаларын іске қоса аласыз. Бірақ, virtualenv мен Anaconda -мен салыстырғанда, Docker әлдеқайда қуатты, себебі тек Python пакеттерімен шектелмейді. Шынында да, Docker контейнерінде сіз қалаған операциялық жүйенің бумаларын орнатып, басқара аласыз. Мысалы, дерекқоры бар Python веб -құрылымын (мысалы, Django) басқаратын, көшіргіңіз келетін веб -сайтты қарастырыңыз (мысалы, MySQL). Docker контейнері болмаса, сіз барлық пакеттерді жаңа серверге орнатуыңыз керек еді, бұл процесс қателер мен қателерге өте бейім. Екінші жағынан, сіздің веб -сайтыңыз Docker -де құрылған кезде, көшіру негізінен сурет файлын/файлдарын жаңа серверге жылжыту және оны іске қосу сияқты оңай. Сіз ойлағандай, Docker Instructables бойынша жобалар үшін өте пайдалы;)! Егер сіз Docker туралы көбірек білгіңіз келсе, олардың веб -сайтына кіріңіз: docker.org - Docker: Enterprise Container Platform. Енді Docker -мен бірге тұрайық!
Docker орнату
Орындау арқылы Docker орнатыңыз:
curl -sSL https://get.docker.com | ш
Содан кейін пайдаланушы Docker -ді іске қосу құқығын беретін 'docker' пайдаланушылар тобына қосылады. Бұл:
sudo usermod -aG docker $ USER
Енді сіз Docker -ді іске қосуыңыз керек. Мұны сәлем әлемінің суретін іске қосу арқылы тексеруге болады:
докер жүгіру сәлем-әлемі
Ақырында, есік қоңырауын Python сценарийлерін іске қосуға қажетті барлық тәуелділіктерді қамтитын Docker бейнесін тартайық. Бұл процесс біраз уақыт алуы мүмкін, себебі сурет өте үлкен (~ 1,5 ГБ). Орындау:
докер тарту erientes/есік қоңырауы
Ескерту: Dockerfile файлын Github есік қоңырауы қоймасынан табуға болады. Енді бәрі келесі қадамда талқыланатын есік қоңырауының сценарийлерін орындауға дайын.
Жергілікті орнату
Тағы да, мен жергілікті орнатудың орнына Docker кескінін қолдануды ұсынамын. Бірақ бұл оқулықты аяқтау үшін мен қазір жергілікті орнату үшін жасаған кейбір қадамдарды сипаттаймын.
Кодты іске қосу үшін python нұсқасы> = 3.5 болуы керек (мен python 3.5.3 қолдандым) және келесі пакеттерді орнату қажет:
- face_recognition
- пикамера
- ессіз
- Жастық
- питон-телеграмма-бот
- RPi. GPIO
Бұл сілтеме өте пайдалы: Github - Raspberry Pi -ге dlib және face_recognition орнатыңыз. Алайда мұнда кейбір ескертулер бар: 1) Жастыққа кем дегенде Python 3.5 қажет, ол осы әдіс бойынша орнатылмайды. 2) Сондай -ақ, есік қоңырауының жобасына қажет барлық пакеттер осы әдісті қолдану арқылы орнатылмайды. Дегенмен, сіз оны pip3 көмегімен орнатуыңыз керек.
6 -қадам: Есік қоңырауының сценарийлерін іске қосу
Сценарийлерді алыңыз
Сценарийлерді қолмен жүктеуге болады: github.com - Erientes/есік қоңырауы. Немесе Git орнатылған болса, келесі әрекеттерді орындаңыз:
git clone
Бүркеншік аттар жасаңыз
Енді өмірімізді жеңілдету үшін сценарийлерді іске қосу үшін бірнеше бүркеншік аттар құрайық. Орындау:
парақ тақтасы ~/.bashrc
Келесі жолдарды қосыңыз және файлды сақтаңыз:
alias doorbell_run = 'docker run -артықшылықты -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell python $ 1'
alias doorbell_login = 'докерлік жүгіру -артықшылықты -v/home/pi/есік қоңырауы:/есік қоңырауы -w/есік қоңырауы -бұл erientes/есік қоңырауы
Тест сценарийлері
Барлығы дұрыс орнатылғанын тексеру үшін жаңа терминал ашып, орындаңыз:
doorbell_run мысалдары/0_test_installation.py
Нәтиже терминал терезесінде «Есік қоңырауын орнату сәтті аяқталды!» Деген хабар болуы керек. Камераға Docker контейнері арқылы кіруге болатынын тексеру үшін келесі әрекеттерді орындаңыз:
есік қоңырауының мысалдары/1_test_camera.py
1_test_camera.py іске қосу арқылы фотосурет «test.jpg» түрінде сақталады, оны/home/pi/doorbell ішінен табуға болады. Ақырында, жарықдиодты драйверлерді келесі жолмен тексеруге болады:
есік қоңырауының қосылу мысалдары/2_test_voicehat_drivers.py
Бұл сценарий жұмыс істеп тұрғанда, түйме басылған кезде аркадалық қосқыштағы жарық диоды жауап беруі керек.
Doorbell сценарийлерін іске қосу
Doorbell сценарийлерін іске қосу үшін алдымен Telegram ботының тіркелгі деректерін алу қажет. Телефонға Telegram орнатыңыз және telegram.me - Botfather -ге өтіңіз. Сөйлесуді бастаңыз және енгізіңіз:
/newbot
Боттың атын және пайдаланушы атын енгізіңіз. Осыдан кейін сізге кіру белгісі беріледі. Бұл мәнді/home/pi/doorbell ішіндегі 'credentials_telegram_template.py' файлына көшіріп, оны 'credentials_telegram.py' атты жаңа файлға сақтаңыз. Соңында Botbot сізге ұсынатын сілтемені басу арқылы сіз жасаған ботпен сөйлесуді бастаңыз.
Соңында, бетті тану арқылы есік қоңырауын іске қосамыз:
main.py есік қоңырауы
Ескертулер:
Егер сіз кодтың қалай жұмыс істейтіні туралы көбірек білгіңіз келсе, сценарийлердегі түсініктемелерді тексеріңіз. Егер сізде код туралы сұрақ болса, Github арқылы маған хабарласыңыз
7 -қадам: Есік қоңырауын пайдалану
Есік қоңырауының сценарийін келесі әрекеттерді орындау арқылы іске қосамыз:
main.py есік қоңырауы Пакеттерді жүктегеннен кейін сценарийлер бос қалады. Негізінен 2 нәрсе болуы мүмкін:
- Біреу есік қоңырауын соғады.
- Ақ тізімге біреу қосылады.
Біреу есік қоңырауын соғады
Бұл жағдайда сценарий бет анықталған суретке түсірмейінше суретке түсіруді бастайды. Анықтағаннан кейін, «face_recognition» python пакетінің кейбір әдістері беттің 128 кодтауын есептеу үшін шақырылады. Содан кейін алынған кодтау whitelist.csv және blacklist.csv кодтауымен салыстырылады. Мүмкін нәтижелер келесі жауапқа әкеледі:
Ақ тізімге кірді ме? | Қара тізімге кірді ме? | Жауап |
---|---|---|
Иә | Жоқ | Жасыл шам жанып тұрады. |
Иә | Иә | Сары шам жанып тұрады. Есік қоңырауының камерасы суреттерді апельсин белгісімен Telegram ботына жібереді. Бұл жағдай екі тізімге біреу қосылған жағдайда орын алуы мүмкін. Мысалы, біреуді алғаш қарсы алған кезде, бірақ кейін қара тізімге енгізгенде. |
Жоқ | Жоқ | Сары шам жанып тұрады. Есік қоңырауының камерасы суреттерді апельсин белгісімен Telegram ботына жібереді. |
Жоқ | Иә | Қызыл шам жанып тұрады. Есік қоңырауының камерасы Telegram ботына қызыл белгісі бар фотосуреттерді жібереді. |
Ақ тізімге біреу қосылады
Ақ тізімге біреуді қосу үшін есік қоңырауы жұмыс істемей тұрған кезде бағдаршамның сары түймесін басыңыз. Алдымен сары жарық жанады. Егер жасыл шам 3 рет жыпылықтаса, адамның беті ақ тізімге сәтті қосылады. Егер жасыл шам 3 рет жыпылықтамаса, әрекет сәтті болмады. Бұл жағдайда сары түймені қайтадан басыңыз. Есік қоңырауын соғып, жасыл шамның өтіп кеткенін тексеру арқылы оның сәтті болғанын оңай тексеруге болады.
Қара тізімге біреуді қалай қосуға болады?
Әлбетте, ниеті нашар адамдар бізге бет -әлпетінің суретін беру үшін өтпейді. Оның орнына, сіз (мысалы) полиция жариялаған img/blacklist қалтасына аты шыққан адамдардың суреттерін қосуға болады. Әр сағат сайын бұл қалта жаңа суреттерге тексеріледі. Егер жаңа сурет болса, бетті кодтау есептеледі және blacklist.csv -ге қосылады. Содан кейін кескіннің аты өзгертіліп,/img/blacklist/кодталған қалтаға жылжытылады.
Ескертулер:
- Сценарийлерді RPi -ге кіру арқылы басқару көбірек ақпарат пен бақылауды қамтамасыз етеді, бірақ негізгі бақылау мен ақпаратты тек бағдаршам дисплейінің көмегімен алуға болады.
- Бетті тану python 'face_recognition' пакеті арқылы жүзеге асады. Бұл пакет жабайы эталондағы бетбелгілерде 99,38% дәлдікпен жұмыс жасайтын соңғы үлгідегі алгоритмі бар Dlib-ке негізделген (көзі: dlib.net-Deep Metric Learning көмегімен жоғары сапалы бетті тану).).
Көмекші технологиялар байқауының бірінші жүлдесі
Ұсынылған:
DIY функциясы/толқындық генератор: 6 қадам (суреттермен)
DIY функциясы/толқын пішіні генераторы: Бұл жобада біз DIY нұсқасы үшін қандай ерекшеліктер маңызды екенін анықтау үшін коммерциялық функция/толқын пішіні генераторларына қысқаша шолу жасаймыз. Содан кейін мен сізге қарапайым функция генераторын, аналогы мен цифрын қалай жасау керектігін көрсетемін
Arduino көмегімен RFID есікті құлыптау механизмі: 5 қадам (суреттермен)
Arduino көмегімен RFID есіктерін құлыптау механизмі: Бұл нұсқаулықта біз RC522 RFID сенсорын Arduino Uno -ға қосамыз, есіктің, тартпаның немесе шкафтың RFID арқылы басқарылатын қарапайым құлыптау механизмі. Бұл сенсорды қолдана отырып, сіз RFID белгісін немесе картаны құлыптау үшін пайдалана аласыз
DIY DDS арзан функциясы/сигнал генераторы: 4 қадам (суреттермен)
DIY DDS арзан функциясы/сигнал генераторы: Бұл DDS сигнал генераторының модульдік тақталарын айналаға қарасаңыз 15 долларға сатып алуға болады. Олар Синус, Квадрат, Үшбұрыш, Ара тіс (және кері) толқын пішіндерін (және тағы басқаларын) өте дәл жасайды. Олардың сенсорлық басқару элементтері де бар, амплитудасы
Ақылды басқару функциясы бар үйдегі тоңазытқыш (терең мұздатқыш): 11 қадам (суреттермен)
Ақылды басқару функциясы бар үйдегі тоңазытқыш (терең мұздатқыш): Сәлем достар бұл пельтиер модуліне негізделген DIY тоңазытқышының 2 бөлігі, бұл бөлімде біз 1 емес, 2 пельтиер модулін қолданамыз, сонымен қатар үнемдеу үшін қажетті температураны орнату үшін термиялық реттегішті қолданамыз. аздап энергия
Дабыл функциясы бар Arduino сандық сағаты (реттелетін ПХД): 6 қадам (суреттермен)
Дабыл функциясы бар Arduino сандық сағаты (реттелетін ПХД): Бұл DIY нұсқаулығында мен сізге өзіңіздің сандық сағатты қалай жасау керектігін көрсетемін. Бұл жобада мен Arduino UNO - Atmega328p микроконтроллеріне негізделген жеке ПХД жасауды шештім