83
UNICENP - Centro Universitário Positivo Núcleo de Ciências Exatas e Tecnológicas Curso de Engenharia da Computação Projeto Final SISTEMA DE CONTROLE DE ACESSO À AMBIENTES COM ACIONAMENTO DE VIGILÂNCIA ELETRÔNICA Curitiba 2002

Projeto Final SISTEMA DE CONTROLE DE ACESSO À … · UNICENP - Centro Universitário Positivo Núcleo de Ciências Exatas e Tecnológicas Curso de Engenharia da Computação Projeto

Embed Size (px)

Citation preview

UNICENP - Centro Universitário Positivo Núcleo de Ciências Exatas e Tecnológicas

Curso de Engenharia da Computação

Projeto Final

SISTEMA DE CONTROLE DE ACESSO À AMBIENTES

COM ACIONAMENTO DE VIGILÂNCIA ELETRÔNICA

Curitiba 2002

ii

Sumário

I. LISTA DE ABREVIATURAS .................................................................................. IV

II. LISTA DE FIGURAS ................................................................................................V

1. INTRODUÇÃO............................................................................................................4

2. ESPECIFICAÇÃO ......................................................................................................5

2.1. DESCRIÇÃO DO PROJETO.............................................................................5

2.2. ESTUDO TEÓRICO...........................................................................................9

2.2.1. Sistema Dedicado ............................................................................................9

2.2.2. Módulo de Comunicação ...............................................................................13

2.2.3. Servidor .........................................................................................................17

2.3. ESPECIFICAÇÃO DO HARDWARE .............................................................20

2.4. ESPECIFICAÇÃO DO SOFTWARE ..............................................................23

2.8. VALIDAÇÃO DO PROJETO ..........................................................................27

3. PROJETO ..................................................................................................................30

3.1 O BANCO DE DADOS ......................................................................................30

3.2 A INTERNET.....................................................................................................34

3.3 A CÂMERA DE VÍDEO....................................................................................38

3.4 A COMUNICAÇÃO...........................................................................................40

3.5 A CENTRAL DE CONTROLE.........................................................................45

3.6. O TECLADO.....................................................................................................47

3.7. DISPOSITIVOS EXTERNOS ..........................................................................50

4. IMPLEMENTAÇÂO.................................................................................................52

4.1. PROTÓTIPO.....................................................................................................52

5. TRABALHOS FUTUROS.........................................................................................56

6. CONCLUSÃO............................................................................................................57

iii

7. REFERÊNCIAS BIBLIOGRÁFICAS......................................................................58

8. ANEXOS ....................................................................................................................59

Anexo 1 - Lista Geral dos Componentes Eletrônicos................................................60

Anexo 2 - Diagrama de Fluxo de Dados do Sistema.................................................62

Anexo 3 - Listagem do Código Fonte do Sistema Dedicado.....................................64

Anexo 4 – Listam do Código Fonte do Módulo Principal do Servidor......................76

iv

I. LISTA DE ABREVIATURAS

ASP - Active Server Pages (Páginas de Servidor Ativas);

CPU - Central Processing Unit;

DMA - Direct Memory Access (Acesso Direto á Memória);

HTML - HyperText Markup Language.(Linguagem de Marcação de Hiper Textos);

HTTP - HyperText transfer Protocol (Protocolo de Transferência de Hiper Texto);

IRQ - Interrupt Request;

MSB - More Significative Bits (bits mais significados);

RAM - Random Access Memory (Memória de Acesso Randômico);

ROM - Ready Only Memory (Memória de Apenas Leitura);

SGBD - Database Management System (Gerenciador de Banco de Dados);

TCP/IP - Transmission Control Protocol/Internet Protocol (Protocolo de controle de

transmissão/protocolo de internet);

TTL – Transistor-Transistor Logic;

UART - Universal Assynchronous Receiver Transmitter;

USB - Universal Serial Bus.

v

II. LISTA DE FIGURAS

Figura 1 – Diagrama de blocos do sistema .........................................................................6

Figura 3 – Exemplo de acesso ao meio de comunicação comum ......................................16

Figura 2 – Esquemático das tabelas e campos utilizados na base de dados........................18

Figura 4 – Diagrama em blocos do hardware ...................................................................22

Figura 5 – Fluxograma Geral do Sistema de Controle de Acesso à Ambientes com

Acionamento de Vigilância Eletrônica .............................................................................26

Figura 6 – Esquemático da estrutura lógica do banco de dados do sistema .......................30

Figura 7 – Detalhes sobre a tabela tblEstudante................................................................31

Figura 8 – Detalhes sobre a tabela tblColaborador............................................................31

Figura 9 – Detalhes sobre a tabela tblAcesso_Estudante...................................................32

Figura 10 – Detalhes sobre a tabela tblAcesso_Colaborador.............................................32

Figura 11 – Detalhes sobre a tabela tblLaboratorio...........................................................33

Figura 12 – Interface de principal - Home........................................................................34

Figura 13 – Interface de cadastro de usuários - Cadastro ..................................................35

Figura 14 – Interface de acesso aos laboratórios - Acesso ................................................36

Figura 15 – Interface de Informações - Informações.........................................................37

Figura 16 – Tabela de descrição de bytes a serem transmitidos e recebidos ......................41

Figura 17 – Fluxograma de comunicação de envio de mensagens ao servidor. .................42

Figura 18 – Fluxograma de comunicação de recebimentos de mensagens do servidor. .....43

Figura 19 – Figura do sistema microprocessado com o microcontrolador 8051. ...............46

Figura 20 – Figura da vista superior do teclado e do circuito interno. ...............................47

Figura 21 – Circuito elétrico do teclado. ..........................................................................47

Figura 22 – Fluxograma da rotina de leitura do teclado ....................................................48

Figura 23 – Circuito elétrico dos dispositivos externos indicadores e solenóide................50

Figura 24 – Circuito elétrico sistema de Buzzer................................................................51

Figura 25 – Circuito elétrico do sistema do sensor de contato...........................................51

Figura 26 – Foto da maquete indicando que a senha é válida............................................52

Figura 27 – Foto da maquete indicando que a senha é válida e que a porta está aberta......53

4

1. INTRODUÇÃO

Este documento contém a descrição do projeto final do curso de Engenharia da

Computação, no ano de 2002, denominado Sistema de Controle de Acesso à Ambientes

com Acionamento de Vigilância Eletrônica. O projeto tem a finalidade de monitorar e

controlar o acesso de pessoas aos ambientes, salas, laboratórios e etc.

O projeto poderá ser implementado no controle de acessos de pessoas aos

laboratórios do curso de Engenharia da Computação do Centro Universitário Positivo –

UNICENP. Com esse sistema tem se um controle maior de quem e quando determinado

aluno, professor ou funcionário entrou no laboratório garantindo assim uma melhor

fiscalização dos equipamentos.

A fiscalização atual da utilização dos laboratórios será melhorada, pois o sistema

controlará o acesso aos ambientes através de uma senha a ser digitada em um teclado

(interno e outro externo na entrada do laboratório). No momento da digitação da senha e de

sua confirmação, será acionada a gravação das imagens do local de entrada com auxílio de

uma câmera de vídeo, e que por sua vez será interrompido com o fechamento da porta.

Estas imagens poderão ser analisadas toda vez que houver necessidade ou mesmo

rotineiramente.

O sistema também permitirá a habilitação dos usuários, por parte do administrador,

através da internet podendo habilitar ou desabilitar o acesso de determinado usuário a um

ambiente em particular, impedindo desta forma a entrada de pessoas não autorizadas aos

ambientes.

A meta a ser alcançada é o desenvolvimento de um projeto que possibilita o

controle de acesso aos laboratórios, permitindo um monitoramento continuo dos usuários

através de uma câmera de vídeo que grava as imagens de entrada do ambiente. A interface

web possibilita o cadastramento dos usuários e o aprimoramento do conhecimento nas

áreas de web, banco de dados. O microcontrolador 8051 possibilita o aprimoramento na

área de hardware e programação. Mas o principal objetivo deste projeto é a integração do

conhecimento adquirido ao longo do curso.

Este projeto pode ser utilizado também em ambientes domésticos, empresariais

gerenciando melhor o acesso aos ambientes especificados.

5

2. ESPECIFICAÇÃO

Neste capítulo descrevemos os itens da especificação do projeto, delimitando o

escopo, as características e a funcionalidade do sistema.

2.1. DESCRIÇÃO DO PROJETO

O Sistema de Controle de Acesso à Ambientes com Acionamento de Vigilância

Eletrônica tem o objetivo de monitorar e controlar o acesso de pessoas a determinados

ambientes, neste caso, os laboratórios do curso de Engenharia da Computação do

UNICENP.

O sistema permitirá a habilitação ou desabilitação da permissão do usuário ao

ambiente, sendo o administrador responsável por liberar a permissão a cada usuário

remotamente. A página web acessa diretamente a base de dados armazenando as

informações referentes a cada usuário cadastrado.

O acesso é gerenciado através de um hardware dedicado que faz a recepção das

senhas, ou seja, na entrada e na saída do ambiente. Os usuários digitarão suas senhas, por

meio de um teclado numérico, que serão validadas pelo sistema através da checagem da

base de dados no servidor.

As senhas são armazenadas em uma base de dados juntamente com as informações

de cada usuário, tais como nome, cargo, turma, matricula, e outras. O sistema também

armazena a data e a hora de entrada e de saída de cada usuário do laboratório, que esteja

com este sistema.

As senhas estarão armazenadas em uma base de dados que será acionada toda vez

que uma senha for digitada para a sua validação. Antes de liberar a trava da porta será

acionada uma câmera de vídeo que a gravará as imagens durante o acesso, registrando

assim os usuários que entraram ou saíram do ambiente. A câmera de vídeo continuará

gravando as imagens até o completo fechamento da porta, ou seja, até que o sensor da

porta seja acionado. As imagens serão gravadas em arquivos que terão seu endereço e

6

nome armazenado na base de dados, relacionadas com registro correspondente à senha que

foi utilizada para a entrada ou para a saída do ambiente.

Quando a senha digitada for inválida o usuário será informado através de um

indicador (led) vermelho, mas quando o usuário digitar três senhas inválidas consecutivas

em um intervalo de 30 segundos o usuário sofrerá uma penalidade no tempo de resposta de

30 segundos, ou seja, o sistema não estará disponível nesse intervalo e o indicador (led)

vermelho continuará aceso até o fim da penalidade. Já o indicador (led) amarelo é acionado

apenas quando o usuário abrir a porta, permanecendo nesse estado até completo

fechamento da porta. Entretanto o usuário pode deixar a porta aberta em um intervalo de

30 segundos, sendo que o professor e o funcionário têm um intervalo de 2 minutos para o

completo fechamento da porta, desta forma quando esses usuários ultrapassarem o tempo

limite de abertura da porta o alarme é acionado, assim permanecendo até o completo

fechamento da porta.

Na figura 1 pode ser visto o diagrama de blocos do sistema e onde observamos as

entradas e saídas do sistema completo.

Figura 1 – Diagrama de blocos do sistema

Teclado

Acionador da porta (Solenóide)

Módulo principal da central de

controle

Sistema dedicado

Sensor de contato da porta

Indicadoresluminosos Serial

USB

Rede

GDB

Câmera de vídeo

Internet

Servidor

Buzzer

Sistema dedicado

7

Este sistema é composto por dez módulos: Módulo gerenciamento do banco de

dados (GDB), Módulo internet, Módulo da câmera de vídeo, Módulo de comunicação,

Módulo teclado, Módulo buzzer, Módulo indicadores, Módulo sensor da porta, Módulo

acionador da porta e Módulo principal da central de controle, sendo os mesmos descritos

abaixo.

• Módulo gerenciamento do banco de dados (GDB): neste módulo foi implementada

a estrutura da lógica da base de dados, onde está armazenada a informação de

quem, quando a data, a hora e o link da imagem do usuário que acessou o ambiente.

Este módulo está diretamente relacionado com a validação da entrada ou saída do

ambiente e com a página web para proceder à habilitação ou desabilitação de

determinado usuário ao laboratório, sendo este módulo gerenciado pelo servidor.

• Módulo internet: este módulo contém as páginas web que forneceram a interface

para o administrador, onde ele pode fazer a habilitação ou desabilitação dos

usuários que terão acesso ao ambiente monitorado no servidor.

• Módulo da câmera de vídeo: nesta etapa o servidor recebe a senha, conferindo com

a base de dados e procedendo ao acionamento imediato a gravação das imagens,

assim o usuário receberá um aviso dessa liberação através de um indicador (led)

verde, continuando a gravar as imagens até o momento do completo fechamento da

porta. Contudo, quando não houver a validação da senha também não é acionada a

gravação da imagem no servidor, devido a uma opção de projeto, sendo este

módulo gerenciado pelo servidor.

• Módulo de comunicação: este módulo contém o protocolo de comunicação entre o

Hardware dedicado e o servidor, por meio de uma interface serial. No protocolo de

comunicação, temos a especificação do formato da mensagem que deve ser

comunicada e a especificação do formato dos dados da mensagem.

• Módulo principal da central de controle: neste módulo está implementado o

coração do sistema dedicado, ou seja, um sistema microprocessado com o

microcontrolador 8051, que gerenciará os dispositivos como, por exemplo, o

teclado para recepção das senhas, o solenóide que aciona a abertura da porta, o

sensor de contato que informará quando a porta estará fechada para interromper a

gravação das imagens, o buzzer, por meio de um som audível, avisará o usuário

8

para fechar a porta e os indicadores que informam o usuário do status da senha

digitada.

• Módulo teclado: neste módulo está implementado o software para gerenciamento

do teclado, que possibilitará a leitura das teclas digitadas no sistema dedicado e o

hardware para a leitura do pressionamento da tecla.

• Módulo acionador da porta: neste módulo está implementado um software para

gerenciamento do solenóide e o hardware que possibilita a abertura da porta com o

acionamento do mesmo quando houver a validação da senha.

• Módulo sensor da porta: este módulo contém um software para gerenciamento do

sensor da porta, sendo este sensor acionado apenas com o completo fechamento da

porta, assim avisando o servido para encerrar a gravação da imagem.

• Módulo buzzer: este módulo contém um software que gerencia o buzzer (alarme),

sendo acionado sempre que a porta ultrapassar o tempo máximo de abertura, desta

forma avisando o usuário que a porta está aberta e que deve ser fechada,

permanecendo acionado até o completo fechamento da porta.

• Módulo indicadores: neste módulo contém três indicadores (leds) verde, vermelho

e amarelo, sendo o indicador verde acionado quando ocorrer uma senha válida, o

indicador vermelho é acionado quando ocorrer uma senha inválida e o indicador

amarelo é acionado sempre que a porta estiver aberta, desta forma comunicando o

status do sistema para o usuário.

9

2.2. ESTUDO TEÓRICO

Nesta etapa descrevemos os conceitos e formulações que são utilizados no

desenvolvimento do projeto e que delimitaram as características e funcionalidades do

sistema.

2.2.1. Sistema Dedicado

O coração do sistema dedicado é o microcontrolador 8051, que é amplamente

utilizado para o desenvolvimento de projetos, isto devido sua versatilidade, dimensões

reduzidas e possuir uma arquitetura que se constitui em ser um sistema completo e

compacto.

Um microcontrolador é um microprocessador voltado para aplicações de controle.

O microprocessador é um processador também chamado de CPU (Central Processing

Unit), mas que está contido em um único encapsulamento, e que é responsável por buscar,

decodificar e executar as instruções dos programas. Ao conjunto das instruções chamamos

de "linguagem de máquina", e é própria para cada tipo de processador.

A linguagem de máquina é composta de comandos muito simples, como operações

aritméticas e lógicas, leituras, gravações, comparações e movimentações de dados. Essas

instruções simples, quando agrupadas, formam o que chamamos de programas de

computador.

Um microprocessador realiza operações de leitura e escrita da memória, onde estão

armazenados os dados e as instruções. Nessas leituras o microprocessador recebe as

instruções a serem executadas e os dados a serem processados. Já as operações de escrita

de dados na memória servem para armazenar os resultados intermediários e finais do

processamento para posterior utilização.

O microprocessador também é capaz de ler os dados provenientes dos dispositivos

de entrada e saída como teclado, bem como enviar os dados para o vídeo ou para a

10

impressora. Essas operações são chamadas de operação de entrada e saída (E/S). Ou seja,

neste projeto o sistema dedicado tem como função o gerenciamento de dispositivos de

entrada e saída como o sensor de contato, o teclado, o acionamento do solenóide da porta e

o buzzer que avisará o usuário para fechar por completo a porta.

O microcontrolador 8051 é de 8 bits, composto por 4 portas de entrada e saída

paralelas, contadores/temporizadores, serial full-duplex, RAM interna de 128 bytes, e que

pode conter EPROM ou ROM embutida. Ele pode trabalhar com um clock de até 12MHz e

é o mais popular dentre os microcontroladores.

O microcontrolador 8051 pode trabalhar com até 64Kbytes na memória de

programa e 64Kbytes de memória de dados isoladamente, além da sua RAM interna. O

8051 também tem capacidade para expansão da memória interna de programa de 4Kbytes

à 64Kbytes, sendo colocados mais de 60Kbytes externos, ou então utilizar 64Kbytes de

memória de programa totalmente externa.

O microcontrolador 8051 possui memória ROM internamente no chip, onde podem

ser gravadas as instruções dos programas. Existe, porém, microprocessadores equivalentes,

como o 8731 que possui EEPROM e o 8031, que não possui memória ROM no chip [2].

Isso significa que deve ser construído um sistema mínimo com a conexão de uma memória

ROM externa ao microprocessador. Este será o tipo de microprocessador utilizado no

projeto por favorecer maior facilidade na gravação dos dados na memória de leitura

(ROM).

Em termos de software o 8051 permite a execução de complexas operações

aritméticas e lógicas (multiplicação, divisão, permite deslocamento de bits, entre tantas

outras).

A programação do microcontrolador 8051 pode ser feita em Assembly (código de

montagem), podendo realizar a simulação da execução do código em um software

específico o AVSIM 8051 (Simulador/Debugger da Avocet Systems). Isso facilita o

trabalho de programação, por oferecer um nível um pouco mais alto em relação à

programação direta em código binário.

O sistema dedicado é composto por seis módulos, sendo cada módulo descrito a

seguir:

• Módulo principal da central de controle

O módulo principal de central de controle é responsável pelo gerenciamento dos

dispositivos de entrada e saída como teclado que faz a recepção das senhas, o acionamento

11

do solenóide que possibilita a abertura da porta, os indicadores que informam o usuário do

status do sistema, o sensor da porta que comunica o completo fechamento da porta e o

buzzer que avisa o usuário para fechar inteiramente a porta.

O módulo teclado faz a leitura constante do teclado, onde é averiguado se a tecla foi

pressionada, quando o usuário digitar a senha e confirmar, a mesma é transmitida para o

servidor para fazer sua validação com a base de dados.

O módulo acionador da porta faz o acionamento do solenóide (acionador da porta),

quando a senha for válida, possibilitando assim a abertura da mesma. Enquanto a porta

permanecer aberta o indicador (led) amarelo permanece acionado, mas quando o usuário

deixar a porta aberta por mais de 30 segundos é acionado um alarme avisando o usuário

que deve fechar a porta, mas quando esse usuário for um professor ou um funcionário tem

um tempo de 2 minutos para fechar a porta antes que o alarme seja acionado. Quando a

porta for fechada o sensor de contato é acionado enviando assim um sinal para o sistema,

onde o mesmo informa o servidor para interromper a gravação das imagens.

Contudo quando a senha for inválida o sistema aciona o indicador (led) vermelho

para avisar o usuário do status de sua senha. Quando o usuário digitar três senhas inválidas

consecutivas em um intervalo de tempo de 30 segundos, o sistema gera uma penalidade ao

usuário no tempo de resposta de 30 segundos sem poder digitar uma nova senha e o

indicador (led) vermelho continua acesso até o fim dessa penalidade.

• Módulo teclado

Neste módulo utilizamos um teclado numérico de 12 teclas, devido o seu tamanho e

pelo fato de ser facilmente encontrado no mercado. Assim este teclado faz a recepção da

senha e o envio da senha para validação da mesma pelo servidor.

Os teclados funcionam de modo semelhante, embora com variações decorrentes da

sua capacidade de teclas, rapidez de resposta desejada e custo. Um teclado típico funciona

da seguinte maneira:

• Detecção do pressionamento de uma tecla: função que efetua uma varredura

periódica ao teclado para detectar o pressionar de uma tecla.

• Geração do código correspondente à identificação da tecla pressionada: no caso

significa a geração, por um circuito codificador de colunas e linhas, de um código

binário (7 bits) referente à tecla pressionada, denominada de código de varredura.

12

• Geração de um sinal de interrupção: a leitura da tecla pressionada faz com que o

microprocessador tome providências relativas à identificação da tecla em questão

ao seu valor seja passado ao programa corrente.

O sistema dedicado armazena o valor das teclas pressionadas fazendo um shift e

armazenando sempre os últimos seis dígitos, esperando assim que o usuário pressione a

tecla de confirma para enviar para o servidor a senha armazenada para sua validação.

• Módulo buzzer

Neste módulo utilizamos um buzzer que é o alarme do sistema para comunicar o

usuário que a porta do laboratório está aberta e ultrapassou o tempo máximo de abertura da

porta. Esse hardware também é acionado toda vez que o usuário pressionar uma tecla do

teclado (sem estar em penalidade).

• Módulo indicadores

Neste módulo utiliza indicadores (leds) para comunicar o usuário do status do

sistema, sendo um verde, um vermelho e um amarelo. O indicador verde é acionado

quando o sistema dedicado receber a mensagem de senha válida, mas quando o sistema

dedicado receber a mensagem de senha inválida é acionado o indicador vermelho. O

indicador amarelo é acionado sempre que a porta do ambiente for aberta, permanecendo

nesse estado até o completo fechamento da porta.

• Módulo sensor da porta

Neste módulo utilizamos um sensor de contato para comunicar o servidor que a

porta do ambiente está fechada. Esse hardware é acionado sempre que a porta do

laboratório estiver aberta, sendo posteriormente fechada, assim transmitindo para o

servidor a mensagem que a porta do ambiente está fechada e encerrando a gravação da

imagem do local.

• Módulo acionador da porta

Neste módulo utilizamos um solenóide que possibilita a abertura da porta mediante

a validação da senha, sendo esse acionado apenas quando houver senha válida.

13

2.2.2. Módulo de Comunicação

Neste módulo são estabelecidas as formas de comunicação entre os sistemas

microprocessador e o servidor, onde as regras e os formatos de comunicação entre os

diversos módulos. A porta serial é a interface do servidor com o sistema microprocessado e

a porta USB (Universal Serial Bus) que conecta o servidor com a câmera de vídeo.

Também é definida a estrutura do protocolo de comunicação de cada uma das interfaces,

onde há a especificação das mensagens e dos formatos para a comunicação.

O protocolo de comunicação é a forma de padronizar a comunicação entre os

processos que executam uma determina tarefa entre computadores ou entre os

computadores e os dispositivos estabelecendo desta forma a especificação das mensagens e

o formato das mesmas.

• Comunicação Serial

A comunicação serial é utilizada para a conexão entre o sistema dedicado e o

servidor, visto que só envia um bit de cada vez, sendo normalmente utilizada em

periféricos de baixa velocidade ou cuja transmissão é típica de transmissão bit a bit, em um

computador padrão. O teclado e o mouse são dispositivos que realizam comunicação serial.

Como a transmissão é bit a bit, é necessário que o receptor e o transmissor estejam

sincronizados bit a bit, isto é, o transmissor transmite os bits sempre com a mesma

velocidade e, conseqüentemente, todos os bits terão a mesma duração no tempo.

O microcontrolador 8051 tem um canal de comunicação serial full-duplex

duplamente bufferizado que pode ser programado para operar nos modos síncrono ou

assíncrono com taxa de transmissão variável e quadro de transmissão de 8, 10 ou 11 bits

[2]. O canal de comunicação full-duplex é o tipo de comunicação entre dispositivos, onde a

transmissão funciona exclusivamente como canal de recepção de um dispositivo e do outro

e vice-versa. Com a utilização da comunicação full-duplex, ambos os dispositivos podem

enviar e receber ao mesmo tempo sem os problemas de colisões que de outro modo

resultariam de transmissões simultâneas [3].

O computador contém normalmente uma interface de comunicação serial, seguindo

o padrão RS-232, este padrão define que o sinal de nível alto ou 1 lógico tem como tensão

14

–12 V, e o sinal de nível baixo ou 0 lógico, tem como tensão 12 V, isto é utilizado para que

seja possível fazer a comunicação em uma distância aproximada de 200 metros sem perder

os dados por causa de ruído na linha [4].

Existe uma diferença entre os padrões de comunicação do microcontrolador e do

computador, desta forma é necessária à conversão de um padrão para outro, feita no

sistema microprocessado, outro detalhe é a configuração de registradores, tanto do lado do

microcontrolador e do servidor para que os dois operem da mesma forma e seja possível

estabelecer uma comunicação entre os dois dispositivos.

• Comunicação USB (Universal Serial Bus)

A comunicação USB é utilizada para conectar o servidor com a câmera de vídeo e

aproveita os benefícios da arquitetura plug-and-play, ou seja, não necessitam mais efetuar

configurações de recursos de hardware, como nos quebra-cabeças dos "dip-switches" e

"jumpers", para a definição de IRQ’s (Interrupt Request), canais de DMA (Direct Memory

Access) ou endereços de E/S.

O USB utiliza um conector universal que permite a instalação e remoção de

periféricos sem abrir o computador. E, ainda, com a característica de inserção e remoção

automáticas, os periféricos podem ser instalados e removidos a qualquer momento, mesmo

com o computador ligado e inicializado. Além da facilidade de utilização de periféricos

convencionais, o USB abre caminho para novas aplicações, como a integração

computador/telefonia e jogos multiusuários.

Dois importantes atributos do USB são também destacados: a compatibilidade

universal, pois nada impede que o USB seja aproveitado por outra arquitetura, e a

simplicidade no projeto de periféricos, pois são eliminados diversos custos, como o de

interfaces auxiliares (ex: alguns scanners e CD ROM).

O USB pode ser usado com a maioria dos periféricos de computadores, tais como:

controladoras de vídeo, drives de CD ROM, joysticks, unidades de fita, drives de disco-

flexível externos, scanners ou impressoras. A taxa de transmissão especificada de 12

Megabits/s também acomoda uma nova geração de periféricos, incluindo os produtos

baseados em vídeo (ex: câmeras digitais) [5].

Como o padrão USB é ideal para periféricos de vídeo de baixa e média velocidade

será utilizada o mesmo para a conexão com a câmera e o computador.

A transmissão de dados via USB é baseada no envio de pacotes. A transmissão

começa quando o controlador Host envia um pacote (Token Packet) descrevendo o tipo e a

15

direção da transmissão, o endereço do dispositivo USB e o referido número de endpoint. A

transmissão de dados pode ser realizada tanto do Host para o dispositivo quanto em sentido

inverso. O dispositivo USB decodifica o campo de endereço, reconhecendo que o pacote

lhe é devido. A seguir, a fonte da transmissão envia um pacote de dados (Data Packet) ou

indica que não há dados a transferir. O destino responde com um pacote de Handshake

(Handshake Packet) indicando se a transferência obteve sucesso.

O USB utiliza três tipos de pacotes: Token, Data e Handshake Packets, como

descrito em [6]:

• PID (Packet Identifier): composto de oito bits. Os quatro mais significativos

identificam e descrevem o pacote e os restantes são bits de verificação para

prevenção de erros (check bits). Esses check bits são constituídos pelo

complemento um dos quatros bits identificadores;

• ADDR (Address): endereço do dispositivo USB envolvido. Composto de 7 bits,

limita o número de dispositivos endereçáveis em 127;

• ENDP (Endpoint): possui 4 bits que representam o número do endpoint envolvido.

Permite maior flexibilidade no endereçamento de funções que necessitem de mais

de um subcanal;

• CRC (Cyclic Redundancy Checks): bits destinados à detecção de erros na

transmissão;

• DATA: bits de dados.

• Comunicação TCP/IP (Transmission Control Protocol/Internet Protocol)

A comunicação TCP/IP é utilizada para a conexão do servidor com a internet,

sendo a internet uma rede mundial de computadores que utiliza um protocolo de rede

padrão, o TCP/IP para que um computador de uma determinada marca e/ou sistema

operacional possa se comunicar com os demais computadores da internet.

Na verdade, a internet não é apenas uma rede de computadores, mas uma rede de

redes ou um emaranhado de redes, assim do inglês Web significa em português teia de

aranha, ou seja, podemos então entender que internet é uma grande rede ou “teia” de

computadores, como descrito em [7].

Uma rede de computadores é um conjunto de dois ou mais computadores onde a

partir de um meio de comunicação é possível à troca de informações entre eles. Para ser

16

capaz de comunicar em uma rede, um computador deve ser capaz de acessar um meio de

comunicação comum a todos e trocar informações utilizando o mesmo protocolo de

comunicações das outras máquinas, como visto na figura 3.

Figura 3 – Exemplo de acesso ao meio de comunicação comum

Para que dois ou mais computadores comuniquem entre si, é preciso que se utilize o

mesmo protocolo de comunicação, assim deve ser definido qual a linguagem que deve ser

utilizada para se comunicar, esta linguagem deve ser de compreensão de todos os

computadores. Na internet, o protocolo padrão utilizado pelas máquinas é o TCP/IP.

O TCP/IP define uma pilha de camadas de comunicação, cada uma com um

protocolo próprio. Mas a camada que mais interessa aos usuários é a camada de aplicação,

onde milhares de usuários ao redor do planeta utilizam o protocolo HTTP (HyperText

Transport Protocol) para navegar em páginas e mais páginas HTML.

O HTTP é um dos protocolos mais utilizados na camada de aplicação e é

responsável pela grande popularização da Internet devido a sua funcionalidade, como

descrito no Manual da Internet [7].

Tráfego de dados

Tráfego de dados

1 Computador

2 computadores em rede

Vários computadores em rede

17

2.2.3. Servidor

Os próximos módulos necessitam do auxílio do servidor para o gerenciamento e

armazenamento das informações e a implementação da interface do usuário para a conexão

com a web. Também é um sistema que gerencia as mensagens enviadas e recebidas do

sistema microprocessado e da câmera de vídeo, além da base de dados.

• Módulo Gerenciador de Banco de Dados (GDB) O GDB (Database Management) é um sistema que armazena dados em

computador, ou seja, seu objetivo é registrar e manter informações de forma segura e que

seja conveniente quanto eficiente para a recuperação e armazenamento das informações.

Neste projeto usaremos uma página web para o acesso ao banco de dados, ou seja, é

a página web que permite o administrador habilitar ou desabilitar o acesso ao ambiente de

determinado usuário.

Neste banco de dados teremos as seguintes informações:

• Nome;

• Turma do aluno;

• Matrícula;

• Senha;

• Cargo;

• Data e hora da entrada/saída do usuário ao ambiente;

• Nome do laboratório;

• Localização do laboratório.

O armazenamento das informações é feito utilizando o banco de dados ACCESS,

pois inicialmente necessitamos apenas de cinco tabelas para armazenar as informações. O

esquemático das tabelas com os campos utilizados pode ser visto na figura 2.

18

Figura 2 – Esquemático das tabelas e campos utilizados na base de dados

• Módulo Internet Neste módulo é realizada a implementação de um portal de acesso, onde três

páginas Web farão a interface com o administrador permitido que o mesmo tenha liberdade

de habilitar ou desabilitar a permissão de acesso dos usuários ao ambiente, como também

inserir e excluir usuários da base de dados e a buscar dos mesmos.

Na página de cadastro o administrador pode inserir usuários preenchendo os

campos de nome, cargo ou turma, senha e matricula, excluir usuários preenchendo apenas

o campo de matricula e fazer busca de usuários preenchendo o campo de nome ou

matricula.

Na página de acesso o administrador pode habilitar ou desabilitar a permissão de

acesso do usuário para os ambientes desejados, como também fazer a busca de todos os

usuários habilitados para um determinado laboratório.

Na página de informações o administrador pode visualizar a data, a hora e o

laboratório que os usuários acessaram o ambiente.

Essas páginas são desenvolvidas utilizando a linguagem ASP (Active Server

Pages) e HTML (HyperText Markup Language), sendo este módulo gerenciado pelo

servidor.

• Módulo da Câmera de Vídeo Após a validação da senha, o software de gerenciamento da câmera de vídeo recebe

um comando onde informa ao servidor que inicie a gravação da imagem. A câmera de

vídeo grava as imagens dos usuários em um tempo máximo de 30 segundos, mas quando

esse usuário for um professor ou um funcionário terá um tempo de 2 minutos de gravação,

no entanto se a porta for fechada antes do tempo estipulado à câmera encerrará a gravação

tblEstudante

Nome Turma

Matricula Senha

tblAcesso_Estudante

Data/Hora ID_Estudante

ID_Laboratório Nome_Imagem

Localização_Imagem

tblLaboratório

Nome_lab Localização

tblAcesso_Colaborador

Data/Hora ID_Colaborador ID_Laboratório Nome_Imagem

Localização_Imagem

tblColaborador

Nome Matricula

Cargo Senha

19

armazenando no local apropriado no disco do servidor, com o devido link na base de

dados.

A câmera de vídeo grava as imagens com uma configuração default de 320x240,

sendo as imagens coloridas, mas o administrador pode alterar a configuração das imagens

no software da câmera se desejar, desta forma as imagens podem ser gravadas em preto e

branco ou colorida e com tamanhos de 160x120, 320x240, 176x144, 352x188 e 640x480.

A câmera de vídeo utilizada é a Creative Vídeo Blaster WebCam 3/WebCam Plus –

Colorida e utiliza uma conexão USB com o servidor.

20

2.3. ESPECIFICAÇÃO DO HARDWARE

O servidor do Sistema de Controle de Acesso à Ambientes com Acionamento de

Vigilância Eletrônica necessita de um computador com a seguinte configuração mínima:

• Processador Pentium;

• Freqüência mínima de operação de 200 MHz;

• Memória RAM de 64 Megabytes;

• Disco rígido de 15 Gigabytes de espaço livre;

• Porta USB;

• Porta serial;

• Câmera de Vídeo – Vídeo Blaster WebCam 3/WebCam Plus – Colorida.

Além disso, o sistema de controle dedicado necessitará ser composto por:

• Teclado numérico de 12 teclas;

• Solenóide AS1RC1;

• Buzze 21N30W;

• Sistema mínimo com microcontrolador 8051;

• Serial full-duplex;

• Microcontrolador 80c31;

• Memória EPROM 27C256;

• Cristal Xtal – 11,0592MHz.

O sistema microprocessado com o microcontrolador 8051 é o responsável pelo

gerenciamento do hardware do sistema de controle, ou seja, ele recebe a senha através de

um teclado numérico de 12 teclas, onde armazena os dígitos da senha, até o usuário

pressionar a tecla de confirma, assim enviando a senha para o servidor, onde é realizada a

validação da senha. Quando a senha for válida a câmera de vídeo é acionada, gravando as

21

imagens da porta, o acionamento do indicador (led) verde, o solenóide para a abertura da

porta. O indicador (led) amarelo é acionado quando a porta estiver aberta, mas quando a

porta for completamente fechada, o sensor de contato será acionado, assim informando o

sistema para finalizar a gravação e armazenar as imagens no disco. Mas se o usuário for

um aluno e permanecer com a porta aberta em um intervalo maior que 30 segundos um

buzzer é acionado informando que a porta deve ser fechar. Contudo quando o usuário for

um professor ou um funcionário este tempo é de 2 minutos até o acionamento do buzzer.

Entretanto quando o usuário digitar uma senha inválida um indicador (led) vermelho é

acionado, mas quando o usuário digitar três senhas inválidas em um intervalo de 30

segundos ele receberá uma penalidade de 30 segundos no tempo de resposta do sistema, ou

seja, o sistema dedicado não fará o tratamento do teclado nesse intervalo.

Em caso de queda de energia pode ser utilizado um sistema de fornecimento

alternativo de energia como um nobreak para permitir o correto funcionamento do sistema,

já no sistema dedicado é utilizada uma bateria de 9V, onde o mesmo também não ficará

sem funcionamento quando houver falta de energia elétrica.

No caso de incêndio o sistema deve receber este aviso por meio de um outro

sistema, assim liberando a abertura da porta, sendo que este sistema de incêndio não será

implementado devido ao dimensionamento de implementação do projeto.

A implementação do projeto de Sistema de Controle de Acesso à Ambientes com

Acionamento de Vigilância Eletrônica necessita de uma porta serial para a comunicação do

servidor com o sistema dedicado, onde essa porta serial tem nove pinos para aplicações de

controle, e inicialmente é utilizado três destes pinos: o RX – leitura, o TX – escrita e o

GND – terra, também é utilizado o padrão de comunicação serial (RS-232-C). Teremos a

necessidade de uma porta USB para a comunicação com a câmera de vídeo para a ativação

ou desativação da mesma.

Na figura 4 pode-se verificar o diagrama de blocos do hardware, possibilitando um

melhor entendimento.

22

Figura 4 – Diagrama em blocos do hardware

No anexo 1 estão listados os componentes que são utilizados para o

desenvolvimento do hardware do sistema dedicado.

Acionador da porta (Solenóide)

Módulo principal da central de controle

Sistema dedicado

Sensor de contato da porta

Internet

GDB

USB

Rede

Serial

Indicadores luminosos

Teclado

Buzzer

Câmera de vídeo

Servidor Sistema dedicado

23

2.4. ESPECIFICAÇÃO DO SOFTWARE

Nesta etapa devemos descrever a especificação do software utilizado para o

desenvolvimento e para posterior utilização do projeto.

Servidor

O Software principal do Sistema de Controle de Acesso à Ambientes com

Acionamento de Vigilância Eletrônica está no servidor e necessita do sistema operacional

Windows98 devidamente instalado, podendo também funcionar em Windows2000/NT/XP.

Contudo são necessários os seguintes pacotes de software:

• Banco de dados Access;

• Web Browser;

• Software de instalação da câmera de vídeo, Creative Vídeo Blaster WebCam

3/WebCam Plus – Plus Driver;

• Windows Media Player.

No desenvolvimento do projeto utilizou-se as seguintes ferramentas

computacionais:

• Pacote Visual Studio C++6;

• Borland C++Builder - Enterprise Suíte – versão 5.0;

• Software AVSIM 8051 (Simulador/Debugger da Avocet Systems).

O Web Browser é necessário para a conexão com o servidor e a página web onde

são utilizadas as linguagens ASP (Active Server Pages) e HTML (HyperText Markup

Language) para a programação da página, sendo utilizado as ferramentas do pacote do

24

Visual Studio, o InterDev para o desenvolvimento da aplicação. Na página Web o

administrador tem a possibilidade de habilitar ou desabilitar o acesso de usuários a

determinados ambientes e cadastrar, buscar e remover os mesmos. A página web acessa a

base de dados, onde estão armazenadas todas as informações dos usuários, como nome,

turma, matricula, cargo, senha, data e hora de acesso e laboratório.

Utilizamos a ferramenta Borland C++Builder, para o desenvolvimento do software

do servidor que realiza a comunicação serial pela recepção e o envio de mensagens do

servidor para o sistema de controle ou vice-versa. Esse software do servidor também

acessa a base de dados onde o mesmo é o responsável pela validação da senha, para em

seguida executar a rotina de gerenciamento da câmera de vídeo e enviar para o sistema de

controle o comando para o acionamento do indicador (led) verde e o solenóide liberando

assim a entrada ao ambiente.

Outra ferramenta do pacote do Visual Studio, o Visual C++6, foi utilizado para o

desenvolvimento do software de gerenciamento da câmera de vídeo. Esse software de

gerenciamento apenas é executado quando houver uma senha válida, mas quando essa

senha pertencer a um aluno as imagens serão gravadas por um tempo máximo de 30

segundos e armazenadas em c:\controle\estudante. Nesse caso o nome do arquivo gravado

com o formato id do usuário data e hora, por exemplo, 2 24-10-2002 9h14m35s e quando a

senha pertencer a um professor ou a um funcionário as imagens são gravadas por um

tempo máximo de 2 minutos e armazenadas em c:\controle\colaborador. Contudo se a

porta for fechada antes do tempo máximo à câmera de vídeo finaliza a gravação das

imagens, armazenando as imagens no local apropriado como prescrito anteriormente.

O software windows media player é utilizado para mostrar as imagens gravadas no

acesso ao ambiente utilizando a extensão (.avi).

Sistema Dedicado

Já para o desenvolvimento do sistema dedicado é utilizada a linguagem Assembly,

por meio do pacote AVSIM X8051 e link (Simulador e o Debugger da Avocet Systems)

para simulação. Este sistema microprocessado 8051 é responsável pelo gerenciamento de

determinados módulos como:

• Módulo teclado;

• Módulo buzzer;

25

• Módulo indicadores;

• Módulo sensor da porta;

• Módulo acionador da porta.

Em anexo 2 é encontrado o Diagrama do Fluxo de Dados (DFD) de nível 0, 1 e 2

do Sistema de Controle de Acesso à Ambientes com Acionamento de Vigilância

Eletrônica.

Na figura 5 é mostrado o fluxograma geral do Sistema como um todo, onde se

percebe claramente a parte presente no sistema de controle e do servidor.

26

Figura 5 – Fluxograma Geral do Sistema de Controle de Acesso à Ambientes com Acionamento de Vigilância Eletrônica

Sistema Dedicado Servidor

Processo de leitura do teclado

Início

Envia senha

Habilita a câmera

Validação da senha

S

N

Habilita o solenóide (abertura da porta)

Desabilita a câmera

Armazena senha, imagem, data e

hora

Armazenamento dos dígitos da senha

Aciona alarme

Aviso ao usuário Led verde (acesso liberado)

Recebe P

Envia E (senha válida)

Recepção da senha

Envia P (porta fechada)

Armazena quantidade de tentativas de

senhas inválidas em um tempo de 30s

Se qtda de tentativas =3

S

Envia T (senha inválida)

N

Verificação da tecla confirma S

Se tmp de abertura da porta < 30

S

N

Senha Estudante

N

S

Habilita a câmera

Envia C (senha válida)

Se porta aberta

Aviso ao usuário Led amarelo

Desabilita led amarelo

S

Habilita o solenóide (abertura da porta)

Aviso ao usuário Led verde (acesso liberado)

Habilita o sensor de contato (fechamento da porta)

N

Se porta aberta

Aviso ao usuário Led amarelo

S

S Se tmp de abertura da porta < 2 min

Aviso ao usuário Led vermelho

Envia I (senha inválida)

Tempo da penalidade de 30 s

N

N

N

Recebe E

Recebe C

27

2.8. VALIDAÇÃO DO PROJETO

A validação dos módulos ocorre através de procedimentos que auxiliaram a

detecção de erros, nos módulos mostrados abaixo:

- Módulo do Banco de Dados (GDB): neste módulo foi inseridos dados nas tabelas criadas,

e executadas consultas na base de dados, desta maneira analisando a coerência das

informações adquiridas com as consultas;

- Módulo internet: neste módulo foi realizado um sistema de gerenciamento da base de

dados, onde foi criado um portal de acesso. Nesse portal é possível inserir, excluir,

habilitar ou desabilitar a permissão de acesso e busca de usuários, entretanto para a

validação do portal de acesso foi necessário inserir dados válidos e não válidos para os

testes para inserção, exclusão e busca de usuários.

A inserção de usuários é de preenchimento obrigatório os campos de nome, cargo

ou turma , senha e matricula, assim foram preenchidos os campos de nome, cargo ou turma

e senha, não sendo preenchido o campo de matricula, desta forma constatando se o usuário

foi inserido no sistema ou não, sendo este teste realizado para cada campo obrigatório de

inserção.

A busca de usuários é de preenchimento obrigatório o campo de nome ou de

matricula, assim foi preenchido o campo de nome, não sendo o campo de matricula

preenchido, assim podendo constatar se a busca do usuário desejado era realizada com

sucesso, sendo este teste feito para o campo de matricula também.

A exclusão de usuários é de preenchimento obrigatório o campo de matricula,

assim foi preenchido este campo para observar se a exclusão era realizada de forma

correta.

A habilitação ou desabilitação a permissão de acesso é de preenchimento

obrigatório os campos de nome e matricula, assim foi preenchido apenas o campo nome,

não sendo preenchido o campo de matricula, desta forma foi liberado ou negada a

permissão do usuário ao ambiente, assim observado se a habilitação ou a desabilitação do

acesso foi concluída com sucesso. Também foram realizados os testes com o campo de

matricula e com ambos os campos.

- Módulo da câmera de vídeo: neste módulo foi averiguado se o componente utilizado para

a comunicação e captura da imagem está funcionando corretamente, assim foi visto se a

28

imagem está sendo gravada nos tempos corretos para usuário, professor e funcionário,

também foi averiguado se as imagens estavam sendo armazenadas nos locais apropriados,

assim como, a nomenclatura do nome de cada uma das imagens.

- Módulo de Comunicação: neste módulo foi utilizado um software para o teste de

comunicação do sistema de controle microprocessado, onde este teste necessita do auxílio

de um hyper terminal onde cada letra pressionada no servidor era enviada para o sistema

de controle microprocessado e transmitida novamente para o servidor, assim visualizando

tudo que foi recebido e transmitido pelo sistema de controle.

- Módulo Teclado: neste módulo foi utilizando um display de sete segmentos para a

identificação da tecla digitada. Também realizamos testes utilizando um hyper terminal,

onde cada tecla pressionada poderia ser visualizada, desta forma certificando-se que a tecla

pressionada é a que está sendo lida no momento.

- Módulo sensor da porta: neste módulo foi utilizado um sensor de contato, sendo esse

acionado apenas quando a porta estiver fechada, assim para a realização de testes foi

utilizado um hyper terminal que recebe um único caractere “F” toda vez que a porta for

fechada.

- Módulo acionador da porta: neste módulo foi utilizado um solenóide, sendo acionado

sempre que houver uma senha válida, assim com o auxílio do teclado e do hyper terminal

foi realizado os testes. Inicialmente a senha é digitada, assim enviando para o servidor,

pelo hyper terminal a senha é visualizada, assim é enviando para o sistema dedicado um

“V” de senha válida ou um “I” de senha inválida, entretanto quando o sistema dedicado

receber o caracter “V” o solenóide é acionando.

- Módulo Indicadores: neste módulo foi utilizado três indicadores (leds) verde, vermelho e

amarelo, para a realização dos teste foi necessário um teclado. A senha digitada é

transmitida para o servidor para sua validação. Quando transmitíamos um caractere “V” de

senha válida para o sistema dedicado o indicador (led) verde é acionado, assim quando

transmitíamos para o sistema dedicado um caractere “I” de senha inválida o indicador (led)

vermelho é acionado. O indicador (led) amarelo é acionado sempre quando a porta estiver

aberta permanecendo neste estado até o completo fechamento da porta.

- Módulo Buzzer: neste módulo foi utilizado um Buzzer (alarme) para avisar o usuário que

a porta do ambiente estava aberta, para a realização dos testes foi utilizado um cronômetro

que marcava o tempo de abertura da porta e sempre que o tempo limite de abertura da

porta é ultrapassado o alarme deve ser acionado.

29

- Módulo Principal da Central de Controle: neste módulo encontramos o sistema dedicado

que é responsável pelo gerenciamento do hardware, este sistema possibilita o

armazenamento dos 6 dígitos da senha, para depois enviar a mesma para o servidor, pela

abertura da porta mediante a validação da senha, pelo acionamento do sensor da porta que

avisa quando a mesma está completamente fechada, pelo acionamento do solenóide que

possibilita a abertura da porta e o buzzer (alarme) que avisa o usuário para fechar a porta

quando a mesma ultrapassar o tempo máximo de abertura. Desta maneira foram realizados

testes onde foi utilizado um software de teste que transmitia para o hyper terminal no

servidor a senha digitada, assim quando o servidor recebia a senha digitada era enviado

para o sistema microprocessado um “V” de senha válida ou um “I” de senha inválida,

assim acionando o solenóide se o sistema de controle microprocessado recebesse o

caractere “V” e um indicador (led) verde era acionado e quando a porta era fechada o

indicador (led) verde era desativando e o servidor teria que receber o caractere “F”, assim

podendo ser visualizado no hyper terminal, nesta etapa de testes também era checado o

tempo de abertura da porta com auxílio de um relógio para o acionamento do alarme. Mas

quando a senha é inválida o solenóide não é acionado e um indicador (led) vermelho é

acesso.

Após a integração dos módulos foi observado o funcionamento do sistema como

um todo, ou seja, foi inicialmente feito o cadastro de usuários, liberação da permissão do

acesso, a digitação de senhas válidas e inválidas para uma análise geral do sistema.

30

3. PROJETO

Neste capítulo descrevemos detalhadamente as etapas do projeto, tomando por base

as definições definidas na etapa anterior de especificação do projeto, como visto no

capitulo anterior.

3.1 O BANCO DE DADOS

O banco de dados implementado tem por objetivo o armazenamento das

informações sobre o acesso dos usuários e os locais de acesso como laboratório, nome,

data, hora e senha para posteriormente ser visto na página web.

O nível lógico pode ser visto na figura 6 é o nível médio de abstração que descreve

quais informações estão armazenados no banco de dados e quais os inter-relacionamentos

entre elas.

Figura 6 – Esquemático da estrutura lógica do banco de dados do sistema

tblLaboratorio

N N

1tblAcesso_Estudante

1tblAcesso_Colaborador

ID_Laboratorio

ID_Colaborador

Data/Hora

1tblEstudante

ID

1

NtblColaborador

ID

Nome

Matricula

Cargo

Senha

Nome

Matricula

Turma

Senha

ID

Data/Hora

ID_Estudante

ID_Laboratorio

Nome_lab

Localização

Nome da imagem

Localização da imagem

Nome da imagem

Localização da imagem

31

O nível físico do banco de dados é o mais baixo em termos de abstração e descreve

como esses dados estão armazenados na base de dados, podemos ver nas figuras abaixo (7

a 11).

tblEstudante

Campo Configuração Descrição Espaço de

Armazenamento ID Inteiro Longo 4 bytes

Senha Inteiro Longo 4 bytes Matricula Inteiro Longo

Armazena números de -2.147.483.648 a 2.147.483.647

4 bytes

Nome Caracter 100 bytes

Turma Caracter

Armazena uma quantidade de caracteres de 0 a 255

50 bytes

Figura 7 – Detalhes sobre a tabela tblEstudante

Esta tabela tblEstudante (figura 7), armazena as informações de cada estudante que

tem a permissão de acesso a determinado ambiente, ou seja, a tabela contém os seguintes

campos :

• ID à campo numérico e seqüencial;

• Senha à campo que armazena a senha numérica da porta de cada usuário,

onde esta senha é de 6 dígitos;

• Matricula à campo que armazena a matricula de cada usuário, sendo que a

matricula é um campo numérico de 9 dígitos;

• Nome à campo que armazena o nome completo do usuário e;

• Turma à campo que armazena a turma que este usuário pertence.

tblColaborador

Campo Configuração Descrição Espaço de

Armazenamento ID Inteiro Longo 4 bytes

Matricula Inteiro Longo 4 bytes Senha Inteiro Longo

Armazena números de -2.147.483.648 a 2.147.483.647

4 bytes Nome Caracter 100 bytes Cargo Caracter

Armazena uma quantidade de caracteres de 0 a 255 50 bytes

Figura 8 – Detalhes sobre a tabela tblColaborador

32

Esta tabela tblColaborador (figura 8), armazena as informações de cada usuário, ou

seja, a tabela contém os seguintes dados:

• ID à campo numérico e seqüencial;

• Matricula à campo que armazena a matricula de cada usuário, sendo que a

matricula é um campo numérico de 9 dígitos;

• Senha à campo que armazena a senha numérica da porta de cada usuário,

onde esta senha é de 6 dígitos;

• Nome à campo que armazena o nome completo do colaborador;

• Cargo à campo que armazena o cargo que o colaborador exerce.

tblAcesso_Estudante

Campo Configuração Descrição Espaço de

Armazenamento ID Inteiro Longo 4 bytes

ID_Estudante Inteiro Longo 4 bytes ID_Laboratorio Inteiro Longo

Armazena números de -2.147.483.648 a 2.147.483.647

4 bytes

Data/Hora Data/Hora Valores de data e hora para os

anos de 100 a 9999. 8 bytes

Figura 9 – Detalhes sobre a tabela tblAcesso_Estudante

Esta tabela tblAcesso_Estudante (figura 9), armazena as informações necessárias

sobre o status do estudante, ou seja, a tabela contém os seguintes dados:

• ID à campo numérico e seqüencial;

• ID_Usr à campo que identifica qual usuário que acessou o ambiente;

• ID_Lab à campo que informa qual ambiente está sendo utilizado;

• Data/Hora à campo que armazena a data e a hora que o usuário entrou e/ou

saiu do ambiente.

tblAcesso_Colaborador

Campo Configuração Descrição Espaço de

Armazenamento ID Inteiro Longo 4 bytes

ID_Colaborador Inteiro Longo 4 bytes ID_Laboratorio Inteiro Longo

Armazena números de -2.147.483.648 a 2.147.483.647

4 bytes

Data/Hora Data/Hora Valores de data e hora para os

anos de 100 a 9999. 8 bytes

Figura 10 – Detalhes sobre a tabela tblAcesso_Colaborador

33

Esta tabela tblAcesso_Colaborador (figura 10), armazena as informações

necessárias sobre o status do usuário, ou seja, nesta tabela contém os campos de:

• ID à campo numérico e seqüencial;

• ID_Colab à campo que identifica qual colaborador que acessou o ambiente;

• ID_Lab à campo que informa qual ambiente está sendo utilizado;

• Data/Hora à campo que armazena a data e a hora que o usuário entrou e/ou

saiu do ambiente.

tblLab

Campo Configuração Descrição Espaço de

Armazenamento

ID Inteiro Longo Armazena números de –

2.147.483.648 a 2.147.483.647 4 bytes

Nome Caracter 100 bytes Localização Caracter

Armazena uma quantidade de caracteres de 0 a 255. 50 bytes

Figura 11 – Detalhes sobre a tabela tblLaboratorio

A tabela tbllaboratorio (figura 11), armazena informações sobre o ambiente e a sua

localização, ou seja, nesta tabela contém:

• ID à campo numérico e seqüencial, inteiro longo;

• Nome à campo que armazena o nome do ambiente, caracter e;

• Localização à campo que armazena a localização do ambiente, caracter.

34

3.2 A INTERNET

A página web é a responsável pela interface à base de dados do sistema onde

possibilita habilitar ou desabilitar a permissão de acesso dos usuários aos ambientes,

incluir, excluir usuários e verificar as informações do acesso.

A página principal contém as informações ao administrador das atividades que

podem ser executadas, como pode ser visto na figura 12.

Figura 12 – Interface de principal - Home

Esta interface possibilita ao administrador saber quais as atividades podem ser

executadas pela internet como:

• Inserir, excluir e fazer busca de usuários na página de cadastro;

35

• Habilitar e desabilitar a permissão do acesso aos ambientes pela página de

acesso;

• Informações sobre os usuários como data e hora de acesso aos ambientes na

página de informações

A interface de cadastro proporciona ao administrador inserir usuários, sendo

obrigatório o administrador preencher os campos de nome, cargo, turma, senha e matricula

para realizar a inclusão.

A exclusão de usuários deve ser realizada quando o administrador achar necessária,

sendo o campo de matricula de preenchimento obrigatório para a exclusão.

Um outro recurso da página de cadastro é a busca1 que utiliza os campos de nome

ou matricula para a visualização das informações do usuário desejado, como pode ser visto

na figura 13.

Figura 13 – Interface de cadastro de usuários - Cadastro

1-- Para fazer a busca é necessário que o usuário administrador saiba o nome ou a matricula do

usuário.

36

Esta interface possibilita o administrador habilitar ou desabilitar a permissão do

acesso dos usuários aos laboratórios, sendo obrigatório o administrador preencher os

campos de nome e matricula do usuário, podendo também fazer a busca2 de usuário

utilizando o campo laboratório, como pode ser visto na figura 14.

Figura 14 – Interface de acesso aos laboratórios - Acesso

2-Para efetuar a busca de usuários com permissão de acesso é necessário que o administrador escolha o

laboratório que deseja visualizar, desta forma, quando o administrador pressionar o botão de busca ele

visualizará todos os usuários do laboratório.

37

Na interface de informações somente o administrador pode ver um simples relatório

de um laboratório, ou seja, o administrador deve inserir data e hora inicial e final e

selecionar laboratório desejado, assim mostrando as informações de nome, id, data/hora e

laboratório, com estas informações o administrador pode localizar a imagem referente a

um determinado usuário, pois com o id do usuário, a data e a hora nós temos, como mostra

na figura 15.

Figura 15 – Interface de Informações - Informações

38

3.3 A CÂMERA DE VÍDEO

O acionamento da câmera ocorre quando a senha é válida e sempre gravando as

imagens do local, (porta do laboratório). Foi utilizado um componente específico para a

comunicação com o servidor e conseqüentemente para a captura da imagem. Este

componente encontrado no site www.codeguru.com, foi utilizado Sistema de Controle de

Acesso à Ambientes com Acionamento de Vigilância Eletrônica, mas foi necessário alguns

ajustes para o projeto.

As imagens são gravadas em extensão (.avi) e armazenadas em disco, com uma

resolução de 320 x 240 e compactação de 1420. Quando temos um tempo de gravação de

30 segundos que é o tempo máximo de um estudante o tamanho da imagem para este

tempo é de aproximadamente de 6Megabytes, sendo as imagens gravadas em colorido. Já

quando temos um tempo de gravação de 2 minutos que é o tempo máximo de gravação

para professor e funcionário o tamanho da imagem para este tempo é de aproximadamente

de 26Megabytes.

A porta do laboratório pode ficar aberta em um tempo máximo de 30 segundos para

estudantes e 2 minutos para professores e funcionários, onde será acionado um buzzer

(alarme) comunicando ao usuário que a porta deve ser fechada, quando for ultrapassado o

tempo limite. A gravação da imagem apenas será realizada em função do tempo máximo

de cada usuário, ou seja, para estudantes teremos uma imagem de no máximo 30 segundos

e de professores e funcionários de 2 minutos. Devido ao tamanho da imagem o tempo de

gravação é limitado, encerrando desta forma a gravação e armazenando a imagem no disco

rígido, sendo que quando o tempo máximo de cada usuário é ultrapassado o buzzer

(alarme) é acionado e desativado apenas com o completo fechamento da porta.

Entretanto existe uma ressalva em relação ao tamanho das imagens gravadas pelo

sistema, pois as imagens gravadas ocupam um espaço considerável em disco, ou seja, em

dia de maior acesso aos laboratórios, tem-se um número de 30 alunos entrando no

laboratório individualmente, então se cada um demorasse 30 segundos até o completo

fechamento da porta teríamos um total de 180Mbytes de espaço ocupado em disco apenas

com as imagens de acesso em um único dia.

39

Desta maneira para um melhor aproveitamento de espaço em disco o administrador

deverá fazer uma averiguação diária dos laboratórios e das imagens para que elas possam

ser excluídas da base de dados, permanecendo apenas o log dos acessos.

40

3.4 A COMUNICAÇÃO

A comunicação entre o sistema microprocessado e o servidor como por meio da

comunicação serial full-duplex, pois permite comunicação bidirecional transmitindo e

recebendo dados. A uma taxa padrão de 9600 bps, sem paridade, sendo que a comunicação

serial transmite um byte, bit a bit, em seqüência preestabelecida e pré-programada, para

que o receptor possa recebê-lo e transformá-lo em novamente em um byte, igual ao

original transmitido. Além do byte que é transmitido no canal serial, inserem-se também

alguns bits de controle de transmissão e recepção, por exemplo, bits de “start” e “stop” que

sinalizam o inicio e o fim da transmissão e recepção do byte. Normalmente o byte a ser

transmitido é codificado em código ASCII, pois é padrão universal de comunicação.

Tem-se dois tipos de comunicação serial:

• Serial Síncrona;

• Serial Assíncrona.

Neste projeto será utilizada a comunicação serial assíncrona que não é dependente

do sinal de sincronismo como na comunicação serial síncrona, pois é criado um sinal de

transmissão para cada byte transmitido: cada byte é “cercado” por bit de inicio (start) e um

bit de fim (stop). O sistema fica esperando um bit de start (transição 1 para 0), inicia a

recepção dos outros bits do byte e contando-os, fica a espera do bit de stop (transição 0

para 1), finalizando a comunicação e reiniciando o processo de aguardo do próximo bit de

start. O modo de comunicação serial síncrono utiliza-se de uma saída como envio ou

recepção de dados e outra para levar um sinal de sincronismo, para que o receptor saiba

quem é o bit de inicio “0” e quem é o bit de finalização “1” na comunicação.

No microcontrolador 8051 possui três modos de comunicação assíncrono (modo 1,

2 e 3) e um modo de comunicação síncrono (modo 0), sendo que neste projeto utilizaremos

o modo 1 de comunicação assíncrono de 8 bits. No modo 1 o periférico atua como uma

UART (Universal Assynchronous Receiver Transmitter), ou seja, cada byte é cercado por

um bit de start e um bit de stop, assim transmitindo 10 bits em cada byte que trafega na

comunicação. O sincronismo para a transmissão e a base de tempo para a recepção são

gerados por uma freqüência interna que é 16 vezes superior ao valor Baud Rate (freqüência

do transmissor e do receptor sendo a mesma). No inicio da recepção, espera-se o bit de

41

start que deve ser zero (transição de 1 para 0), assim iniciando a amostragem dos 8 bits do

byte de informação e após estes 8 bits espera-se o bit de stop (transição de 0 para 1), assim

reiniciando a captura de um próximo bit de start, como descrito em [4].

Na figura 16 serão definidos os bytes a serem transmitidos ou recebidos pelo

sistema e sua velocidade tomando por base a taxa de transmissão de 9600bps.

Dado a ser enviado

Código ASCII

Quantidade de bytes

* Tempo de transmissão

Descrição

A 41 7 6µs Inicio do envio dos 6 dígitos da senha para o computador.

C 43 1 1µs Aviso ao sistema microprocessado que é uma senha de estudante válida e que pode ser acionado o led verde.

E 45 1 1µs Aviso ao sistema microprocessado que é uma senha de colaborador válida e que pode ser acionado o led verde.

I 49 1 1µs Aviso ao sistema microprocessado que a senha é inválida e que pode ser acionado o led vermelho.

P 50 1 1µs Aviso ao computador que a porta está fechada e que pode encerrar a gravação da imagem.

T 54 1 1µs Aviso ao microprocessador que o usuário deve receber uma penalidade de 30 segundos.

* Considerando tempo nulo entre os bytes e taxa de 9600 bps.

Figura 16 – Tabela de descrição de bytes a serem transmitidos e recebidos

42

O fluxograma de processo de comunicação entre o sistema dedicado e o servidor de

envio dos dígitos da senha e o aviso do completo fechamento da porta é mostrado na figura

17.

Figura 17 – Fluxograma de comunicação de envio de mensagens ao servidor.

Onde:

• P - Aviso ao servidor que a porta está fechada e que pode encerrar a gravação da

imagem;

• A - Inicio do envio dos 6 dígitos da senha para o servidor.

Início

i = 1

i <= 6

S

N

i = i + 1

Envia A

Envia P S

N

SN

43

O fluxograma de processo de comunicação entre o servidor e o sistema de controle

microprocessado para o recebimento da senha, o aviso da senha válida, da senha inválida e

a penalidade é mostrado na figura 18.

Figura 18 – Fluxograma de comunicação de recebimentos de mensagens do servidor.

Onde:

• P - Aviso ao servidor que a porta está fechada e que pode encerrar a gravação da

imagem;

• A - Inicio do envio dos 6 dígitos da senha para o servidor;

• I - Aviso ao sistema de controle microprocessado que a senha é inválida e que pode

ser acionado o indicador (led) vermelho;

Início

i <= 6 S

i = i + 1

i = 1 Recebe A S

Envia C

Envia E

Envia I

Aciona Indicador (Led verde) - Senha Válida

Aciona solenóide

Aciona led vermelho

S

S

N

S

N

N

N

Aciona Indicador (Led verde) - Senha Válida

N

Envia T Aciona led vermelho

(Penalidade) S

N

Recebe P

N

44

• T - Aviso ao sistema de controle microprocessador que o usuário deve receber uma

penalidade de 30 segundos;

• E - Aviso ao sistema de controle microprocessado que é uma senha de estudante

válida e que pode ser acionado o indicador (led) verde;

• C - Aviso ao sistema de controle microprocessado que é uma senha de funcionário

válida e que pode ser acionado o indicador (led) verde.

A comunicação entre o sistema dedicado e o servidor não utiliza o sistema de

criptografia, por ainda ser um protótipo, mas para a implementação de um projeto real deve

ser projetado um sistema de criptografia para uma melhor segurança dos dados

transmitidos, apesar de todo o sistema estar embutido na parede do ambiente.

45

3.5 A CENTRAL DE CONTROLE

O módulo principal central de controle é o responsável pelo gerenciamento do

hardware do sistema, onde controlam a leitura do teclado, o acionamento do solenóide

(abertura da porta), o acionamento do buzzer (alarme), o acionamento dos indicadores

(leds) e a leitura do sensor de contato. Em anexo 3 pode ser analisado o código fonte em

assembly do sistema dedicado.

O microcontrolador 8051 utiliza uma freqüência de clock de 11.0592 Mega Hz e

possui 4 portas P0, P1, P2 e P3 de 8 bits, sendo que neste sistema a porta P0 é utilizada

para dados e as portas P0 e P2 para endereço a memória. A porta P1 é utilizada para o

teclado e a porta P3 para o acionamento do solenóide (abertura da porta), do buzzer

(alarme), dos indicadores (leds) e do sensor de contato.

As portas P1 e P3 são destinadas às vias de comunicação externa, sendo

tipicamente usadas para interface com o mundo exterior.

A porta P1 é usada exclusivamente como porta de entrada e saída (E/S), tem oito

vias de comunicação de propósito geral, sendo que via software pode ser feita a leitura ou

escrita nessa porta. Já a porta P3 pode ser usada para E/S de uso genérico ou para

acomodar as linhas externas da CPU (interrupção, temporizadores, porta serial e sinais de

RD/WR), mas neste projeto a porta P3 é utilizada apenas como entrada e saída (E/S), como

descrito em [2].

A alimentação do sistema pode ser vista na figura 19 – o conector k1 onde

encontramos também um espaço para uma alimentação suplementar, ou seja, um espaço

para inserir uma bateria de 9V que pode ser utilizada em casos de falta de energia.

Na interface Serial, figura 19 – o conector k2, é utilizado o conector DB-9, sendo

que utilizaremos apenas os pinos de RX – leitura, TX – escrita e GND – terra e os pinos de

controle não serão utilizados, devido esta aplicação não necessitar de outros controles

adicionais para a comunicação.

A porta P1, figura 19 – o conector k3, é utilizada exclusivamente como porta de

E/S, sendo utilizada neste projeto para conexão com o teclado como visto no módulo

teclado.

A porta P3, figura 19 – conector k4, será utilizada para fazer a conexão com o

sensor da porta, indicadores (leds), solenóide e o buzzer (alarme).

46

Figura 19 – Figura do sistema microprocessado com o microcontrolador 8051.

47

3.6. O TECLADO

A leitura da tecla pressionada é feita por meio de uma varredura periódica como

visto anteriormente no Módulo Teclado. Neste projeto é utilizado um teclado numérico de

12 teclas, figura 20, devido seu tamanho e pelo fato de ser facilmente encontrado no

mercado. A leitura do teclado é realizada pela porta P1 do microcontrolador 8051, figura

21 e seu funcionamento pode ser visto no fluxograma de processo de leitura do teclado na

figura 22.

Figura 20 – Figura da vista superior do teclado e do circuito interno.

Figura 21 – Circuito elétrico do teclado.

48

Figura 22 – Fluxograma da rotina de leitura do teclado

Como já explicado a porta P1 é utilizada para a leitura do teclado, sendo os pinos

P1.0, P1.1, P1.2 e P1.3 correspondentes as colunas do teclado e as portas P1.4, P1.5 e P1.6

correspondentes as linhas. A detecção das teclas é feita uma varredura constante nas

colunas, assim quando pressionada uma tecla a varredura passa a ser nas linhas para a

identificação da tecla pressiona, sendo essa varredura realizada a cada 50ms. Desta

maneira será utilizado um circuito de pull-up, ligado às linhas do teclado para que

inicialmente o nível de tensão das teclas fique em alta, pois quando uma tecla for

Inicio

i = 1

i < 4

Aciona coluna i

SN

Lê linhas

Coluna 1 3, 6, 9, #

Coluna 2 2, 5, 8, 0

Coluna 3 1, 4, 7, *

S

N

S

N

S

N

Fim

há tecla

N

S

49

pressionada esse nível será alterado para baixo (identificando a tecla) até o momento que a

tecla seja solta, assim voltando para seu estado inicial.

As teclas pressionadas da senha são armazenadas até o momento em que o usuário

pressionar a tecla de confirma (#), assim o sistema de controle envia a senha para o

servidor para sua validação. A tecla asterisco (*) é utilizada para limpar o buffer de

armazenamento de senha e pode ser pressionada sempre que o usuário julgar necessário.

50

3.7. DISPOSITIVOS EXTERNOS

Nesta etapa do projeto descrevemos as características dos dispositivos externos,

como definido no capitulo anterior.

Indicadores e Sensor de acionamento da porta (Solenóide)

A porta P3 é utilizada como via de entrada para os dispositivos como indicadores

(leds), solenóide, buzzer (alarme) e de leitura para o sensor de contato. Contudo os

indicadores, buzzer e o solenóide estão ligados a um latch para a amplificação do sinal de

saída, como pode ser visto na figura 23.

O indicador (led) verde é acionado sempre que a senha do usuário for válida

informando ao usuário que o acesso ao ambiente está liberado, assim acionando o

solenóide para a abertura da porta.

O indicador (led) amarelo é acionado quando a porta for aberta, sendo desativado

apenas com o completo fechamento da mesma.

O indicador (led) vermelho é acionado sempre que um usuário digitar uma senha

inválida ou quando estivar sofrendo uma penalidade do sistema.

Figura 23 – Circuito elétrico dos dispositivos externos indicadores e solenóide

51

Buzzer

O buzzer é o alarme do sistema, sendo conectado ao bit P3.5 do 8051 e acionado

em nível baixo. Esse alarme é acionado sempre que uma tecla for pressionada (sem estar

em penalidade) e quando um usuário deixar a porta aberta além do tempo permitido. Na

figura 24 pode ser visto o circuito elétrico do buzzer.

Vcc

LS2

BUZZER

1

2220T1

5V

P3.5

Figura 24 – Circuito elétrico sistema de Buzzer

Sensor da porta

O sensor da porta (sensor de contato) é ligado ao bit P3.2 e ativo em nível baixo,

sendo ativado apenas com o completo fechamento da porta, desligando o led amarelo,

desta forma avisando o sistema do fechamento da porta. O circuito elétrico do sensor de

contato pode ser visto na figura 25.

Figura 25 – Circuito elétrico do sistema do sensor de contato

52

4. IMPLEMENTAÇÂO

Neste capítulo é descrito como foi desenvolvido todo o sistema proposto, tomando

por base as definições definidas nas etapas anteriores.

4.1. PROTÓTIPO

Foi desenvolvida uma maquete para possibilitar a demonstração do funcionamento

do sistema.

Nas figuras 26 e 27 pode-se verificar, a maquete com a porta fechada e com a porta

aberta, respectivamente.

Figura 26 – Foto da maquete indicando que a senha é válida. A figura 26 ilustra o sistema indicando que a senha é válida no sistema.

53

Figura 27 – Foto da maquete indicando que a senha é válida e que a porta está aberta.

Na figura 27 mostra a seqüência de liberação do acesso com a porta sendo aberta

para a entrada ou saída do ambiente.

Com o auxílio desta maquete foi possível demonstrar na prática o desenvolvimento

teórico do projeto e realização da integração de todos os módulos do sistema de controle.

• Módulo gerenciamento do banco de dados (GDB)

A implementação deste módulo foi realizada como descrita anteriormente, sendo o

banco de dados utilizado o Microsoft Access e o tamanho de ocupação em disco da base de

dados é de 264kbytes e teve por objetivo armazenar as informações dos usuários como

laboratório, nome, data, hora e senha para posteriormente ser visto no portal de acesso.

• Módulo internet

O desenvolvimento deste módulo foi realizado como descrito anteriormente, sendo

o portal de acesso o gerenciador da base de dados, ocupando um espaço em disco de

72,2kbytes. Este portal é composto por quatro páginas web, onde é possível o

administrador ter informações sobre o portal de acesso, inserir, excluir, habilitar ou

desabilitar a permissão de acesso e busca de usuários.

• Módulo da câmera de vídeo

A módulo da câmera de vídeo foi concluído com o auxílio de um componente

encontrado no site www.codeguru.com, este componente utiliza as configurações padrão

da câmera de vídeo Creative com uma resolução de 320 x 240 e compactação de 1420,

54

podendo este ser modificado pelo administrador no próprio software da câmera de vídeo. O

software de gerenciamento da câmera de vídeo ocupa um espaço em disco de 204 kbytes.

O tempo de gravação de cada imagem depende do usuário que acessa o laboratório, assim

quando um funcionário ou um professor acessar o laboratório, o tempo máximo de abertura

da porta é de 2 minutos e de 30 segundo para outros usuários.

• Módulo de comunicação

Neste módulo foi implementado um software para a comunicação serial entre o

servidor e o sistema dedicado, sendo este software controlado pelo servidor, ocupando um

espaço em disco de 594kbytes. Nesta etapa do projeto é realizada a checagem da senha na

base de dados, ou seja, o servidor recebe a senha do sistema dedicado, assim fazendo a

averiguação da senha na base de dados. Quando esta senha for válida ou inválida o

servidor envia uma mensagem ao sistema dedicado para o mesmo executar o comando da

mensagem, mas quando o usuário digitar três senhas inválidas em um intervalo de 30

segundos o servidor transmite uma mensagem para o sistema dedicado, desta forma

bloqueando a leitura do teclado durante 30 segundos. O código fonte do software de

transmissão serial pode ser visto em anexo 4.

• Módulo teclado

Neste módulo foi implementado o software que gerencia o teclado númérico, sendo

este presente no sistema dedicado. Para a leitura das teclas pressionadas é feita uma

varredura periódica como descrito anteriormente, desta forma armazenando as teclas no

sistema dedicado, assim quando o usuário pressionar a tecla de confirma a senha é

transmitida para o servidor para sua validação.

• Módulo buzzer

O desenvolvimento desse módulo foi realizado como descrito anteriormente, assim

foi necessária a implementação de um software para gerenciamento do buzzer, sendo este

acionado sempre que uma tecla for pressionado (sem estar em penalidade) e quando o

tempo máximo de abertura da porta for ultrapassando, sendo para usuário o tempo limite

de 30 segundos e para professor ou funcionário um tempo limite de 2 minutos.

55

• Módulo indicadores

Neste módulo foi implementado um software para gerenciamento dos indicadores

(leds) como descrito anteriormente, sendo estes utilizados para informar o usuário do status

do sistema. O indicador verde informa o usuário que a senha é válida que o acesso ao

ambiente está liberado, o indicador vermelho informa que a senha do usuário está inválida,

ou está em penalidade e o indicador amarelo informa que a porta está aberta.

• Módulo sensor da porta

O módulo sensor da porta foi desenvolvido como visto anteriormente, desta forma

sendo implementado um para o gerenciamento do hardware sendo este módulo

responsável em comunicar o sistema que a porta do ambiente está fechada e que a

gravação da imagem pode ser finalizada.

• Módulo acionador da porta

Neste módulo foi implementado um software para gerenciamento do hardware para

o acionamento da porta como descrito anteriormente, assim quando um usuário digitar uma

senha e esta for válida o solenóide será acionado, assim permitindo o acesso ao ambiente.

• Módulo principal da central de controle

O módulo principal da central de acesso como visto anteriormente é composto por

um sistema mínimo com microcontrolador 8051, sendo este o coração do sistema dedicado

e o responsável pelo gerenciamento do hardware do sistema como buzzer, solenóide,

sensor de contato e indicadores ocupando um espaço de 771bytes na memória EPROM.

Este sistema funciona com uma freqüência de clock de 11.0592 MHz e utiliza uma de fonte

de 9V para alimentação do sistema.

56

5. TRABALHOS FUTUROS

Este projeto é fruto de um trabalho acadêmico e por sua vez tem algumas

características funcionais que podem ser melhoradas no futuro em outras aplicações.

Dentre elas podemos citar a utilização de um teclado alfanumérico, para possibilitar um

controle mais eficaz na entrada de usuários aos laboratórios do curso de Engenharia da

Computação; por meio de senhas com letras. O projeto pode ser expandido para outras

plataformas como, por exemplo, linux. Com a quantidade de usuários aumentando tem ser

modificada a base de dados, tendo em vista a modificação do banco de dados que

atualmente é o Access para o SQL ou Oracle. Uma outra alteração é no formato de

gravação das imagens, que atualmente é avi, para alguma outra extensão para uma maior

redução do tamanho das imagens gravadas em disco ou até mesmo pode ser utilizada uma

câmera de vídeo mais especifica do que a que foi utilizada.

A criação de criptografia na comunicação serial e na internet deve ser incorporada

para tornar a transmissão e a recepção de informações mais segura no sistema.

Um recurso futuro que poderia ser incorporado é a implementação do controle de

incêndio, onde este sistema avisa o Sistema de Controle de Acesso de Vigilância

Eletrônica, informando a liberação da abertura da porta no caso de incêndio, ou até mesmo

de qualquer outro problema que venha a surgir.

No portal de acesso também devemos levar em consideração alguns detalhes como

uma página de segurança, ou seja, uma página onde o administrador deve inserir seu login

e senha para ter um controle de aceso mais eficaz para que somente pessoas autorizadas

acessem as informações contidas nas páginas.

57

6. CONCLUSÃO

O projeto apresentado neste documento tem como objetivo descrever o

desenvolvimento de uma aplicação para o Controle de Acesso a Ambientes e Acionamento

de um Dispositivo de Vigilância Eletrônica.

Com base nas metas alcançadas e comparando com outras tecnologias este sistema

de controle de acesso a ambientes tem vantagem em relação a outros, devido a utilização

de uma câmera de vídeo que armazena as imagens em um servidor, logo outros sistemas

utilizam câmeras de vídeo armazenado as imagens em fita VHS, sendo que a fita VHS em

comparação com o disco rígido possui vida útil menor.

Um sistema deste porte tem uma grande importância, visto que a necessidade do

reconhecimento das pessoas que estão freqüentando um ambiente público onde existem

equipamentos que podem ser avariados ou, até mesmo, roubados destas instalações.

Um sistema de segurança completo a ambientes têm diversos módulos, onde o

acesso é apenas um deles, com base nisto, pode-se definir o desenvolvimento de outros

componentes, pois o projeto apresentado tem uma grande modularidade sendo facilmente

expansível.

Este projeto pode ser utilizado em ambientes domésticos, empresariais gerenciando

melhor o acesso aos ambientes especificados.

58

7. REFERÊNCIAS BIBLIOGRÁFICAS

[1] Vasconcelos, Laércio, LVC - Artigos

http://www.laercio.com.br/artigos/tutoriais/tutorial_002/art_tuto002.html, 10/04/2002.

[2] Ferlin, Edson Pedro, Microcontroladores Família 8031/8051, Apostila Técnica – Notas

de Aulas.

[3] Composição de um frame ETHERNET. Uma frame ETHERNET pode ser vista com

um contentor par, http://www.terravista.pt/enseada/7678/Frames_Ethernet.htm,

14-04-2002.

[4].Nicolosi, Denys E.C., Microcontrolador 8051 detalhado, Editora Érica Ltda, Ano 2000,

edição1.

[5] Mendonça, Alexandre, USB-Estrutura de Software,

www.clubedohardware\pesquisa\usb1.html, 03-06-1998.

[6] Mendonça, Alexandre, USB Estrutura Elétrica,

www.clubedohardware\pesquisa\usb2.html, 03-06-1998.

[7] Manual da Internet,

http://www.lerparaver.com/informatica/manualinternet.html, 14-04-2001.

59

8. ANEXOS

• Anexo 1 – Lista Geral de Componentes Eletrônicos do sistema dedicado;

• Anexo 2 – Diagrama de Fluxo de Dados do Sistema;

• Anexo 3 – Listagem do Código Fonte do Sistema Dedicado;

• Anexo 4 – Listam do Código Fonte do Módulo Principal do Servidor.

60

Anexo 1 - Lista Geral dos Componentes Eletrônicos

Listagem dos componentes eletrônicos utilizados no sistema dedicado e na lógica

de controle.

• Circuitos Integrados:

o U1 – Microcontrolador 80c31

o U2 – Latch 74LS373

o U4 – Memória EPROM 27C256

o U5 – Regulador de tensão LM7805

o Decodificador 74f148

o Porta lógica NAND

o Relé (Solenóide) 6v AS1RC1

o Sensor de contato Relay SPSTHE

o Buzzer 21N30W 6v AS1RC1

• Resistores:

o R1 – 10KΩ

o R2, R3, R4, R5 - 4K7Ω

o R6 - 100Ω

o R7, R8, R9 10kΩ

• Capacitores:

o C1 - 10ìF/16V

o C2, C3 – 33pF

o C4 - 470ì F/16V

o C5 - 100ì F/16V

o C6, C7, C8, C9 – 100nF

• Diodos:

o D1, D2, D3 – 1N4148

61

• Cristal:

o Xtal – 11,0592MHz

• Transistor:

o Q1 – BC327B

o Q2 – BC337B

• Conectores:

o BAT – clip para bateria 9V

o DB9 – conector RS232 fêmea

o RESET – push buttom, normalmente aberto

o POWER ON – chave liga-desliga

o PLUG VCC – conector jack para alimentação

• Barra de conectores fêmea para barramento de endereços, dados, portas P1 e P3

• Bateria 9V

• LED’s

62

Anexo 2 - Diagrama de Fluxo de Dados do Sistema

Diagrama de Fluxo de Dados de Nível 0

Usuário

Administrador

Sistema de

Controle Led

Câmera

Sensor de Contato

Senha

Status do sensor

Logon e Senha

Administrador Informações pedidas pelo administrador

Acionamento da câmera

Acesso (Negado / Liberado) Mensagem ao usuário

Acionamento do Solenóide

Porta aberta

Cadastro

Inclusão de usuários

Diagrama de Fluxo de Dados de Nível 1

Administrador Sistema Micro-

processado

Solicitação de entrada/Saída

usuário

Processar senha

Exibir Mensagem de status

Monitorar Sensor

Senha

Sensor de Contato

Status do sensor

Imagens

Acionamento da Câmera

Armazenamento imagens

Led

Checagem da Senha

senha

Logon e Senha

Senha

Mensagem ao usuário

Interface com o

usuário

Câmera

Acionamento do Solenóide

Porta aberta

Visualizar

imagem

Cadastro

Inclusão de usuários e liberação de Acessos

Envia mensagem

do completo fechamento

da porta

63

Cadastro

Usuários

Colaborador

laboratório Acesso Armazena o acesso ao ambiente

Armazena Informações do usuário

Armazena Informações

do colaborador

Armazena Informações

do laboratório

Diagrama de Fluxo de Dados de Nível 2 - Cadastro

64

Anexo 3 - Listagem do Código Fonte do Sistema Dedicado

;================================================================== ; Declaracao de Bits 20-2F ;================================================================== STATE_FLAGS .EQU 20H ; SEND_OK .REG 20H.0 ; bit que indica que ja foi transmitida senha RECEP_OK .REG 20H.1 ; bit que indica que senha recebida estava ok PORTA_ABERTA .REG 20H.2 ; bit de indicacao de que PORTA foi fechada TIMER_FLAG .REG 20H.3 ; ve se tem que tratar teclado, senao eh rotina que trata porta entao, so usa TIMER SENHA_COLAB_FLAG .REG 20H.4 ; bit que indica que foi digitada senha de colaborador TEC_LOCK_FLAG .REG 20H.5 ; bit que indica que teclado deve permanecer sem uso durante 30 segundos ;================================================================== ; Declaracao de variaveis ;================================================================== TECLAS .EQU 33H ; armazena a tecla pressionada TECLAS_BUF .EQU 34H ; verifica ultima tecla TECLAS_COUNT .EQU 35H ; contador de teclas SERIAL_IN .EQU 36H ; armazena conteudo que chegou da serial SENHA1 .EQU 37H ; armazena digito 1 de senha em ASCII SENHA2 .EQU 38H ; armazena digito 2 de senha em ASCII SENHA3 .EQU 39H ; armazena digito 3 de senha em ASCII SENHA4 .EQU 3AH ; armazena digito 4 de senha em ASCII SENHA5 .EQU 3BH ; armazena digito 5 de senha em ASCII SENHA6 .EQU 3CH ; armazena digito 6 de senha em ASCII ISR_TEMP .EQU 3DH ; temporario pra ISR TEMP1 .EQU 3EH ; temporario de uso geral SEGUNDO .EQU 3FH ; ARMAZENA SEGUNDOS SEG_FRAC .EQU 40H ; ARMAZENA FRACOES DE SEGUNDOS COUNT_REC .EQU 41H ; contador de bytes recebidos ;================================================================== ; Declaracao de constantes ;================================================================== T0_LOW .REG AFH ; VALOR INICIAL DE CONT TL0 T0_HI .REG 3CH ; VALOR INICIAL DO CONT TH0 T1_LOW .REG F4H ; VALOR DE AJUSTE DO TIMER1 PRA BAUD-RATE DE 9600bps T0L_TX .REG 00H ; VALOR USADO PRA WAIT DE TRANSMISSAO SEG_FRAC_BASE .REG 14H ; VALOR BASE DE SEG_FRAC PRA COMPLETAR 1 SEGUNDO PORTA_TIME_BASE .REG 1EH ; TEMPO BASE DE PORTA ABERTA PRA ESTUDANTE 1Eh=30seg PORTA_TIME_BASE2 .REG 78H ; TEMPO BASE DE PORTA ABERTA PRA MODO COLABORADOR 78H=120seg=2min

65

SENHA_ESTUD .REG 45H ; Recepcao de senha OK letra "E" SENHA_COLAB .REG 43H ; Recepcao de senha OK letra "C" SENHA_ERRADA .REG 49H ; Recepcao de dado indicando senha invalia letra "I" SENHA_ALARME .REG 54H ; Recepcao de dado indicando senha digitada 3 vezes errada letra "T" PORTA_LOCKED .REG 50H ; Transmissao de dado indicando porta fechada letra "P" TECLADO_TIME_BASE .REG 1EH ; Tempo de teclado travado ;================================================================== ; Inicializacao do programa principal ;================================================================== ORG 000h RESET: jmp INIT_FILES_CON ; inicializacao do programa ;================================================================== ; Rotina do timer 0 ;================================================================== ORG 00BH ; inicializacao do timer0 INT_TIMER0: acall INT_TIMER_INI ; chama rotina de tratamento de INT de Timer0 RETI ; retorno da INT_TIMER0 ;================================================================== ; Rotina de Tratamento de INT1 (SENSOR DE CONTATO DA PORTA) ;================================================================== ORG 013H ; trat. int INT1 INT_SENSOR: acall INT_SENSOR_INI ; RETI ; retorna da Interrupcao ;================================================================== ; Rotina de Serial ;================================================================== ORG 023H ; trat. int TX SERIAL: jnb TI, RECEBE_INI ; ve se eh bit de transmissao clr TI ; se sim, limpa flag de Int de TX jmp FIM_SERIAL ; se ja tratou tudo, pula pra fim RECEBE_INI: jnb RI, FIM_SERIAL ; ve se eh bit de recepcao clr RI ; indica que recebeu byte mov SERIAL_IN, SBUF ; move conteudo que recebeu, pra file especifico FIM_SERIAL: RETI ; retorna ORG 40h ;================================================================== ; Inicio do programa ;==================================================================

66

INIT_FILES_CON: mov PSW, #00H ; File de STATUS do sitema mov IP, #00H ; nenhuma prioridade definida mov IE, #82H ; habilitadas INT GERAL, de SERIAL e de TIMER0 mov TMOD, #21H ; TIMER1 MODO = 2 Temporizador, TIMER0 MODO = 1 TEMPORIZADOR mov TCON, #50H ; RUN DO TM1 E RUN DO TM0 mov SCON, #50H ; MODO 1 DE TX ASSINCRONO mov PCON, #00H ; setb P3.3 ; desativa solenoide setb P3.4 ; desativa led de porta aberta setb P3.5 ; desativa buzzer setb P3.6 ; desativa led de senha errada setb P3.7 ; desativa led de senha OK INIT_FILES: mov TECLAS, #00H ; inicializa files de teclas mov TECLAS_BUF, #00H ; mov TECLAS_COUNT, #00H ; mov SEGUNDO, #00H ; zera contadores de tempo mov SEG_FRAC, #SEG_FRAC_BASE; senao, atualiza file pra proxima interacao mov SERIAL_IN, #00 ; inicializa file de serial mov TEMP1, #00 ; zera temps mov SENHA1, #00 ; zera files que contem senha mov SENHA2, #00 ; zera files que contem senha mov SENHA3, #00 ; zera files que contem senha mov SENHA4, #00 ; zera files que contem senha mov SENHA5, #00 ; zera files que contem senha mov SENHA6, #00 ; zera files que contem senha mov COUNT_REC, #08H ; move quantos caracteres ira receber INIT_TIMER: mov TL0, #T0_LOW ; valor baixo mov TH0, #T0_HI ; valor alto mov TL1, #FDH ; valor de recarga do Timer1, pra TX 9600bps mov TH1, #FDH ; INIT_BITS: clr SEND_OK ; limpa bits de transmissao clr RECEP_OK ; e recepcao de dados via Serial clr PORTA_ABERTA ; limpa bit de Estado de Porta clr TIMER_FLAG ; bit de indicacao entre teclado e timer clr SENHA_COLAB_FLAG ; reset senha de colaborador clr TEC_LOCK_FLAG ; reset senha de teclado bloqueado jmp STANDBY ;

67

;================================================================== ; ROTINAS QUE SAO CHAMADAS COM CALL ;================================================================== ;================================================================== ; Tratamento da rotina de INT0 ;================================================================== INT_SENSOR_INI: clr IE1 ; limpa flag de Interrupcao de INT1 MOV A, #04 ; ANL A, STATE_FLAGS ; MOV R1, #04 ; XRL A, R1 ; mov STATE_FLAGS, A ; RET ; ;================================================================== ; Tratamento da rotina de Timer0 ;================================================================== INT_TIMER_INI: mov TL0, #T0_LOW ; valor baixo mov TH0, #T0_HI ; valor alto clr TF0 ; limpa flag de overflow de TIMER0 jb TIMER_FLAG, TRATA_TIMER ; clr TR0 ; desliga timer, pra nao dar novo overflow durante tratamento ACALL LE_TECLADO ; chama rotina de leitura do teclado setb p3.5 ; desliga buzzer antes de voltar a rotina setb TR0 ; jmp TIMER0_END ; TRATA_TIMER: dec SEG_FRAC ; decrementa contador de fracoes de segundo mov A, SEG_FRAC ; move pra Acumulador, pra ver se ja zerou jnz TIMER0_END ; se nao, manda retornar mov SEG_FRAC, #SEG_FRAC_BASE; senao, atualiza file pra proxima interacao inc SEGUNDO ; e incrementa contador de segundos TIMER0_END: RET ; retorno da INT_TIMER0 ;================================================================== ; Rotina de leitura do teclado ;================================================================== LE_TECLADO: mov TECLAS, #00 ; zera file clr P1.0 ; ACIONA A COLUNA 1 (aciona com nivel baixo) nop ; espera estabilizar barramento nop ; mov A, P1 ; move conteudo da Porta pra acumulador setb P1.0 ; desativa novamente coluna 1 cpl A ; complementa porta pra trabalhar com niveis logicos certos mov r1, #78H ; ajusta valor em r1, pra filtrar somente linhas do teclado ANL A, r1 ; nao altera conteudo da Porta mov ISR_TEMP, A ; salva valor em temporario jnz COL_1 ; se tinha alguma coisa, manda verificar linhas clr P1.1 ; ACIONA A COLUNA 2 (aciona com nivel baixo)

68

nop ; espera estabilizar barramento nop ; mov A, P1 ; move conteudo da Porta pra acumulador setb P1.1 ; desativa novamente coluna 2 cpl A ; complementa porta pra trabalhar com niveis logicos certos mov r1, #78H ; ajusta valor em r1, pra filtrar somente linhas do teclado ANL A, r1 ; nao altera conteudo da Porta mov ISR_TEMP, A ; salva valor em temporario jnz COL_2 ; se tinha alguma coisa, manda verificar linhas clr P1.2 ; ACIONA A COLUNA 3 (aciona com nivel baixo) nop ; espera estabilizar barramento nop ; mov A, P1 ; move conteudo da Porta pra acumulador setb P1.2 ; desativa novamente coluna 3 cpl A ; complementa porta pra trabalhar com niveis logicos certos mov r1, #78H ; ajusta valor em r1, pra filtrar somente linhas do teclado ANL A, r1 ; nao altera conteudo da Porta mov ISR_TEMP, A ; salva valor em temporario jnz COL_3 ; se tinha alguma coisa, manda verificar linhas mov TECLAS, #00 ; zera file RET ; retorna da interrupcao de timer 0 ;================================================================== ; Rotina de conferencia de linhas da coluna 1 ;================================================================== COL_1: clr P3.5 ; deixa sirene apertada enquanto pressionado botao clr P1.0 ; ACIONA A COLUNA 1 (aciona com nivel baixo) mov A, ISR_TEMP ; pega valor original das linhas mov r1, #08 ; move valor da 1 linha ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta) jz COL1_LIN_2 ; se zerou, manda verificar proxima linha WAIT_TECLA1: jnb P1.3, WAIT_TECLA1 ; aguarda tecla ser solta mov TECLAS, #81H ; se era tecla 1, move conteudo RET ; retorna da interrupcao de timer 0 COL1_LIN_2: mov A, ISR_TEMP ; pega valor original das linhas mov r1, #10H ; ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta) jz COL1_LIN_3 ; WAIT_TECLA4: jnb P1.4, WAIT_TECLA4 ; aguarda tecla ser solta mov TECLAS, #84H ; tecla 4 RET ; retorna da interrupcao de timer 0 COL1_LIN_3: mov A, ISR_TEMP ; pega valor original das linhas mov r1, #20h ; ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta) jz COL1_LIN_4 ; WAIT_TECLA7: jnb P1.5, WAIT_TECLA7 ; aguarda tecla ser solta

69

mov TECLAS, #87H ; tecla 7 RET ; retorna da interrupcao de timer 0 COL1_LIN_4: jnb P1.6, COL1_LIN_4 ; aguarda tecla ser solta mov TECLAS, #10H ; tecla * limpa a senha RET ; retorna da interrupcao de timer 0 ;================================================================== ; Rotina de conferencia de linhas da coluna 2 ;================================================================== COL_2: clr P3.5 ; deixa sirene apertada enquanto pressionado botao clr P1.1 ; ACIONA A COLUNA 2 (aciona com nivel baixo) mov A, ISR_TEMP ; pega valor original das linhas mov r1, #08 ; ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta) jz COL2_LIN_2 ; WAIT_TECLA2: jnb P1.3, WAIT_TECLA2 ; aguarda tecla ser solta mov TECLAS, #82H ; tecla 2 RET ; retorna da interrupcao de timer 0 COL2_LIN_2: mov A, ISR_TEMP ; pega valor original das linhas mov r1, #10H ; ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta) jz COL2_LIN_3 ; WAIT_TECLA5: jnb P1.4, WAIT_TECLA5 ; aguarda tecla ser solta mov TECLAS, #85H ; tecla 5 RET ; retorna da interrupcao de timer 0 COL2_LIN_3: mov A, ISR_TEMP ; pega valor original das linhas mov r1, #20H ; ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta) jz COL2_LIN_4 ; WAIT_TECLA8: jnb P1.5, WAIT_TECLA8 ; aguarda tecla ser solta mov TECLAS, #88H ; tecla 8 RET ; retorna da interrupcao de timer 0 COL2_LIN_4: jnb P1.6, COL2_LIN_4 ; aguarda tecla ser solta mov TECLAS, #80H ; valor da tecla 0 RET ; retorna da interrupcao de timer 0 ;================================================================== ; Rotina de conferencia de linhas da coluna 3 ;================================================================== COL_3: clr P3.5 ; deixa sirene apertada enquanto pressionado botao clr P1.2 ; ACIONA A COLUNA 3 (aciona com nivel baixo) mov A, ISR_TEMP ; pega valor original das linhas mov r1, #08 ; ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta)

70

jz COL3_LIN_2 ; WAIT_TECLA3: jnb P1.3, WAIT_TECLA3 ; aguarda tecla ser solta mov TECLAS, #83H ; tecla 3 RET ; retorna da interrupcao de timer 0 COL3_LIN_2: mov A, ISR_TEMP ; pega valor original das linhas mov r1, #10h ; ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta) jz COL3_LIN_3 ; WAIT_TECLA6: jnb P1.4, WAIT_TECLA6 ; aguarda tecla ser solta mov TECLAS, #86H ; tecla 6 RET ; retorna da interrupcao de timer 0 COL3_LIN_3: mov A, ISR_TEMP ; pega valor original das linhas mov r1, #20h ; ANL A, r1 ; ve se esta acionada (nao altera conteudo da Porta) jz COL3_LIN_4 ; WAIT_TECLA9: jnb P1.5, WAIT_TECLA9 ; aguarda tecla ser solta mov TECLAS, #89H ; tecla 9 RET ; retorna da interrupcao de timer 0 COL3_LIN_4: jnb P1.6, COL3_LIN_4 ; aguarda tecla ser solta mov TECLAS, #30H ; tecla # confirma a senha digitada RET ; retorna da interrupcao de timer 0 ;================================================================== ; ROTINA DE TRANSMISSAO DE SENHA ;================================================================== ENVIA: clr TI ; limpa bit antes de mandar alguma coisa clr ES ; desabilita novamente INT de SERIAL mov SBUF, #41H ; Indica inicio de Transmissao Caracter A call ENVIA_LOOP ; loop pra esperar dado ser enviado ENVIA_SENHA6: mov A, SENHA6 ; move pra acumulador pra ver se esta zerado jnz SENHA_ORG6 ; se nao tiver zerado, manda enviar dado que contem em senha (SENHA_ORIGINAL) mov SENHA6, #30H ; senao, manda enviar zero em ASCII SENHA_ORG6: mov SBUF, SENHA6 ; call ENVIA_LOOP ; loop pra esperar dado ser enviado ENVIA_SENHA5: mov A, SENHA5 ; move pra acumulador pra ver se esta zerado jnz SENHA_ORG5 ; se nao tiver zerado, manda enviar dado que contem em senha (SENHA_ORIGINAL) mov SENHA5, #30H ; senao, manda enviar zero em ASCII SENHA_ORG5: mov SBUF, SENHA5 ;

71

call ENVIA_LOOP ; loop pra esperar dado ser enviado ENVIA_SENHA4: mov A, SENHA4 ; move pra acumulador pra ver se esta zerado jnz SENHA_ORG4 ; se nao tiver zerado, manda enviar dado que contem em senha (SENHA_ORIGINAL) mov SENHA4, #30H ; senao, manda enviar zero em ASCII SENHA_ORG4: mov SBUF, SENHA4 ; call ENVIA_LOOP ; loop pra esperar dado ser enviado ENVIA_SENHA3: mov A, SENHA3 ; move pra acumulador pra ver se esta zerado jnz SENHA_ORG3 ; se nao tiver zerado, manda enviar dado que contem em senha (SENHA_ORIGINAL) mov SENHA3, #30H ; senao, manda enviar zero em ASCII SENHA_ORG3: mov SBUF, SENHA3 ; call ENVIA_LOOP ; loop pra esperar dado ser enviado ENVIA_SENHA2: mov A, SENHA2 ; move pra acumulador pra ver se esta zerado jnz SENHA_ORG2 ; se nao tiver zerado, manda enviar dado que contem em senha (SENHA_ORIGINAL) mov SENHA2, #30H ; senao, manda enviar zero em ASCII SENHA_ORG2: mov SBUF, SENHA2 ; call ENVIA_LOOP ; loop pra esperar dado ser enviado ENVIA_SENHA1: mov A, SENHA1 ; move pra acumulador pra ver se esta zerado jnz SENHA_ORG1 ; se nao tiver zerado, manda enviar dado que contem em senha (SENHA_ORIGINAL) mov SENHA1, #30H ; senao, manda enviar zero em ASCII SENHA_ORG1: mov SBUF, SENHA1 ; call ENVIA_LOOP ; loop pra esperar dado ser enviado RET ; retorna da rotina de Transmissao de SENHA ;================================================================== ; ROTINA PRA ENVIAR UM BYTE ;================================================================== ENVIA_LOOP: jNb TI, ENVIA_LOOP ; nop ; clr TI ; limpa flag de Transmissao RET ; ;================================================================== ; Tratamento de teclas, quando pressionadas ;================================================================== TRATA_TECLA: clr TR0 ; mov r1, TECLAS ; move pra temporario cjne r1, #30H, DEL_TECLA ; se nao for tecla de enviar senha, manda verificar se nao eh pra apagar TRANSMITE_SENHA:

72

call ENVIA ; chama rotina de transmissao de SENHA setb SEND_OK ; flag de indicacao que transmitiu senha jmp CLEAR_TECLAS ; manda apagar conteudo que tem em senha, pra nao ser retransmitido ultimo codigo ;================================================================== ; ROTINA QUE APAGA FILES QUE CONTEM SENHA ;================================================================== DEL_TECLA: mov r1, TECLAS ; move pra temporario cjne r1, #10H, ACUM_TECLA ; ve se tem que apagar ultimo conteudo, se nao, manda acumular teclas CLEAR_TECLAS: mov SENHA1, #00 ; manda apagar senha digitada mov SENHA2, #00 ; mov SENHA3, #00 ; mov SENHA4, #00 ; mov SENHA5, #00 ; mov SENHA6, #00 ; jmp TRATA_TECLA_FIM ; e retorna ao loop principal ;================================================================== ; ROTINA TRANSFORMA SENHA EM ASCII PRA SER TRANSMITIDA ;================================================================== ACUM_TECLA: anl TECLAS, #0FH ; filtra tecla antes de transformar em ASCII mov r1, #30H ; move valor 30H, pra transformar tecla em numero ASCII mov A, TECLAS ; move valor pra fazer a soma add A, r1 ; transforma em ASCII mov SENHA6, SENHA5 ; e faz um shift register dos numeros digitados mov SENHA5, SENHA4 ; mov SENHA4, SENHA3 ; mov SENHA3, SENHA2 ; mov SENHA2, SENHA1 ; mov SENHA1, A ; TRATA_TECLA_FIM: setb TR0 ; reativa run do Timer0 clr TIMER_FLAG ; garante flag desabilitado pra ser tratado teclado mov TECLAS, #00 ; zera conteudo de teclas depois de tratar jmp STANDBY ; e retornaao loop principal ;================================================================== ; Rotina de verificacao de estados: ; - Se tem tecla, manda tratar ; - Enquanto nao transmitiu nada, nao trata recepcao, nem porta ; - Se recebeu senha valida, manda tratar Porta ;================================================================== STANDBY: jb TEC_LOCK_FLAG, TECLADO_TRAVADO ; se tem flag de teclado travado, manda pra rotina que espera 30 segundos mov A, TECLAS ; move pra temporario jnz TRATA_TECLA ; ve se tem tecla, se sim, pula jb RECEP_OK, TRATA_PORTA ; se recebeu senha valida, manda tratar Porta

73

jb SEND_OK, TRATA_RECEPCAO_INI ; se ja transmitiu, manda tratar recepcao jmp STANDBY ; ;==================================================================================== ; TRATAMENTO DE ESPERA DE 30 SEGUNDOS, CASO SENHA TENHA SIDO DIGITADA 3 VEZES ERRADO ;===================================================================================== TECLADO_TRAVADO: clr P3.6 ; manda acender led se senha invalida setb TIMER_FLAG ; manda tratar so TIMER na rotina de TIMER0 mov SEGUNDO, #00 ; zera contagem de segundos TECLADO_TRAVADO_LOOP: mov A, SEGUNDO ; move pra acumulador file de segundos xrl A, #TECLADO_TIME_BASE ; pra ver se completou ja tempo de Teclado travado jnz TECLADO_TRAVADO_LOOP ; se nao ainda, fica no loop clr TEC_LOCK_FLAG ; depois que completou tempo, zera flag clr TIMER_FLAG ; apaga flag pra voltar a tratar teclado setb P3.6 ; manda apagar led se senha invalida jmp STANDBY ; retorna a rotina de standby ;================================================================== ; Tratamento de Porta, quando recebe senha valida ;================================================================== TRATA_PORTA: mov SEGUNDO, #00H ; zera contagem de segundos clr RECEP_OK ; garante flag desabilitado, pra nao fazer tratamento de PORTA novamente clr PORTA_ABERTA ; apaga flag pra proxima interacao clr P3.3 ; ativa solenoide, pra que Porta possa ser Aberta setb TIMER_FLAG ; manda tratar so TIMER na rotina de TIMER0 TRATA_PORTA_LOOP: jb PORTA_ABERTA, TRATA_PORTA_LOOP2 ; Ve se ja foi aberta porta, se sim, manda so verificar se fechou jnb P3.2, TRATA_PORTA_LOOP3 ; Se nao ainda, manda conferir so tempo clr P3.4 ; liga led, indicando que Porta esta aberta setb PORTA_ABERTA ; se abriu PORTA, habilita flag TRATA_PORTA_LOOP2: jnb P3.2, TRATA_PORTA_TX ; se porta fechou, pula pra transmitir dado de que porta fechou TRATA_PORTA_LOOP3: jnb SENHA_COLAB_FLAG, TRATA_PORTA_LOOP4 ; se esta ativa senha de colaborador, deixa tempo maior mov A, SEGUNDO ; move pra acumulador file de segundos xrl A, #PORTA_TIME_BASE2 ; pra ver se completou ja tempo de porta Aberta, do modo Colaborador jnz TRATA_PORTA_LOOP ; se nao ainda, fica no loop jmp ATIVA_SIRENE ; se finalizou, manda verificar se porta ainda esta aberta TRATA_PORTA_LOOP4: mov A, SEGUNDO ; move pra acumulador file de segundos xrl A, #PORTA_TIME_BASE ; pra ver se completou ja tempo de porta Aberta jnz TRATA_PORTA_LOOP ; se nao ainda, fica no loop

74

ATIVA_SIRENE: jnb PORTA_ABERTA, TRATA_PORTA_TX ; Se completou tempo e bit nao chegou a ser ativo, Porta nao chegou a ser aberta ATIVA_SIRENE_LOOP: clr P3.5 ; mov A, SEGUNDO ; anl A, #01H ; jz ATIVA_SIRENE_LOOP ; SIRENE_ON: setb P3.5 ; mov A, SEGUNDO ; anl A, #01H ; jnz SIRENE_ON ; jb P3.2, ATIVA_SIRENE_LOOP ; enquanto nao tiver bit, fica no loop TRATA_PORTA_TX: setb P3.5 ; desativa buzzer setb P3.3 ; desativa solenoide, trancando PORTA novamente setb P3.4 ; apaga led, indicando PORTA fechada setb P3.7 ; apaga led, de Senha OK clr PORTA_ABERTA ; apaga flag pra proxima interacao clr TIMER_FLAG ; apaga flag pra voltar a tratar teclado clr SENHA_COLAB_FLAG ; garante flag de colaborador desativado, pra proxima interacao mov SERIAL_IN, #PORTA_LOCKED ; move dado pra ser transmitido indicando que PORTA foi fechada TRANSMITE_BYTE: mov SBUF, SERIAL_IN ; move valor recebido devolta pra Transmissao, pra ser mostrado na tela do Hyper Terminal WAIT_TX: jnb TI, WAIT_TX ; aguarda byte ser retransmitido jmp TRATA_RECEPCAO_END ; retorna ao loop ;============================================================================ ; TRATAMENTO DE RECEPCAO DE DADOS, INDICANDO SENHA VALIDA OU INVALIDA ;============================================================================ TRATA_RECEPCAO_INI: clr RI ; indica que recebeu byte mov SERIAL_IN, #00H ; zera file pra nao transmitir novamente setb ES ; habilita INT de SERIAL clr TR0 ; desliga timer, pra nao dar novo overflow durante tratamento TRATA_RECEPCAO: mov A, SERIAL_IN ; ve se chegou alguma coisa jz TRATA_RECEPCAO ; aguarda algum dado chegar clr ES ; desabilita interrupcao de SERIAL mov A, SERIAL_IN ; xrl A, #SENHA_ALARME ; se foi byte valido, manda tratar jz TRAVA_TECLADO ; se era, manda tratar senha de que trava teclado por 30 segundos mov A, SERIAL_IN ; xrl A, #SENHA_COLAB ; se foi byte valido, manda tratar jz SENHA_COLABORADOR ; se era, manda tratar senha de colaborador mov A, SERIAL_IN ;

75

xrl A, #SENHA_ESTUD ; se foi byte valido, manda tratar jz SENHA_VALIDA ; se era, manda tratar senha valida mov A, SERIAL_IN ; xrl A, #SENHA_ERRADA ; se foi byte invalido, manda tratar jz SENHA_INVALIDA ; se era, manda tratar senha invalida setb P3.6 ; manda apagar led se senha invalida jmp TRATA_RECEPCAO_END ; manda tratar senha invalida TRAVA_TECLADO: setb TEC_LOCK_FLAG ; aciona tecla de que deve manter teclado travado por 30 segundos jmp TRATA_RECEPCAO_END ; retorna ao loop SENHA_COLABORADOR: setb SENHA_COLAB_FLAG ; seta flag de que era senha de Colaborador SENHA_VALIDA: setb P3.6 ; manda apagar led se senha invalida clr P3.7 ; manda acender led se senha eh valida setb RECEP_OK ; se foi dado valido, seta bit indicando jmp TRATA_RECEPCAO_END ; retorna ao loop SENHA_INVALIDA: clr RECEP_OK ; indica senha invalida setb P3.7 ; manda apagar led se senha valida clr P3.6 ; manda acender led se senha invalida TRATA_RECEPCAO_END: mov SERIAL_IN, #00H ; zera file pra nao transmitir novamente clr TI ; limpa bit antes de mandar alguma coisa clr SEND_OK ; limpa flag pra nova transmissao clr TIMER_FLAG ; apaga flag pra voltar a tratar teclado setb TR0 ; mov SEGUNDO, #00H ; zera contagem de segundos WAIT_SEGUNDO: mov A, SEGUNDO ; move pra acumulador file de segundos xrl A, #01 ; deixa um segundo sem receber outra senha jnz WAIT_SEGUNDO ; se nao ainda, fica no loop jmp STANDBY ; retorna ao loop END

76

Anexo 4 – Listam do Código Fonte do Módulo Principal do Servidor

Main.h //--------------------------------------------------------------------------- class TFrmTransmite : public TForm __published: // IDE-managed Components TButton *btConectar; TLabel *LabStatus; TTimer *TimerRecebe; TADOQuery *command; TADODataSet *ADODataSet2; TADOConnection *ADOConnection2; TTimer *Timer30; TMainMenu *MainMenu1; TMenuItem *mAjuda; void __fastcall btConectarClick(TObject *Sender); void __fastcall Button2Click(TObject *Sender); void __fastcall TimerRecebeTimer(TObject *Sender); void __fastcall Timer30Timer(TObject *Sender); void __fastcall mAjudaClick(TObject *Sender); private: // User declarations int flag; public: // User declarations __fastcall TFrmTransmite(TComponent* Owner); ; //--------------------------------------------------------------------------- extern PACKAGE TFrmTransmite *FrmTransmite; //--------------------------------------------------------------------------- #endif //--------------------------------------------------------------------------- Main.cpp //--------------------------------------------------------------------------- #include <vcl.h> #include <iostream> #include <systdate.h> #include <windows.h> #pragma hdrstop #include "main.h" #include "Ajuda.h" #include "port.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TFrmTransmite *FrmTransmite; Port *obj; int contador=0; int cont = 1; int envia = 0; //--------------------------------------------------------------------------- void __fastcall TFrmTransmite::btConectarClick(TObject *Sender)

77

this->TimerRecebe->Enabled = true; obj = new Port("COM1",9600); if (obj->Ret_erro()==0) LabStatus->Caption = "INICIOU NORMAL"; btConectar->Enabled = false; else if (obj->Ret_erro()==1) LabStatus->Caption = "NÃO CONSEGUIU INICIAR O HANDLE"; else if (obj->Ret_erro()==2) LabStatus->Caption = "NÃO CONSEGUIU PEGAR OS VALORES DO DCB"; else if (obj->Ret_erro()==3) LabStatus->Caption = "NÃO CONSEGUIU COLOCAR VALORES PARA O DCB"; else if (obj->Ret_erro()==4) LabStatus->Caption = "NÃO CONSEGUIU INICIAR O TEMPO CORRETAMENTE"; //--------------------------------------------------------------------------- void __fastcall TFrmTransmite::Button2Click(TObject *Sender) envia=0; //--------------------------------------------------------------------------- void __fastcall TFrmTransmite::TimerRecebeTimer(TObject *Sender) AnsiString strTmp; static AnsiString senha, hPermissao; int ID = 0; int i; TimerRecebe->Enabled = false; if ( senha.Length() == 6) obj->enviatexto(hPermissao[1]); // this->LabStatus->Caption = hPermissao[1]; senha = ""; else strTmp = obj->recebetexto(); //Se Porta fechada recebo a letra P do 8051 if(strTmp == "P") //ShowMessage("A Porta está fechada"); hPermissao = "P"; obj->enviatexto(hPermissao[1]); SendMessage( GetForegroundWindow(),WM_CLOSE,0,0); if(strTmp == "A") for(int i=0;i<6;i++) senha += obj->recebetexto(); command->Close(); command->SQL->Clear(); command->SQL->Add("SELECT ID FROM qryAcessoEst WHERE Senha ='"+ senha +"';"); command->Open(); if(command->RecordCount == 1)

78

AnsiString sTmp; AnsiString img; ID = command->Fields->Fields[0]->AsInteger; command->Close(); command->SQL->Clear(); ShortDateFormat = "d/m/yyyy"; LongTimeFormat = "hh:nn:ss"; img = IntToStr(ID); img += " "; img += Now().DateTimeString(); command->SQL->Add("INSERT INTO tblAcesso_Estudante VALUES("+IntToStr(ID)+",1,'"+Now().DateTimeString()+"','"+img+"','c:\\Controle\\Estudante')"); command->ExecSQL(); //senha válida de Estudante envia letra E para o 8051 hPermissao = "E"; obj->enviatexto(hPermissao[1]); sTmp = IntToStr(ID); sTmp += ";"; sTmp += "31"; sTmp += ";"; sTmp += "c:\\Controle\\estudante\\"; sTmp += ";"; envia = 0; // Habilita o envio dos caracteres WinExec(("c:\\Controle\\CAM.exe "+sTmp).c_str(), 0); Timer30->Enabled = false; flag = 0; contador = 0; else command->Close(); command->SQL->Clear(); command->SQL->Add("SELECT ID FROM qryAcessoColab WHERE Senha ='"+ senha +"';"); command->Open(); // abre conexao com o banco de dados if( command->RecordCount == 1) AnsiString sTmp; AnsiString img; ID = command->Fields->Fields[0]->AsInteger; command->Close(); //fecha conexao com o banco de dados command->SQL->Clear(); ShortDateFormat = "d/m/yyyy"; //set o formato LongTimeFormat = "hh:nn:ss"; img = IntToStr(ID); img += " "; img += Now().DateTimeString(); command->SQL->Add("INSERT INTO tblAcesso_Colaborador VALUES("+IntToStr(ID)+",1,'"+Now().DateTimeString()+"','"+img+"','c:\\Controle\\Colaborador')"); command->ExecSQL(); //senha válida de colaborador hPermissao = "C"; obj->enviatexto(hPermissao[1]); sTmp = IntToStr(ID); sTmp += ";"; sTmp += "121"; sTmp += ";"; sTmp += "c:\\Controle\\colaborador\\"; sTmp += ";";

79

envia = 0; // Habilita o envio dos caracteres WinExec(("c:\\Controle\\CAM.exe "+sTmp).c_str(), 0); Timer30->Enabled = false; flag = 0; contador = 0; //senha inválida else //Quantidade de Senha Invalida < 30 segundos envia a letra T para o 8051 if(contador==2 && flag) hPermissao = "T";//penalidade obj->enviatexto(hPermissao[1]); envia = 0; // Habilita o envio dos caracteres contador = 0; //senha inválida hPermissao = "I"; obj->enviatexto(hPermissao[1]); envia = 0; // Habilita o envio dos caracteres contador=contador+1; //penalidade se senha for inválida + que 3 vezes em um //tempo de 30 segundos Aviso ao 8051 para fornecer a penalidade if (hPermissao == "I") flag = 1; Timer30->Enabled = true; ID = 0; TimerRecebe->Enabled = true; //--------------------------------------------------------------------------- void __fastcall TFrmTransmite::Timer30Timer(TObject *Sender) flag = 0; Port.h //--------------------------------------------------------------------------- #ifndef portH #define portH //--------------------------------------------------------------------------- class Port private: DCB dcbStatus; // contém as configuracoes da porta de comunicacao BOOL fSucesso; // flag para a verificacao de sucesso da ultoma operacao char Porta[5]; int BaudRate, erro; HANDLE hComm; // handle para a porta de comunicacao COMMTIMEOUTS Timeouts; // contém as informações de timeouts da porta de comunicação public: Port(AnsiString, long); ~Port(void);

80

int Ret_erro(); void enviatexto(char); char recebetexto(void); ; #endif Port.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "port.h" #include "main.h" #include <string.h> //--------------------------------------------------------------------------- Port :: Port(AnsiString aPorta, long aVelocidade) erro = 0; strcpy(Porta,aPorta.c_str()); BaudRate = aVelocidade; // Tenta abrir a porta de comunicação... hComm = CreateFile(Porta,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); // Se houve um erro, vê o que aconteceu... if(hComm == INVALID_HANDLE_VALUE) erro=1; // Le as configurações da porta recém aberta fSucesso = GetCommState(hComm, &dcbStatus); if(!fSucesso) CloseHandle(hComm); // fecha a porta de comunicação... erro=2; return; dcbStatus.BaudRate = BaudRate; dcbStatus.ByteSize = 8; dcbStatus.Parity = NOPARITY; dcbStatus.StopBits = ONESTOPBIT; fSucesso = SetCommState(hComm, &dcbStatus); if(!fSucesso) CloseHandle(hComm); // fecha a porta de comunicação... erro=3; return; fSucesso = SetCommTimeouts(hComm, &Timeouts); if(!fSucesso) CloseHandle(hComm); // fecha a porta de comunicação... erro=4; return; //--------------------------------------------------------------------------- Port :: ~Port() if (erro==0) CloseHandle(hComm);

81

//--------------------------------------------------------------------------- int Port :: Ret_erro() return(erro); //--------------------------------------------------------------------------- void Port :: enviatexto(char texto) char buffer = texto; DWORD charsWritten = 0; erro=0; if ( !WriteFile ( (HANDLE(hComm)) , &buffer , sizeof(char) , &charsWritten , NULL) ) erro=1; //--------------------------------------------------------------------------- char Port :: recebetexto(void) COMSTAT ComStat ; DWORD dwErrorFlags, dwLength=1; BOOL fReadStat; char c; // Comprova se há dados para serem recebidos ClearCommError(hComm, &dwErrorFlags, &ComStat ) ; if (ComStat.cbInQue > 0) //Lê um byte fReadStat = ReadFile( hComm, &c, dwLength, &dwLength, NULL) ; if (!fReadStat) // Verifica se há erros return 0; return c; //se não há erros, retorna o caracter recebido else return 0; //em caso de erro, retorna NULL //--------------------------------------------------------------------------- #pragma package(smart_init)