Fechadura da porta do teclado com código mutável
Componentes e suprimentos
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Ferramentas e máquinas necessárias
![]() |
| |||
![]() |
|
Sobre este projeto
Olá, bem-vindo a este tutorial (sim, é antigo, mas clássico), hoje estou fazendo um projeto de fechadura de porta baseado em uma placa Arduino, teclado, tela LCD i²c e usarei para a fechadura um solenóide e um relé, você pode conferir meu tutorial sobre a fechadura de impressão digital onde usei uma fechadura que usa um motor cc, então depende do seu sistema de fechadura você terá que escolher uma fiação, códigos e adaptá-los.
N.B:Para um projeto real, eu não recomendo usar um solenóide, mas sim hackear uma fechadura que pode ser aberta por fechadura eletrônica e mecânica e adaptar seu projeto para ela.
Peças
Portanto, para este projeto, precisaremos desses componentes, junto com alguns cabos de ligação e uma fonte de alimentação de 12V. Desculpe, não adicionei aqui:







O Push Button serve para abrir a fechadura por dentro, você pode removê-lo se quiser, o resistor é para debounce.
Eu usei o teclado 4 × 4, você pode usar 3 × 4, mas você precisará modificar algumas coisas no código, como para confirmação, eu uso 'A', você pode alterá-lo para '*' ou '#'.
O solenóide é alimentado por uma fonte de alimentação externa de 12 V e acionado pelo transistor MOSFET IRF510N.
O transistor é usado como uma chave e é melhor usar um canal N, o IRF510N é bastante popular quando usado com um Arduino, quando você aplica uma tensão de 5 V no Gate e na fonte, o transistor se torna como uma chave fechada entre os Drain and the Source, e não precisa de nenhum resistor como os bipolares.
E se não houver tensão aplicada, o transistor atua como uma chave aberta, e é assim que controlamos o solenóide.
Para o outro exemplo, estou usando um módulo de relé de 1 canal, ele funciona com 3,3 V, e controlamos sua entrada como controlar o transistor, a única diferença é que eles são invertidos (veremos no código).
Fluxograma do algoritmo
Para tornar as coisas fáceis de entender, aqui está o fluxograma, não está completamente detalhado, mas é uma visão geral do código.

N.B:Você pode usar o relé para controlar qualquer bloqueio elétrico até 250VAC, você pode usá-lo também para controlar o solenóide ...
Os códigos são exatamente os mesmos, a única coisa é que você alterna entre (BAIXO e ALTO) para abrir a fechadura.
Apenas lembre-se da primeira vez que você deve carregar o código e alterar a senha, em seguida, descomente algumas linhas (leia o código para encontrá-las (elas estão em configuração)) e recarregue o código para que ele possa ler a senha da EEPROM. .
Além disso, você pode alterar o comprimento do código, primeiro fiz quatro dígitos, você pode alterá-lo do código padrão, pois usei no código o "sizeof (código)" em vez de "4". Você não pode alterar um código de 4 dígitos para uma senha de 6 dígitos, primeiro altere a senha inicial da fonte do código.
Teste
Você encontrará o teste nas fotos abaixo, navegue por eles












