Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Sistema de travamento de porta sem chave Arduino com teclado e LCD

Componentes e suprimentos

Arduino UNO
× 1
Teclado SparkFun 4x4 - Compatível com LED
× 1
Adafruit LCD padrão - 16x2 branco em azul
× 1
Relé (genérico)
× 1
Bateria de 9 V (genérica)
× 1
Potenciômetro de volta única - 10k ohms
× 1
Resistor 10k ohm
× 1

Aplicativos e serviços online

Arduino IDE

Sobre este projeto

Sistema de travamento de porta sem chave Arduino com teclado e LCD
0

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

  1. Jogo Arduino Gyroscope com MPU-6050
  2. Sistema de atendimento usando Arduino e RFID com Python
  3. Sensor DHT11 com LEDs e um alto-falante Piezo
  4. Animação de LCD e jogos
  5. Unopad - Controlador Arduino MIDI com Ableton
  6. Registrador de dados de temperatura e umidade
  7. Sensor de obstáculo simples com Arduino
  8. Cubo de LED 4x4x4 com Arduino Uno e 1sheeld
  9. Contador RPM baseado em Arduino com um algoritmo novo e mais rápido
  10. Sistema de atendimento baseado em Arduino e planilha do Google