Калитка на сканере отпечатков пальцев CROW R503

vde69
Offline
Зарегистрирован: 10.01.2016

Заняться этой проблемой меня сподвигло 2 не связанных друг с другом событий, во первых на работе при решение весьма конкретных задач всерьез обсуждали некую автоматизацию с использованием биометрического распознавания, вариантов было много, но все или слишком дорогие или нам не подходили.

Ну а второе событие - меня обокрали :) сперли с участка велосипед, и хоть злодеев нашли и велосипед вернули но я стал укреплять передний край обороны от злодеев (датчики, камеры и т.д.).

И вот я добрался до калитки, стал думать как сделать и надежно и безопасно, сначала хотел купить датчик "таблетка", но потом понял, что это не удобно, и потерять можно и забыть дома (дети постоянно бегают то туда то сюда).

От сюда возникло желание сделать так, что бы нельзя было ключ украсть или потерять. Но по сколько мне было интересно разобраться и я решить сразу и вопрос который возник на работе, то я заказал датчик без платы управления.

Начал я с библиотеки Adafruit_Fingerprint, но очень быстро понял, что она во первых сильно кривая, а во вторых в ней банально нет поддержки части нужных команд датчика R503. 

В результате я просто частично ее использовал в виде вставок в код.

На момент публикации у меня все работает в домашних условия (платы спаяны, код написан). Но поставить на улицу пока не могу (погода плохая), буду ждать выходных.

теперь ТТХ того, что получилось:

1. После обучения, распознает палец почти со 100% вероятностью, не срабатывает примерно 1 раз на 50 попыток. Чужие пальцы ни разу не привели к открытию (проверял на всей семье).

2. Время распознавания около 1 сек

3. Обучение на 1 палец занимает 2...3 минуты (необходимо создать 3 модели)

В 1 посте выложу код и схему (что бы можно было править)

vde69
Offline
Зарегистрирован: 10.01.2016

схема

файл R503.ino

 

файл A_Config.h

файл GROW_R503.cpp

файл GROW_R503.h

файл Run.cpp

файл Run.h

файл other.ino

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

vde69 пишет:
Но поставить на улицу пока не могу (погода плохая)
Не бросайте, пожалуйста, тему. Больше всего интересует как раз на улице в плохую погоду. Дождь, влажная взвесь, изморозь, иней, роса - все вот эти вот прелести. Так что, как поставите на улице, напишите потом как оно себя показало.

sadman41
Offline
Зарегистрирован: 19.10.2016

У меня на мобиле только чистые пальцы распознаются. Стоит только мелким ремонтом (с наличием пыли) позаниматься - все, начинаются капризы. Мол пальцы не те...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вот и я ж про то же. А на улице пальцы то замёрзли, то увлажнились, то ещё чего. Потому и спрашиваю про плохую погоду.

kost82
Offline
Зарегистрирован: 30.11.2015

Сканер отпечатков в условиях улицы - ИМХО это баловство. Либо надо его весить в сухом и теплом месте.

У нас в офисе я ставил заводской сканер отпечатков на входной двери. Работает нормально, если руки сухие. Чуть только немного влажные - все, не открывает. Ну и плюс нужно ручное дублирование открывания замка. Пару раз замок глючил, если бы он с ключа не открывался - куча народа оказалось бы запертыми в офисе.

В детском саду у нас около года на калитках (на улице) стоят примерно вот такие замки 

Я такой замок тоже настраивал и устанавливал. У него есть возможность привязать брелок (как у домофона), код менять можно хоть каждый день. Единственный минус - от частого использования некоторые цифры на кнопках "облезли". И на одной панели перегорела подсветка одной из клавиш. Настроить можно различные типы замков, и еще есть куча настроек. Цена замка в районе 1-2 тыс. руб. и выглядит вполне прилично. Если прикинуть, что его каждый день открывают по несколько сотен (если не тысяч) раз - вполне достойный вариант. И ключи таскать не надо.

Есть еще замки в антивандальном исполнении, типа таких 

они на вид попрочнее, программируются тоже легко. Только вроде брелки к ним не привязываются.

Если решите все-таки ставить отпечаток пальцев - отпишитесь о полевых испытаниях.

vde69
Offline
Зарегистрирован: 10.01.2016

ставить на улицу буду в выходные (если дождя не будет),

пока провел следующие испытания

1. сильно потер пальцы (до красноты), эмитация физ нагрузки - все ОК

2. подложил под палец 2 нитки, эмитация мусора  (пробовал под разными положениями) - все ОК

3. втер в палец цемент, эмитация грязных рук - все ОК

4. сильно намочил палец - НЕ работает

5. сухой палец и влажный датчик (из пульеверизатора, аналог росы) если не слегка влажно - все ОК, если прямо каплями - НЕ работает

6. через тонкий слой пленки - вообще не срабатывает датчик касания

 

vde69
Offline
Зарегистрирован: 10.01.2016

Поставил на улицу, правда не до конца (но об этом чуть ниже)

На улице 0 градусов, влажно и что-то моросит, короче мерзость, провозился около 3х часов сам замерз, но точно могу сказать датчик то-же замерз :)

Итого - сам сканер работает почти так-же как дома, чуть хуже стал работать датчик наличия пальца (контакт WakeUp), но распознавание и поиск работаю хорошо.

Сами пальцы от мороза то же "потеряли форму", и стали давать примерно 20% ошибок, но дополнительное "дообучение" (повторил обучение и он добавил по 1 модели на палец), в результате правильное распознование более примерно 95%

 

теперь о том что я не доделал, и тут нужна помощь сообщества

Короче у меня есть явная проблема в электрической схеме, я не зря запаял джампер "test", без него вся схема работает нормально, но само собой замок не открывается.

Когда я его ставлю у меня проседает напряжение на датчике и он перестает работать,  

Средний провод разьема отмеченный как "Key" идет из вызывной панели и на нем постоянные +4,5v, это провод должен идти на внутренний выключатель "Открыть замок".

То есть если замкнуть "Key" на землю, то замок открывается.

 

Как правильно реализовать такое замыкание? понятно, что можно поставить реле, но очень не хочется...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

vde69 пишет:

Средний провод разьема отмеченный как "Key" идет из вызывной панели и на нем постоянные +4,5v, это провод должен идти на внутренний выключатель "Открыть замок".

То есть если замкнуть "Key" на землю, то замок открывается.

Вы точно уверены, что логика именно такова? У меня вот всё по другому. Открыванием занимается сама вызывная панель по сигналу с домофона. Она (панель) замыкает питание на соленоид замка. А когда она ничего не замыкает, то мультиметр показывает на проводе те же 12В, что и должны быть при открывании за счёт тока утечки ключа.

vde69
Offline
Зарегистрирован: 10.01.2016

ЕвгенийП пишет:

vde69 пишет:

Средний провод разьема отмеченный как "Key" идет из вызывной панели и на нем постоянные +4,5v, это провод должен идти на внутренний выключатель "Открыть замок".

То есть если замкнуть "Key" на землю, то замок открывается.

Вы точно уверены, что логика именно такова? У меня вот всё по другому. Открыванием занимается сама вызывная панель по сигналу с домофона. Она (панель) замыкает питание на соленоид замка. А когда она ничего не замыкает, то мультиметр показывает на проводе те же 12В, что и должны быть при открывании за счёт тока утечки ключа.

Уверен, вот схема 

 

кроме того если я замыкаю этот контакт на землю действительно замок открывается

vde69
Offline
Зарегистрирован: 10.01.2016

 

Вот как установил сам датчик, по идее он закрыт от ветра и дождя (с верху над калиткой навес)

 

vde69
Offline
Зарегистрирован: 10.01.2016

Все теперь у меня работает. Была проблема с оптроном, он банально не рабочий был.

заодно поменял резистр на 10к (можно и меньше, но учитывая, что мне не требуется яркость и тот факт, что этот идет с чужого устройства решил оставить 10к), и поставил светодиод для визуального контроля.

