Tranca Eletrônica utilizando o PIC16F877A
A fechadura elétrica (usada nos portões eletrônicos) será aberta caso o usuário digitar a senha correta. A senha é um número entre 0 e 999999. O usuário possuirá um número limitado de tentativas (3 tentativas), e após o sistema irá entrar em bloqueio( led vermelho acenderá). A senha terá que ser definida na primeira vez. Pressione o botão S1, digite a senha e aperte a tecla ENTER. Você poderá alterar a senha quantas vezes quiser.
A fechadura é chaveada pelo relê.
A fechadura é chaveada pelo relê.
A tecla C do teclado é usado para limpar os dígitos do display.
Nesse projeto utilizou-se um teclado 4x3, um display LCD 20x2 e para o microcontrolador foi utilizado um clock de 4Mhz.
DOWNLOAD:
Projeto: Tranca_Eletronica.rar
CóDIGO-FONTE: (Compilador MikroC PRO PIC)
sbit LCD_RS at RC4_bit; sbit LCD_EN at RC5_bit; sbit LCD_D4 at RC0_bit; sbit LCD_D5 at RC1_bit; sbit LCD_D6 at RC2_bit; sbit LCD_D7 at RC3_bit; sbit LCD_RS_Direction at TRISC4_bit; sbit LCD_EN_Direction at TRISC5_bit; sbit LCD_D4_Direction at TRISC0_bit; sbit LCD_D5_Direction at TRISC1_bit; sbit LCD_D6_Direction at TRISC2_bit; sbit LCD_D7_Direction at TRISC3_bit; char keypadPort at PORTD; char kp; char cliques = 0; char tentativas = 0; char *senha = "000000"; char *textos[6] = {" Senha OK ", " Senha Errada ", " Nova Senha OK ", " Digite a senha ", " Digite a nova senha", " Fim "}; char *Ptr1, *Ptr2; char CompararSenha() { char i = 0; for(i=0; i < 6; i++) { if(senha[i] != Eeprom_Read(i)) return(0); } return (1); } void GravarSenhaNaEeprom() { char i; for(i=0; i < 6; i++) { Eeprom_Write(i, senha[i]); } } void LimparSenha() { char i; for(i=0; i < 6; i++) { senha[i] = '0'; } } void main() { char i; TRISB=0b10000000; PORTB=0; Keypad_Init(); Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); Ptr2 = textos[3]; Lcd_Out(1, 1, Ptr2); while(1) { if(tentativas < 3) { kp = Keypad_Key_Click(); if(kp) { if(kp % 4 == 0) { //Faz Nada } else if(kp == 13) //Limpar { LimparSenha(); cliques = 0; } else if(kp == 15) //Enter { cliques = 0; if(PORTB.F7 == 1) //Verificar entrada da senha { if(CompararSenha()) //Sucesso { PORTB.F0 = ~PORTB.F0; Ptr1 = textos[0]; LimparSenha(); } else //Senha errada { tentativas++; Ptr1 = textos[1]; LimparSenha(); } } else //Gravar nova senha { GravarSenhaNaEeprom(); Ptr1 = textos[2]; LimparSenha(); } Lcd_Out(1, 1, Ptr1); Delay_ms(2000); } else //Numeros { switch(kp) { case 1: kp = 49; break; //1 case 2: kp = 50; break; //2 case 3: kp = 51; break; //3 case 5: kp = 52; break; //4 case 6: kp = 53; break; //5 case 7: kp = 54; break; //6 case 9: kp = 55; break; //7 case 10: kp = 56; break;//8 case 11: kp = 57; break;//9 case 14: kp = 48; break;//0 } if(cliques < 6) { //Digitando a senha for(i=0; i < 5; i++) senha[i] = senha[i+1]; senha[5] = kp; } } } else { if(PORTB.F7) Ptr2 = textos[3]; else Ptr2 = textos[4]; } } else { Ptr2 = textos[5]; PORTB.F1 = 1; } Lcd_Out(1,1, Ptr2); Lcd_Out(2,8, senha); Delay_ms(100); } }
Boa noite Thiago, gostei do projeto.
ResponderExcluirValeu!!!
ExcluirBoa noite Tiago, você tem um projeto de central alarme com senha.
ResponderExcluirobrigado.
Sinto muito, mas não tenho!
ExcluirCaso eu tiver algum tempo de sobra, posso tentar fazer esse projeto.
Tiago Henrique parabéns cara,seus projetos contribuem muito para aqueles que amam eletrônica como eu.
ResponderExcluirOlha só pelo visto vc domina bem o assunto.
Poderia desenvolver um projeto sobre como decodificar o ht6p20b da holtek
para que pudessemos fazer um simples controle remoto de 433MHZ.
Eu programo em c usando hi-tech mas tenho um pouco de dificuldade com decodificação de dados serialmente.
Quando tiver um tempo faz este projeto pra gente.
Um abraço.
EXCELENTE ........ EXCEPCIONAL. PARABÉNS. CARA
ResponderExcluirVÇ PODERIA FAZER ISSO USANDO PIC 16F628, O CUSTO SERIA MENOR CONCORDA.
VÇ PODERIA FAZER AGUARDO MESTRE .
alextecx@gmail.ocm
O custo seria menor sim, mas para esse projeto nao daria pra utilizar o pic16f628a, porque iria falta alguns pinos.
Excluirgostaria de saber um jeito de fazer ao invés de aparecer zeros aparecer apenas o cursor
ResponderExcluirvoce pode escrever um "espaço" no lugar do zero, habilitar o cursor do LCD e posiciona-lo.
Excluirlegal o projeto, estou tentando criar algo parecido, mas vi na simulação que para a alterar a senha, ele nao compara com a senha antiga, ou seja, caso alguem nao saiba a senha e mais facil troca-lá, não ? Sou iniciante em C, vou utilizar o CCS ou até mesmo esse mikroC, mas uma duvida que eu tenho, como que eu faço o uC gravar os digitos que eu pressionei (na ordem das teclas pressionadas) para depois comparar com a senha correta ?
ResponderExcluirna teoria sim. Mas o botao podia ser um jumper dentro da placa do circuito ou algum botao escondido...
Excluirvou reescrever o codigo, deixando ele mais limpo, aí vc vai entender melhor!!
Meus parabéns Tiago, ótimo projeto .. Só uma duvida, teria como usar esse circuito para comandar 2 armários ?
ResponderExcluirdá pra comandar 2 ou mais armários. Só precisa alterar o código!!!
ExcluirPoderia me mostrar ou descrever quais códigos devem mudar ?
ResponderExcluirPoderia me mostrar ou descrever quais códigos devem mudar ?
ResponderExcluirse for utilizar a mesma senha é so acrescentar mais saidas
ExcluirEdite esse trecho de codigo
if(CompararSenha()) //Sucesso
{
PORTB.F0 = ~PORTB.F0; //Armario 1
PORTB.F1 = ~PORTB.F1; //Armario 2
PORTB.F2 = ~PORTB.F2; //Armario 3
Ptr1 = textos[0];
LimparSenha();
}
boa tarde, parabens pelo blog. o proteus 7.10 é crakeado?
ResponderExcluirBoa tarde Thiago,voce tem a programação desse projeto, se for usado com Arduino?
ResponderExcluirNo caso eu gostaria de utilizar dois armários com duas senhas diferentes, o que eu preciso modificar no projeto?
ResponderExcluirA minha montagem deu erro no pic c copiler
ResponderExcluirUtilize o MikroC PRO
ExcluirTem como posta arquivo em hex
ResponderExcluiroi, site muito bom pra aprendermos, parabéns, baseado no seu projeto, fiz um usando pic16f628a,
ResponderExcluirlcd + teclado, mas só sobra duas portas abertas.
oi, voce pode compartilhar o projeto com o 628a??
ExcluirOlá Amigo!! Muito bom seu projeto, gostaria de saber, qual a alimentação desse projetos??
ResponderExcluirOLá Amigo , qual é a senha padrão ? e onde posso alterar no arquivo c ?
ResponderExcluirdesde já agradeço
Pelo que simulei no Proteus, vc faz o seguinte: deixe o push button acionado, vai aparecer no lcd Digite a nova senha, tu colocas 6 numeros de sua escolha, clica em enter, após desaciona o push. Pronto para o uso. lembrando que se desabilitar a simulação terá de repetir os passos ok.
ExcluirJose , obrigado pela dica deu certo .
ExcluirAmigão, o seu projeto ficou show, só que quando fui simular no Proteus após entrar com a nova senha e "abrir a tranca" não deveria ter uns 5 segundos para a tranca voltar a fechar ? Ela fica aberta, somente quando vc insere novamente a senha que ela torna a fechar. Meu email é jose_anascimento@hotmail.com Valeu
ResponderExcluirkra otimo projeto ta de parabens mais eu estou gravando o hexa dele em um gravador que comprei do mercado livre ele nao e compatível com o micro c ele da erro no arquivar a senha tem como deixar uma senha fixa se tiver você me mostra o meu e-mail e acirmoro@hotmail.com.br
ResponderExcluirA tensão do circuito é a mesma da fechadura?
ResponderExcluirBoa tarde !!!
ResponderExcluire possivel utilizar mais de uma senha para abrir a tranca??
Sim mais teria que mudar a programação, tentarei refazer já que thiago parece está ocupado
Excluirola tinha como me enviar o circuito para que eu possa fazer na placa . obrigado.
ResponderExcluirlucasfurusawa_@hotmail.com
Muito bom o seu projeto,parabéns! Tentei reproduzi no proteus,porém,quando tento três tentativa de erro o led não ascende. Pode me ajuda?
ResponderExcluiroq sanguifica Ptr1 e Ptr2
ResponderExcluirMontei uma placa com o circuito mas as teclas da coluna 3 do teclado não são lidas. No proteus 7.7 roda tranquilamente. Alguém já teve esse problema?
ResponderExcluirQuando se aperta uma tecla da coluna três (3, 6, 9 e #), aparece 5 V nos pinos das linhas correspondentes e, ao se soltar as teclas, esse nível de 5 V não desaparece, como no funcionamento das outras colunas, e o circuito fica travado. Será que existe um problema na rotina do teclado? Se algúem montou o circuito e o mesmo funcionou, entre em contato comigo. Obrigado. mestrelivio@uol.com.br
ResponderExcluirMontei o circuito e descobri que o problema da coluna 3 era ruído. Construí uma linha de terra perto do resistor de 10k e tudo funcionou. Queria uma solução para o problema quando se acerta a senha e o relé opera e fica operado (não desarma). mestrelivio@uol.com.br
ResponderExcluirboa tarde, primeiramente parabéns belo projeto
ResponderExcluireu queria ajuda pra alterar o projeto para o seguinte, eu queria ativar um laço de 60s quando errar a senha 3 vezes ao invés de fim
se for possível me ajudar eu vou te agradecer demais, eu tenho que apresentar esse projeto mês que vem, na minha escola, mande no meu e-mail se for possível. vilsonborges98@gmail.com
Parabens pelo blog, excelente trabalho. me tira uma duvida por gentileza; como posso fazer um projeto semelhante de tranca digital, porém sem a utilização de um microcontrolador,
ResponderExcluirAgradeço desde já
Boa noite
ResponderExcluirGostaria de saber para colocar um display lcd 16x2 a Onde eu preciso alterar o projeto?
no lugar da push button deve usar uma SPST! ai mano la no esquematico do proteus a chave S1 nao pode ser aquela pq ela é instantanea! nao tem como definir a nova senha se ela nao ficar pressionada
ResponderExcluirMandei um e-mail para vc Tiago!!! tentei reproduzir no protheus sua circuitaria e não conseguir!
ResponderExcluirola, posso usar o pic 18f4550 para fazer esse projeto, se sim posso usar o mesmo código fonte?
ResponderExcluirparece ser uma fechadura elétrica bem segura, gostei!
ResponderExcluir