Bem, esse foi o teste do projeto, é o mesmo para o solenóide ou relé, e o botão abre por dentro se você quiser ou você pode removê-lo.
Espero que seja útil e se você tiver algum problema ou dúvida deixe um comentário.
Código
- Keypad_doorlock_solenoid.ino
- Keypad_doorlock_relay.ino
Keypad_doorlock_solenoid.ino Arduino
Lembre-se de carregar o código primeiro, em seguida, descomente as linhas 62 a 64 e recarregar, é feito apenas uma vez./ * Este código funciona com Matriz de teclado 4x4, LCD ic, transistor IRF510N e um botão de pressão * É uma trava onde o transistor aciona uma fechadura de solenóide que você pode abrir com o código correto * ou pelo botão de dentro * O código pode ser alterado diretamente pelo teclado e não requer o upload do código novamente * O código é armazenado na EEPROM * Consulte www.surtrtech.com para mais detalhes * / # inclua#include #include #define Solenóide 11 // Na verdade, a porta do transistor que controla o solenóide # define O_Button 10 // Push Button #define I2C_ADDR 0x27 // endereço I2C, você deve usar o código para escanear o endereço primeiro (0x27) aqui # define BACKLIGHT_PIN 3 // Declarando pinos LCD # define En_pin 2 # define Rw_pin 1 # define Rs_pin 0 # define D4_pin 4 # define D5_pin 5 # define D6_pin 6 # define D7_pin 7const byte numRows =4; // número de linhas no tecladoconst byte numCols =4; // número de colunas no mapa de teclado do teclado numérico [numRows] [numCols] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; char pressionado; // Onde as chaves são armazenadas, ele muda muito frequentemente. Código [] ={'6', '6', '0', '1'}; // O código padrão, você pode alterá-lo ou torná-lo um 'n' dígitos onechar code_buff1 [sizeof (code)]; // Onde a nova chave é armazenada char code_buff2 [sizeof (code)]; // Onde a nova chave é armazenada novamente para que seja comparada com o anterior oneshort a =0, i =0, s =0, j =0; // Variáveis usadas laterbyte rowPins [numRows] ={9,8,7,6}; // Linhas 0 a 3 // se você modificar seus pinos, você deve modificar este toobyte colPins [numCols] ={5,4,3,2}; // Colunas 0 a 3LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); Teclado myKeypad =Keypad (makeKeymap (mapa de teclado), rowPins, colPins, {lcdCols); .begin (16,2); lcd.setBacklightPin (BACKLIGHT_PIN, POSITIVO); lcd.setBacklight (HIGH); // Iluminação de fundo lcd.home (); lcd.print ("Em espera"); // O que está escrito no LCD você pode alterar pinMode (Solenoid, OUTPUT); pinMode (O_Button, INPUT); // for (i =0; i Keypad_doorlock_relay.ino Arduino
Lembre-se de carregar o código primeiro, em seguida, descomente as linhas 62 a 64 e recarregar, é feito apenas uma vez./ * Este código funciona com Matriz de teclado 4x4, LCD ic, módulo de relé e um botão * É uma fechadura onde o relé pode controle uma fechadura que você pode abrir com o código correto * ou pelo botão de dentro * O código pode ser alterado diretamente pelo teclado e não requer upload do código novamente * O código é armazenado na EEPROM * Consulte www.surtrtech.com para mais detalhes * / # include#include #include #define Relé 11 // Controla o Relé # define O_Button 10 // Botão # define I2C_ADDR 0x27 // I2C endereço, você deve usar o código para digitalizar o endereço primeiro (0x27) aqui # define BACKLIGHT_PIN 3 // Declarando pinos LCD # define En_pin 2 # define Rw_pin 1 # define Rs_pin 0 # define D4_pin 4 # define D5_pin 5 # define D6_pin 6 # definir D7_pin 7const byte numRows =4; // número de linhas no tecladoconst byte numCols =4; // número de colunas no mapa de teclado do teclado numérico [numRows] [numCols] ={{'1', '2', '3', 'A'}, {'4', '5', '6', 'B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; char pressionado; // Onde as chaves são armazenadas, ele muda muito frequentemente. Código [] ={'6', '6', '0', '1'}; // O código padrão, você pode alterá-lo ou torná-lo um 'n' dígitos onechar code_buff1 [sizeof (code)]; // Onde a nova chave é armazenada char code_buff2 [sizeof (code)]; // Onde a nova chave é armazenada novamente para que seja comparada com o anterior oneshort a =0, i =0, s =0, j =0; // Variáveis usadas laterbyte rowPins [numRows] ={9,8,7,6}; // Linhas 0 a 3 // se você modificar seus pinos, você deve modificar este toobyte colPins [numCols] ={5,4,3,2}; // Colunas 0 a 3LiquidCrystal_I2C lcd (I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); Teclado myKeypad =Keypad (makeKeymap (mapa de teclado), rowPins, colPins, {lcdCols); .begin (16,2); lcd.setBacklightPin (BACKLIGHT_PIN, POSITIVO); lcd.setBacklight (HIGH); // Iluminação de fundo lcd.home (); lcd.print ("Em espera"); // O que está escrito no LCD você pode alterar pinMode (Relay, OUTPUT); pinMode (O_Button, INPUT); // for (i =0; i
Esquemas


Processo de manufatura
- Bank Vault
- Faça uma porta de escritório com travamento automático com sensor de proximidade para smartphone
- Sensor de temperatura múltipla
- MotionSense
- Impressora 3D Segurança contra incêndio
- Fechadura da porta baseada em senha
- IoT Gauge com Arduino, Yaler e IFTTT
- Levitação eletromagnética repulsiva Arduino
- Controle Remoto Gripper Bot
- CoroFence - Detector Térmico🖖