Skip to content

VictorGorgal/Gerenciamento-de-Acesso

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gerenciamento de Acesso

Este projeto consiste em um sistema para o gerenciamento do acesso às salas de uma empresa.
Para isso será necessário utilizar uma placa arduino para fazer o gerenciamento das trancas físicas,
haverá um menu exibido atravéz do Serial do Arduino, por ele deverá ser inserido dados para o cadastro de um usuário, sendo eles:

  • Nome
  • Senha
  • Se ele será um administrador ou não.

No mesmo menu deverá ser inserido também a listagem dos nomes dos usuários cadastrados, listagem dos eventos (será necessário inserir a senha cadastrada para obter acesso aos eventos) e opção para a liberação da porta 1 e 2.

As informações referentes aos usuários e eventos devem ser armazenadas na memória Flash do microcontrolador.

A interface de cadastro dos usuários deve ser feita através da serial

O acesso aos eventos gerados devem ser limitado somente ao usuário administrador

A liberação de acesso às salas deve ser realizada após solicitação e validação da senha do usuário para que somente usuários autorizados possuam acesso

O fechamento das portas deve ser feito através do pressionamento do botão correspondente à porta a ser fechada ou após um timeout de 5 segundos ser atingido

As informações deverão ser enviadas para o back-end através de rotas específicas e salvas em um banco de dados SQL

Circuito

image

  • LED Verde -> Porta 1
  • LED Vermelho -> Porta 2
  • Botão esquerdo -> Botão da porta 1
  • Botão direito -> Botão da porta 2
  • Os botões apresentam resistor de pull-down de 10kΩ

Protótipo físico
image

O circuito físico não apresenta resistores nos LEDs pois a tensão de 3.3V da saída do nodeMCU não é o suficiente para queimá-los.

Funcionamento

A memória EEPROM do node foi dividida em 2 partes iguais de 512 bytes para armazenar os usuários cadastrados e os eventos:
image

Foi desenvolvido um Monitor Serial para este projeto integrado com o banco de dados.
image

Diferente do Monitor Serial da IDE do Arduino, as novas mensagens aparecem no topo.

Visualizador de banco de dados:
image

Bibliotecas usadas:

pip install pyserial   # comunicação serial
pip install pyqt6      # interface gráfica

Rodando o programa

  • Primeiro monte o circuito indicado na foto, o projeto foi desenvolvido para nodeMCU devido a falta de um arduino.
  • Carregue o programa Arduino/Arduino.ino no nodeMCU, caso haja necessidade de limpar a memória EEPROM, descomente a linha "resetEEPROM();" no void setup(), carregue o codigo, comente novamente a linha "resetEEPROM();" e carregue novamente o código.
  • Feche a IDE Arduino e execute o main.py. O arquivo do banco de dados está salvo em back_end/database.db (caso não exista esse arquivo, o programa irá criá-lo automaticamente na primeira execução)

Possíveis problemas:

Access is denied

image
Certifique-se que selecionou a porta serial correta e que o arquivo main.py não está sendo executado.

Access is denied

image
Certifique-se que a IDE do arduino não está aberta.

File not found error

image
No arquivo back_end/arduino_serial.py troque a porta serial para a que o computador reconheceu o nodeMCU dentro do def __init __

Saída serial vazia

image
Resete o nodeMCU apertando o botão reset dele.

Funcionamento na prática

Demonstração: https://youtu.be/zkL8N9sPvYo