Sistema de travamento de porta sem chave Arduino com teclado e LCD
Componentes e suprimentos
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Aplicativos e serviços online
![]() |
|
Sobre este projeto
Sistema de travamento de porta sem chave Arduino com teclado e LCD0
0
Por Ali Hamza
Neste projeto, vamos fazer um sistema de fechadura sem chave que usa um teclado 4X4 para inserir as chaves e uma fechadura DC para abrir ou fechar a porta. Um LCD 16X2 será usado para exibição.
Componentes necessários
Os componentes necessários para este projeto são os seguintes
- Arduino
- teclado 4X4
- LCD
- Bloqueio DC
- Relé
- bateria de 9 V
- potenciômetro de 10k
- resistor de 220 ohms
Como funciona?
Sempre que as teclas são pressionadas, elas são combinadas com as teclas já armazenadas. Se as teclas pressionadas corresponderem à senha inicial armazenada na EEPROM, que é '1234', a fechadura será aberta. Se a senha não corresponder, será impresso “acesso negado” no LCD.
Se a tecla ‘#’ for pressionada, será solicitado que você insira a senha atual e, se ela corresponder, solicitará que você insira a nova senha e a senha será alterada.
Diagrama de circuito
Primeiro, conecte o teclado 4X4 ao Arduino; conecte os primeiros seis pinos no teclado 4X4 com os pinos A0 e A5 no Arduino. Em seguida, conecte os dois últimos pinos do módulo do teclado 4X4 aos pinos digitais 3 e 2 do Arduino.
Depois disso, conecte o LCD ao Arduino. As conexões para conectar o LCD com o Arduino são as seguintes
- Conecte o pino 1 no LCD, que é o pino VSS, ao GND no Arduino
- Conecte o pino 2, que é o pino VDD, ao pino 5V no Arduino
- Conecte o pino 3, que é o V0, ao meio do potenciômetro de 10k e conecte os outros dois pinos do potenciômetro a 5V e GND do Arduino. Este pino é para definir o contraste do LCD.
- Conecte o pino 4, que é o pino RS, ao pino 7 no Arduino
- Conecte o pino 5, que é o pino R / W, ao pino GND no Arduino
- Conecte o pino 6, que é o pino de ativação, ao pino 6 no Arduino
- Conecte os pinos 11, 12, 13 e 14, que são os pinos de dados, aos pinos 5, 4, 3 e 2 no Arduino
- Conecte o pino 15, que é o pino da luz de fundo do LCD, a 5 V no Arduino por meio do resistor de 220 ohms
- Conecte o pino 16 no Arduino, que é o pino negativo da luz de fundo, ao GND no Arduino
Por último, conectaremos a fechadura DC com o Arduino. A fechadura opera em uma tensão de 7 a 12 V, portanto, não podemos conectá-la diretamente ao Arduino. Para conectá-lo ao Arduino, vamos exigir um relé e uma bateria.
Conecte o pino de sinal do relé ao pino 10 no Arduino e o VCC e GND da fechadura a 5V e GND no Arduino. Em seguida, na outra extremidade do relé, conecte o negativo da bateria ao comum do relé e o NÃO (normalmente aberto) do relé a um lado da fechadura. Em seguida, conecte o outro lado da fechadura ao terminal positivo da bateria.

