Portal de construção - Casa. Aquecedores de água. Chaminés. Instalação de aquecimento. Aquecedores. Equipamento

Fechadura eletrônica microcontrolada. Fechadura de combinação no microcontrolador AVR ATTINY2313 Etapas para controlar uma fechadura de combinação

Um bloqueio de código ajudará a restringir o acesso de pessoas não autorizadas a quartos com objetos de valor. Uma das opções para implementar um bloqueio de código no microcontrolador PIC16F628A é fornecida neste artigo.

A figura abaixo mostra um diagrama de um bloqueio de código. O núcleo do circuito é o microcontrolador PIC16F628A. O algoritmo de execução dos comandos principais é mostrado na Figura 2. O código do programa é escrito em linguagem assembly, veja a listagem na pasta CL\16F628ATEMP.ASM do arquivo com o projeto. O dispositivo é controlado por um botão. Pressionar o botão permite uma mudança sequencial nos modos de operação do dispositivo. O acompanhamento sonoro ao pressionar o botão é fornecido por um emissor de som piezo. Um display com um controlador integrado é usado para exibição visual de informações.

Um ciclo completo de programação in-circuit e depuração do microcontrolador PIC16F628A foi realizado usando MPLAB IDE v8.15 (ambiente de desenvolvimento integrado), compilador MPASM v5.22 (incluído no MPLAB IDE v8.15) e MPLAB ICD 2 (in- depurador de circuito). Para quem não possui as ferramentas acima, mas possui um programa próprio para trabalhar com arquivos HEX e outro programador, poderá encontrar o arquivo 16F628ATEMP.HEX no projeto correspondente.

O microcontrolador DD1 possui saídas funcionais RA0, RB0 - RB7, CCP1, que são utilizadas para entrada e saída de informações. O microcontrolador DD1 não possui função de reset forçado, o pino de reset é conectado através de um resistor R1 ao potencial de potência positivo. Um oscilador RC no chip é usado para gerar a frequência do clock.

O botão do relógio SB1 é conectado à saída RA0 através do resistor limitador de corrente R3. Na posição pressionada do botão do relógio SB1, o resistor R7 simula um nível lógico baixo. O microcontrolador DD1 reconhece três estados do botão do relógio SB1:

  1. não pressionado;
  2. Pressionado brevemente (menos de 1 s);
  3. Pressionado e mantido pressionado (mais de 1 s).

O emissor de som piezo P1 ajuda a distinguir os estados do botão tátil SB1. Assim, no estado 1 nenhum som é gerado, no estado 2 o som é gerado até que o microcontrolador reconheça o estado 3 e no estado 3 nenhum som é gerado.

Para exibir informações, é utilizado um display de cristal líquido HG1. A especificação técnica do display pode ser encontrada no site. Possui um controlador que implementa a função de geração de caracteres. Exibe duas linhas de dezesseis caracteres cada. O display é controlado através dos pinos RB0, RB1, RB4 - RB7 do microcontrolador. O carregamento dos dados ocorre em nibbles, através dos pinos RB4 - RB7. "Trava" - RB1. A escolha do registro do sinal é feita na saída RB0. Os resistores R5 e R6 definem o contraste do display HG1. A luz de fundo do display é conectada à fonte de alimentação através do resistor limitador de corrente R4. O display HG1 é aparafusado à placa com espaçadores de latão de 3 x 15 mm e parafusos de 3 x 6 mm.

Ao formar lógica no RB2, conseguem a abertura ou fechamento do transistor de efeito de campo VT1, que liga e desliga a fechadura elétrica conectada ao borne X1. A fechadura elétrica deve ser projetada para uma tensão de operação de 9 a 15 V e consumir uma corrente não superior a 1 A. Quando é aplicada tensão na fechadura elétrica ela deve abrir, na ausência de tensão ela bloqueia (fecha).

À saída do CCP1 (implementação de hardware PWM, frequência 4 kHz, ciclo de trabalho 2) através do resistor limitador de corrente R2, é conectado um emissor de som piezoelétrico P1 com frequência operacional de geração de som de 4 kHz.

O dispositivo é alimentado por uma fonte de tensão CA ou CC conectada ao conector X2. A tensão nominal da fonte de alimentação é de 9 a 15 V. A corrente nominal da fonte de alimentação é de 1 A. Para estabilizar a fonte de alimentação, um circuito convencional é usado a partir de uma ponte de diodo VD1, um estabilizador linear DA1, capacitores de filtro C1 - C4.

