|
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.
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.



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