Como registrar e combinar modelos de impressão digital com o scanner de impressão digital Adafruit e R30X

Os dispositivos biométricos são a espinha dorsal dos modernos sistemas de segurança e acesso. O dispositivo biométrico mais comumente usado é um leitor de impressão digital. As impressões digitais são identificadores únicos que não podem ser facilmente falsificados. Sensores ópticos de impressão digital são amplamente utilizados em sistemas de segurança, pois são de baixo custo em comparação com scanners capacitivos e ultrassônicos. Os sensores ópticos de impressão digital digitalizam as impressões digitais capturando uma imagem digital e salvando-a em um modelo de impressão digital. Os modelos de impressão digital são armazenados na memória flash e comparados com novas digitalizações para detectar uma tentativa de acesso válida.

A maioria dos leitores ópticos de impressão digital possui uma porta TTL UART e uma porta USB para se comunicar com um sistema de computador. O sistema de computador, um microcontrolador, um computador de placa única, um sistema desktop ou um servidor podem controlar o leitor de impressão digital para registrar uma ID de impressão digital, comparar e combinar uma digitalização com modelos de impressão digital registrados ou até mesmo baixar um modelo de impressão digital armazenado ou digitalizado.

Exemplos de sensores de impressão digital Adafruit e R30X

O leitor de impressão digital Adafruit AS608 é um dos leitores ópticos de impressão digital mais populares e é frequentemente usado com Arduino e outras placas de desenvolvimento incorporadas. A série R30X de sensores de impressão digital de um fornecedor chinês chamado Hangzhou Grow Technology Co., Ltd. é uma alternativa ao sensor Adafruit. Os leitores de impressão digital populares desta série incluem R300, RR301T, R302, R303, R303T, R305, R307, R308 e R311. Alguns desses sensores R30X são capacitivos. Apesar das diferentes tecnologias de digitalização de impressões digitais, todos os sensores R30X possuem a mesma interface e conjunto de comandos. R305 e R307 são os sensores ópticos de impressão digital mais populares desta série. Curiosamente, a biblioteca de sensores de impressão digital Adafruit funciona bem tanto com o sensor de impressão digital Adafruit quanto com os sensores R30X. Neste tutorial, demonstraremos o registro de uma ID de impressão digital e a correspondência de impressões digitais usando o módulo R307.

Como funcionam os leitores ópticos de impressão digital
A pele da palma da mão possui sulcos de fricção para agarrar e segurar coisas, e o padrão desses sulcos e vales também está presente nas pontas dos dedos. Um milagre da natureza é que esse padrão de cristas e vales seja único para cada indivíduo. Uma impressão de nossas impressões digitais é deixada sempre que agarramos ou seguramos algo devido à oleosidade, umidade, poeira e células mortas na pele. Esses objetos de impressões digitais são chamados de impressões digitais latentes.

Funcionamento de sensores ópticos de impressão digital.

Os leitores ópticos de impressão digital utilizam o princípio de Reflexão Interna Total (TRI). Um leitor óptico de impressão digital consiste em um prisma. Em uma face do prisma há uma fonte de luz LED. A luz entra no prisma em um determinado ângulo, de modo que é refletida na face adjacente e sai pela terceira face, onde são colocados uma lente e um sensor de captura de imagem.

Quando nenhum dedo ou impressão é colocada sobre o sensor, a luz transmitida pela fonte de LED é completamente refletida e o sensor de imagem captura uma imagem simples. No entanto, quando a ponta do dedo é colocada sobre o scanner, parte da luz é refletida, enquanto parte da luz vaza ao longo da superfície da face do prisma. Estas são chamadas de Ondas Evanescentes.

Diferentes materiais têm diferentes índices de reflexão e interagem de forma diferente com as ondas evanescentes. Quando a ponta do dedo é colocada sobre o scanner, as saliências ficam em contato firme com a superfície do scanner enquanto os vales ficam cheios de bolsas de ar. A pele e o ar possuem diferentes índices de reflexão causando diferentes ondas evanescentes, denominadas Reflexão Interna Total Frustrada (FTIR). Como resultado de diferentes ondas evanescentes de cristas e vales, a intensidade da luz total refletida internamente muda de acordo com o padrão das cristas e vales. O sensor de imagem captura uma imagem de alto contraste registrando o padrão alterado de intensidade de luz, capturando o padrão de cristas e vales como uma imagem digital de alto contraste.

A imagem digital de alto contraste é armazenada na memória Flash como identificação de impressão digital de acordo com um modelo predefinido. O modelo indica a presença de cristas ou vales em posições predefinidas em uma imagem capturada ou digitalizada. Qualquer sensor de impressão digital é projetado para executar dois processos – essencialmente registro e correspondência. O processo de leitura da impressão digital e armazenamento dela de acordo com um modelo predefinido é chamado de registro. Um leitor de impressão digital pode registrar vários IDs de impressão digital, dependendo da memória flash e do controlador integrado. O processo de registro geralmente envolve a confirmação da impressão digital, portanto, é necessário digitalizar a impressão digital duas vezes. IDs de impressão digital armazenam as imagens no módulo.

Na correspondência de impressões digitais, uma nova digitalização é comparada com os modelos de impressões digitais armazenados e, se tiver o mesmo modelo de qualquer uma das impressões armazenadas, a correspondência é confirmada. Caso contrário, a varredura será rejeitada como sem correspondência. Se o dedo ativo for comparado com um ID de impressão digital específico, isso é chamado de correspondência 1:1. Se o dedo ativo for comparado para corresponder a todos os modelos de impressão digital armazenados no módulo, isso é chamado de correspondência 1:N.

Sensor de impressão digital R307
R307 é um dos leitores ópticos de impressão digital da Hangzhou Grow Technology Co., Ltd. O scanner opera a uma tensão de 4,2 V ~ 6 V e 50 mA com capacidade de armazenamento de 1000 impressões. O R307 possui interfaces UART e USB 2.0 para se comunicar com um sistema de computador a uma taxa de transmissão em múltiplos de 9600 bps. Ele é capaz de correspondência 1:1 e 1:N com FAR (taxa de aceitação falsa) inferior a 0,001 por cento. O módulo pode escanear um dedo ativo em menos de 0,5 segundos e suporta cinco níveis de segurança (1~5; 5 é o mais alto). A faixa de temperatura operacional deste sensor é de -10˚C a 40˚C, tornando-o implantável na maioria dos locais.

Conjunto do sensor R307

Montagem de sensores de impressão digital R30X

Montagem física dos sensores de impressão digital R30X

O R307 possui uma tampa de vidro onde a ponta do dedo pode ser colocada para digitalização. Abaixo do tampo de vidro é colocado um prisma. O interior do sensor é dividido em duas partes por meio de uma barreira luminosa. De um lado da barreira de luz há uma PCB que consiste em quatro luzes LED azuis. Do outro lado da barreira de luz está um sensor de imagem conectado a um processador. A PCB externa contém o processador, o conector e outros elementos do circuito. O prisma, juntamente com os LEDs azuis e um sensor de imagem, é organizado de forma que a luz transmitida pelos LEDs azuis seja refletida internamente através do prisma até o sensor de imagem.

Pinagem do sensor R307
O conector do sensor de impressão digital R307 possui seis terminais. A configuração dos pinos deste conector é a seguinte.


Os pinos estão dispostos no conector, conforme mostrado na imagem abaixo.

Configuração de pinos do sensor de impressão digital R307

Configuração de pinos do sensor de impressão digital R307

O sensor pode ser operado tanto em 5V quanto em 3,3V DC. Se o sensor for conectado a um controlador 3V3, o jumper de 3,3V deverá estar em curto. Se for fazer interface com um controlador de 5 V, o jumper deve ser deixado aberto.

Jumper para seleção da tensão de alimentação no sensor de impressão digital R307O scanner pode se comunicar com um computador/controlador usando TTL UART e uma interface USB. Quando conectado através de uma porta USB, uma porta COM virtual é criada. Deve-se notar que o pino 6 é a tensão de alimentação para detecção de dedos. Se o pino 6 estiver conectado a uma fonte de 3,3 V, a saída do pino 5 vai para ALTO quando um dedo ativo for colocado sobre o sensor. É útil para digitalização manual do dedo; caso contrário, o sensor começará a procurar uma varredura após alguns segundos após a inicialização. É importante selecionar a tensão de alimentação adequada no leitor de impressão digital. Uma tensão mais alta pode danificar um controlador 3V3 ou seus pinos GPIO.

Circuito do sensor R307
O chip controlador do leitor de impressão digital R307 é AS606 da Synochip. AS606 é um microcontrolador capaz de processar sinais digitais. Para detecção de toque, o sensor possui IC TTP233D da Tontek. A PCB externa possui o seguinte diagrama de circuito.

Circuito do sensor R307

Registros R307
O scanner R307 possui memória flash integrada e muitos registros e memória buffer para armazenar dados de configuração e impressão digital. Alguns dos registros importantes do R307 são explicados abaixo.

Bloco de notas: Esta é uma memória flash não volátil de 512 bytes organizada em 16 páginas de 32 bytes cada. Toda a memória é gravada ou atualizada de uma só vez.

Image Buffer: É uma RAM usada para armazenar temporariamente uma imagem digital da impressão digital. Ele armazena uma imagem BMP com dimensões 256 X 288, onde cada pixel é armazenado como um byte.

Buffer de arquivo de caracteres: É usado para armazenar uma imagem processada de alto contraste da impressão digital. Existem dois buffers de arquivo de caracteres de 512 bytes cada, e eles armazenam arquivos de dois caracteres de duas varreduras consecutivas. As duas digitalizações são combinadas para formar um arquivo modelo que representa a versão final de uma impressão digital. Os arquivos de modelo são armazenados na biblioteca de impressões digitais.

Biblioteca de impressões digitais: É uma memória flash integrada onde 1000 modelos de impressões digitais podem ser armazenados. Os arquivos de modelo são armazenados sequencialmente na biblioteca.

Registros de configuração do sistema: É um banco de registros de 16 bytes que armazena dados de configuração e sinalizadores de status. O banco de registradores inicia um registrador de status de 2 bytes, seguido por um código identificador de sistema de 2 bytes, tamanho de biblioteca de 2 bytes, nível de segurança de 2 bytes, endereço de dispositivo de 4 bytes, tamanho de pacote de dados de 2 bytes e endereço de dispositivo de 2 bytes. multiplicador de transmissão. O registro de status é definido como segue.

Registro de status R30X

Onde, Ocupado = 1 se o sistema estiver executando o comando, caso contrário, Ocupado = 0 se o sistema estiver livre. Aprovado = 1 se uma impressão digital correspondente for encontrada, caso contrário Aprovado = 0 se a impressão digital não for encontrada. PWD = 1 se a senha do handshaking for verificada, caso contrário PWD = 0 se a senha não corresponder. ImgBufStat = 1 se o buffer de imagem contiver uma imagem válida, caso contrário ImgBufStat = 0 se a imagem não for processada.

O Código Identificador do Sistema possui um valor fixo que identifica o módulo da série R30X. R307 tem um código de 0x0009. O tamanho da biblioteca indica o número de modelos de impressão digital que o módulo pode armazenar. Para R307, é 1000. O valor de segurança determina o limite de correspondência de impressão digital. Pode ser de 1 a 5, onde 5 é o nível de segurança mais alto que fornece FAR mínimo e FRR máximo. FAR é a probabilidade de identificar uma impressão digital com correspondência fraca como positiva. FRR (taxa de falso reconhecimento) é a probabilidade de identificar uma impressão digital errada como negativa. No nível 5, o FAR é o mais alto e o FRR é o mais baixo. Este é o nível mais rigoroso de correspondência de impressões digitais. O endereço do dispositivo é por padrão 0xFFFFFFFF. Pode ser modificado com o comando SetAddr. Tamanho do pacote de dados determina o tamanho máximo dos dados enviados em um único pacote. Seu valor pode ser 0~3, onde 0 = 32 bytes, 1 = 64 bytes, 2 = 128 bytes e 3 = 256 bytes. O Baud Multiplier define a velocidade de comunicação de dados com um sistema de computador. Pode ser de 1 a 12 em múltiplos de 9.600 bps com uma taxa de transmissão mínima de 9.600 bps e máxima de 115.200 bps.

Protocolo de comunicação R307
O scanner pode comunicar dados com um sistema de computador usando uma interface UART ou USB. Ambas as interfaces usam um protocolo de comunicação comum. Os dados são comunicados na forma de pacotes. Cada pacote é dividido em quadros de 10 bits. Um quadro começa com um bit inicial 0 seguido por um byte e termina com um bit final 1. Um pacote é dividido nos seguintes quadros.

Estrutura do pacote de dados R307

O Cabeçalho tem 2 bytes de comprimento e um valor fixo de 0xEF01. O byte alto é sempre enviado primeiro. O Endereço é o endereço do dispositivo de 32 bits do scanner. O módulo aceita um comando ou dados somente se o endereço estiver correto. O endereço do dispositivo padrão é 0xFFFFFFFF. O pacote Identificador determina o tipo de pacote. É 0x01 para comando, 0x02 para dados, 0x07 para pacote de confirmação, 0x08 para indicar o fim do pacote de transferência de dados. Um pacote de comando deve seguir um pacote de dados. O pacote de confirmação é enviado do módulo para o sistema de computador. Comprimento do pacote indica o tamanho do conteúdo do pacote, incluindo um byte de soma de verificação. Conteúdo do pacote pode ser um comando, dado ou parâmetro de comprimento variável, conforme indicado por Comprimento do pacote. Soma de verificação é a soma aritmética de todos os bytes em Identificador de pacote, Comprimento do pacote, e Conteúdo do pacote.

