Fechadura Eletrônica com Arduino, Teclado Matricial e Servo Motor

Fechadura Eletrônica com Arduino, Teclado Matricial e Servo Motor

Neste projeto, vamos criar uma fechadura eletrônica utilizando um teclado matricial, um servo motor e dois LEDs (verde e vermelho) para indicar o estado da fechadura. Quando a senha correta for digitada, o servo motor irá mover-se para simular a abertura da fechadura, acendendo o LED verde. Caso contrário, o LED vermelho permanecerá aceso, indicando que a fechadura está trancada.

Materiais Necessários

  • Arduino Uno (ou similar)

  • Teclado Matricial 4x4

  • Servo Motor (SG90 ou similar)

  • 2 LEDs (verde e vermelho)

  • 2 Resistores (220Ω)

  • Protoboard

  • Jumpers

Funcionamento do Sistema

  1. Estado Inicial (Fechado)

    • O LED vermelho fica aceso.

    • O servo motor está na posição de "fechado" (0°).

  2. Abertura da Fechadura

    • O usuário digita a senha correta no teclado matricial.

    • Se a senha estiver correta:

      • O servo motor gira para a posição de "aberto" (90°).

      • O LED verde acende e o vermelho apaga.

    • Se a senha estiver incorreta, o sistema permanece fechado.

  3. Fechamento da Fechadura

    • Com o comando * o servo retorna à posição inicial (0°).

    • O LED vermelho acende novamente.

Conexões do Circuito


Código do Arduino

cpp
Copy
Download
#include <Keypad.h> // BIBLIOTECA PARA O FUNCIONAMENTO DO TECLADO DE MEMBRANA
#include <Servo.h> // BIBLIOTECA PARA O FUNCIONAMENTO DO SERVO
 
Servo servo_Motor; //OBJETO DO TIPO SERVO
char* password = "123"; //SENHA CORRETA PARA DESTRANCAR A FECHADURA
int position = 0; //VARIÁVEL PARA LEITURA DE POSIÇÃO DA TECLA PRESSIONADA
const byte ROWS = 4; //NUMERO DE LINHAS DO TECLADO
const byte COLS = 4; //NUMERO DE COLUNAS DO TECLADO
char keys[ROWS][COLS] = { //DECLARAÇÃO DOS NUMEROS, LETRAS E CARACTERES DO TECLADO
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
 
byte rowPins[ROWS] = { 8, 7, 6, 9 }; // PINOS DE CONEXAO DAS LINHAS DO TECLADO
byte colPins[COLS] = { 5, 4, 3, 2 }; //PINOS DE CONEXAO DAS COLUNAS DO TECLADO
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );//AS VARIAVEIS rowPins E colPins RECEBERÃO O VALOR DE LEITURA DOS PINOS DAS LINHAS E COLUNAS RESPECTIVAMENTE
 
const int ledVermelho = 12; //PINO EM QUE ESTÁ CONECTADO O LED VERMELHO
const int ledVerde = 13; //PINO EM QUE ESTÁ CONECTADO O LED VERDE
 
void setup(){
  pinMode(ledVermelho, OUTPUT); //DECLARA O PINO COMO SAÍDA
  pinMode(ledVerde, OUTPUT); //DECLARA O PINO COMO SAÍDA
 
  servo_Motor.attach(11); //PINO DE CONTROLE DO SERVO MOTOR
  setLocked(true); //ESTADO INICIAL DA FECHADURA (TRANCADA)
}
 
void loop(){
  char key = keypad.getKey(); //LEITURA DAS TECLAS PRESSIONADAS
  if (key == '*' || key == '#') { //SE A TECLA PRESSIONADA POR IGUAL A CARACTERE "*" OU "#", FAZ
      position = 0; //POSIÇÃO DE LEITURA DA TECLA PRESSIONADA INICIA EM 0
      setLocked(true); //FECHADURA TRANCADA
}
if (key == password[position]){ //SE A TECLA PRESSIONADA CORRESPONDER A SEQUÊNCIA DA SENHA, FAZ
      position ++;//PULA PARA A PRÓXIMA POSIÇÃO
}
if (position == 3){ // SE VARIÁVEL FOR IGUAL A 3 FAZ (QUANDO AS TECLAS PRESSIONADAS CHEGAREM A 3 POSIÇÕES, SIGNIFICA QUE A SENHA ESTÁ CORRETA)
      setLocked(false); //FECHADURA DESTRANCADA
}
delay(100);//INTERVALO DE 100 MILISSEGUNDOS
}
void setLocked(int locked){ //TRATANDO O ESTADO DA FECHADURA
if (locked){ //SE FECHADURA TRANCADA, FAZ
    digitalWrite(ledVermelho, HIGH);// LED VERMELHO ACENDE
    digitalWrite(ledVerde, LOW);// LED VERDE APAGA
    servo_Motor.write(0); //POSIÇÃO DO SERVO FICA EM 0º (FECHADURA TRANCADA)
}
else{ //SENÃO, FAZ
    digitalWrite(ledVerde, HIGH);// LED VERDE ACENDE
    digitalWrite(ledVermelho, LOW);// LED VERMELHO APAGA
    servo_Motor.write(82);// SERVO GIRA A 82º (FECHADURA DESTRANCADA)
}
}

Explicação do Código

  1. Bibliotecas e Configurações

    • Keypad.h para ler o teclado matricial.

    • Servo.h para controlar o servo motor.

  2. Senha e Estado Inicial

    • A senha padrão é "123" (pode ser alterada).

    • O LED vermelho começa aceso e o servo na posição 0° (fechado).

  3. Leitura do Teclado

    • Quando o usuário digita  a senha a fechadura abre 

    • Se * for pressionado, a fechadura fecha 

  4. Controle do Servo e LEDs

    • abrirFechadura(): Liga LED verde, move servo para 90°.

    • fecharFechadura(): Volta LED vermelho, servo para 0°.

Conclusão

Este projeto demonstra como criar uma fechadura eletrônica segura usando componentes simples. Você pode aprimorá-lo adicionando um buzzer para alertas ou um display LCD para mensagens. Experimente modificar a senha ou adicionar mais funcionalidades!


Comentários

Postagens mais visitadas