Índice:

Controle de acesso RFID com Arduino Yun e Raspberry Pi: 11 etapas
Controle de acesso RFID com Arduino Yun e Raspberry Pi: 11 etapas

Vídeo: Controle de acesso RFID com Arduino Yun e Raspberry Pi: 11 etapas

Vídeo: Controle de acesso RFID com Arduino Yun e Raspberry Pi: 11 etapas
Vídeo: Projeto 30 - Sensor Biometria DY50 com Arduino para Casa Conectada na IoT- Maker 4.0 2024, Julho
Anonim
Controle de acesso RFID com Arduino Yun e Raspberry Pi
Controle de acesso RFID com Arduino Yun e Raspberry Pi
Controle de acesso RFID com Arduino Yun e Raspberry Pi
Controle de acesso RFID com Arduino Yun e Raspberry Pi
Controle de acesso RFID com Arduino Yun e Raspberry Pi
Controle de acesso RFID com Arduino Yun e Raspberry Pi

Bem-vindo ao meu Instructable! Você já pesquisou online por um sistema de controle de acesso RFID que possa ter vários usuários sem usar uma chave mestra para programá-lo? Um sistema que pode registrar o acesso com o nome da pessoa? Um sistema onde você pode facilmente adicionar ou remover o acesso de alguém? Não procure mais! Este sistema possui uma Interface Gráfica de Usuário fácil de usar através de um navegador da web. Isso é instrutível e orientará você em cada etapa de como construir e programar este sistema. Procurei um tutorial sobre como fazer isso quando queria construir um. Juntei informações de diferentes tutoriais, fóruns e vídeos até criar o meu próprio. O mais próximo que pude encontrar do que eu queria era este instrutível: https://www.instructables.com/id/Control-Access-of…, mas não era tudo o que eu queria fazer. Eu usei a fiação básica daquele instrutível, mas melhorei nela.

Etapa 1: como funciona

Este sistema usa Arduino e um Raspberry Pi. O arduino que escolhi foi o YUN por sua capacidade de ter wi-fi e fazer sua própria rede. Escolhi o Raspberry Pi Zero por causa de seu formato pequeno, tem wi-fi embutido e tem um bom preço.

Quando o Arduino é inicializado, ele transmite seu wi-fi e inicia todas as conexões. Ele lê o Real Time Clock (RTC) e o configura para a hora do sistema. A tela LCD exibe uma mensagem de boas-vindas. O Raspberry Pi se conecta à rede wi-fi que o YUN transmite. Quando você escaneia o cartão RFID, o arduino lê cada byte e cria uma string de números hexadecimais, ele inicia um script Python para comparar essa string a um campo em uma tabela MySQL no Raspberry Pi. Se corresponder, piscará um LED verde, exibirá Acesso concedido no LCD, enviará um sinal para abrir uma batida de porta para abrir a porta, iniciará um script python para registrar o código RFID, a data e hora e o acesso concedido a outro MySQL mesa, pisca um LED azul, exibe Logging na tela LCD e, em seguida, exibe a mensagem de boas-vindas novamente. Quando o código RFID não corresponder, o LED piscará em vermelho, a tela LCD exibirá Acesso negado, piscará o LED azul, registrará os dados e exibirá a mensagem de boas-vindas novamente.

O servidor da Web é como você adiciona ou remove usuários, edita suas informações e exibe o log de acesso. O PHP preencherá o nome do usuário com o código RFID correspondente no registro de acesso. Você também pode exportar o Registro de acesso e o Banco de dados de usuários para um arquivo CSV que pode ser visualizado em uma planilha. O log de acesso irá limpar qualquer coisa com mais de 60 dias.

Etapa 2: peças

Peças
Peças
Peças
Peças

Arduino Yun

Raspberry Pi Zero W

Cartões Micro SD - 2 GB para o YUN e 32 GB para o Raspberry Pi

Leitor RFID Innovations ID-20

Breakout Board para leitor RFID

Tela LCD de caracteres 16X2

Mochila serial para tela LCD

LED RGB

DS3231 RTC - necessário apenas se não conectar à internet

Campainha

Jumper Wire

Cabeçalhos e pins

Cartões RFID 125KHz

Fonte de alimentação de controle de acesso 12V

Relé DC que pode ser controlado com 5 V DC e passar 12 V DC - usei um relé de estado sólido

Soquete 12V estilo isqueiro para carro

Carregador de carro 12V USB com 2 portas USB com pelo menos 2 amperes de energia

Batida de porta elétrica 12V

Caixa de plástico - grande o suficiente para acomodar o leitor e a tela LCD

Caixa elétrica 10 "X 10" X 4 "para alojar os componentes.

2 plugues ethernet modulares (fêmea) com capacidade de perfuração

um cabo ethernet

um pequeno protótipo de placa de PCB (aquelas com orifícios e anéis de cobre ao redor dos orifícios para fazer sua própria placa de circuito impresso).

Fio de bitola 16

2 cabos micro USB

Comprimento do cabo da lâmpada de 2 fios (longo o suficiente para ir da batida da porta até a caixa principal)

Etapa 3: montar a caixa do leitor e os componentes

Monte a caixa do leitor e os componentes
Monte a caixa do leitor e os componentes
Monte a caixa do leitor e os componentes
Monte a caixa do leitor e os componentes

Primeiro prepararemos o leitor. Solde os cabeçotes de pino de 90 graus na placa de breakout RFID, então solde a placa de breakout no leitor RFID e coloque de lado.

Em seguida, prepararemos a tela LCD soldando os pinos da mochila serial na PCB da tela LCD. Depois que todos os pinos estiverem soldados, corte os pinos do Excell destacando-os no alto com cortadores diagonais. Posicione a tela LCD de lado.

Corte um pedaço quadrado de PCB de forma que tenha 2 fileiras de orifícios por 6. Pegue 2 cabeçotes de 6 pinos e solde na placa PCB. Conecte as juntas de solda ao longo dos pinos para criar 2 linhas de solda, mas mantenha as 2 linhas separadas. Isso será feito por nossa junção para todos os 5 volts e o aterramento necessário na caixa do leitor.

O LED RGB terá 4 terminais, então corte outro pedaço de placa PCB com 4 orifícios por 2 orifícios. Solde os 4 fios para a placa e dobre o LED 90 graus para ficar em linha com a placa. Solde um cabeçalho de 4 pinos no lado restante da placa de circuito impresso e conecte cada pino a um cabo do LED com a solda formando 4 pequenas linhas. Isso exigirá uma mão firme e talvez algumas tentativas para evitar que as 4 filas se toquem.

Pegue a caixa de plástico e faça um orifício na parte traseira grande o suficiente para um cabo Ethernet caber nela. Em seguida, corte um orifício quadrado na frente para a tela LCD e um pequeno orifício um pouco menor que o LED e empurre o LED firmemente para dentro.

Pegue os fios do jumper e conecte o seguinte, anote as cores em que cada componente é perfurado no conector modular Ethernet. Os fios do jumper irão perfurar bem na parte de trás destes.

1 pino na junção GND --- Ethernet punch down (lembre-se de qual cor)

1 pino na junção 5V ------ Ethernet punch down (lembre-se de qual cor)

Pinagem do leitor RFID:

PIN 1 - Junção GND

PIN 2 - Junção 5V

PIN 7 - Junção GND

PIN 9 Ethernet punch down (lembre-se de qual cor) ----- Eventualmente para Arduino PIN 10

PIN 10 - Junção GND BUZZER

PIN 11 - Junção 5V

Led Pin out

Vermelho ---- Ethernet punch down (lembre-se de qual cor) ------ Eventualmente para Arduino Pin 9

Verde - Ethernet punch down (lembre-se de qual cor) ------ Eventualmente para Arduino Pin 8

Azul ---- Ethernet punch Down (lembre-se de qual cor) ------ Eventualmente para Arduino Pin 7

GND ---- Junção GND

Pinagem da tela LCD:

RX ------- Ethernet punch down (lembre-se de qual cor) ----- Eventualmente para Arduino Pin 11

5V ------- Junção 5V

GND ----- Junção GND

A campainha se conecta à junção GND (-) e ao pino 10 do RFID Breakout (+)

Depois disso, haverá 1 punch down não utilizado. Isso requer apenas 7 dos 8 fios do cabo Ethernet.

Deslize o cabo Ethernet pelo orifício criado e conecte no soquete. Use fita dupla-face ao longo da borda da tela LCD e pressione a caixa do leitor de recorte quadrado frontal, organize os componentes dentro da caixa e feche-a.

A caixa do leitor está agora configurada e pronta para montagem.

Etapa 4: monte a caixa principal

Monte a caixa principal
Monte a caixa principal

Corte um pequeno pedaço de madeira compensada que caiba dentro da caixa principal 10 X 10 X 4 e prenda-o no interior da caixa aparafusando os parafusos na parte de trás do gabinete na madeira compensada. O compensado servirá de suporte para nossos componentes.

Monte a fonte de alimentação de 12 V, a caixa do Arduino Yun, a caixa do Raspberry Pi, o soquete de 12 V e o relé para a madeira compensada. Corte a ponta do cabo de alimentação do computador e remova os 3 fios. Conecte o fio preto e branco à entrada de 120 V na fonte de alimentação de 12 V e o fio verde diretamente à caixa de metal. Abra um dos orifícios na caixa principal para passar o cabo de alimentação.

O soquete 12v terá 2 fios saindo dele, um vermelho e um preto, tira as pontas. O vermelho irá para o terminal + 12 V na fonte de alimentação, o preto irá para o terminal COM na fonte de alimentação. Corte um pedaço de fio de bitola 16 para alcançar o relé da fonte de alimentação e descasque as duas extremidades. No lado de 12 V do relé, aparafuse este fio no terminal negativo e, em seguida, no terminal GND da fonte de alimentação. Corte outro comprimento de fio de bitola 16 para ir do lado 12v do relé no terminal positivo e para o terminal PUSH na fonte de alimentação. Conecte o cabo da lâmpada, um ao terminal NO na fonte de alimentação (negativo na batida da porta) e o outro ao terminal positivo no relé (agora você terá 2 fios saindo deste terminal) (vai para o positivo no batida na porta.) Você pode passar este cabo pela mesma abertura do cabo de alimentação.

Agora use 2 fios de jumper e conecte do lado 5 V do relé ao Arduino, Positivo ao Pino 12, Negativo ao GND.

O RTC possui 4 pinos, alimentação, GND, SDA, SCL. Conecte 4 fios de jumper a estes. A alimentação será conectada ao pino de 3,3 V no Arduino, o GND a um pino GND no Arduino, o SDA ao pino SDA no Arduino e o SCL ao pino SCL no Arduino.

Agora pegue 7 fios de jumper e coloque-os na parte de trás de outro soquete Ethernet, as mesmas cores que você usou antes.

Conecte o pino 5V do Arduino na cor que combina com a junção 5V e faça o mesmo com o GND para o GND e os fios restantes também. Os pinos 7, 8 e 9 são para os LEDs, o pino 10 para o leitor RFID e o pino 11 para o RX na tela LCD. Você pode passar o cabo Ethernet da caixa do leitor por um orifício na caixa principal e conectá-lo ao soquete que acabou de perfurar. Conecte o carregador USB para carro e execute os cabos Micro USB de lá para o Raspberry Pi e o Arduino. A caixa principal agora está montada. e todo o hardware está pronto.

Etapa 5: configuração inicial do Arduino YUN

Antes de ligar o YUN, conecte o cartão MicroSD de 2 GB.

Configure o YUN usando as instruções no site do Arduino para configurar o YUN em sua rede local e adicione uma senha. Siga as instruções para montar o cartão SD.

Usando o PUTTY, faça login no YUN com o endereço IP, o ID será o root e o PW.

Precisaremos instalar o MySQL e o Python Connector para acessar o MySQL no tipo Raspberry Pi:

opkg instalar opkg do servidor mysql

instalar python-mysql

Agora configure o Arduino Yun para atuar como um ponto de acesso sem fio com o endereço IP padrão (192.168.240.1), que é o padrão.

Etapa 6: configurar o Raspberry Pi

Primeiro, você precisará gravar a última cópia do Rasbian em um cartão Micro SD de 32 GB. Há muitos tutoriais sobre como fazer isso, então não vou entrar nesse assunto.

Pegue o Raspberry Pi e conecte um teclado, monitor e mouse a ele. Insira o cartão SD de 32 GB e ligue-o.

Faça login com o nome de usuário pi e pw raspberry, você pode alterar isso mais tarde. Assim que a tela carregar, clique no ícone wi-fi e conecte-o ao wi-fi doméstico. Anote o endereço IP. Abra a janela do console (ícone de quadrado preto com cursor) e digite esses comandos para atualizar a lista de pacotes e atualizar o software que já está no Pi.

sudo apt-get update

sudo apt-get upgrade

sudo raspi-config

Aqui, você desejará expandir o sistema de arquivos, habilitar o SSH e desabilitar a área de trabalho na inicialização. Você também pode alterar sua senha aqui agora. reinicie, faça login.

Agora vamos instalar a área de trabalho remota (é por isso que precisamos do SSH habilitado). Na linha de comando digite

sudo apt-get install xrdp

Agora você pode abrir a área de trabalho remota do seu computador com Windows e digitar o endereço IP do Raspberry Pi, o nome de usuário e a senha. Mantenha a configuração do teclado, monitor e mouse, pois precisaremos usá-la mais tarde.

Precisamos adicionar um atraso de inicialização ao Raspberry Pi para que mais tarde, quando ligarmos o Raspberry Pi e o Arduino YUN juntos, isso permita que o wi-fi YUN seja iniciado antes do Raspberry Pi. No tipo de console:

sudo nano /boot/config.txt

Role até o final e adicione esta linha:

boot_delay = 75

Pressione CNTRL X, Y, Enter para salvar. Isso adicionará um atraso de 75 segundos na inicialização. Reinicie o Raspberry Pi e verifique.

Enquanto estamos em seu computador, agora é um bom momento para instalar o PUTTY e o WinSCP em seu computador. Precisamos disso para continuar. PUTTY é uma janela de console remoto para o Raspberry Pi e Arduino YUN posteriormente, e WinSCP é um FTP seguro para transferir arquivos de seu computador para o Raspberry Pi de seu computador.

Etapa 7: configurar MySQL, PHP e Python no Raspberry Pi

Abra o PUTTY do seu computador e digite o endereço IP do seu Raspberry Pi e faça o login. Vamos instalar o MySQL, digite o comando:

sudo apt-get install servidor mysql

Agora, para abrir o tipo MySQL:

sudo mysql -u root

Agora que entramos, precisamos configurar o MySQL para funcionar em nosso aplicativo, em qualquer lugar que eu digitar uma palavra cercada por & é onde você irá inserir seus dados, mantenha tudo 'nos comandos e certifique-se de usar; no final do comando. Modelo:

CRIAR USUÁRIO '& usuário &' @ 'localhost' IDENTIFICADO POR '& senha &';

GRANT ALL PRIVILEGES on *. * TO '& user &' @ 'localhost' WITH GRANT OPTION;

Sair;

você criou um nome de usuário e uma senha com todas as permissões no MySQL. Agora faça o login com suas novas credenciais.

mysql -u & user & -p

Agora, ele pedirá sua senha.

&senha&

Agora você está com seu nome de usuário e senha. Agora vamos criar um banco de dados e uma tabela:

CRIAR BANCO DE DADOS arduino;

GRANT ALL PRIVILEGES ON arduino. * TO '& user &' IDENTIFIED BY '& password &' WITH GRANT OPTION;

Use o mesmo nome de usuário e senha que você criou para o login do MySQL. A seguir, criaremos uma tabela chamada usersrfid no banco de dados arduino.

USE arduino;

CRIAR TABELA usersrfid (id INT (255) NOT NULL AUTO_INCREMENT PRIMARY KEY);

Só precisávamos criá-lo para adicioná-lo mais tarde. id é a primeira coluna da tabela e será um número que aumenta automaticamente e cada tabela precisa de uma chave primária, portanto, definimos essa coluna como a chave. Agora saia do MySQL digitando:

Sair;

Agora precisamos instalar o servidor da web, PHP, Python e todos os conectores para MySQL. Digite os seguintes comandos:

sudo apt-get install mysql-client

sudo apt-get install python-mysqldb

sudo apt-get install apache2 php5 libapache2-mod-php5

sudo apt-get install php5-mysqlnd

Em seguida, instalaremos o PHPMyAdmin. isto será usado para construir suas tabelas MySQL sem usar a linha de comando.sudo apt-get install phpmyadmin

algumas opções aparecerão, escolha apache2, yes to dbcommon, e insira uma senha para phpmyadmin.

Agora precisamos editar apache2.conf para usar PHPMyAdmin para fazer este tipo:

sudo nano /etc/apache2/apache2.conf

Role até o final e digite:

Incluir /etc/phpmyadmin/apache.conf

Em seguida, pressione CNTRL X, Y e digite para salvar. Depois de salvo, precisaremos reiniciar o tipo apache2:

sudo /etc/init.d/apache2 restart

Agora abra um navegador da web no Windows e digite na barra de endereço o endereço IP do raspberry Pi seguido de / phpmyadmin e faça login no PHPMyAdmin com seu login e senha do MySQL.

É aqui que iremos editar e adicionar à sua base de dados.

Na coluna da esquerda, expanda em arduino e clique em usersrfid que você criou anteriormente. Clique em inserir e adicione suas colunas:

first, middle, last, street, apt, city, state, zip, hphone, cphone, position, rfid, rev_rfid, access247, image

Eles são todos varchar 500

Em seguida, crie mais 2 tabelas clicando em novo na coluna da esquerda em Arduino. Chame a primeira tabela usersrfid247 e insira colunas:

id, primeiro, último, posição, rfid, imagem.

id será INT 255, verifique AI para incremento automático e clique na chave para fazer a chave primária, o resto será varchar 500

A segunda tabela, chame ControlUsers com colunas:

id, rfid, rfid_st, data, primeiro, último.

Mais uma vez, o id será INT 255 de incremento automático, a chave primária e o resto são varchar 500

Agora que todas as tabelas do MySQL estão construídas, deixe-as em branco por enquanto

A tabela usersrfid é a tabela principal onde todos os usuários serão adicionados com suas informações e o código RFID. A tabela usersrfid247 é onde os usuários com acesso 24/7 serão colocados. e ControlUsers é a tabela onde ficará o log de acesso. Esses campos serão todos preenchidos posteriormente.

Agora que as tabelas foram criadas, configuraremos o Raspberry Pi para poder fazer upload das imagens dos usuários, abra o PUTTY e digite o endereço IP e faça o login, caso ainda não o tenha feito. Defina as permissões da pasta para permitir a edição. Digite o comando:

sudo chmod a + w / var / www / html

Agora use a área de trabalho remota e vá para a área de trabalho do Raspberry Pi. Vá para o explorador de arquivos e para o diretório / var / www / html. Exclua o arquivo index.html de dentro dessa pasta e crie uma nova pasta chamada imagens. Clique com o botão direito na nova pasta e vá para permissões, dê permissão a qualquer pessoa para acessar a pasta.

Etapa 8: Conecte o Raspberry Pi à rede YUNs

Da área de trabalho remota do seu computador para o Raspberry Pi

Altere a rede wi-fi para se conectar ao wi-fi do Arduino. Você perderá sua conexão de área de trabalho remota.

Faça login no Raspberry pi através do teclado, mouse e monitor que deixamos conectado. Na linha de comando, digite startx para chegar à GUI e veja qual endereço IP o Arduino atribuiu ao Raspberry Pi e anote-o.

Volte para o seu computador e conecte-o ao wi-fi Arduino. Agora você pode usar a área de trabalho remota para acessar o Raspberry Pi com o novo endereço IP.

Precisamos definir a conexão wi-fi do Arduino com uma prioridade mais alta no Raspberry Pi. Faça login no Raspberry Pi com Putty usando o novo endereço IP. Modelo:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

na rede listada para o arduino, adicione outra linha entre os colchetes e digite:

prioridade = 1

Todas as conexões são automaticamente atribuídas a 0 e não precisam ter essa linha adicionada quando ela é 0. A conexão com o número mais alto tem prioridade.

Salve com CNTRL X, Y e digite para salvar e reinicie o Raspberry Pi.

Faça login novamente no Raspberry com PUTTY usando o endereço IP atribuído do Arduino.

Agora iremos configurar o MySQL para ser acessado do YUN remotamente; por padrão, o MySQL negará todo o acesso remoto. Para fazer isso, digite:

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf

Role para baixo até: bind * ip address *, coloque o cursor no início dessa linha e pressione i (para editar) e coloque um # lá. Pressione ESC para interromper a edição e vá até o final. Salve e saia digitando: wq