Исправил несколько багов в программе.

схему и программу в 1 посте обновил до актуального состояния.

 

Теперь, что касается субьективного ощущения (на улице -2 и мелкий снег)

1. на разьем 3.3vt лучше подавать более высокое напряжение чем 3.3, от этого улучшается "отзывчивость", по той документации которая у меня есть, допустимо до 6 вольт, у меня сейчас не смотря на стабилитрон (на 3.3) реально 4.3 вольта, по чему - не понимаю, когда питание было от USB было ровно 3.3, а сейчас 4.3, но я включал и напрямую на +5, отзывчивость была выше.

2. есть эффект "разогрева", возможно при -25 будут проблемы, будем ждать морозов

3. Обучение надо периодически повторять, при этом добавляются модели на "скукоженные" пальцы

4. ощущается некая "тормознутость" по сравнению например с телефоном, причина в том, что питание на датчик подается только после обнаружения касания, то есть расходуется время на определение касания+запуск подуля+сканирование+распознавание+поиск в базе. На холодную это все примерно 2...3 сек, при повторном скане 1..2 сек

 

vde69
Offline
Зарегистрирован: 10.01.2016

Прошла неделя, за это время был и снегопад и ледяной дождь. В целом все работает хорошо. Для датчика единственно чего ему мешает - это когда он мокрый, все остальное работает. Проверка проходит на 4х членах семьи, возраст от 8 до 50 лет, полет хороший. 

сегодня наконец запихнул платы во временную коробочку, когда будет тепло надо будет переделать с макеток на нормальную плату и сделать коробочку по размеру побольше.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

vde69 пишет:
когда будет тепло надо будет переделать с макеток на нормальную плату и сделать коробочку по размеру побольше.
А монтажная коробка не подойдёт? Там уже в ввод проводов готовый и можно погодостойкую взять.

vde69
Offline
Зарегистрирован: 10.01.2016

ЕвгенийП пишет:

vde69 пишет:
когда будет тепло надо будет переделать с макеток на нормальную плату и сделать коробочку по размеру побольше.
А монтажная коробка не подойдёт? Там уже в ввод проводов готовый и можно погодостойкую взять.

 

у меня сейчас такая https://www.stroyportal.ru/catalog/section-korobki-montazhnye-2668/korobka-raspayachnaya-80h80h25-otkrytoy-provodki-b-684306313/ но висит на видном месте, по этому надежную и страшную не хочется.

сейчас из бутылки феном сделал сверху колпак, то есть сейчас ничего не промокнет, но во первых нужно отверстие для кнопки обучения, наверно нужно светодиод вывести.

Короче надо будет весной посмотреть, сейчас все равно этим заниматься холодно, к весне может 3д принтер куплю и напечатаю или подберу чего...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, для видного места я сам на принтере напечатал такую, что сверху у неё вообще никаких щелей нет от слова совсем, т.е. никакой дождь и снег ей не страшны. Там у меня профильная труба 40х25, вот я и сделал коробку для клемм в аккурат шириной 25мм, чтобы как родная стала. Могу показать, если интересно.

vde69
Offline
Зарегистрирован: 10.01.2016

Всем кого интересовали полевые испытания:

Пришлось третий раз проводить обучение, видимо пальцы меняют геометрию от множества параметров. При чем у меня сильнее хуже чем у остальных принимаются, у детей вообще замечательо у меня иногда с десятого раза... После дообучения все хорошо, но не надолго, примерно на месяц хватает.

наверно буду проект дорабатывать, поставлю sd карту и заложу программу самообучение, на основе принятых отпечатков буду строить варианты с теми которые не прошли, по идее те которые совсем чужие не смогут объединится в пару.

Короче если до НГ придет блок питания для сверлильного станка (3 посылки зависли на почте) доделаю его, если не придет займусь этой доработкой...

vde69
Offline
Зарегистрирован: 10.01.2016

Прошла зима.

Разобрал макетку, вытравил плату, перепаял, залачил цапон лаком, на плату нанес технические надписи. Внес небольшие изменения, в основном в схему питания.

Исправил в коде 1 серьезную ошибку (переполнение буфера) и немного улучшил стабильность и скорость.

Напечатал нормальный корпус.

Все работает, ничего переделывать больше не планирую.

 

РЕЗЮМЕ: в целом данный датчик вполне подходит для средней полосы для работы на улице без прямого попадания на него осадков (под козырьком)

 

зы

в 1м посту обновил и схему и код

Psixxx
Offline
Зарегистрирован: 26.11.2021

Скажите пожалуйста как вы это все прошивали? через Atom? ардуино IDE ругается...

vde69
Offline
Зарегистрирован: 10.01.2016

Psixxx пишет:

Скажите пожалуйста как вы это все прошивали? через Atom? ардуино IDE ругается...

шил через IDE

я в коментах всегда пишу версию на чем шил -  версия среды Arduino 1.8.14

Psixxx
Offline
Зарегистрирован: 26.11.2021

А не могли бы Вы скинуть все файлы в архиве? Мб я что-то не так перенес из кода.

vde69
Offline
Зарегистрирован: 10.01.2016

какую ошибку выдает?

Psixxx
Offline
Зарегистрирован: 26.11.2021
Arduino: 1.8.15 (Windows 10), Плата:"Arduino Nano, ATmega328P"
 
 
In file included from C:\Users\пСыхХх\Desktop\Новая версия\R503\1\R503\R503.ino:41:0:
 
GROW_R503.h:88:12: error: #include expects "FILENAME" or <FILENAME>
 
exit status 1
 
#include expects "FILENAME" or <FILENAME>
 
 
 
 
 
Dumper
Offline
Зарегистрирован: 21.09.2020

Ну можно ж сделать намного проще, штош вы.
Звоните своей ардуине со своего номера. Ардуина сверяет входящий номер. Если он true, система сбрасывает звонок и открывает/снимает с охраны. Никакого внешнего контакта, никаких чужих.
Не забываем про watchdog

vde69
Offline
Зарегистрирован: 10.01.2016

Psixxx пишет:

In file included from C:\Users\пСыхХх\Desktop\Новая версия\R503\1\R503\R503.ino:41:0:
 
GROW_R503.h:88:12: error: #include expects "FILENAME" or <FILENAME>
 
exit status 1
 
#include expects "FILENAME" or <FILENAME>
 
 
не находит файл #include "Arduino.h" 
 
IDE установлена криво.... скорее всего в нетиповой каталог... 
 
Psixxx
Offline
Зарегистрирован: 26.11.2021

Была открыта IDE от Flprog. Поставил отдельно IDE, установил библиотеку и все равно такая же ошибка...

vde69
Offline
Зарегистрирован: 10.01.2016

Psixxx пишет:

Была открыта IDE от Flprog. Поставил отдельно IDE, установил библиотеку и все равно такая же ошибка...

это проблема не скеча а установки IDE, заведи новую тему (в соответствующем разделе) с описанием ошибки, народ поможет, я спать ушел :)

kost82
Offline
Зарегистрирован: 30.11.2015

Dumper пишет:
Ну можно ж сделать намного проще, штош вы.
Звоните своей ардуине со своего номера. Ардуина сверяет входящий номер. Если он true, система сбрасывает звонок и открывает/снимает с охраны. Никакого внешнего контакта, никаких чужих.
Не забываем про watchdog

Не понимаю, чем Ваш вариант проще:
1. Нужно достать телефон, набрать номер, дождаться ответа. Это всё секунд 10-15 минимум. Отпечаток пальца всегда под рукой в прямом и переносном смысле слова.
2. Существуют сервисы подмены номеров, любой может открыть дверь, зная Ваш номер. Способов узнать номер можно придумать кучу.
3. Телефон абонента может быть временно недоступен. При отсутствии движения по счету месяца через три оператор блокирует симку.

Dumper
Offline
Зарегистрирован: 21.09.2020

kost82 пишет:
Не понимаю, чем Ваш вариант проще:
1. Нужно достать телефон, набрать номер, дождаться ответа. Это всё секунд 10-15 минимум. Отпечаток пальца всегда под рукой в прямом и переносном смысле слова.
2. Существуют сервисы подмены номеров, любой может открыть дверь, зная Ваш номер. Способов узнать номер можно придумать кучу.
3. Телефон абонента может быть временно недоступен. При отсутствии движения по счету месяца через три оператор блокирует симку.

Да, мой вариант дольше, но безопаснее и без контакта с погодными условиями.
2.От того, что вы подмените номер, вы совершенно не можете знать, на каком номере висит охранка. Куда будете звонит с подменного номера-то?

SAB
Offline
Зарегистрирован: 27.12.2016

С телефоном, когда то делал следующий доступ и он до сих пор работает (используя то, что у всех операторов связи по их закону, 3 секунды соединения всегда бесплатны для людей) .

1. Подойдя к двери, человек звонит на номер для открытия 2. Контроллер, определив номер, кладет трубку. 3. Найдя номер в базе доступа, перезванивает на номер человека. 4. Если действительно человек хочет пройти в дверь, он поднимает трубку. 4. контроллер видя, что подняли трубку, ее кладет и открывает дверь. 5. Если человек дает отбой (сам кладет трубку), то означает, что это не он хочет пройти. Да, вот этот алгоритм занимал примерно 5-7 секунд. Но он был надежный и работает годами бесплатно на безлимитных тарифах опсосов. Потому как они блокируют симку, если нет исходящих/входящих звонков а не движения по счету. Может уже что то поменялось у них но раньше было так.

И в данном случае, ни какой подмены номеров не прокатит, потому как звонок контроллера будет прямым. Ну и я думаю безопастникам будет повод задуматься о возможной попытке проникновения.

vde69
Offline
Зарегистрирован: 10.01.2016

SAB пишет:

С телефоном, когда то делал следующий доступ и он до сих пор работает (используя то, что у всех операторов связи по их закону, 3 секунды соединения всегда бесплатны для людей) .

Все варианты с телефоном требуют наличие этого самого телефона, живя в деревне Вы бы знали, что наличие телефона не всегда возможно, а при наличии детей тем более.

Кроме того если уж привязыватся к физическому устройству, то не к телефона а к таблетке/брелку это однозначно и проще и быстрее и надежнее.

Лично я за биометрию, если Вы хотите привязку к внешнему устройству - Вам никто не запрещает...

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

может проще архивом скетч выложить?

vde69
Offline
Зарегистрирован: 10.01.2016

ua6em пишет:

может проще архивом скетч выложить?

 

мне тут zip не дает сохранять в своих файлах, а выкладывать на левые ресурсы не хорошо, он сдохнет через какое-то время

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

vde69 пишет:

мне тут zip не дает сохранять в своих файлах, а выкладывать на левые ресурсы не хорошо, он сдохнет через какое-то время

скинь на мыло ua6em собака orviss точка ru

Psixxx
Offline
Зарегистрирован: 26.11.2021

и мне бы на  мыло не могли бы скинуть? kesha.ncuxxx@gmail.com

vde69
Offline
Зарегистрирован: 10.01.2016

скинул на 3 ящика.

в папке "схемы" 3d модели корпуса, плата, схема, и официальная pdf по датчику

Psixxx
Offline
Зарегистрирован: 26.11.2021

Спасибо огромное, вот теперь скетч компилится без ошибок.

vde69
Offline
Зарегистрирован: 10.01.2016

Psixxx пишет:

Спасибо огромное, вот теперь скетч компилится без ошибок.

 

да в первом посту строка 31 (файл R503.ino) обрезалась, должно быть

31#include <SoftwareSerial.h>

строки 11,12 (файл GROW_R503.cpp) обрезалась, должно быть

11#include <util/delay.h>
12#include <SoftwareSerial.h>

строка 88 (файл GROW_R503.h) обрезалась, должно быть

88#include <SoftwareSerial.h>

 

короче обрезались символы больше, меньше.