Arduino Nano - Fechadura de Porta com Teclado
Este tutorial ensina como construir um sistema de fechadura de porta protegido por senha usando Arduino Nano, teclado, trava solenoide ou trava eletromagnética e display LCD. Veja abaixo como o sistema de fechadura de porta vai funcionar:
- Os usuários digitam uma senha usando o teclado.
- O Arduino Nano verifica se a senha está correta.
- Se a senha digitada estiver correta, o Arduino Nano desativa a trava solenoide para destrancar a porta. A porta permanece destrancada por um tempo definido (por exemplo, 20 segundos) antes de ser trancada automaticamente de novo.
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) Adicionando suporte a várias senhas
- Parte 3: (Opcional) Adicionando um display LCD à fechadura de porta com teclado.
- Parte 4: (Opcional) Adicionando o som de bipe quando uma tecla do teclado é pressionada.
- Parte 5: (Opcional) Adicionando um sensor de porta à fechadura de porta com teclado.
- Parte 6: (Opcional) Gerenciando e armazenando as senhas válidas na EEPROM interna do Arduino Nano
- Parte 7: (Opcional) Salvando 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) |
Buy Note: Alternatively, you can assemble the LCD I2C display using LCD 1602 Display and PCF8574 I2C Adapter Module.
Sobre o Teclado, a Trava Solenoide, a Trava Eletromagnética e o Display LCD
Tanto a trava solenoide quanto a trava eletromagnética são usadas para trancar/destrancar a porta. Elas diferem principalmente no projeto mecânico. A ligação delas ao Arduino Nano é parecida. O código do Arduino Nano para controlá-las é o mesmo.
Se você não conhece o teclado, a trava solenoide, a trava eletromagnética e o display LCD (pinagem, como funcionam, como programar ...), os tutoriais a seguir podem ajudar você a aprender:
Diagrama de Ligação
- Diagrama de Ligação com Arduino Nano, teclado e trava solenoide

This image is created using Fritzing. Click to enlarge image
- Diagrama de Ligação com Arduino Nano, teclado e trava eletromagnética

This image is created using Fritzing. Click to enlarge image
Código Arduino Nano - Fechadura de Porta com Teclado
※ Nota:
O endereço do LCD pode variar dependendo do fabricante. No nosso código, usamos 0x27, conforme especificado pela DIYables.
Passos Rápidos
- Conecte um cabo USB ao Arduino Nano e ao PC.
- Abra a Arduino IDE e selecione a placa e a porta apropriadas.
- Clique no ícone Libraries na barra lateral esquerda da Arduino IDE.
- Pesquise por “keypad” e localize a biblioteca keypad criada por Mark Stanley e Alexander Brevig.
- Pressione o botão Install para instalar a biblioteca keypad.

- Copie o código acima e abra-o com a Arduino IDE.
- Clique no botão Upload para fazer o upload do código para o Arduino Nano.
- Abra o Serial Monitor.
- Pressione as teclas 12345 seguidas do símbolo #.
- Em seguida, pressione as teclas 1234 seguidas do símbolo #.
- Observe o estado da lingueta da trava durante 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 Arduino Nano. 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 da seguinte forma:
- Exceto pelas duas teclas especiais, se qualquer outra tecla for pressionada, ela é adicionada à input string.
- Se * for pressionada, a input string é limpa. Isso pode ser usado para iniciar ou reiniciar a digitação da senha.
- Se # for pressionada:
- O Arduino Nano compara a input string com as senhas pré-definidas. Se ela corresponder a uma das senhas pré-definidas, o Arduino Nano controla o relé para destrancar a porta.
- Independentemente de a senha estar correta ou não, o Arduino Nano limpa a input string para a próxima entrada.
Código Arduino Nano - Várias Senhas
Adicionando um Display LCD à Fechadura de Porta RFID
Opcionalmente, podemos adicionar um display LCD para mostrar o status (por exemplo, GRANTED/DENIED) aos usuários.
Diagrama de ligação - Sistema de fechadura de porta usando teclado, trava solenoide ou trava eletromagnética e display LCD

This image is created using Fritzing. Click to enlarge image
Observe que, no diagrama de ligação acima, tanto o relé quanto o LCD podem não funcionar ou funcionar de forma instável devido à alimentação insuficiente. Recomendamos fortemente usar uma fonte de alimentação externa para o relé e para o LCD. Consulte o diagrama de ligação a seguir como orientação:

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Nano e outros componentes.
Código Arduino Nano - Fechadura de Porta com Teclado
※ Nota:
O endereço do LCD pode variar dependendo do fabricante. Usamos 0x27 no nosso código, conforme especificado pela DIYables.
Adicionando o som de bipe quando o teclado é pressionado.
Podemos fazer a fechadura de porta parecer mais responsiva adicionando um buzzer piezoelétrico 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 consultar o tutorial Arduino Nano - Bipe do Teclado para mais orientações.
Adicionando um sensor de porta à fechadura de porta com teclado
No código mencionado anteriormente, o Arduino Nano tranca a porta após um tempo limite desde o destrancamento. No entanto, em aplicações práticas, geralmente se adiciona um sensor de porta ao sistema. Se o Arduino Nano detectar que a porta está fechada, ele tranca 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 consultar os tutoriais Arduino Nano - Sensor de Porta e Arduino Nano - 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) fixas no código do Arduino Nano. Isso significa que, se você quiser adicionar ou remover senhas, precisa alterar o código e fazer o upload dele para o Arduino Nano novamente, o que é inconveniente.
Em aplicações reais, é necessário gerenciar as senhas sem ter que modificar e fazer o upload do código toda vez. Para isso, as senhas podem ser armazenadas na EEPROM em vez de fixas no código. Consequentemente, é preciso 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 usar uma senha como senha mestra ADD, novas senhas podem ser adicionadas ao sistema. Quando o Arduino Nano detecta a senha mestra ADD, ele alterna entre o modo ADD e o modo OPERATION.
- Durante o modo ADD, o Arduino Nano adiciona à EEPROM todas as novas senhas 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 a senha.
Para usar qualquer um dos dois métodos acima, é preciso adicionar uma quantidade considerável de código ao Arduino Nano. Para quem é novo em programação, isso pode ser uma tarefa desafiadora. Por isso, este tutorial tem como objetivo fornecer 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 através 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 da data e da 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ê encontra orientações neste tutorial Arduino Nano - Registrar Dados com Data e Hora em um Cartão SD.