ESP32 - Fechadura de Porta com Teclado

Este tutorial vai guiar você na criação de um sistema de trava de porta com senha usando um teclado e uma fechadura solenoide. O sistema destranca a porta quando a senha correta é digitada e mantém a porta destrancada por 20 segundos antes de trancá-la novamente de forma automática. O código ESP32 também é capaz de suportar várias senhas.

※ Nota:

Além deste tutorial, também temos outros tutoriais sobre sistemas de trava de porta disponíveis:

Sobre o Teclado e a Fechadura Solenoide

Temos tutoriais separados que tratam especificamente de teclados e fechaduras solenoides. Cada tutorial fornece informações detalhadas e instruções passo a passo sobre a pinagem do hardware, o princípio de funcionamento, as ligações ao ESP32, o código ESP32 e muito mais. Para mais informações sobre esses tutoriais, consulte os links a seguir:

Diagrama de Ligação

  • ESP32 - Trava de porta com teclado e fechadura solenoide
Diagrama de ligação do ESP32 com teclado e fechadura solenoide

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Código ESP32 - Sistema de trava de porta com senha usando teclado e fechadura solenoide

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-keypad-door-lock */ #include <Keypad.h> #define RELAY_PIN 19 // ESP32 pin GPIO19 connected to the relay #define ROW_NUM 4 // keypad four rows #define COLUMN_NUM 3 // keypad three columns char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'} }; byte pin_rows[ROW_NUM] = {12, 14, 27, 26}; // ESP32 pin: GPIO12, GPIO14, GPIO27, GPIO26 connected to the row pins byte pin_column[COLUMN_NUM] = {25, 33, 32}; // ESP32 pin: GPIO25, GPIO33, GPIO32 connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234567"; // change your password here const String password_2 = "987654"; // change your password here const String password_3 = "55555"; // change your password here String input_password; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 33, change if needed pinMode(RELAY_PIN, OUTPUT); // initialize pin as an output. digitalWrite(RELAY_PIN, LOW); // lock the door } void loop() { char key = keypad.getKey(); if (key){ Serial.println(key); if(key == '*') { input_password = ""; // reset the input password } else if(key == '#') { if(input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The password is correct, unlocking the door in 20 seconds"); digitalWrite(RELAY_PIN, HIGH); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, LOW); // lock the door } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Passos Rápidos

  • Conecte o ESP32 ao seu PC usando um cabo USB.
  • Abra a Arduino IDE e selecione a placa e a porta apropriadas.
  • Clique no ícone Libraries na barra esquerda da Arduino IDE.
  • Pesquise a biblioteca “keypad” e depois encontre a biblioteca keypad criada por Mark Stanley e Alexander Brevig.
  • Clique no botão Install para instalar a biblioteca keypad.
Biblioteca keypad para ESP32
  • Copie o código fornecido e cole-o na Arduino IDE.
  • Compile e faça upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE.
  • Abra o Serial Monitor na Arduino IDE.
  • Pressione as teclas 12345 e depois pressione #
  • Pressione as teclas 1234567 e depois pressione #
  • Observe o estado da lingueta da fechadura durante 20 segundos.
  • Observe a saída no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
The password is incorrect, try again The password is correct, unlocking the door in 20 seconds
Ln 11, Col 1
ESP32 Dev Module on COM15
2

Explicação do Código

Neste sistema, as senhas válidas são pré-programadas no código ESP32. Uma string de entrada é usada para armazenar a senha digitada pelos usuários. O teclado possui duas teclas especiais, * e #, que são usadas para limpar e finalizar a senha digitada. O sistema funciona da seguinte forma:

  • Quando uma tecla diferente das teclas especiais é pressionada, ela é adicionada à string de entrada.
  • Quando a tecla * é pressionada, a string de entrada é limpa e o processo de digitação da senha pode ser reiniciado.
  • Quando a tecla # é pressionada:
    • A string de entrada é comparada com as senhas predefinidas. Se ela corresponder a uma das senhas predefinidas, o relé é ativado para destrancar a porta.
    • Independentemente de a senha estar correta ou não, a string de entrada é limpa para a próxima entrada.

    ※ Nota:

    • No código acima, para simplificar, usamos a função delay. É melhor usar millis() em vez de delay(). Veja Como usar millis() em vez de delay()
    • Você pode adicionar um buzzer piezo para emitir um bipe cada vez que uma tecla do teclado for pressionada.
    • Nos códigos acima, a porta é trancada novamente após 20 segundos. Você pode substituir isso por um sensor de porta. A porta é trancada quando o sensor de porta detecta que a porta foi fechada pelo usuário.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!