ESP8266 - Fechadura de Porta com Teclado
Este tutorial ensina como construir um sistema de fechadura de porta com senha usando ESP8266, teclado e trava solenoide ou trava eletromagnética. Veja abaixo como o sistema de fechadura funcionará:
- Os usuários digitam a senha pelo teclado.
- O ESP8266 verifica a senha.
- Se a senha digitada for válida, o ESP8266 desativa a trava solenoide para destravar a porta. A porta permanece destravada por um tempo específico (por exemplo, 20 segundos) antes de ser travada automaticamente de novo.
- O código do ESP8266 suporta várias senhas.

Para facilitar, o tutorial é dividido em várias etapas, do fácil ao difícil:
- Parte 1: Um sistema simples de fechadura de porta com teclado usando Arduino Nano, teclado, trava solenoide ou trava eletromagnética.
- Parte 2: (Opcional) Adicionar suporte a várias senhas
- Parte 4: (Opcional) Adicionar o som de bipe quando o teclado é pressionado.
- Parte 5: (Opcional) Adicionar um sensor de porta à fechadura de porta com teclado.
- Parte 6: (Opcional) Gerenciar e armazenar as senhas válidas na EEPROM interna do Arduino Nano
- Parte 7: (Opcional) Salvar o histórico de acessos em um Cartão SD
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Teclado, a Trava Solenoide e a Trava Eletromagnética
Tanto a trava solenoide quanto a trava eletromagnética são usadas para travar/destravar a porta. Elas diferem principalmente no projeto mecânico. A ligação delas ao ESP8266 é parecida. O código do ESP8266 para controlá-las é o mesmo.
Se você não está familiarizado com teclado, trava solenoide e trava eletromagnética (pinagem, como funciona, como programar ...), os tutoriais a seguir podem ajudar você a aprender:
Diagrama de Ligação
- Diagrama de Ligação com ESP8266, teclado e trava solenoide

This image is created using Fritzing. Click to enlarge image
Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.
- Diagrama de Ligação com ESP8266, teclado e trava eletromagnética

This image is created using Fritzing. Click to enlarge image
Código ESP8266 - Fechadura de Porta com Teclado
Passos Rápidos
Para começar com o ESP8266 na Arduino IDE, siga estes passos:
- Confira o tutorial como configurar o ambiente para ESP8266 na Arduino IDE se esta for a sua primeira vez usando o ESP8266.
- Ligue os componentes como mostrado no diagrama.
- Conecte a placa ESP8266 ao seu computador usando um cabo USB.
- Abra a Arduino IDE no seu computador.
- Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
- Conecte um cabo USB entre o ESP8266 e o PC.
- Abra a Arduino IDE e selecione a placa e a porta corretas.
- Clique no ícone Libraries na barra esquerda da Arduino IDE.
- Pesquise por “keypad” e localize a biblioteca keypad criada por Mark Stanley e Alexander Brevig.
- Depois, pressione o botão Install para concluir a instalação da biblioteca keypad.

- Copie o código acima e abra-o com a Arduino IDE.
- Clique no botão Upload da Arduino IDE para enviar o código ao ESP8266.
- Abra o Serial Monitor.
- Pressione as teclas 12345 seguidas do símbolo #.
- Depois pressione as teclas 1234ABC seguidas do símbolo #.
- Verifique o estado da lingueta da trava por 20 segundos.
- Confira o resultado no Serial Monitor.
Explicação do Código
As senhas válidas são pré-definidas no código do ESP8266. Uma string é usada para armazenar a senha digitada pelos usuários, chamada de input string. No teclado, duas teclas (* e #) são usadas para fins especiais: limpar a senha e encerrar a senha. O sistema funciona assim:
- Além das duas teclas especiais, se outra tecla for pressionada, ela é adicionada à input string
- Se * for pressionada, a input string é limpa. Você pode usá-la para iniciar ou reiniciar a digitação da senha
- Se # for pressionada:
- O ESP8266 compara a input string com as senhas pré-definidas. Se ela corresponder a uma das senhas pré-definidas, o ESP8266 controla o relé para destravar a porta.
- Independentemente de a senha estar correta ou não, o ESP8266 limpa a input string para a próxima entrada.
Código ESP8266 - Várias Teclas
Adicionando o som de bipe quando o teclado é pressionado.
Podemos fazer a fechadura parecer mais responsiva adicionando um buzzer piezo para gerar um bipe curto cada vez que uma tecla do teclado é pressionada.
É bem simples adicioná-lo. Por isso, deixamos esta parte para a sua criatividade. Você pode conferir o tutorial ESP8266 - Bipe do Teclado para mais orientações.
Adicionando um sensor de porta à fechadura de porta com teclado
No código mencionado anteriormente, o ESP8266 trava a porta após um tempo limite desde o destravamento. No entanto, em aplicações práticas, normalmente um sensor de porta é adicionado ao sistema. Se o ESP8266 detectar que a porta está fechada, ele trava a porta imediatamente em vez de esperar o tempo limite.
Para não sobrecarregar você, não incluímos o sensor de porta no diagrama de ligação e no código. Em vez disso, deixamos esta parte para a sua criatividade. Você pode conferir os tutoriais ESP8266 - Sensor de Porta e ESP8266 - Sensor de Porta controla Relé para mais orientações.
Gerenciando e armazenando as senhas válidas na EEPROM
O código acima tem senhas válidas (UID) fixadas no código do ESP8266. Isso significa que, se você quiser adicionar ou remover senhas, precisa alterar o código e fazer upload dele para o ESP8266 de novo, o que é inconveniente.
Em aplicações reais, é necessário gerenciar as senhas sem ter que modificar e fazer upload do código toda vez. Para isso, as senhas podem ser armazenadas na EEPROM em vez de fixadas no código. Consequentemente, é necessário um método para gerenciar facilmente as senhas na EEPROM.
Há dois métodos disponíveis para gerenciar senhas na EEPROM:
- Usar senhas mestras
- Ao utilizar uma senha como senha mestra ADD, novas senhas podem ser adicionadas ao sistema. Quando o ESP8266 detecta a senha mestra ADD, ele alterna entre o modo ADD e o modo OPERATION.
- Durante o modo ADD, o ESP8266 adiciona à EEPROM qualquer nova senha que detectar.
- Uma abordagem semelhante é usada para a senha mestra DELETE e o modo DELETE.
- Usar comandos ADD/DELETE via Serial/Bluetooth/IR
- Os comandos são transmitidos via Serial/Bluetooth/IR, utilizando ferramentas como o Serial Monitor, um aplicativo Bluetooth ou um controle IR.
- Os comandos consistem em uma diretiva (ADD/DELETE) e na senha.
Para utilizar qualquer um dos dois métodos acima, uma quantidade considerável de código do ESP8266 precisa ser adicionada. Para quem é novo em programação, isso pode ser uma tarefa desafiadora. Por isso, este tutorial tem como objetivo oferecer uma compreensão básica do sistema de fechadura de porta sem sobrecarregar os iniciantes com código complexo. Se você quiser implementar este sistema para fins práticos, entre em contato conosco por meio do nosso serviço de programação pago
Armazenando o histórico de acessos em um Cartão SD
Para acompanhar o histórico de acessos, pode ser necessário salvar o status do acesso (GRANTED/DENIED), além de data e hora. Como a EEPROM não tem capacidade suficiente para armazenar o histórico inteiro, um cartão SD pode ser usado no lugar. Você pode encontrar orientações no tutorial ESP8266 - Registrar Dados com Carimbo de Data e Hora no Cartão SD.