Código de bloqueio do teclado Arduino
A senha inicial é 1234.
#include #include #include LiquidCrystal liquid_crystal_display (9,8,7,6,5,4,); senha de char [4]; char initial_password [4], new_password [4]; int i =0; int relay_pin =10; char key_pressed =0; const byte rows =4; colunas de bytes const =4; char hexaKeys [linhas] [colunas] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7' , '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte row_pins [linhas] ={A0, A1, A2, A3}; byte column_pins [colunas] ={A4, A5,3,2}; Teclado keypad_key =Teclado (makeKeymap (hexaKeys), row_pins, column_pins, linhas, colunas); configuração de void () {pinMode (relay_pin, OUTPUT); liquid_crystal_display.begin (16,2); liquid_crystal_display.print ("DIYhacking.com"); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Fechadura Eletrônica"); atraso (2000); liquid_crystal_display.clear (); liquid_crystal_display.print ("Digite a senha"); liquid_crystal_display.setCursor (0,1); senha inicial ();} void loop () {digitalWrite (relay_pin, HIGH); key_pressed =keypad_key.getKey (); if (key_pressed =='#') change (); if (key_pressed) {senha [i ++] =key_pressed; liquid_crystal_display.print (key_pressed); } Se (i ==4) {atraso (200); para (int j =0; j <4; j ++) senha_inicial [j] =EEPROM.read (j); if (! (strncmp (senha, senha_inicial, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print ("Pass Accepted"); digitalWrite (relay_pin, LOW); atraso (2000); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # to change"); atraso (2000); liquid_crystal_display.clear (); liquid_crystal_display.print ("Digite a senha:"); liquid_crystal_display.setCursor (0,1); i =0; } Else {digitalWrite (relay_pin, HIGH); liquid_crystal_display.clear (); liquid_crystal_display.print ("Senha errada"); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # to Change"); atraso (2000); liquid_crystal_display.clear (); liquid_crystal_display.print ("Digite a senha"); liquid_crystal_display.setCursor (0,1); i =0; }}} Void change () {int j =0; liquid_crystal_display.clear (); liquid_crystal_display.print ("Senha atual"); liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (chave) {nova_senha [j ++] =chave; liquid_crystal_display.print (chave); } Chave =0; } Atraso (500); if ((strncmp (nova_senha, senha_inicial, 4))) {exibição_crestal_líquido.clear (); liquid_crystal_display.print ("Senha errada"); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Tente novamente"); atraso (1000); } Mais {j =0; liquid_crystal_display.clear (); liquid_crystal_display.print ("Nova senha:"); liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (chave) {senha_inicial [j] =chave; liquid_crystal_display.print (chave); EEPROM.write (j, chave); j ++; }} Liquid_crystal_display.print ("Passe alterado"); atraso (1000); } Liquid_crystal_display.clear (); liquid_crystal_display.print ("Digite a senha"); liquid_crystal_display.setCursor (0,1); key_pressed =0;} void initialpassword () {for (int j =0; j <4; j ++) EEPROM.write (j, j + 49); para (int j =0; j <4; j ++) senha_inicial [j] =EEPROM.read (j);}
Explicação do código
Em primeiro lugar, incluiremos as bibliotecas do teclado 4X4, LCD e uma biblioteca para armazenar a senha. A biblioteca EEPROM é usada para armazenar a senha. A senha padrão armazenada nele é ‘1234’.
#include #include #include
Na função de loop, a tecla pressionada será armazenada no campo ‘ key_pressed 'Variável e será comparado com as outras chaves. Se a tecla pressionada for ‘#’, a função de alteração será chamada e solicitará a nova senha.
key_pressed =keypad_key.getKey (); if (key_pressed =='#') change ();
As teclas pressionadas são armazenadas na ‘ senha 'Variável e estes são mostrados no LCD quando as teclas são pressionadas. Então, essas chaves serão combinadas com a senha inicial armazenada na EEPROM. Se as teclas que foram pressionadas corresponderem à senha inicial, a fechadura será aberta e “Passe aceito” será impresso no LCD. Se a senha não corresponder, será solicitado que você digite a senha novamente.
if (key_pressed) {password [i ++] =key_pressed; liquid_crystal_display.print (key_pressed); } se (i ==4) {atraso (200); para (int j =0; j <4; j ++) senha_inicial [j] =EEPROM.read (j); if (! (strncmp (senha, senha_inicial, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print ("Pass Accepted"); digitalWrite (relay_pin, LOW); atraso (2000);
Se a tecla ‘#’ for pressionada, ela chamará o botão ‘ change () 'Função. Na função de alteração, será solicitado que você insira a senha atual. Se a senha atual estiver correta, será solicitado que você insira a nova senha. Ao inserir a nova senha, a senha será alterada.
void change () {int j =0; liquid_crystal_display.clear (); liquid_crystal_display.print ("Senha atual"); liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (chave) {nova_senha [j ++] =chave; liquid_crystal_display.print (chave); } Chave =0; } Atraso (500);
Tags:Teclado 4x4, Arduino, Bloqueio DC, Bloqueio, Teclado, LCD, Bloqueio
Postagens Recomendadas
Despertador Arduino usando um relógio em tempo real e uma tela LCD

Como construir um robô de auto-equilíbrio Arduino

Use um Arduino e Solenóide para fazer uma Toaster Dance

Faça um sistema de irrigação automática DIY com Arduino

Código
- Snippet de código # 1
- Snippet de código # 2
- Snippet de código # 3
- Snippet de código 4
- Snippet de código # 5
Snippet de código # 1 Texto simples
#include#include #include LiquidCrystal liquid_crystal_display (9,8,7,6,5,4,); char password [4]; char initial_password [ 4], nova_senha [4]; int i =0; int relay_pin =10; char key_pressed =0; const byte rows =4; colunas de bytes const =4; char hexaKeys [linhas] [colunas] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7' , '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte row_pins [linhas] ={A0, A1, A2, A3}; byte column_pins [colunas] ={A4, A5,3,2}; Teclado keypad_key =Teclado (makeKeymap (hexaKeys), row_pins, column_pins, linhas, colunas); configuração de void () {pinMode (relay_pin, OUTPUT); liquid_crystal_display.begin (16,2); liquid_crystal_display.print ("DIYhacking.com"); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Fechadura Eletrônica"); atraso (2000); liquid_crystal_display.clear (); liquid_crystal_display.print ("Digite a senha"); liquid_crystal_display.setCursor (0,1); senha inicial ();} void loop () {digitalWrite (relay_pin, HIGH); key_pressed =keypad_key.getKey (); if (key_pressed =='#') change (); if (key_pressed) {senha [i ++] =key_pressed; liquid_crystal_display.print (key_pressed); } Se (i ==4) {atraso (200); para (int j =0; j <4; j ++) senha_inicial [j] =EEPROM.read (j); if (! (strncmp (senha, senha_inicial, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print ("Pass Accepted"); digitalWrite (relay_pin, LOW); atraso (2000); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # to change"); atraso (2000); liquid_crystal_display.clear (); liquid_crystal_display.print ("Digite a senha:"); liquid_crystal_display.setCursor (0,1); i =0; } Else {digitalWrite (relay_pin, HIGH); liquid_crystal_display.clear (); liquid_crystal_display.print ("Senha errada"); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Pres # to Change"); atraso (2000); liquid_crystal_display.clear (); liquid_crystal_display.print ("Digite a senha"); liquid_crystal_display.setCursor (0,1); i =0; }}} Void change () {int j =0; liquid_crystal_display.clear (); liquid_crystal_display.print ("Senha atual"); liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (chave) {nova_senha [j ++] =chave; liquid_crystal_display.print (chave); } Chave =0; } Atraso (500); if ((strncmp (nova_senha, senha_inicial, 4))) {exibição_crestal_líquido.clear (); liquid_crystal_display.print ("Senha errada"); liquid_crystal_display.setCursor (0,1); liquid_crystal_display.print ("Tente novamente"); atraso (1000); } Mais {j =0; liquid_crystal_display.clear (); liquid_crystal_display.print ("Nova senha:"); liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (chave) {senha_inicial [j] =chave; liquid_crystal_display.print (chave); EEPROM.write (j, chave); j ++; }} Liquid_crystal_display.print ("Passe alterado"); atraso (1000); } Liquid_crystal_display.clear (); liquid_crystal_display.print ("Digite a senha"); liquid_crystal_display.setCursor (0,1); key_pressed =0;} void initialpassword () {for (int j =0; j <4; j ++) EEPROM.write (j, j + 49); para (int j =0; j <4; j ++) senha_inicial [j] =EEPROM.read (j);}
Snippet de código # 2 Texto simples
#include#include #include
Snippet de código # 3 Texto simples
key_pressed =keypad_key.getKey (); if (key_pressed =='#') change ();
Snippet de código # 4 Texto simples
if (key_pressed) {senha [i ++] =key_pressed; liquid_crystal_display.print (key_pressed); } se (i ==4) {atraso (200); para (int j =0; j <4; j ++) senha_inicial [j] =EEPROM.read (j); if (! (strncmp (senha, senha_inicial, 4))) {liquid_crystal_display.clear (); liquid_crystal_display.print ("Pass Accepted"); digitalWrite (relay_pin, LOW); atraso (2000);
Snippet de código # 5 Texto simples
mudança vazia () {int j =0; liquid_crystal_display.clear (); liquid_crystal_display.print ("Senha atual"); liquid_crystal_display.setCursor (0,1); while (j <4) {char key =keypad_key.getKey (); if (chave) {nova_senha [j ++] =chave; liquid_crystal_display.print (chave); } Chave =0; } Atraso (500);
Esquemas
Use um Arduino para controlar uma fechadura de porta solenóide que pode ser aberta com a combinação de teclas correta.
Processo de manufatura
- Jogo Arduino Gyroscope com MPU-6050
- Sistema de atendimento usando Arduino e RFID com Python
- Sensor DHT11 com LEDs e um alto-falante Piezo
- Animação de LCD e jogos
- Unopad - Controlador Arduino MIDI com Ableton
- Registrador de dados de temperatura e umidade
- Sensor de obstáculo simples com Arduino
- Cubo de LED 4x4x4 com Arduino Uno e 1sheeld
- Contador RPM baseado em Arduino com um algoritmo novo e mais rápido
- Sistema de atendimento baseado em Arduino e planilha do Google