Arduino и 2 модуля Adafruit Fingerprint работающие вместе

Я хочу сделать проект с контролем доступа по отпечатку пальца. Но мой клиент хочет по одному с обеих сторон двери (внутри и снаружи). Сейчас я использую этот продукт модуль отпечатков пальцев Adafruit, но я не хочу регистрировать каждого человека в каждом модуле отпечатков пальцев. Я хочу посмотреть на регистрацию каждого сотрудника в 1 из этих модулей, а затем через Arduino «SYNC» модели отпечатков пальцев между собой. Это возможно? Может кто-нибудь указать мне правильное направление, или я просто сумасшедший ХАХАХА. Смотри, я могу выполнить маршрут программирования/регистрации каждого человека в каждом модуле. Но мы живем в реальном мире, и в какой-то момент модель/идентификатор отпечатка пальца не будет совпадать. И тогда придет проблема с моим онлайн-программным обеспечением. Также извините за мой плохой язык :)

, 👍1

Обсуждение

Сколько Ардуино вы используете? Опишите текущую настройку. Как Arduino (ы) достигают подключения к Интернету? Какова природа вашего веб-сервера?, @SoreDakeNoKoto

Текущая настройка заключается в том, что каждый модуль отпечатков пальцев имеет свой собственный Arduino Uno. Но в идеале я просто хочу использовать 1 Arduino и подключить оба. Я использую ESP8266 с интегрированной средой разработки Arduino, которая подключается к моему серверу/веб-сайту Linux., @Dev Expert

TisteAndii Это использование библиотеки отпечатков пальцев adafruit, другой или это прямые команды, которые можно отправить по последовательному каналу в модуль отпечатков пальцев?, @freshbtcer


2 ответа


Лучший ответ:

0

Вы должны получить Arduino Mega, если вы еще не используете его. Вам понадобятся SRAM и последовательные порты.

Когда я использовал этот модуль, у меня не было достаточно времени, чтобы поэкспериментировать с ним, но вот:

Команда enroll для датчика FPM10 берет изображение отпечатка пальца, обрабатывает его и, наконец, создает 512-байтовую модель/шаблон, который сохраняется во флэш-памяти с уникальным идентификатором ( PageID) и использовать для будущих сравнений. Однако также возможно прочитать эти шаблоны из флэш-памяти с помощью нескольких команд. Вы мало сказали о роли вашего веб-сервера, поэтому я предполагаю, что вы можете легко хранить данные и что он отвечает за авторизацию регистрации и удаления отпечатков пальцев. Поскольку у вас более одного датчика, общее решение вашей проблемы будет следующим:

  • Сервер должен вести учет доступных идентификаторов отпечатков пальцев.
  • При указании Arduino начать регистрацию сервер также должен отправить идентификатор отпечатка пальца, основываясь на своих записях о том, какой идентификатор свободен. Сначала идентификаторы могут назначаться последовательно, но шаблоны могут удаляться, оставляя пробелы, поэтому необходим сервер.
  • Arduino begin() является текущим датчиком, на котором находится пользователь, и выполняет обычную регистрацию. Как только регистрация завершена, только что сохраненный шаблон должен быть загружен Arduino из флэш-библиотеки модуля и в один из его буферов символьных файлов с помощью команды LoadChar. Единственными параметрами этой команды являются BufferID и PageID.
  • Затем Arduino должна загрузить шаблон из буфера символьного файла в 512-байтовый буфер, который вы создадите в SRAM Arduino. Здесь необходима команда UpChar, а ее единственным аргументом является BufferID буфера, из которого нужно прочитать данные. Как только от модуля получено подтверждение, датчик начинает отправлять 512-байтовый шаблон пакетами по 32 байта (по умолчанию), каждый с идентификатором пакета 0x02, до последнего пакета с идентификатором пакета 0x08.
  • Затем Arduino begin() подключается к другому датчику и отправляет модулю команду DownChar, которая сообщает датчику, что шаблон должен быть сохранен в одном из его символьные буферы (должны быть указаны в команде). Как только Arduino получит подтверждение, он должен начать отправку шаблона на этот датчик, используя тот же размер пакета и формат, которые были установлены для этого датчика 9, или значение по умолчанию, о котором я упоминал ранее, если оно не было изменено).
  • Наконец, Arduino отправляет датчику команду Сохранить, чтобы сохранить шаблон в буфере, который вы только что записали, в свою флэш-библиотеку, используя тот же идентификатор отпечатка пальца, с которым он был сохранен в первом датчик.
  • Затем Arduino может отправить подтверждение серверу Linux, который затем добавит идентификатор отпечатка пальца в список используемых идентификаторов.

Теперь оба датчика имеют идентичные библиотеки отпечатков пальцев и могут использоваться для сопоставления отпечатков пальцев и получения одинаковых результатов. Удаление отпечатков пальцев также может выполняться по тому же принципу: сервер дает команду Arduino удалить отпечаток с заданным идентификатором, а Arduino отправляет команду DeleteChar обоим датчикам. Все команды, которые я здесь упомянул, находятся в описании датчика, которое вы должны загрузить вместе с библиотекой Adafruit.

Для связи с датчиками используйте скорость 57 600 бод, чтобы получать надежные результаты. Это мой форк библиотеки Adafruit с большим количеством доступных функций и без проблем с переполнением буфера. Это должно значительно упростить задачи взаимодействия.

,

Это отлично. Большое спасибо! Теперь у меня есть четкая линия для работы!, @Dev Expert


1

Да, это легко сделать. Этот датчик отпечатков пальцев работает через последовательную связь.

К Arduino UNO можно подключить несколько последовательных устройств с помощью библиотеки SoftwareSerial.

Все, что вам нужно сделать, это создать несколько экземпляров Adafruit_Fingerprint, инициализированных разными объектами SoftwareSerial. т.е.

// контакт №2 ВХОДИТ от датчика 1 (ЗЕЛЕНЫЙ провод)
// контакт № 3 ВЫХОД от arduino к датчику 1 (БЕЛЫЙ провод)
// контакт № 8 ВХОДИТ от датчика 2 (ЗЕЛЕНЫЙ провод)
// контакт № 9 ВЫХОД от arduino к датчику 2 (БЕЛЫЙ провод)
SoftwareSerial mySerial1(2, 3);
Adafruit_Fingerprint finger1 = Adafruit_Fingerprint(&mySerial1);
SoftwareSerial mySerial2(8, 9);
Adafruit_Fingerprint finger2 = Adafruit_Fingerprint(&mySerial2);

Теперь вы можете использовать finger1 и finger2 для операций с отпечатками пальцев. (ранее назывался только палец)

Чтобы понять принцип последовательной связи с несколькими последовательными устройствами, ознакомьтесь с этим официальным руководством по Arduino.cc. .

Надеюсь, это поможет.

,