R307 Fingerprint Module - не могу получить Found ID если он больше 162

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

Ситуевина такая, есть выше упомянутый модуль, есть библиотека честно скачанная отседова - https://github.com/adafruit/Adafruit-Fingerprint-Sensor-Library есть программка для работы с модулем SFGDemo.exe далее используя программу записываю в память модуля несколько сканов отпечатков и присваиваю им определенные ID учитывая данные из pdf на модуль, а именно Storage capacity - 1000, номера давал 0, 10, 150, 180, 999 далее этой же програмой проверяю записи - все замечательно на палец записанный под 999 программа и выдает  Found ID=999, на остальные соответственно их же номера...

А вот дальше начинаются приколы!!!

Загружаю в ардуинку пример из библиотеки fingerprint начинаю проверять пальцы и на пальцы с номерами выше 150 реакции ни какой нет. Ок!!! Дописываю в скетч пару строк в функцию getFingerprintID, чтобы не просто вываливалась, а писала по какой ошибке вывалилась и в итоге на моменте fingerFastSearch на пальцы с ID выше 162 (установленно чисто эксперементальным путем) выпадает в Did not find a match, т.е. типа этот палец не зарегистрирован... Но программа SFGDemo.exe спокойно получает ID этих пальцев!!! И 180 и 999, а вот скетч по какой то причине нет. И вот очень бы хотелось понять по какой??? Пробовал сам поковырятся в библиотеке, но уровня знаний для этого не хватает...

Может кто то уже копал данный вопрос??? Подскажите где и как снять это ограничение....

 

 

kalapanga
Offline
Зарегистрирован: 23.10.2016

162 это как раз число из даташита. Там написано Storage capacity 162/930. Надо читать вникать, что это за два числа. Разные режимы, разные модели датчиков?

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

kalapanga пишет:

162 это как раз число из даташита. Там написано Storage capacity 162/930. Надо читать вникать, что это за два числа. Разные режимы, разные модели датчиков?

Я конечно извиняюсь, но в моем даташите именно на мой модуль R307 написано Storage capacity 1000. Плюс программа SFGDemo - находит ID и 180 и 250 и 999.... И еще она же определяет параметры устройства Hardware Information где рисует Finger Database: 1000

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

kalapanga
Offline
Зарегистрирован: 23.10.2016

Ищет оно функцией fingerFastSearch. В ней есть GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xA3);

A3 - уже чего-то напоминает. Дальше в даташите искать эту команду FINGERPRINT_HISPEEDSEARCH (0x1B) и её параметры. Или на шару попытаться увеличить последний. Вдруг прокатит :)

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

В файле библиотеки Adafruit_Fingerprint.cpp нашел следующее:

uint8_t Adafruit_Fingerprint::fingerFastSearch(void) {
  // high speed search of slot #1 starting at page 0x0000 and page #0x00A3
  GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xА3);
  fingerID = 0xFFFF;
  confidence = 0xFFFF;

  fingerID = packet.data[1];
  fingerID <<= 8;
  fingerID |= packet.data[2];

  confidence = packet.data[3];
  confidence <<= 8;
  confidence |= packet.data[4];

  return packet.data[0];
}

И вот тут явно указан размер 0х00А3 = 163

Подскажите как его заменить на 1000=0х03Е8??? Простое редактирование данного файла у меня ни чего не дало...

З.Ы. пока занимался изысканиями что то уже написали ))) На шару не прокатило (((

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

- А почему у меня Запорожец больше 120 км,ч не разгоняется?

- У него на спидомере больше нет.

- Поставил спидометр от самолета - все равно не разгоняется. А самолет - разгоняется, проверил. Как заменить спидометр, чтобы можно было разогнать до 600?

 

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

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

Спасибо за анекдот и развернутый, содержательный ответ...

andriano пишет:

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

Я свое предположение в меру опять таки моих знаний высказал...

GVS пишет:

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

 
 
 

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

GVS пишет:

И вот тут явно указан размер 0х00А3 = 163

Подскажите как его заменить на 1000=0х03Е8??? Простое редактирование данного файла у меня ни чего не дало...

Adafruit - очень ответственные разработчики, и если они дали ограничения, то точно не с дурма. Возможно это ограничения низшей ардуинки, а может все еще хуже. Сомневаюсь, что кто-то будет лопатить библиотеку, но у Вас есть шанс стать гуру в этом вопросе...

kalapanga
Offline
Зарегистрирован: 23.10.2016

Сравнивайте даташиты. Тот, что у Вас есть и тот что у Адафрутов вместе с библиотекой лежит. Ищите разницу в характеристиках устройств, в командах. Как видите, готового решения здесь не нашлось.

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

mykaida пишет:

Adafruit - очень ответственные разработчики, и если они дали ограничения, то точно не с дурма. Возможно это ограничения низшей ардуинки, а может все еще хуже. Сомневаюсь, что кто-то будет лопатить библиотеку, но у Вас есть шанс стать гуру в этом вопросе...

Ни в коем разе не притендую на конкуренцию с Adafruit, печалит только, что библиотека написана для модуля ZFM-20, который 2010 года рождения, а за окном уже поди 2019 (((

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

mykaida пишет:

Adafruit - очень ответственные разработчики, и если они дали ограничения, то точно не с дурма. 

Я вас умоляю. Всякое у них в либах встречается. Issues почитайте на гитхабе.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

GVS пишет:

Я свое предположение в меру опять таки моих знаний высказал...

 

Вы понимаеите разницу между Вашим предположением и достоверной информацией?

Путь решения Вашей задачи я вижу так:

1. Достоверно выяснить, с чем связаны ограничения.

2. Опираясь на п.1, сделать вывод, возможно ли увеличение количества ячеек памяти.

3. Если в п.2 выяснится, что "возможно", опираясь на п.1, расширить допустимый диапазон.

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

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

andriano пишет:

1. Достоверно выяснить, с чем связаны ограничения.

2. .

3. .

4. .

У кого? Где?? Как??? Я именно за этим и обратился на профильный форум в ветку "Песочница. Раздел для начинающих".

Опять таки исключительно на своих умозаключениях вижу только одну причину - библиотека написана для модуля ZFM-20, 2010 года рождения у которого объем памяти был ограничен 163 ячейками (именно для этого модуля находим даташит в самой библиотеке). Далее учитывая то, что ни в одном из процессов ведущих к получению ID ардуинка не учавствует все обрабатывает сам модуль ардуинка лишь посылает запросы на определенное действие, а модуль сам сканирует, проверяет сравнивает и выдает результат и при использовании софта SFGDemo, заметим Demo т.е. явно с урезанным функционалом, модуль выдает любое значение ID включительно до 999, плюс скетч примера из библиотеки при старте выдает полное количество записанных в модуле ID включая и те у которых значение больше 162 - делаем вывод, что косяк исключительно в библиотеке, анализом которой я и пытаюсь заниматься в данное время. А учитывая, что я и програмирование это как сапожник и выпечка - анализ может затянуться на неопределенное время, вот я и обратился за помощью на профильный форум в ветку "Песочница. Раздел для начинающих". Но увы оказалось, что до меня ни кто не озадачивался этой проблеммой всех вполне устраивает использование модуля менее чем на 20% его возможностей... Буду пробовать связаться с разработчиками библиотеки, правда пока не представляю как...

 

 

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

Сдаётся мне, что 0xA3 - это контрольная сумма, которую вы пытаетесь принять за лимит по ячейкам.

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

sadman41 пишет:

Сдаётся мне, что 0xA3 - это контрольная сумма, которую вы пытаетесь принять за лимит по ячейкам.

В библиотеке по этому поводу вот что написано -

Цитата:

// high speed search of slot #1 starting at page 0x0000 and page #0x00A3

kalapanga
Offline
Зарегистрирован: 23.10.2016

Вы поймите, что всех не 20% возможностей устраивают, а никому этот датчик нафиг не сдался! Вот у скольких читателей форума он вобще есть в наличии? Даже если бы кто-то с ним и сталкивался, то с большой вероятностью в хоббийных целях. Ну и кому дома 1000 значений нужны? Так что не удивительно, что никто модфикацией библиотеки не занимался. Это первое.

И второе. Вы ни на дачик, ни на даташит, который у Вас якобы есть ссылок до сих пор не дали. Вдруг у кого-то избыток времени и любопыства обнаружится? Но я бы особо не надеялся. Ждите, что авторы библиотеки дойдут и до Вашего issue.

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

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

Датчик - https://ru.aliexpress.com/item/R307-Optical-fingerprint-reader-module-sensor/32815391770.html?spm=a2g0s.9042311.0.0.6c8433edKWyDak

Даташит на него - https://www.dropbox.com/sh/orprmb3bgb6lqb6/AAAeXeZKAgvy0T7qvTUSr4Eva/User%20Manual%20for%20Fingerprint%20Module/R307%20fingerprint%20module%20user%20manual.pdf?dl=0

Кому нужен??? Да кому угодно, учитывая стоимость готовых СКУД систем сделать свой СКУД куда привлекательней чем купить. Если говорить о не большой фирме с количеством сотрудников более 50 (любой супермаркет), то 163 ячейки - ниочем!!! На одного сотрудника нужно как минимум две. Судя по обращениям к разработчикам библиотеки людей еще и возможность переноса базы данных  очень интересует, чтобы допустим при приеме на работу раз отсканировав палец в отделе кадров ты в дальнейшем мог проходить через любую проходную фирмы или попадать в любое помещение закрытое от посторонних. В общем применеие данного модуля довольно востребовано...

И на решение проблеммы разработчиками библиотеки я расчитываю увы где то на 2%, не больше, потому как почитав обращения адресованные им ранее нашел ответ повторяющийся с завидным постоянством - "Обратитесь к разработчикам модуля, пускай они вам помогут"... 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

GVS пишет:

Кому нужен??? Да кому угодно...

Если говорить о не большой фирме с количеством сотрудников более 50 (любой супермаркет), то 163 ячейки - ниочем!!!

Предприятие с количеством работников более 50, - это уже совершенно не для начинающих. 

И, к слову сказать, ни разу не DIY. Для DIY 163 ячейки - хватит за глаза.

Похоже, Вы делаете серьезный (и дорогой) коммерческий проект. Ну так такие делают не на свободно распространяемых библиотеках. Тут - дэйташит, а еще - руки и голову. Если своих не хватает - можно обратиться за платной помощью. А в разделе для начинающих это обсуждать IMHO бессмысленно.

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

Ну наконец то... А то я все ни как не пойму посыл ваших сообщений. Теперь все стало на свои места, если вопрос уровня выше чем - "Как помигать светодиодом на 13 выходе?", то дорога в кассу...

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

Почему в кассу? Написано же: "Тут - дэйташит, а еще - руки и голову". Пока что Ваша тема никому неинтересна, что видно из хода обсуждения. И никто не будет в ней ковыряться просто чтобы сделать Вам удовольствие. 

kalapanga
Offline
Зарегистрирован: 23.10.2016

GVS пишет:

В файле библиотеки Adafruit_Fingerprint.cpp нашел следующее:

uint8_t Adafruit_Fingerprint::fingerFastSearch(void) {
  // high speed search of slot #1 starting at page 0x0000 and page #0x00A3
  GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xА3);
 

И вот тут явно указан размер 0х00А3 = 163

Подскажите как его заменить на 1000=0х03Е8??? Простое редактирование данного файла у меня ни чего не дало...

По даташитам разницы в командах не вижу. Стартовый адрес и количество в команде двухбайтные. Очень похоже что:

GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xА3); - стартовый адрес

GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xА3); - количество проверяемых адресов

Т.е. попробовать что-то типа:

GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x03, 0xE8);

Есть правда нюанс, что в даташите описана команда с кодом 04H (Search the finger library), а про код 1BH (Search the library fastly), который адафрукты используют, только написано, что такой есть. Но, скорее всего, остальные параметры команды одинаковые должны быть.

 

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

Спасибо за идею...

Попробовал подкоректировать библиотеку, увы упорно не видит ID больше 162...

Дело дошло до того, что многострадальный скетч перестал компилироваться ))) Буду искать почему, что то сломал но не пойму где...

GVS
GVS аватар
Offline
Зарегистрирован: 26.04.2018

Всем спасибо... ОТДЕЛЬНОЕ СПАСИБО kalapanga!!!! Вы на 100% правы.

kalapanga
Offline
Зарегистрирован: 23.10.2016

Заработало? Офигеть! Ну и ладушки.