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
Estado Inicial (Fechado)
O LED vermelho fica aceso.
O servo motor está na posição de "fechado" (0°).
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.
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
#include <Keypad.h> // BIBLIOTECA PARA O FUNCIONAMENTO DO TECLADO DE MEMBRANA#include <Servo.h> // BIBLIOTECA PARA O FUNCIONAMENTO DO SERVOServo servo_Motor; //OBJETO DO TIPO SERVOchar* password = "123"; //SENHA CORRETA PARA DESTRANCAR A FECHADURAint position = 0; //VARIÁVEL PARA LEITURA DE POSIÇÃO DA TECLA PRESSIONADAconst byte ROWS = 4; //NUMERO DE LINHAS DO TECLADOconst byte COLS = 4; //NUMERO DE COLUNAS DO TECLADOchar 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 TECLADObyte colPins[COLS] = { 5, 4, 3, 2 }; //PINOS DE CONEXAO DAS COLUNAS DO TECLADOKeypad 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 RESPECTIVAMENTEconst int ledVermelho = 12; //PINO EM QUE ESTÁ CONECTADO O LED VERMELHOconst int ledVerde = 13; //PINO EM QUE ESTÁ CONECTADO O LED VERDEvoid setup(){pinMode(ledVermelho, OUTPUT); //DECLARA O PINO COMO SAÍDApinMode(ledVerde, OUTPUT); //DECLARA O PINO COMO SAÍDAservo_Motor.attach(11); //PINO DE CONTROLE DO SERVO MOTORsetLocked(true); //ESTADO INICIAL DA FECHADURA (TRANCADA)}void loop(){char key = keypad.getKey(); //LEITURA DAS TECLAS PRESSIONADASif (key == '*' || key == '#') { //SE A TECLA PRESSIONADA POR IGUAL A CARACTERE "*" OU "#", FAZposition = 0; //POSIÇÃO DE LEITURA DA TECLA PRESSIONADA INICIA EM 0setLocked(true); //FECHADURA TRANCADA}if (key == password[position]){ //SE A TECLA PRESSIONADA CORRESPONDER A SEQUÊNCIA DA SENHA, FAZposition ++;//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 FECHADURAif (locked){ //SE FECHADURA TRANCADA, FAZdigitalWrite(ledVermelho, HIGH);// LED VERMELHO ACENDEdigitalWrite(ledVerde, LOW);// LED VERDE APAGAservo_Motor.write(0); //POSIÇÃO DO SERVO FICA EM 0º (FECHADURA TRANCADA)}else{ //SENÃO, FAZdigitalWrite(ledVerde, HIGH);// LED VERDE ACENDEdigitalWrite(ledVermelho, LOW);// LED VERMELHO APAGAservo_Motor.write(82);// SERVO GIRA A 82º (FECHADURA DESTRANCADA)}}
Explicação do Código
Bibliotecas e Configurações
Keypad.h
para ler o teclado matricial.Servo.h
para controlar o servo motor.
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).
Leitura do Teclado
Quando o usuário digita a senha a fechadura abre
Se
*
for pressionado, a fechadura fecha
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
Postar um comentário