Мазмұны:

Есікті тану функциясы: 7 қадам (суреттермен)
Есікті тану функциясы: 7 қадам (суреттермен)

Бейне: Есікті тану функциясы: 7 қадам (суреттермен)

Бейне: Есікті тану функциясы: 7 қадам (суреттермен)
Бейне: ЧУПАКАБРА ма, әлде ЖЫН ба?#тылсымдүние #td #төреденбірвидео 2024, Қараша
Anonim
Есікті тану мүмкіндігі бар есік қоңырауы
Есікті тану мүмкіндігі бар есік қоңырауы

Мотивация

Жақында менің елімде қарт адамдарға жеке үйлерінде қарақшылық шабуыл жасалды. Әдетте, кіруге рұқсатты тұрғындардың өздері береді, өйткені келушілер оларды күтуші/медбике екендігіне сендіреді. Бұл әңгімелер мені қаншалықты ашуландырады және қайғылы сезінеді. Үй сіздің бірінші қорғаныс орныңыз болуы керек, ал егер сіз сыртта болған кезде осал жағдайда болсаңыз. Осыны ескере отырып, мен бұл жобаны бастадым.

Негізгі ақпарат

Есік қоңырау жүйесі негізінен қарт адамдарға немесе көру қабілеті нашар адамдарға арналған және олардың жұмысында өте қарапайым. Қысқаша айтқанда, есік қоңырауының қосқышы камераны түсіруге мүмкіндік береді. Содан кейін, кадрлардағы беттер анықталады және ақ тізім мен қара тізіммен сәйкес келеді. Жолаушы бағдаршамның айқын дисплейі арқылы визуалды кері байланыс алады. Осылайша, жасыл, сары немесе қызыл шамдар (лар) ақ тізімге, сәйкесінше жүйеге белгісіз немесе қара тізімге енгенін көрсетеді. Егер сары немесе қызыл шам жанса, фото 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 мм пластинаның қалыңдығына негізделген. Алайда, егер сіз заттарды реттегіңіз келсе, осы сілтеме арқылы файл форматтарының барлық түрлеріне қол жеткізе аласыз. Суреттерде көрсетілгендей, егер сізде лазерлік кескішке қол жетпесе, картон қорапты қолдануға болады. Мен суреттегі картон қорапты прототиптеу үшін қолдандым және ол әдемілік сияқты жұмыс істейді.

Құрастыру өте қарапайым:

  1. Аркада қосқыштарын орнатыңыз.
  2. Есік қоңырауының сымдарының бос болуын қадағалаңыз.
  3. Таспалы кабельді RPi -ге қосыңыз.
  4. RPi төменгі панельге бұраңыз.
  5. Есік қоңырауының сымдарын сым қосқышына жалғап, оны төменгі панельге де орнатыңыз.
  6. Picamera -ны RPi -ге қосыңыз.
  7. Бүйірлік панельдердің бірінде есік қоңырауын ауыстыратын сым мен 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 -қадам: Есік қоңырауын пайдалану

Image
Image
Есік қоңырауын қолдану
Есік қоңырауын қолдану
Есік қоңырауын қолдану
Есік қоңырауын қолдану

Есік қоңырауының сценарийін келесі әрекеттерді орындау арқылы іске қосамыз:

main.py есік қоңырауы Пакеттерді жүктегеннен кейін сценарийлер бос қалады. Негізінен 2 нәрсе болуы мүмкін:

  1. Біреу есік қоңырауын соғады.
  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 көмегімен жоғары сапалы бетті тану).).
Көмекші технологиялар сайысы
Көмекші технологиялар сайысы
Көмекші технологиялар сайысы
Көмекші технологиялар сайысы

Көмекші технологиялар байқауының бірінші жүлдесі

Ұсынылған: