UTILIZANDO O MICROCONTROLADOR PIC NA CONSTRUÇÃO DE UMA
SOLUÇÃO DE ACESSO RESTRITO
Alan Carvalho de Assis1
, Afonso Cunha Silva Júnior2
Resumo Este artigo apresenta um trabalho
interdisciplinar onde foram envolvidas as áreas de
programação, microcontroladores, eletrônica e sistemas
embarcados. O principal objetivo era resolver o problema
de acessos indevidos no laboratório de sistemas tempo real.
Algumas condições foram impostas, como: a aplicação teria
que ser independente, baixo custo para implementação,
permitir o gerenciamento de até 10 usuários e nesse
gerenciamento deveria incluir a possibilidade de mudar a
senha de acesso. Para atender a essas necessidades
procurou-se trabalhar com um recurso de programação que
atendesse expressamente o que estava sendo exigido, assim
definiu-se por utilizar um microcontrolador PIC, porém
além desses recursos vários outros foram necessários para
finalizarmos esse projeto.
Palavras Chaves Microcontroladores, Sistemas
Embarcados, Linguagem de Programação.
INTRODUÇÃO
Os sistemas de controle de acesso visam restringir acessos
não autorizados à determinados setores e departamentos das
organizações, evitando assim danos em equipamentos,
acesso ilegal a informações importantes, roubos, entre outros
problemas.
Muitas empresas de tecnologias gastam verdadeiras
fortunas em sistemas de controle de acesso para ambientes
restritos e esquecem que de nada adiantará investir em
segurança se os funcionários e usuários não estiverem
preparados para lhe dar de forma eficaz com situações onde
o invasor convence a vítima a, literalmente, abrir as portas.
Prova disso são os engenheiros sociais, pessoas dispostas
a terem acessos ilegais às informações e recursos de
empresas de outras pessoas, que enganam até mesmo os
profissionais mais bem treinados para lidar com situações
que exigem precação e vigilância.
Uma boa referência com vários exemplos destes tipos de
práticas é o livro 'A Arte de Enganar'[3] de Kevin Mitnick,
famoso hacker e engenheiro social, que passou vários anos
na cadeia por este tipo de prática ilegal. Em seu livro
Mitnick explica que, ao contrário do que as pessoas pensam,
os hackers utilizam várias técnicas de engenharia social para
terem acesso aos dados e sistemas de computadores das
empresas.
Portanto de nada adiantará ter o sistema de controle de
acesso mais seguro do mundo se as pessoas que utilizarão
esta tecnologia não estão preparadas para evitar invasões e
roubos de informações.
Atualmente existem várias tecnologias destinadas aos
sistemas de controle de acesso, entre elas destacam-se as
biométricas. As principais tecnologias biométricas incluem
identificação de usuário por voz, reconhecimento facial,
reconhecimento de impressão digital e reconhecimento de
íris.
O projeto em destaque não utiliza recursos biométricos,
devido aos custos que estas tecnologias demandam. O
controle será realizado através de uma senha que o usuário
deverá digitar para ter acesso ao laboratório.
As vantagens deste sistema são: baixo custo, elimina o
inconveniente de ter que carregar as chaves, elimina o risco
de perda das chaves e que outras pessoas tenham acesso a
elas, entre outras vantagens.
O projeto aqui apresentado foi implantado no laboratório
de pesquisa LTR (Laboratório de Sistemas de Tempo Real)
do UnilesteMG.
O LTR é um laboratório de pesquisa voltado para o
desenvolvimento de pesquisas sobre sistemas de tempo real.
Por tratar-se de um ambiente restrito aos acadêmicos
pesquisadores e professores da instituição e por possuir
equipamentos e placas de alto valor, seu acesso deve ser
controlado.
Visando controlar os acessos físicos ao laboratório de
pesquisa LTR, foi proposto um sistema eletrônico de
controle de acesso. Inicialmente foi definido que o sistema
deveria possuir um baixo custo, cada usuário deveria possuir
uma senha individual e o usuário poderia alterar sua senha
sempre que desejasse.
Após esta definição foi realizada uma pesquisa em vários
sites de eletrônica, a fim de encontrar algum projeto que
atendesse a estas necessidades, porém nenhum projeto com
tais características foi encontrado. Entretanto um projeto
com algumas características importantes foi encontrado.
O projeto encontrado, cujo nome é 'Electronic door
codelock'[1], possuía as seguintes características:
· Baixo custo;
· Simplicidade;
· Esquemático e layout de circuito impresso disponíveis;
· Possibilidade de alteração de senha;
· Utiliza o microcontrolador PIC16F84;
· Licença de uso livre.
1
Alan Carvalho de Assis, Graduando em Sistemas de Informações pela UnilesteMG, Rua Tucamã, 534, Vila Militar, 35.170-000, Ipatinga, MG, Brazil,
alan@unilestemg.br
2
Afonso Cunha Silva Júnior, Professor da UnilesteMG, Av. Tancredo Neves, 3500, Bairro Universitário, 35170-054, Cel. Fabriciano, MG, Brazil,
acjunior@usiminas.com.br
Porém este projeto não atendia a uns pré-requisitos
básicos, entre eles a necessidade de cada usuário possuir
uma senha individual, visto que o projeto só aceitava uma
única senha. Como este projeto possuía os principais
requisitos necessários ao sistema de controle de acesso
proposto, foi definido que a melhor solução seria alterar o
projeto original para que o mesmo suportasse as
características necessárias.
E assim, semelhante ao processo que ocorre atualmente
com os chamados programas de código fonte aberto e com
os softwares livres, iniciou-se então as modificações sobre o
projeto 'Electronic door codelock'. Antes de realizar as
modificações o projeto original foi montado e testado,
verificando assim seu funcionamento como descrito na
página do projeto.
O desenvolvimento do projeto está implementado no
microcontrolador PIC16F84, portanto a seção seguinte faz
uma breve abordagem a este microcontrolador.
O MICROCONTROLADOR PIC16F84
Microcontrolador é um tipo especial de dispositivo
eletrônico que possui integrado em uma única pastilha de
silício (CI) o microprocessador, a memória (RAM, EPROM
e/ou EEPROM) e endereçadores de I/O.
O microcontrolador PIC16F84, desenvolvido pela
Microchip[2], utiliza um processador RISC (Reduced
Instruction Set Computer) de 8 bits, trabalhando com a
arquitetura Harvard que se caracteriza por possuir o
barramento de memória de programas separado do
barramento de memória de dados, como pode ser visto na
Figura 1.
FIGURA 1
ARQUITETURA DE HARVARD
Como a arquitetura Harvard separa os barramentos de dados
e de programas, tem-se então uma melhor fluência dos dados
pela CPU, o que, por conseqüência, gera um aumento da
velocidade de funcionamento.
O PIC16F84 possui um barramento de memória de
programas de 14 bits, permitindo que as instruções sejam
executadas em apenas um ciclo de máquina, pois nestes 14
bits estão inclusos a instrução propriamente dita (6 bits) e o
dado a ser operado (8 bits).
Por tratar-se de um microcontrolador RISC, o PIC16F84
possui um número reduzido de instruções, mais precisamente
35 instruções. Processadores do tipo CISC (Complex
Instruction Set Computer), por exemplo, os da família Intel
x86, possuem mais de 100 instruções.
O PIC16F84 é um microcontrolador de baixo custo
possuindo entre as principais características:
· Freqüência de clock de 10MHz;
· 1Kx14 bits de memória de programas (Flash);
· 68 bytes de memória de dados;
· 13 pinos de I/O.
O diagrama em blocos do PIC16F84 é apresentado na
Figura 2.
FIGURA 2
DIAGRAMA EM BLOCOS DO PIC16F84
Os sinais de I/O estão divididos em duas portas, que
fazem a ligação destes com o mundo externo. A 'PORTA A'
possui 5 pinos e a 'PORTA B' possui 8 pinos, totalizando 13
pinos de I/O.
O PROJETO ELECTRONIC DOOR CODELOCK
O Projeto 'Electronic Door Codelock' foi desenvolvido pelo
engenheiro elétrico húngaro Peter Jakab, que disponibilizou
gratuitamente na Internet o esquemático e o programa do
microcontrolador PIC.
O sistema consiste basicamente de uma fechadura elétrica
(fecho eletromagnético), um teclado matricial de 12 teclas
usando em aparelhos telefônicos convencionais e um
microcontrolador PIC16F84, além de outros componentes
discretos.
Todo o funcionamento lógico do projeto é implementado
diretamente no microcontrolador PIC16F84, o que permite
criar alterações significativas no funcionamento do projeto
sem necessitar alterar o circuito eletrônico.
O circuito funciona através de interrupções geradas pelo
teclado matricial, quando uma tecla é pressionada ela gera
uma interrupção, esta por sua vez ativa uma função que
guarda o código desta tecla numa fila FIFO (First In First
Out). Quando a fila está cheia (4 dígitos no projeto original)
e a tecla '#' é pressionada, os códigos armazenados nesta fila
são então comparados com o código da senha armazenada na
memória EEPROM.
Caso as seqüências de teclas digitadas sejam iguais às
seqüências do código da senha armazenada na memória
EEPROM um sinal de I/O é ativado, este sinal é responsável
por acionar o relé que dispara o fecho eletromagnético. Em
caso contrário, um longo sinal sonoro (beep) é gerado,
indicando que o código digitado está incorreto.
Se a tecla '#' for pressionada, mas a fila não estiver cheia,
todo o conteúdo que estava na fila é apagado, ou seja, a fila
será esvaziada.
O projeto original também permite alterar a senha que
inicialmente é hard coded na memória EEPROM, para isso o
usuário deverá digitar a senha atual, pressionar a tecla '*',
digitar a nova senha, pressionar a tecla '#', e confirmar a
nova senha, digitando-a novamente e pressionando '#'.
A senha padrão do projeto é '1234', mas o usuário poderá
alterá-la no próprio código fonte, digitando outro valor por
ele desejado, ou alterá-la quando o projeto estiver em
funcionamento, usando o método padrão de alterar senha,
visto anteriormente.
O usuário poderá também definir uma senha com mais de
quatro dígitos, para isso, ele deverá alterar a senha no código
fonte e a variável clen para que esta contenha a quantidade
de dígitos formada pela nova senha.
O esquemático eletrônico original do projeto 'Electronic
Door Codelock' é apresentado na figura 3, não foi necessário
fazer alterações neste projeto para que o mesmo suportasse
mais senhas, as alterações foram realizadas apenas no código
fonte do algoritmo gravado no microcontrolador PIC, como
será visto na próxima seção.
FIGURA 3
ESQUEMÁTICO DO 'ELECTRONIC DOOR CODELOCK'
ACRESCENTANDO MAIS SENHAS AO PROJETO
O projeto original, apesar de todas as suas qualidades,
não supria todas as necessidades básicas de um sistema de
controle de acesso, uma vez que não permitia a cada usuário
ter a sua própria senha.
Visando melhorar o projeto 'Electronic Door Codelock',
foi iniciada uma modificação para que o mesmo suportasse
tais características. O objetivo era suportar 10 senhas, porém
devido à limitação de memória EEPROM, preferiu-se
utilizar apenas oito senhas e elevar o número de dígitos das
senhas de quatro para seis, objetivando assim obter um
pouco mais de segurança.
As oito senhas foram adicionadas no código fonte do
programa, na região destinada à memória EEPROM, em
seguida, a função que verifica se a senha digitada está
correta ou incorreta foi alterada.
A alteração foi necessária porque a função que verifica a
senha só retornará verdadeiro (flag Z = 0) se a senha digitada
for igual a primeira senha salva na EEPROM. Se a senha
digitada não for igual à primeira ocorrência, o algoritmo não
deverá retornar falso imediatamente (flag Z = 1), mas sim
verificar se senha digitada coincide com alguma das demais
ocorrências na memória EEPROM e, somente se, a senha
não coincidir com nenhuma das ocorrências, deverá retornar
falso.
Após a função de verificação de senha ser alterada, o
algoritmo foi gravado no microcontrolador PIC e testado no
módulo de testes da DataPool, e então as senhas foram
testadas, assim pode-se verificar pequenos erros, que foram
corrigidos em seguida.
Para realizar a programação do PIC foi utilizado o
MPLAB da Microchip e o gravador PROGPIC[4].
Uma vez testada e corrigida a função de verificação de
senha, o próximo passo foi modificar a função de alteração
de senha. Como toda o operação é realizada apenas sobre um
cópia das senhas em memória RAM (Random Access
Memory), o processo de deslocamento para encontrar a
senha a ser alterada é semelhante ao utilizado pela função de
verificação de senha, porém esta função não retornará, mas
sim ficará aguardando o usuário digitar a nova senha.
A senha digitada pelo usuário é imediatamente copiada
sobre a senha antiga que está na memória RAM, porém esta
cópia em RAM só será gravada definitivamente na memória
EEPROM se o usuário digitar novamente a mesma senha.
Este algoritmo foi então gravado no PIC e testado no
módulo, então foi verificado que a função de alteração de
senha tinha funcionado como o esperado.
CONCLUSÃO
Através das alterações no projeto 'Electronic Door
Codelock' conseguiu-se atender ao objetivo inicial proposto
para um sistema de controle de acesso simples, e que pôde
ser implantado no laboratório LTR.
Como contribuição pelo uso do projeto original, as
modificações foram enviadas ao autor do projeto e este as
tornou disponível, para quem estiver interessado, em seu site
http://jap.hu/electronic/codelock.html.
AGRADECIMENTOS
Ao Centro Universitário do Leste de Minas Gerais pelo
apoio no desenvolvimento desse projeto.
REFERÊNCIAS BIBLIOGRÁFICAS
[1] Electronic door codelock,
www.jap.hu/electronic/codelock.html, 17 novembro 2003.
[2] Microchip, www.microchip.com, 24 novembro 2003.
[3] Mitnick, Kevin, D, "A Arte de Enganar", São Paulo, ed.
Makron Books, 2003.
[4] PROGPIC, http://www.kitpic.cjb.net , 03 novembro 2003.