Muitas materias já foram publicadas sobre ‘senhas eletronicas’. Algumas utilizam o PIC16F873, outras com PIC 16F628 , até mesmo outros chips. A proposta aqui é utilizar um pequeno PIC12F629 para gerenciar teclado, Lcd, bip e saida para um relê. Acha muito para o nosso pequeno ‘valente’? Então veja o esquema abaixo!
Com respeito ao teclado, foi usado um teclado comum de telefone, que com ajuda de uma rede de 6 diodos 1N4148, obtemos uma forma de multiplexar os dados, sempre acionando uma saida por vez e lendo as outras, se estão em nivel =1. Uma vez identificada uma tecla apertada, será salvo o valor da tecla , um ‘bip’ será gerado na capsula piezoeletrica e finalmente, o programa aguardará a tecla ser solta. Os mesmo pinos do teclado são compartilhados com os pinos DB4 a DB7 do LCD, com a saida de som do bip e com a saida do rele. Os pinos ‘E’ e ‘RS’ do Lcd são multiplexados pelo metodo ‘Larios’, que usa o tempo de carga de C4 para indicar se RS=1 ou 0. Se a saida (pino 3) ficar mais que 1 mseg =1 , teremos o envio de um ‘dado’. Se for de apenas algums poucos microsegundos, teremos Rs=0 e será enviado um ‘comando’.
Com respeito ao uso deste equipamento, temos que entrar com uma senha de 6 digitos para a liberação, por ex. de uma fechadura. A senha inicial é ‘012345’, devendo ser trocada por uma pessoal. Evite as já conhecidas datas de nascimento, casamento, etc. Para trocar a senha digite ‘*74123’ que entrará em modo de ‘troca de senha’. A mensagem ‘digite a senha atual’ será mostrada. Após digita-la, aparecerá a mensagem ‘digite a nova senha’ e depois de digitada a nova senha, pedirá a confirmação. Se tudo deu certo, aparecerá a mensagem ‘ok_senha nova’. Pronto!!! Já estamos de senha nova!!!
A cada tecla digitada será produzido um ‘bip’. A tecla ‘#’ quando apertada, cancelará a operação e retorna ao inicio do programa. A tecla ‘*’, excetuando se ela for o primeiro digito, serve para limpar erro de digitação . Com respeito ao teclado, como existem muitos tipos, coloquei uma tabela de que pinos ligam com quem, para o caso de duvidas quanto a ligação ou até mesmo uma adaptação. Após trocar a senha, muito cuidado para não esquece-la, pois terá que examinar a EEprom nos primeiros endereços para saber (em ascii) ou limpar a flash e descarregar de novo o programa hex.
Após a digitação da senha correta, ouve-se um ‘bip’ mais prolongado, a mensagem ‘acesso liberado’ aparecerá no Lcd e o led acenderá, acionando o rele de saida por 10 segundos. Caso queira mais tempo ou menos, acertar no arquivo Asm, na variável ‘tempo_de_abertura’ e recompilar. Após 3 tentativas erradas, o teclado será bloqueado por 3 minutos e a mensagem ‘bloqueio- aguarde 3min’ aparecerá no visor do Lcd. Caso iniciemos uma digitação e paramos por algum motivo, em 30 segundos será apagado tudo no visor, resetando o programa.
A função de C5 junto a base do transistor de saida de som do ‘bip’, é eliminar o ruido do chaveamento do teclado, filtrando e deixando passar somente a frequência do bip. Sem ele, ouve-se um som um tanto irritante de forma constante. O Led1 é opcional, visto que já haverá indicação no display de ‘acesso liberado’. Os testes foram realizados em placa de protoboard , não tendo sido testado as sugestões de placa, apesar de terem sido bem conferidas. Por motivo de segurança, apenas o teclado deverá ficar do lado externo, uma vez que, se a placa for acessada, alguém poderá fazer uma ligação direta.
Segue abaixo o esquema:
Segue abaixo o código Asm:
Segue abaixo o código Hex (revisado em 05/08/13, tanto para PIC12f675 como para PIC12f629):
Segue abaixo a sugestão de placa:
Segue abaixo a orientação de montagem na placa e lista de materiais (visto pelo lado cobreado):
Sugestão de construção de teclado com chave tactil aqui.
Curiosidades:
Gás Natural – energia para o lar
Ponte da torre – Uma entrada para Londres
Outros assuntos:
Como lidar com os sogros?
Desempenhem bem o papel de pais
Como reagir ao assédio sexual
Como lidar com problemas financeiros e dívidas
Converse com seus filhos sobre sexo
Até o próximo artigo!!!
❓ Olá, estava tentando entender o seu teclado e me surgiu uma dúvida, como você diferencia as teclas 1, 5 e 9 se as colunas são todas ligadas pelos diodos D8 a D10 quando você seta a P2?
Olá Trafoman!
Este teclado é meio complicado de entender na primeira análise. Vamos ver se eu consigo explicar para você de uma forma clara.
O primeiro teste feito é por setar a linha P2 (pino 2 do pic) e testo as linhas P5 (para tecla ‘1’), P6 (para tecla ‘5’) e P7 (para tecla ‘9’). Se acionadas, retorna o respectivo valor em RTEC, senão ele se mantem em ‘0x00’. Neste momento, você poderá perguntar: Mas os diodos D8 a D10 não estão setando as outras linhas? Não vai acionar também P5 se eu apertar a tecla ‘4’, ou ainda ‘7’? Ou ainda, não vai acionar P6 se acionar as teclas ‘2’ e ‘8’? O que dizer das teclas ‘3’ e ‘6’? igualmente se forem acionadas não irão setar P7?
Isto é verdade. Qualquer uma das 3 teclas de uma coluna, se acionadas irão setar a respectiva linha de saída e retornar o valor daquela coluna (sendo ‘1’,’5′ ou ‘9’).
Seria isto preocupante? Ou temos uma maneira de identificar se foi tecla errada acionada, que não ‘1’,’5′ ou ‘9’?
Suponha que a tecla ‘1’ tenha sido acionada. O registrador RTEC gravou 0x01, mas poderia ter sido ‘4’ ou ‘7’, não se sabendo no momento. Começa a sequência de testes dos outros pinos. Se nenhum outro resultado foi encontrado, saberemos com certeza que a tecla acionada foi ‘1’ e não ‘4’ ou ‘7’.
Mas suponha agora que tenha sido apertado a tecla ‘4’. No primeiro teste, RTEC terá o valor de ‘1’. Mas ao ser feito a sequência de teste dos outros pinos, RTEC vai mudar para 0x04. Ora, este é o valor ‘verdadeiro’.
Resumindo:
O primeiro teste que aciona P2(pino 2) e os diodos D8 a D10 , testa o acionamento de P5 (pino 5), P6 (pino 6) e P7 (pino 7), como grupo, e retorna um valor provável da tecla.
Os próximos teste irão retirar a dúvida. A detenção de tecla acionada nos próximos testes irá alterar o valor de RTEC para o correto. Senão, mantém o valor provável como sendo o verdadeiro, sem mais dúvidas.
Ufa! Espero que tenha entendido esta ‘confusão’!
Cláudio
🙂 Olá Cláudio,
Obrigado pela sua explicação! acho que agora consegui entender.
Abraços
ola larios eu montei esse projeto mas estou com dificuldades para ligar o teclado teria no codigo asm como trocar o astericos por numero normal mesmo só assim eu saberia quem estou digitando, pois o teclado de telefone que estou usando so tem 7 fios, agurdo resposta
Olá Antonio! Gostaria de lembrar que o artigo diz em parte : ‘A tecla ‘#’ quando apertada, cancelará a operação e retorna ao inicio do programa. A tecla ‘*’, excetuando se ela for o primeiro digito, serve para limpar erro de digitação .’ Assim, não se pode colocar uma tecla com ‘ número ‘, pois confundiria completamente a operação do sistema. Terá que usar um teclado compatível . Experimente, usando um multitester, na escala ohmica, levantar quais pinos se ligam ao apertar uma tecla do teclado que está usando. A partir dai poderá chegar a conclusão se o seu teclado serve ou não a montagem. No esquema tem uma demonstração de como fazer a tabela a medida que você testa seu teclado.
Cláudio