Informações sobre o curso.
Controle de acesso
Através da Porta Paralela
Por: Antônio Rogério Messias
Página 1 de 1     Home  Índice  
CONTROLE DE ACESSO ATRAVÉS DA PORTA PARALELA
Para uso particular ou educacional.
Copyright(c) 1999-2006 ROGERCOM.COM
Todos os direitos reservados.

      
 O objetivo do circuito, controle de acesso, esquematizado logo abaixo, é de acionar portas, portões, fechaduras elétricas, catracas, relês etc, através de um teclado telefônico de 8 fios conectado à Porta Paralela, doravante a digitação de uma senha.
       O teclado utilizado foi removido de um aparelho telefônico multifreqüêncial da Ericsson, de 12 teclas e 8 fios.
       O circuito eletrônico que fica atrás do teclado é eliminado, sem a necessidade de sua função.



O teclado telefônico:

       Teremos que descobrir dentre os 8 fios qual é o negativo 0v. No teclado do aparelho telefônico multifrêquencial de 12 teclas da Ericsson descrito aqui neste projeto, o fio negativo é o de número 5 de cor verde, contando de cima para baixo. Após descobrirmos qual fio é o negativo, conectaremos o teclado ao "Circuito controle de acesso" esquematizado na figura abaixo.
       Após feita a conexão dos fios à Porta Paralela, executaremos o programa Geracodigo.exe para descobrirmos o código numérico gerado pelo pressionamento de cada tecla. Anote o código de cada tecla pressionada num papel, para ser usados posteriormente na codificação do programa.
       A tabela abaixo foi gerada com o teclado do aparelho telefônico multifrêquencial da Ericsson de 12 teclas e 8 fios. Não se baseie na tabela abaixo para desenvolver seu programa, o seu teclado pode ser diferente do teclado descrito aqui. Use o programa Geracodigo.exe. Veja a tabela abaixo como exemplo.

Tabela de códigos gerados através do programa Geracodigo.exe


Teclado de 12 teclas 8 fios


Programa gerador de código. Disponível para download.

Clique aqui, download gratuito. 


Funcionamento do sistema:

       O computador envia através dos pinos 1, 14 e 16 três bits, gerando um número seqüencial de 0 a 7, para selecionar as 8 entradas (E1 a E8) do CI multiplexador 74LS151. Através de um laço que se repete a cada 8 vezes, um programa rodando no computador, ler o pino 15 (Error) do Registrador de Status da Porta Paralela, conectado ao pino 6 do CI 74LS151, montando um byte que representa a tecla pressionada no teclado telefônico. Os bytes lidos são armazenados numa seqüência na memória do computador, para posterior comparação com uma seqüência pré-armazenada. Se essa seqüência for igual a digitada no teclado, o programa envia um sinal a um dos pinos: D0 a D7, para acionar algum dispositivo específico, determinado pelo usuário. O programa também envia um sinal ao circuito do teclado para acender o LED verde, avisando ao usuário que o acesso está permitido. A seqüência de teclas digitadas só é comparada pelo programa quando pressionada a tecla '#', tendo a mesma função da tecla ENTER.
       O programa "Gerenciador de controle de acessos", tem vários recursos para gerenciar, armazenar e comparar os dados digitados no teclado telefônico, como também, acionar dispositivos externos definidos pelo usuário.

    Circuito controle de acesso.

 

Lista de materiais


 CI1 - 1 Circuito integrado - 74LS04;
 CI2 - 1 Circuito integrado - 74LS151;
 R1 - 1 Resistor 1K ohm;
 L1 - 1 LED Verde;
 L2 - 1 LED Vermelho;
    
 Geral:
 1 - Teclado de aparelho telefônico da Ericsson  12 teclas 8 fios;
 1 - Fonte de alimentação de 5v;
 1 - Cabo Paralelo;
  Fios.  

 

Exemplos de algumas funções em C++
//---------------------------------------------------------------------------
// Exemplos de algumas funções em C++ para controle do teclado telefônico
// e gerenciamento de senhas; // Autor: Antonio Rogério Messias; // ©Copyright 1999-2002, Rogercom;
// www.rogercom.com;
// rogerc@rogercom.com;
// Todos os Direitos Reservados //---------------------------------------------------------------------------- //Decodifica o teclado telefônico. //----------------------------------------------------------------------------
unsigned char LerTeclado(void) { unsigned char Tecla; Tecla = ProtocoloMux->Recebe8Bits(); //Recebe o código da tecla pressionada //do teclado conectado a porta paralela. if(Tecla != 0) { switch(Tecla) { case 68: return('1'); case 66: return('2'); case 96: return('3'); case 20: return('4'); case 18: return('5'); case 48: return('6'); case 132: return('7'); case 130: return('8'); case 160: return('9'); case 5: return('*'); case 3: return('0'); case 33: return('#'); //Enter.
default: return('?'); //Erro de transmissão.
} } return(0); //Nenhuma tecla pressionada.
} //--------------------------------------------------------------------------- //Armazena os dados lidos do teclado e gerencia-os.
//--------------------------------------------------------------------------- char GerenciaTeclado(void) { char BuffTecla[2] = "\0\0"; //Para converter char em string. char Tecla; Tecla = LerTeclado(); if(Tecla != 0) { EnviaOkBitC3.Bit.D3 = 1; //Envia 1 para desativar o led verde do teclado. if(Tecla == '#') { VerificaSenha(); while(ProtocoloMux->Recebe8Bits() != 0); }else if(Tecla == '*') { Tecla = 0; }else{ BuffTecla[0] = Tecla; BuffTecla[1] = '\0'; formPrincipal->Edit1->SetSelTextBuf(BuffTecla); if(Tecla == '?') //Erro formPrincipal->Caption = "Erro de transmissão!";            //Enquanto nenhuma tecla acionada.
while(ProtocoloMux->Recebe8Bits() != 0);
       } } return(Tecla); } //--------------------------------------------------------------------------- //Compara a senha digitada no teclado e decide a ação.
//--------------------------------------------------------------------------- void VerificaSenha(void) { char *Senhas[] = {"893756","12980200","142130","2240506"}; char BuffDigitos[35]; int cont=0; strcpy(BuffDigitos,formPrincipal->Edit1->Text.c_str()); EnviaOkBitC3.Valor = Porta->Recebe(CONTROLE); //Ler o Registro de controle. while(cont < MAX_SENHAS) //Quantidade máxima de senhas. { if(strcmp(BuffDigitos,Senhas[cont]) == 0 ) //Verifica a senha digitada. { formPrincipal->Caption = "ACESSO PERMITIDO"; formPrincipal->Edit1->Clear(); EnviaOkBitC3.Bit.D3 = 0; //Envia 0 para ativar o led do teclado. return; }else{ formPrincipal->Caption = "ACESSO NEGADO "; formPrincipal->Edit1->Clear(); EnviaOkBitC3.Bit.D3 = 1; //Envia 1 para desativar o led verde do teclado. } cont++; }
}



Programa gerenciador de acessos. Controla até 4 teclados conectados à Porta Paralela.


  
Volta à página principal. 
 

Índice dos artigos.
http://www.rogercom.com
© Copyright, 1999-2006 ROGERCOM - Antonio Rogério Messias - rogerc@rogercom.com
Todos os Direitos Reservados - All Rights Reserved.