O dispositivo pode ser operado na faixa de temperatura de -20 °С a +70 °С.
O microcontrolador é programado de forma que possua onze estados operacionais.

  1. Quando o dispositivo é ligado, é lida a memória de dados não volátil EEPROM, onde são carregados os dados do status e do código do bloqueio. O dispositivo abre ou fecha a fechadura elétrica de acordo com o registro de status lido da fechadura. O dispositivo vai para o estado onde exibe as estatísticas de codificação, ou seja, 2.
  2. Neste estado, o dispositivo na linha superior exibe a inscrição “Stat. Estado." e na linha inferior exibe estatísticas de codificação, nomeadamente o número de codificações e o número de decodificações*. Após um toque curto ou longo no botão tátil, o dispositivo, guiado pelo registro do estado de bloqueio, entra no estado de codificação se o bloqueio estiver aberto, ou seja, 3 e entra no estado de decodificação se a fechadura estiver fechada, ou seja, 4.
  3. O dispositivo exibe a inscrição “Code Code” na linha superior do display e muda para o estado onde o código é inserido (subprograma “Code Entry”), ou seja, 5. Aumente o contador do número de codificações. O dispositivo entra em um estado onde altera o estado da fechadura, fechando-a, ou seja, 9.
  4. O dispositivo exibe a inscrição “Decode D.code” na linha superior do display e vai para o estado onde o código é inserido (subprograma “Code Entry”), ou seja, 5. Aumente o contador do número de decodificações. O dispositivo compara o código inserido com o código armazenado na memória EEPROM não volátil. Se o código corresponder, o dispositivo entra em um estado em que altera o estado da fechadura, abrindo-a, ou seja, 10, e se o código não corresponder, ele vai para o estado onde exibe informações sobre o erro, ou seja, onze.
  5. O primeiro dígito do código de quatro dígitos é destacado entre colchetes na linha inferior do display. Ao pressionar brevemente o botão do relógio, o registro do dígito inserido é incrementado**. Se o botão tátil for pressionado e mantido pressionado por mais de 1 s, o dispositivo muda para o estado em que o segundo dígito do código é selecionado, ou seja, 6.
  6. O segundo dígito do código de quatro dígitos é destacado entre colchetes na linha inferior do display. Ao pressionar brevemente o botão do relógio, o registro do dígito inserido é incrementado**. Se o botão tátil for pressionado e mantido pressionado por mais de 1 s, o dispositivo muda para o estado em que o terceiro dígito do código é selecionado, ou seja, 7.
  7. O terceiro dígito do código de quatro dígitos é destacado entre colchetes na linha inferior do display. Ao pressionar brevemente o botão do relógio, o registro do dígito inserido é incrementado**. Se o botão tátil for pressionado e mantido pressionado por mais de 1 s, o dispositivo muda para o estado em que o quarto dígito do código é selecionado, ou seja, 8.
  8. O quarto dígito do código de quatro dígitos é destacado entre colchetes na linha inferior do display. Ao pressionar brevemente o botão do relógio, o registro do dígito inserido é incrementado**. Se o botão tact for pressionado e mantido pressionado por mais de 1 s, o dispositivo passa para o estado a partir do qual a sub-rotina “Entrada de Código” foi solicitada, ou seja, 3 ou 4.
  9. O dispositivo fecha a fechadura e salva o estado da fechadura e o código. Na linha superior exibe a inscrição "Saving Saving". e um código de quatro dígitos na linha inferior. Em seguida, o dispositivo vai para o estado onde exibe as estatísticas de codificação, ou seja, 2.
  10. O dispositivo abre a fechadura e salva o estado e o código da fechadura. Na linha superior exibe a inscrição "Saving Saving". e um código de quatro dígitos na linha inferior. Em seguida, o dispositivo vai para o estado onde exibe as estatísticas de codificação, ou seja, 2.
  11. Na linha superior exibe a inscrição “Error Error” e na linha inferior um código de quatro dígitos. (Foto 4) Após um toque curto ou longo no botão tact, o dispositivo muda para o estado em que exibe as estatísticas de codificação, ou seja, 2.

