Проверка отпечатков пальцев Arduino с сервера

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

  1. Пользователь может зарегистрировать отпечаток пальца с помощью устройства Arduino
  2. Этот отпечаток пальца будет сохранен на удаленном сервере, чтобы пользователь мог быть проверен на некоторых других устройствах Arduino
  3. Когда пользователь пытается пройти верификацию, отпечаток пальца будет сопоставлен с отпечатком пальца, сохраненным на сервере

Для этого я думаю использовать язык Go на стороне сервера в качестве API-сервера, MySQL/SQLite в качестве системы баз данных. Кроме того, в будущем я создам мобильное приложение для выполнения некоторых запросов к серверу, например, запущенные устройства, количество зарегистрированных пользователей, отзыв пользователей и т. д.

На данный момент я планирую купить следующие устройства:

  1. Arduino UNO
  2. Wi-Fi Shield
  3. Датчик отпечатков пальцев
  4. ЖК-экран

Теперь вопрос в том, будут ли указанные выше устройства работать в моей конфигурации или мне нужно купить что-то еще (они совместимы?)

Кроме того, есть ли способ сохранить отпечаток пальца на сервере? Я думаю сохранить какой-то хэш (вероятно, зашифрованный RSA) отпечатка пальца на сервере, это сработает?

Есть ли у вас релевантный пример хранения отпечатков пальцев на сервере?

, 👍0

Обсуждение

Этот вопрос был закрыт как слишком общий, но я не согласен, что он действительно проходит этот тест., @Nick Gammon


1 ответ


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

2

Согласно коду драйвера adafruit, он способен загружать и сохранять шаблоны отпечатков пальцев (по 256 байт каждый) из своей флэш-памяти и во флэш-памяти

  uint8_t emptyDatabase(void);
  uint8_t storeModel(uint16_t id);
  uint8_t loadModel(uint16_t id);
  uint8_t getModel(void);

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

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

В остальном ваши компоненты, похоже, совместимы.

Идея для синхронизации:

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

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

Еще один совет, если изменения происходят очень часто:

Каждая флеш-память имеет определенное количество циклов записи, прежде чем она выйдет из строя. Если вам приходится часто обновлять базу данных, вам следует попытаться минимизировать нагрузку на память каждого датчика отпечатков пальцев, назначив каждому отпечатку пальца произвольный уникальный идентификатор и сохранив локальную «карту» того, какой идентификатор вы сохранили на этом конкретном устройстве. Таким образом, вы сможете обновить только те отпечатки пальцев, которые действительно изменились.

Удачи.

,

**Еще один совет, если изменения происходят очень часто** Я взял немного FRAM, чтобы не слишком беспокоиться о разрушении внутреннего EPROM. Adafruit продает немного, и в сочетании с библиотекой Extended database вы можете получить довольно сильную комбинацию., @ATE-ENGE

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

@mystery Я думаю использовать TCP-сокет, чтобы, если устройство обновит отпечаток пальца на сервере, сервер проинформировал все остальные устройства о необходимости синхронизировать модели отпечатков пальцев с их локальными. Подходит ли такой подход?, @Tejashwi Kalp Taru

Конечно, сложнее, чем опрос, но если получится, то вперед., @mystery