A segurança é uma grande preocupação em nosso dia a dia, e as travas digitais se tornaram uma parte importante desses sistemas de segurança. Existem muitos tipos de tecnologias disponíveis para proteger nosso lugar, como sistemas de segurança baseados em PIR, sistema de segurança baseado em RFID, alarmes de segurança de laser, sistemas de biomatriz etc. Mesmo agora, existem fechaduras digitais que podem ser operadas usando nossos telefones inteligentes, significa que não mais necessidade de manter chaves diferentes, apenas um smartphone pode operar todos os bloqueios, este conceito é baseado na Internet das Coisas.
Neste projeto, explicamos um bloqueio de código eletrônico simples usando o Microcontorller 8051, que só pode ser desbloqueado por um código pré-definido, se inserirmos o código errado, o sistema alerta por sirene o buzzer. Já criamos uma fechadura digital usando o Arduino.
Explicação de trabalho:
Este sistema contém principalmente microcontrolador AT89S52, módulo de teclado, campainha e LCD. O microcontrolador At89s52 controla os processos completos, como a obtenção de senha do módulo do teclado, comparação de senhas com senha predefinida, campainha de acionamento e envio de status para display LCD. O teclado é usado para inserir a senha no microcontrolador. A campainha é usada para indicar a senha errada e o LCD é usado para exibir o status ou mensagens nele. Buzzer tem driver embutido usando um transistor NPN.
Componentes:
- Microcontrolador 8051 (AT89S52)
- Módulo de teclado 4X4
- Buzzer
- LCD 16x2
- Resistor (1k, 10k)
- Resistor pullup (10K)
- Capacitor (10uf)
- Led vermelho
- Tábua de pão
- IC 7805
- Cristal de 11,0592 MHz
- Fonte de energia
- Fios de conexão
Recebendo a entrada da Matriz do Teclado 4X4 usando a Técnica de Multiplexação:
Neste circuito usamos a técnica de multiplexação para fazer a interface do teclado com o microcontrolador 8051, para inserir a senha no sistema. Aqui, estamos usando um teclado 4x4 que possui 16 teclas. Se quisermos usar 16 chaves, precisamos de 16 pinos para conexão com 89s52, mas na técnica de multiplexação, precisamos usar apenas 8 pinos para fazer a interface de 16 chaves. É uma maneira inteligente de fazer a interface com o módulo do teclado.
A técnica de multiplexação é uma maneira muito eficiente de reduzir o número de pinos usados com o microcontrolador para fornecer a entrada ou senha. Basicamente, essa técnica é usada de duas maneiras - uma é a varredura de linha e a outra é a varredura de coluna.
Aqui vamos explicar a varredura de linha:
Primeiro temos que definir 8 pinos para o módulo do teclado. Em que os primeiros 4 pinos são colunas e os últimos 4 pinos são linhas.
Para varredura de linha, precisamos fornecer dados ou sinal aos pinos da coluna e ler esses dados ou sinal do pino de linha. Agora, suponha que fornecemos os dados abaixo para os pinos da coluna:
C1 = 0;
C2 = 1;
C3 = 1;
C4 = 1;
E lemos esses dados nos pinos de linha (por padrão, os pinos de linha são ALTOS devido ao resistor pull-up).
Se o usuário pressionar a tecla '1', então R1 muda de HIGH para LOW significa R1 = 0; e o controlador entende que o usuário pressionou a tecla '1'. E imprimirá '1' no LCD e armazenará '1' na matriz. Portanto, essa mudança de ALTO para BAIXO em R1 é a principal coisa pela qual o controlador entende que alguma tecla, correspondente à coluna 1, foi pressionada.
Agora, se o usuário pressiona a tecla número '2', então R1 permanece em HIGH como C1 e R1 ambos já estão em HIGH. Portanto, não haverá nenhuma mudança, significa que o microcontrolador entende que nada foi pressionado na coluna um. E da mesma forma este princípio vale para todos os outros pinos. Portanto, nesta etapa, o controlador espera apenas pelas chaves na coluna um: '1', '4', '7' e '*'.
Agora, se quisermos rastrear as chaves em outras colunas (como na coluna 2), precisamos alterar os dados nos pinos das colunas:
C1 = 1;
C2 = 0;
C3 = 1;
C4 = 1;
Este controlador de tempo espera apenas pelas teclas da coluna dois: '2', '5', '8' e '0', porque a mudança (de ALTO para BAIXO) só ocorre quando as teclas da coluna dois são pressionadas. Se pressionarmos qualquer tecla na coluna 1, 3 ou 4, nenhuma alteração ocorrerá, porque essas colunas estão em HIGH e as linhas já estão em HIGH.
Da mesma forma, as chaves nas colunas C3 e C4 também podem ser rastreadas, tornando-as 0, de cada vez. Verifique aqui a explicação detalhada: Interface do teclado com 8051. Passe também pela seção Código abaixo para entender a lógica de maneira adequada.
Explicação do circuito:
O diagrama de circuito para esta fechadura digital usando 8051 foi mostrado abaixo e pode ser facilmente compreendido. Os pinos da coluna do módulo do teclado são conectados diretamente ao pino P0.0, P0.1, P0.2, P0.3 e os pinos da linha são conectados a P0.4, P0.5, P0.6, P0.7 da porta 0 do microcontrolador 89s52 Um LCD 16x2 é conectado ao microcontrolador 89s52 no modo de 4 bits. Os pinos de controle RS, RW e En são conectados diretamente aos pinos P1.0, GND e P1.2. E o pino de dados D4-D7 é conectado aos pinos P1.4, P1.5, P1.6 e P1.7 de 89s52. E um buzzer é conectado no pino P2.6 por meio de um resistor.
Explicação do programa:
Utilizamos uma senha pré-definida no programa, esta senha pode ser definida pelo usuário no código abaixo. Quando o usuário insere uma senha para o sistema, o sistema compara a senha inserida pelo usuário com a senha armazenada ou predefinida no Código de Programa. Se ocorrer uma correspondência, o LCD mostrará “Acesso Graduado” e se a senha não corresponder, o LCD mostrará “Acesso negado” e a campainha emitirá um bipe contínuo por algum tempo. Aqui usamos a biblioteca string.h. Usando esta biblioteca, podemos comparar ou combinar duas strings, usando a função “strncmp”.
No programa, primeiro incluímos o arquivo de cabeçalho e definimos os pinos de entrada e saída variáveis para teclado e LCD.
#incluir
A função para criar o atraso de 1 segundo foi criada, junto com algumas funções do LCD, como inicialização do LCD, impressão da string, comandos etc. Você pode encontrá-los facilmente no Código. Verifique neste artigo a interface do LCD com o 8051 e suas funções.
Depois disso, no programa principal, inicializamos o LCD e então lemos a entrada do teclado usando a função keypad () e armazenamos as chaves de entrada em um array e então comparamos com os dados de array predefinidos usando strncmp.
void main () {campainha = 1; lcd_init (); lcdstring ("Código Eletrônico"); lcdcmd (0xc0); lcdstring ("Sistema de bloqueio"); atraso (400); lcdcmd (1); lcdstring ("Circuit Digest"); atraso (400); enquanto (1) {i = 0; teclado (); if (strncmp (pass, "4201", 4) == 0)
Se a senha digitada corresponder, a função accept () será chamada:
void aceitar () {lcdcmd (1); lcdstring ("Bem-vindo"); lcdcmd (192); lcdstring ("Aceitar senha"); atraso (200); }
E se a senha estiver errada, a função wrong () é chamada:
void wrong () {buzzer = 0; lcdcmd (1); lcdstring ("Senha errada"); lcdcmd (192); lcdstring ("PLZ, tente novamente"); atraso (200); campainha = 1; }
Verifique a função do teclado abaixo no código que lê o módulo do teclado do formulário de entrada.