*Após o contador transbordar (maior que 65535), ele zera e a contagem recomeça, o que leva a uma falha nas estatísticas, no sentido de que o número de codificações pode ser maior que o número de decodificações. Portanto, é recomendado desenergizar o dispositivo para zerar os contadores.

** Ao incrementar o número 9 ocorre a zeragem.

Como a memória EEPROM (definida na configuração) está protegida da leitura no circuito do microcontrolador, não será possível ler e descobrir a senha no circuito e, portanto, ligar a fechadura elétrica. Resta uma maneira mais fácil de abri-lo - aplicar tensão diretamente à fechadura elétrica. Concluo que o dispositivo “fechadura de combinação” e a fechadura eléctrica devem ser protegidos de forma fiável contra a penetração de pessoas não autorizadas. O botão e o display devem ser de livre acesso.

Ressalta-se que o dispositivo pode ser desenergizado, de qualquer forma, após a inserção do código, o estado da fechadura e o código são armazenados na memória EEPROM não volátil. É proibido desenergizar o dispositivo enquanto salva o código na memória EEPROM não volátil.

Vale atentar para um detalhe importante no funcionamento do aparelho. Quando o dispositivo está ligado, ele pode abrir a fechadura elétrica por um curto período de tempo (por um tempo inferior a 1 s), apesar do estado fechado da fechadura elétrica estar armazenado na memória EEPROM não volátil. Ao simular a execução do código do programa no ambiente MPLAB IDE, este erro não foi detectado por mim. Em caso de falha inesperada de energia do dispositivo ao salvar o código na memória EEPROM, o código pode ser salvo incorretamente e não será possível restaurá-lo, o que levará à reprogramação do microcontrolador. Daí segue uma recomendação sobre a necessidade de uma fonte de alimentação estável e (ou) reserva para o dispositivo. GB1 - energia de reserva.

Veja os arquivos para fabricação de placas de circuito impresso no folder.

As seguintes peças podem ser substituídas nesta unidade. Microcontrolador DD1 da série PIC16F628A-I / P-xxx com frequência de clock operacional de 20 MHz em pacote DIP18. O display HG1 se adapta a qualquer uma das séries WH1602x. Estabilizador de tensão DA1 doméstico KR142EN5A (5 V, 1,5 A). Transistor MOSFET de campo VT1 (canal N) no pacote I-Pak (TO-251AA), um análogo da classificação indicada no diagrama é adequado. Emissor de som piezo P1 com frequência de operação de geração de som de 4 kHz. A ponte de diodos VD1 pode ser aplicada a qualquer uma das séries 2Wxx. Conector de alimentação X2 semelhante ao mostrado no diagrama com contato central d=2,1 mm. Capacitores apolares C1 e C2 com valor nominal de 0,01 - 0,47 µF x 50 V. Os capacitores eletrolíticos C3 e C4 possuem a mesma classificação capacitiva e a tensão não é inferior à indicada no diagrama.

Baixe o arquivo com o projeto de bloqueio de código: 16F628Code_Lock.rar

O atuador da fechadura eletrônica, cujo esquema é mostrado na fig. 1, é utilizada a fechadura eletromecânica ZNEM-1-2, que abre quando uma tensão constante de 12 V é aplicada ao Y1 eletromecânico embutido nela.A parte lógica da fechadura eletrônica é construída no microcontrolador PIC16F630-I/R. Os botões SB1 e SB2 foram projetados para inserir o código que o abre. LEDs HL1-HL3 de diferentes cores de brilho sinalizam o status e o modo de operação. O transistor de efeito de campo VT1, de acordo com o sinal gerado pelo microcontrolador na saída do RSZ, controla o eletroímã Y1.

Arroz. 1

O dispositivo é alimentado por uma bateria galvânica ou recarregável com tensão de 12 V. Esta tensão é necessária para o funcionamento confiável do eletroímã Y1. Pode ser alimentado tanto por bateria galvânica ou recarregável, quanto por rede elétrica. A bateria garante a capacidade de abrir a fechadura na ausência de tensão de rede, mas será necessário monitorar constantemente sua carga.

A tensão de 5 V (necessária para alimentar o microcontrolador) é obtida a partir de 12 V utilizando o regulador integrado DA1. Se você usar um atuador para uma tensão diferente ou uma fonte de alimentação separada, a tensão fornecida à entrada do estabilizador pode ser reduzida para 7 V ou aumentada para 15 V.

