Arduino Nano ESP32 - Sistema de Fechadura de Porta com Senha

Este tutorial ensina como usar o ESP32, um teclado e uma trava eletromagnética para fazer um sistema de fechadura de porta. Os usuários serão solicitados a digitar a senha pelo teclado. Se a senha for válida, o Arduino Nano ESP32 controla a trava eletromagnética para destrancar a porta. O tutorial também adiciona, de forma opcional, um LCD para mais conveniência. O código do Arduino Nano ESP32 também suporta várias senhas.

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×Teclado 3x4
1×Relé
1×Fechadura Eletromagnética
1×Fonte de Alimentação 12V
1×Protoboard
1×Fios Jumper
1×LCD I2C Display 3.3V
1×(Opcional) Conector de Alimentação DC
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Nota de compra: A maioria dos displays LCD I2C no mercado é de 5V. Eles podem funcionar com esta placa, mas não é seguro e pode danificar a placa. Recomendamos fortemente usar o display LCD I2C de 3.3V recomendado acima.

Sobre o Teclado, a Trava Eletromagnética e o LCD

Temos tutoriais específicos sobre o teclado, a trava eletromagnética e o LCD. Cada tutorial contém informações detalhadas e instruções passo a passo sobre a pinagem do hardware, o princípio de funcionamento, a ligação ao ESP32, o código do Arduino Nano ESP32... Saiba mais sobre eles nos links a seguir:

Como verificar a senha

  • Uma tecla especial * é usada para redefinir a senha
  • Uma tecla especial # é usada para encerrar a digitação da senha.
  • Toda tecla digitada, exceto * e #, é adicionada a uma string.
  • Quando a tecla # é pressionada, a digitação da senha está completa. O Arduino Nano ESP32 compara a string digitada com as senhas predefinidas.
  • Se a senha digitada for válida, destranque a porta.

Diagrama de Ligação

Diagrama de ligação do sistema de fechadura de porta com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Código Arduino Nano ESP32 - Sistema de fechadura de porta com senha usando teclado e trava eletromagnética

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-door-lock-system-using-password */ #include <Keypad.h> #define RELAY_PIN D2 // The Arduino Nano ESP32 pin 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] = {D10, D9, D8, D7}; // The Arduino Nano ESP32 pin connected to the row pins byte pin_column[COLUMN_NUM] = {D6, D5, D4}; // The Arduino Nano ESP32 pin connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234"; // change your password here const String password_2 = "4444"; // 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 32 pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, HIGH); // 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("Valid Password => unlock the door"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.println("Invalid Password => Try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } }

Passos Rápidos

Para começar com o Arduino Nano ESP32, siga estes passos:

  • Se você é novo no Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente para o Arduino Nano ESP32 na Arduino IDE.
  • Faça a ligação dos componentes de acordo com o diagrama fornecido.
  • Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Selecione a placa Arduino Nano ESP32 e a porta COM correspondente.* Clique no ícone Libraries na barra à esquerda da Arduino IDE.
  • Digite “keypad” na caixa de pesquisa e procure a biblioteca keypad de Mark Stanley, Alexander Brevig
  • Clique no botão Install para instalar a biblioteca keypad.
Biblioteca keypad do Arduino Nano ESP32
  • Copie o código acima e cole na Arduino IDE.
  • Compile e faça o upload do código para a placa Arduino Nano ESP32 clicando no botão Upload na Arduino IDE
  • Para simular a trava eletromagnética instalada na porta, coloque o eletroímã perto da placa de armadura.
  • Pressione as teclas 1111 e pressione #
  • Verifique a força de atração entre o eletroímã e a placa de armadura.
  • Pressione as teclas 1234 e pressione #
  • Verifique a força de atração entre o eletroímã e a placa de armadura.
  • Veja o resultado no Serial Monitor
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Invalid Password => Try again Valid Password => unlock the door
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Código Arduino Nano ESP32 - Sistema de fechadura de porta com senha usando teclado, trava eletromagnética e LCD

O código abaixo adicionou um LCD I2C para exibir o status de acesso. Para a ligação com o LCD, você pode ver este tutorial: Tutorial do LCD I2C com Esp32

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-door-lock-system-using-password */ #include <DIYables_LCD_I2C.h> #include <Keypad.h> #define RELAY_PIN D2 // The Arduino Nano ESP32 pin 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] = {D10, D9, D8, D7}; // The Arduino Nano ESP32 pin connected to the row pins byte pin_column[COLUMN_NUM] = {D6, D5, D4}; // The Arduino Nano ESP32 pin connected to the column pins Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "1234"; // change your password here const String password_2 = "4444"; // change your password here const String password_3 = "55555"; // change your password here String input_password; DIYables_LCD_I2C lcd(0x27, 16, 2); // I2C address 0x27 (from DIYables LCD), 16 column and 2 rows void setup() { Serial.begin(9600); input_password.reserve(32); // maximum input characters is 32 pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, HIGH); lcd.init(); // initialize the lcd lcd.backlight(); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password lcd.clear(); } else if (key == '#') { lcd.clear(); if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("Valid Password => unlock the door"); lcd.setCursor(0, 0); lcd.print("CORRECT!"); lcd.setCursor(0, 1); lcd.print("DOOR UNLOCKED!"); digitalWrite(RELAY_PIN, LOW); // unlock the door for 20 seconds delay(20000); digitalWrite(RELAY_PIN, HIGH); // lock the door } else { Serial.println("Invalid Password => Try again"); lcd.setCursor(0, 0); lcd.print("INCORRECT!"); lcd.setCursor(0, 1); lcd.print("ACCESS DENIED!"); } input_password = ""; // reset the input password } else { if (input_password.length() == 0) { lcd.clear(); } input_password += key; // append new character to input password string lcd.setCursor(input_password.length(), 0); // move cursor to new position lcd.print('*'); // print * key as hiden character } } }

※ Nota:

O endereço do LCD I2C pode ser diferente em cada fabricante. No código, usamos o endereço 0x27, que é especificado pelo fabricante DIYables

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!