O R307 suporta o seguinte conjunto de instruções.

Comandos R307

Em resposta a um comando do sistema de computador, o scanner envia de volta um pacote de confirmação contendo o resultado e o status da execução do comando. Cada comando possui um conjunto de códigos de resposta esperados chamados códigos de confirmação. A seguir está uma lista de códigos de confirmação para módulos R30X.

Fazendo um scanner de impressão digital simples
Um leitor de impressão digital envolve dois processos – registro de impressão digital e correspondência de impressão digital. Vamos agora digitalizar e combinar impressões digitais usando o módulo R307. Com este simples conhecimento de registro e correspondência de impressões digitais, podemos construir qualquer sistema biométrico de segurança ou acesso.

Componentes necessários

  1. Scanner de impressão digital Adafruit ou scanner de impressão digital R307 x1
  2. Arduino UNO x1
  3. Cabeçalho Masculino x1

Ferramentas necessárias

  1. Ferro de solda
  2. Fio de solda

Conexões de circuito
O sensor vem com um cabo conector com fios flexíveis com extremidades abertas em um dos lados. As extremidades dos fios precisam ser soldadas com um conector macho para serem conectadas a uma placa de ensaio ou Arduino. Em primeiro lugar, solde os fios do cabo com conectores macho. Agora insira o cabo conector no cabeçalho do leitor de impressão digital. É fácil inserir o cabo conector, pois o cabeçalho possui cortes claramente marcados para a inserção do cabo.

: Cabeçalho do conector R307Conecte o pino de 5 V e o aterramento do scanner com saída de 5 V e qualquer pino de aterramento do Arduino UNO, respectivamente. Conecte o Rxd e o Txd do scanner aos pinos D2 e ​​D3 do Arduino UNO, respectivamente.

Instalando a biblioteca de sensores de impressão digital Adafruit
Navegue até o gerenciador de biblioteca no Arduino IDE e pesquise a biblioteca de impressão digital Adafruit. Instale a biblioteca do scanner de impressão digital Adafruit. Esta biblioteca funciona bem tanto para leitores de impressão digital Adafruit quanto para leitores de impressão digital R30X.

Biblioteca de scanner de impressão digital Adafruit

Registrando um ID de impressão digital
Para registrar uma impressão de impressão digital no módulo, navegue até Arquivos -> Exemplos -> Impressão digital da Adafruit -> Inscrever-se. Carregue o código no Arduino e execute o Serial Monitor. Selecione a taxa de transmissão para 9600. Se o leitor de impressão digital estiver conectado corretamente ao Arduino, um prompt para inserir um ID de impressão digital aparecerá no Monitor Serial. Insira um número de identificação de impressão digital válido e coloque o dedo no scanner. O scanner solicitará que você escaneie a impressão digital duas vezes. Se a digitalização for bem-sucedida, a mensagem de confirmação será exibida no Serial Monitor.

Correspondendo a um ID de impressão digital
É possível digitalizar um dedo ativo em modelos de impressão digital armazenados. Para combinar uma impressão de impressão digital com o módulo, navegue até Arquivos -> Exemplos -> Impressão digital de Adafruit -> Impressão digital. Carregue o código no Arduino e execute o Serial Monitor. Selecione a taxa de transmissão para 9600. Coloque o dedo no scanner. Se o scanner tiver um modelo armazenado para o seu dedo, ele responderá com o ID da impressão digital do seu modelo. Se a sua impressão digital não estiver armazenada no módulo, ele responderá “nenhuma correspondência encontrada”.

Extraindo modelos de impressão digital
É ainda possível obter os arquivos de modelo armazenados no módulo de impressão digital. Navegue até Arquivos -> Exemplos -> Impressão digital de Adafruit -> show_fingerprint_templates. Carregue o código no Arduino e execute o Serial Monitor. Selecione a taxa de transmissão para 9600. O Serial Monitor exibirá todos os modelos de impressão digital armazenados, um por um, por seu ID em ordem sequencial.

Conclusão
Os scanners de impressão digital R30X e Adafruit são módulos biométricos de baixo custo e fáceis de usar. Eles podem ser facilmente interligados em um sistema de segurança ou acesso usando interfaces UART ou USB. A biblioteca Adafruit funciona com scanners de impressão digital R30X e Adafruit e pode ser usada diretamente para muitos projetos de hobby.

Related Content

Back to blog

Leave a comment

Please note, comments need to be approved before they are published.