A corrente consumida pela fechadura quando ela está fechada é muito pequena e não ultrapassa alguns miliamperes. No processo de digitação do código, ele aumenta para dezenas de miliamperes, dependendo da quantidade de LEDs acesos, e quando o eletroímã é acionado, sobe para aproximadamente 1 A.

Arroz. 2a. Vista lateral do componente

Arroz. 2b. Vista dos caminhos

A fechadura é montada em uma placa de circuito impresso. A localização dos elementos e o desenho dos condutores impressos neles são mostrados na fig. 2. Os LEDs HL1-HL3 e os botões SB1, SB2 são instalados separadamente na moldura da porta trancada. Para quem abre a fechadura, os LEDs devem estar visíveis e os botões devem estar disponíveis para serem pressionados. Os LEDs, cujos tipos estão indicados no diagrama, possuem diâmetro de caixa de 10 mm e brilho aumentado. No entanto, você pode aplicar outras cores de brilho adequadas.

O programa do microcontrolador foi criado no ambiente "PIC Simulator IDE v6.91". O código de abertura é uma combinação de oito toques em uma determinada ordem nos botões SB1 e SB2. No programa, o pressionamento do botão SB1 é representado por um zero lógico no bit da célula de memória correspondente ao número de série do pressionamento, e o pressionamento do botão SB2 é representado por uma unidade lógica nesse bit. O número total de combinações possíveis é 256.
O pressionamento de qualquer botão é confirmado pelo acendimento do LED HL1, que permite controlá-los visualmente. Ao discar o código, não pressione os dois botões ao mesmo tempo. Isto cancelará a tentativa de discagem e bloqueará o bloqueio por 4 segundos. Em caso de pausa muito longa entre os pressionamentos dos botões ou muito tempo (mais de 3 s) mantendo o botão pressionado, o programa acende o LED HL3 e também cancela a tentativa de entrada, bloqueando o bloqueio por 4 s.

Se o código for discado até o final, mas não corresponder à amostra armazenada na memória do microcontrolador, o bloqueio é bloqueado por 4 s, mas o LED HL3 fica piscando. Três entradas de código incorretas bloquearão a fechadura por um minuto, o que é acompanhado pela inclusão de todos os três LEDs. Até o final do bloqueio ocorrido por qualquer motivo, pressionar os botões não surte nenhum efeito.

Uma combinação de código exemplar é armazenada na EEPROM do microcontrolador no endereço 1. No início de seu trabalho, o programa lê o conteúdo desta célula e o atribui à variável de código. Inicialmente, o código é inserido na EEPROM na fase de programação do microcontrolador. Meios para isso estão disponíveis no software de qualquer programador. Por exemplo, na janela principal do ambiente de programação "PIC Simulator IDE v6.91" basta abrir o item de menu "Ferramentas- *EEPROM Memory Editor" antes de carregar o programa no microcontrolador e na janela com a imagem EEPROM escreva o código desejado na célula do endereço acima. O conteúdo da memória é representado aqui em hexadecimal, então, por exemplo, o código 00110011 se parece com 33.

Durante a operação da fechadura, você pode alterar o código sem reprogramar o microcontrolador. Para fazer isso, ligue o bloqueio e digite o código correto válido no momento. O LED HL2 deve acender e a fechadura deve abrir. Enquanto estiver aberto, pressione os dois botões ao mesmo tempo.

O LED HL2 começará a piscar e o HL3 acenderá. Solte os botões e após o LED HL3 apagar, comece a inserir uma nova combinação - Se os requisitos de duração do pressionamento dos botões e pausas entre eles ao entrar não forem violados, o LED HL2 continuará piscando e o LED HL3 irá ligue novamente - depois que o LED HL3 apagar novamente (para isso, ambos os botões devem ser liberados), disque a mesma combinação novamente. Se for idêntico ao primeiro, o programa irá aceitá-lo e gravá-lo na EEPROM.

O texto fonte do programa BASIC anexado ao artigo contém descrições de todas as variáveis ​​utilizadas e comentários sobre as linhas mais importantes. O temporizador TMR0 do microcontrolador é configurado para transbordar com um período de cerca de 65,5 ms, gerando cada vez uma solicitação de interrupção. Ao processar essas solicitações, o microcontrolador determina o estado dos botões e conta os intervalos de tempo necessários. Por exemplo, aproximadamente um minuto de bloqueio de bloqueio é baseado em uma contagem de 1.000 interrupções. A contagem deles, neste caso, é mantida na variável den_p. Por ser do tipo long e ocupar quatro bytes de memória, pode assumir valores de 0 a 232-1 (4294967295). Se, por exemplo, você definir o limite de resultados da contagem para 3600/0,0655^56000, a duração do bloqueio aumentará para uma hora.

Alan Parekh

Este projeto se diferencia pela simplicidade do desenho do circuito, para inserir o código é utilizado apenas um botão, que deve ser pressionado um determinado número de vezes, de acordo com o dígito do código, observando uma pausa ao inserir o próximo dígito. O número de dígitos do código é 4. Para aumentar o sigilo, pode-se colocar um teclado no qual ficará ativo apenas um botão para digitação do código. Caso o código correto seja inserido o sistema acionará o relé, porém é possível configurar para outras funções quando o sistema for acionado, para isso será necessário passar para o modo de programação do dispositivo.

O dispositivo pode ser utilizado em sistemas de controle de portas de garagem, em sistemas de controle de iluminação, em sistemas de segurança.

Diagrama esquemático do dispositivo

O principal elemento do circuito é o microcontrolador PIC16F628A, que monitora o pressionamento de um botão, notifica visualmente o usuário sobre o recebimento de um comando e controla o estado do relé. Para visualização é utilizado um LED, que é conectado em paralelo ao botão de digitação do código, o que permite utilizar apenas dois fios para instalar e conectar o botão no local desejado.

Para alimentar o dispositivo é necessária uma fonte de alimentação de 12 V, um regulador de tensão está instalado no circuito LM7805. LED D3 indica alimentação.

O sistema possui dois modos de operação: modo normal e modo de programação. No modo normal, o dispositivo executa sua tarefa principal - monitora o pressionamento de botões e responde quando o código é inserido corretamente. No modo de programação são configurados os principais parâmetros do sistema: código, tempo de ativação, modo de operação.

A chave JP1 é utilizada para alterar o modo de operação (normal/programação). Quando o interruptor está desligado - o modo de operação normal, quando ligado - o modo de programação (configurações). Deve-se notar que a entrada para um modo específico é realizada quando a energia é aplicada (o estado da chave é verificado pelo microcontrolador quando a energia é aplicada). Portanto, para entrar no modo de configuração, você deve ajustar a chave e ligar a energia, para sair do modo, desligar a chave, desligar e ligar a energia.

Para inserir um código do formulário 1234, a sequência de ações é a seguinte:

  • pressione o botão 1 vez;
  • aguarde a confirmação visual do LED do botão (o LED piscará uma vez);
  • pressione o botão duas vezes;
  • pressione o botão três vezes;
  • aguarde a confirmação visual do LED do botão;
  • pressione o botão 4 vezes.

Após inserir o quarto dígito, o sistema funcionará de acordo com o modo de operação definido. Caso tenha sido inserido um código inválido, o usuário verá um alerta visual (LED piscando).

O modo de programação é usado para definir os parâmetros de bloqueio. Neste modo, para alternar entre as opções, o botão é pressionado e mantido pressionado por 3 segundos. Após soltar o botão, será realizada a transição para o próximo item do menu, enquanto o LED indicará em qual item do menu você está no número de flashes (por exemplo, flash, flash, pausa, flash, flash, pausa, .. . - significa que o segundo item do menu está selecionado).

Opções do menu:

  1. Mudança de código- usado para alterar o código do usuário. Para alterar o código é inserido da mesma forma que na operação normal. Quando o novo código for salvo, o LED indicará isso piscando frequentemente;
  2. Alterando o tempo de ativação- usado para alterar a hora do estado ativo. Pressionar o botão uma vez neste menu altera este tempo em 1 s. Por exemplo, se você precisar de um tempo de 10 segundos, será necessário pressionar o botão 10 vezes. Quando os parâmetros forem salvos, o LED indicará isso piscando frequentemente.
  3. Seleção do modo de operação- usado para alterar o modo de controle do relé. Existem dois modos de operação: ativação do relé quando o código correto é inserido e mudança de estado do relé (ativação/desativação) quando o código correto é inserido. Quando o segundo modo for selecionado, o dispositivo atuará da seguinte forma: se o relé for ativado e o código correto for inserido, o relé será desativado, na próxima vez que o código correto for inserido, o relé será ativado. Para alterar o modo de operação: pressione o botão uma vez para selecionar o primeiro modo e duas vezes para selecionar o segundo modo.

Todos os parâmetros são armazenados na memória não volátil do microcontrolador.

O circuito é montado em uma placa de circuito impresso dupla face.






Clique na imagem para ampliá-la

Transferências

Arquivo hexadecimal para programação de microcontroladores -

  • Recolhido, brilhou, funciona! O pagamento foi parcelado em camada única.
  • como prshival (obrigado antecipadamente)
  • Atualizei o icprog105D com o programa, mas fiz o programador por muito tempo e não me lembro como se chama. Mas não houve problemas com o firmware. Montei esse circuito no Proteus e funcionou para mim lá.
  • Poste o modelo no Proteus.
  • No arquivo, o esquema, animação e sinete no Proteus 7.7 SP2 (Build 9151) Nível 3. Na placa de circuito impresso o relé foi retirado de algum tipo de alarme de carro, e o modelo do proteus foi feito por mim e pelo circuito de anime, é isso que você pode realmente iniciar e verificar o funcionamento do circuito como um todo. Coloquei um LED em vez de um relé para maior clareza.
  • A ideia de fazer um bloqueio no MK não é ruim, só o conjunto de cifras é inconveniente. Imagine que você precisa discar 9 quantas vezes precisar pressionar. Você precisa de um indicador de um dígito, mantenha pressionado o botão até que o número desejado apareça, solte-o e o número será lembrado ou reconhecido, dependendo do modo. Pena que não sei programar, eu faria isso. Todas as tentativas de estudar de forma independente, até agora, não tiveram sucesso. Baixei o modelo.
  • E como você gosta disso, um código simples e completamente sem botões na porta http://shema.org.ua/forum/index.php?...&st=0#entry781
  • A fechadura é original, mas você pode perder o chaveiro e não passar pela porta protegida pela fechadura. Mas com um único botão! É difícil perder, mas ainda mais difícil de encontrar! Demora muito para inserir o código, mas se você pensar em usá-lo como um segundo, um backup, por assim dizer! Num caso banalmente simples, as portas foram batidas e as chaves foram deixadas atrás das portas. E esse design, com um botão, vai ajudar! Mas pode não haver botão, a função de botão será desempenhada pela maçaneta da mesma porta que se fechou. Não vou explicar mais, e por isso está claro.
  • Claro, você pode perdê-lo ou deixá-lo com seus vizinhos, como nos velhos tempos :) não diga apenas o código.

O circuito de chamada de código é implementado no microcontrolador ATtiny2313. O circuito da fechadura combinada consiste em um microcontrolador AVR e uma chave transistor que controla o relé.

Para escrever o código, feche a chave seletora "sw", colocando assim a fechadura no modo de escrita de código. Entramos na dimensão da combinação de código através dos botões de 1 a 7 (os botões 8, 9 e 0 não são utilizados no conjunto de dimensões), digitamos qualquer combinação de código igual à dimensão do código.

O e-mail funcionará. bloqueie o ímã, abrindo-o, sinalizando que a combinação do código está gravada na memória "EEPROM".
Modo de trabalho. Desligue a chave seletora "sw", coloque a fechadura no modo de verificação da combinação de código gravada. Repetimos a sequência para o modo de gravação, inserimos o tamanho, inserimos o código gravado.

Diagrama esquemático de um bloqueio de código em um microcontrolador AVR:

A discagem do código sempre começa com o livro. 1 _ 7 (dimensão). Ao discar uma combinação de código, o código pode ser inserido não apenas por um dígito, mas também, por exemplo, pressionando o botão. 7, sem soltar, pressione o livro. 8 e depois pressione kn. 6 e solte um botão de cada vez em qualquer sequência; como resultado, uma combinação de código de cinco dígitos será discada.

Se, com uma combinação discada corretamente, a fechadura não abrir, será necessário pressionar o botão várias vezes. 8 - 9 ou 0, no máximo 7 vezes, ou pressione estes botões duas vezes ao mesmo tempo e repita o conjunto de códigos. Isso indiretamente pode significar que eles tentaram abrir a fechadura.

Ao piscar o microcontrolador, os bits dos fusíveis devem ser configurados da seguinte forma:

O bloqueio de código montado fica assim:


Decidi brincar com o teclado de membrana 3x4 encomendado da China há muito tempo. Existem muitos tipos e variedades deste teclado, em caixas de plástico e em película. Minha versão é 3x4 7 pinos, a pinagem do teclado 4x4 é mostrada no diagrama abaixo, o diagrama é um para um. O layout é quase idêntico ao teclado 3x4, exceto que falta a linha direita de teclas "A,B,C,D".

Diagrama de conexão do teclado 3x4:

O teclado 4x4 está conectado da mesma forma, quarta linha "A, B, C, D "está conectado à porta PD7 do microcontrolador.

Código fonte do programa:

$regfile = "m8def.dat"
$ cristal = 1.000.000

"configuração de exibição
Configuração Lcdpin = Pino, Rs = Portac.0, E = Portac.1, Db4 = Portac.2, Db5 = Portac.3, Db6 = Portac.4, Db7 = Portac.5
Configuração LCD=20*4
Cursor desligado
Cls

"configuração do teclado
Configuração Kbd = Portd, Debounce = 40, Atraso = 100

"variáveis
Dim Key_char As Byte "o número da tecla pressionada
Dim Key_str As String * 1 "caractere da tecla pressionada no teclado
Resultado escuro como string * 20
Deflcdchar 1, 32, 14, 10, 31, 27, 27, 14, 32"

Localização 1, 4
LCDChr(1)

resultado = ""

"Loop principal do programa
Fazer

Key_char = Getkbd() "quando nenhuma tecla é pressionada, a função retorna o valor 16 para a variável

Se Key_char<>16 Então "se a variável não for igual a 16, então o botão foi pressionado
Key_str = Lookupstr(key_char, Keyboard_data) "obtém o caractere da tecla pressionada do array
Resultado = Resultado + Key_str
Fim se

Localize 2, 3
Resultado LCD "exibe o resultado da pressão

Espere 100

Se Resultado = "123" Então
Localize 2, 2
LCD "DESBLOQUEAR"
Espere 1
Ir para Pizdec
Outro
Fim se

Se Key_str = "5" Então
Localize 2, 2
LCD "RETORNO"
Espere 1
Ir para Pizdec
Outro
Fim se

laço

Dados_do teclado:
Dados "1" , "4" , "7" , "*" , "2" , "5" , "8" , "0"
Dados "3" , "6" , "9" , "#" , "A" , "B" , "C" , "D"

Pizdec:
retornar

Ao manter pressionada a tecla, os caracteres começam a se repetir, o programa pode ser ligeiramente modificado se você adicionar no final da primeira linha do exemplo:

Key_char = Getkbd()
Se Key_char<>16 Então
Ir para 1
Fim se

Então evitamos repetir caracteres enquanto mantém pressionada a tecla. Podemos pressionar o botão por pelo menos um minuto e o símbolo será um.

Quando o dispositivo é ligado, o ícone "cadeado" é exibido na linha superior, os caracteres a serem inseridos são exibidos na linha inferior.


Por padrão, o código no código-fonte é “123”, assim que inserirmos este código (assim que pressionarmos o terceiro botão correto), a inscrição “UNLOCK” aparecerá na linha inferior.

Acho que você entendeu o princípio do programa, falta acrescentar um pouco ao programa, especificar as portas a serem acionadas ao inserir o código correto.

Vídeo do bloqueio de código:

Arquivos de projeto com código-fonte (~15kb.)

Versão finalizada do bloqueio de código:

Abaixo está um diagrama de funcionamento finalizado de uma fechadura combinada com portas configuradas para conectar um acionamento elétrico e LEDs. O acionamento elétrico pode ser conectado a um carro, o chamado acionamento da fechadura da porta.

Se o código PIN for digitado corretamente, o drive funcionará por 1 segundo, esse tempo é suficiente para o mecanismo de trava funcionar (abrir a porta)? o inversor é conectado por meio de um transistor à porta PORTB.4. Se, ao tentar inserir o código PIN, você se enganou com o número, pressione o botão "jogo da velha" e poderá começar a inserir o código novamente...

Se o código PIN for inserido corretamente, a fechadura abre e o display mostra "UNLOCK".

O projeto em Proteus e o firmware estão abaixo no arquivo, o código PIN da fechadura está indicado no arquivo no nome do arquivo de firmware.

De acordo com o site avrproject.ru

Projeto Proteus e arquivo de firmware (~16kb.)

Postagens semelhantes