Reinicie os serviços MySQL:

sudo service mysql restart

Agora precisamos do MySQL para ser capaz de identificar o endereço IP do YUNs. Faça login no mysql como antes, digitando:

mysql -u & user & -p

no prompt digite sua senha

Modelo:

CONCEDE TODOS OS PRIVILÉGIOS EM *. * PARA '& usuário &' @ '& YUNip &' IDENTIFICADO POR '& senha &' COM OPÇÃO DE CONCESSÃO;

SELECT * FROM information_schema.user_privileges WHERE GRANTEE LIKE "'& user &'%";

Você deve ver o username @ ipaddress listado lá.

PRIVILÉGIOS DE FLUSH:

Desistir;

Etapa 9: programar o Arduino YUN

Baixe os scripts Python desta página para o seu computador. Edite os scripts python usando o Notepad ++. Encontre as informações do banco de dados na parte superior e edite-as para corresponder às suas credenciais de banco de dados. O endereço IP é o novo endereço IP do Raspberry Pi e as informações de login do seu MySQL.

Conecte seu computador à rede do Arduino se ainda não estiver e digite o endereço IP do Arduino no navegador da web, deve ser 192.168.240.1. Faça login no YUN e vá para as configurações avançadas que o levarão à GUI do Luci. Vá para a seção DHCP em rede e defina Raspberry Pi como um IP estático. Isso dirá ao Arduino para sempre atribuir esse endereço IP ao Raspberry Pi para que ele não mude.

Abra o WinSCP em seu computador e carregue os 3 scripts Python editados em / mnt / sda1 / arduino / python no Arduino.

Desative o servidor NTP no YUN para que o RTC funcione corretamente. Abra o Putty no seu computador, conecte-se ao endereço IP do YUNs e faça login. No tipo de comando:

/etc/init.d/sysntpd stop /etc/init.d/sysntpd disable

Se você ainda não baixou a biblioteca DS3132 de https://www.rinkydinkelectronics.com/library.php?id…, você precisará reconectar o wi-fi do computador à sua rede local para fazer isso. Depois de reconectar ao YUN.

Abra o IDE do Arduino em seu computador e configure-o para YUN e a porta para o endereço IP. Vá para arquivo> exemplos> DS3231> DS3231_Serial_easy e defina a hora do RTC, lembre-se que a data é d / m / ano e carregue

carregue o Arduino Sketch final para o Arduino usando o IDE do Arduino.

Etapa 10: servidor da Web Raspberry Pi

Agora baixe os arquivos php, html e css desta página para o seu computador. Edite o seguinte com Notepad ++, dbinfo.php e auth.php. dbinfo.php precisará das informações do banco de dados editadas para o endereço IP, nome de usuário, senha, etc. do MySQL. O auth.php precisará ser editado para o login e senha do site que você precisa criar. É um arquivo pequeno e você pode encontrá-lo facilmente apenas folheando.

Certifique-se de que seu computador ainda esteja conectado ao Arduino Wifi e use o WinSCP e coloque os arquivos php, html e css de seu computador no Raspberry Pi no diretório / var / www / html.

Abra o navegador da web no computador e digite o endereço IP do Raspberry Pi e a tela de logon da página da web aparecerá. Faça login com o UID e a senha que você criou quando editou o arquivo auth.php. Tudo ficará vazio. Vá para adicionar um membro e comece a preencher seus usuários.

Etapa 11: aproveite

Conecte seu computador / telefone / tablet ao arduino wi-fi, abra o navegador, digite o IP estático do Raspberry Pi, faça login na página da web e você pode começar a adicionar credenciais de membros.

Para encontrar o código RFID de um cartão, escaneie-o e verifique o registro de acesso. Copie o código e cole-o no campo RFID dos novos membros.

O acesso normal é definido para terças-feiras entre as 16:00 e as 23:00 apenas. Para alterar essa edição do script python compare.py, há uma linha IF com Dia da Semana e horários com sinais de maior e menor. Altere os dias e horários entre os quais deseja que todos os usuários tenham acesso. O acesso 24 horas por dia, 7 dias por semana, será aceito em todos os momentos.

Assim que um membro for adicionado, digitalize o cartão e veja a porta aberta. Volte para o log e veja-o adicionado.

Aproveitar

Recomendado: