Você está na página 1de 12

Universidade Federal de Mato Grosso

Faculdade de Arquitetura, Engenharia e Tecnologia


Departamento de Engenharia Elétrica
Laboratório de Microprocessadores

Relatório Parcial - Projeto


Sistema de controle de acesso através
de chaves eletrônicas

Engenharia Elétrica

Docente: Prof. Nicolás Eusebio Cortez Ledesma

Discentes:
Bárbara Morais Gianesini
Kaio Vinicius Vilerá

Turma: N1

Cuabá 15 de Abril de 2015


1. Resumo
Sistemas de segurança, de uma forma geral, se utilizam de tecnologias para
controlar e registrar acessos de pessoas, tendo em vista que nem sempre é
viável, conveniente ou suficientemente eficiente um sistema operado
exclusivamente por pessoas sem uso de tecnologia eletrônica. Por isso, é comum
a adoção de tecnologias microcontroladas para tais aplicações. Sistemas
embarcados são de grande utilidade para serviços de segurança graças ao preço,
relativamente baixo, e pelo fato de ser possível desenvolver uma aplicação
direcionada estritamente para o que se necessita.
Neste trabalho, apresenta-se o uso do microcontrolador PIC16F877A e sua
aplicação em um sistema de controle de acessos através de fechadura eletrônica
com suporte multiusuário e registro de acessos. Sendo este um projeto de cunho
acadêmico, foram empregados conceitos estudados na disciplina de
Microprocessadores do curso de Engenharia Elétrica da Universidade Federal de
Mato Grosso - UFMT. Desta forma, a programação foi desenvolvida em assembly
e recursos específicos do referido PIC foram utilizados, a saber: Modo stand-by
(sleep), manipulações com Timer1, Interrupções, botões e teclado matricial,
comunicação via protocolo para gerenciamento de memória EEPROM e circuito
integrado de um Real Time Clock e comunicação serial para transferência de
dados.
O usuário tem acesso a um menu, cuja interface gráfica é apresentada por
um display LCD 16X2. Com botões é possível navegar pelo menu, escolhendo as
opções desejadas. Uma senha de administrador é predefinida na concepção do
projeto e na gravação do código, não sendo possível alteração pelo usuário. Com
a senha do administrador, têm-se privilégios para cadastrar, alterar ou limpar
registros no banco de dados. A opção de login, no menu, solicita código
identificador (ID) e senha, que na igualdade com registro cadastrado, envia sinal
para abertura da tranca e informação de acesso é armazenada no banco de
dados por tempo determinado, contendo ID (identificador), data e hora. O
administrador ainda tem opção de limpar ou enviar estes dados de registros de
abertura da tranca para o computador através de comunicação serial.

2. Objetivos

 Implementar um sistema de controle de acesso através de fechaduras


eletrônicas baseado no uC PIC. Suporte multiusuário e registro de acessos.

3. Fundamentação Teórica
Diversos recursos do PIC foram utilizados e, para que fossem implementados, foi
necessário o uso de componentes periféricos, tais como um teclado matricial, botões,
Real Time Clock DS1307, display de LCD 16X2, memória EEPRON FM24C256 e
adaptador Serial/USB CH340.
O teclado matricial 4x4 utilizado está representado na figura abaixo. Este possui
quatro linhas e quatro colunas interligadas. Quando uma tecla é pressionada, permite-
se o contato entre uma determinada linha e coluna, o que permite saber qual a tecla
pressionada ao se analisar o nível de tensão nos barramentos de cada linha e coluna.
Figura 1: Teclado Matricial 4x4

Displays de LCD são muito utilizados no mercado a fim de se estabelecer uma


interface gráfica com o usuário devido a sua fácil utilização e capacidade de exibição
de números, letras e símbolos. No projeto, o LCD16x2 foi utilizado. Este modelo
permite escrever até 32 caracteres, sendo 16 em cada uma das duas linhas
disponíveis. De acordo com [1], o módulo LCD possui um controlador próprio que
permite a comunicabilidade com outros dispositivos através de um protocolo de
comunicação. Faz-se então a interligação dos pinos de dados e controle do módulo
com os pinos do dispositivo que fará comunicação, sendo transferido, pelo o usuário,
bytes inerentes a instrução e dados.

Figura 2: Display LCD16x2


Foi o utilizado a memória EEPROM FM24C256 de 256 Kbits, compatível com
o protocolo de comunicação IIC 2-Wire. Esse protocolo de comunicação, utiliza,
basicamente, uma entrada para o CLOCK (SCL) e uma entrada de dados I/O (SDA)
para sincronizar a comunicação de dados com o dispositivo mestre, que pode ser
bidirecional. De acordo com [2], toda a comunicação deve começar com uma
condição de START válida e terminar com uma condição de STOP, sendo respondida
pelo receptor com um acknowledge. O byte de controle deve seguir a condição de
START. Para memórias EEPROM, os 4 primeiros bits de controle são 1010 para
operações de leitura e escrita. Estes 4 bits são então seguidos pelos bits A2, A1 e A0
que permitem escolher o dispositivo utilizado, caso se esteja utilizando mais de uma
memória EEPROM simultaneamente. O último bit do byte de controle determina se a
operação a ser realizada é de escrita ou de leitura. Se 1, será leitura, se 0, escrita.
Depois do byte de controle, seguem-se dois bytes contendo palavras de
endereço, que só então é seguida pelo byte de dados. É importante salientar que,
toda vez que um byte é enviado com sucesso, o receptor responde com uma
confirmação (ACK). A figura abaixo ilustra o funcionamento do protocolo para escrita
de dados.

Figura X: Ilustração dos passos do protocolo IIC 2-wire para escrita de 1 byte na memória EEPROM
24C256.

No caso de leitura de dados, o método utilizado é conhecido como Random


Read. Segundo [2], o FM24C256 guarda internamente o último endereço de memória
utilizado (endereço n). Dessa forma, se for enviado um comando de leitura, o
dispositivo escravo já envia o byte de dado presente no endereço n + 1. Como o
objetivo é utilizar Random Read, que permite determinar o endereço a ser lido, deve-
se começar uma operação de escrita falsa ("dummy write operation"). Quando o
dispositivo escravo enviar uma confirmação do recebimento (acknowledgemente) das
palavras de endereço, o mestre deve enviar outro START condition para finalmente
ser enviado o comando de leitura (a operação verdadeira), que será respondida com
o byte de dado do endereço especificado anteriormente pela operação de escrita
falsa. A figura a seguir ilustra os passos tomados para Random Read.

Figura 3: Ilustração dos passos do protocolo IIC 2-wire para leitura de 1 byte na memória EEPROM
24C256 através de Random Read.

O Real Time Clock DS1307 conta segundos, minutos, horas, dia do mês, mês
e ano, apresentando-os em BCD. Este módulo possui memória RAM interna de 56
bytes e também se comunica através do protocolo IIC 2-wire. Os meses que não
possuem 31 dias, são ajustados automaticamente e inclui correções para anos
bissextos. O relógio opera tanto no sistema 24 horas ou 12 horas (indicando a.m/p.m).
Além disso, o RTC possui uma bateria interna que é chaveada quando o
sistema detecta falta de tensão, mantendo-o operativo mesmo em casos de ausência
de alimentação.
Da mesma forma que a memória, lê-se os dados em endereços específicos
baseado
No que se pretende obter. A figura abaixo mostra a distribuição de memórias do RTC:

Figura 4: Mapa de endereço dos registradores do RTC DS1307.

Para a leitura das memórias, o protocolo é basicamente o mesmo do discutido


anteriormente para a memória EEPROM, sendo a principal diferença a quantidade de
dados transmitidos e o byte de controle.

Figura 5: Ilustração dos passos do protocolo IIC 2-wire para leitura de dados no RTC DS1307.

4. Desenvolvimento do Trabalho
a) Projeto do trabalho

Como indicado na fundamentação teórica, serão utilizados dispositivos


periféricos, portanto, foi necessário estabelecer a conexão deles com as portas e
pinos do microcontrolador utilizado.
Para utilização do teclado matricial, é necessária a utilização de 8 portas E/S
do PIC. Destas portas, 4 serão configuradas como portas de entrada, e as restantes,
como portas de saída. Como o projeto será implementado fisicamente na placa de
desenvolvimento montada pelos alunos, foi escolhida a porta D para conectar o
teclado ao PIC. A escolha se deve ao fato da porta D, além de possuir 8 pinos (como
necessário), conter apenas LEDs e Displays 7 segmentos conectados à mesma na
placa física. Como esses dispositivos não serão utilizados no projeto, o teclado
matricial também poderá ser conectado à esta porta, por meio das conexões
existentes na placa de desenvolvimento. Os resistores conectados ao teclado são
utilizados como resistores de pull-down, uma vez que a porta D não possui resistores
de pull-up/pull-down internos.
O projeto também inclui o uso de 4 botões do tipo botão de impulso. Esses
botões já estão implementados na placa de desenvolvimento, e os mesmos estão
conectados aos pinos 4, 5 , 6 e 7 da porta B. A porta B, e mais especificamente, os
pinos citados, foram escolhidos por possuírem a característica de dispararem
interrupção por mudança de estado de qualquer um destes pinos, sendo que, esta
interrupção é capaz de acordar o microcontrolador do estado de "sleep", e isso será
utilizado no decorrer projeto.
A memória EEPROM 24C256 e o módulo Relógio de Tempo Real (RTC) estão
conectados as portas RC3(SCL) e RC4(SDA) do microcontrolador, uma vez que
ambos os módulos utilizam o protocolo de comunicação IIC 2-wire e as postas citadas
são as únicas neste modelo de PIC que realizam a transferência de dados por este
protocolo.
Será também utilizado um adaptador serial/USB para fazer a transferência dos
dados gravados na memória para o computador conectado por ele. Essa
transferência é feita através do protocolo de comunicação serial USART, logo, serão
utilizados os pinos TX e RX, sendo eles responsáveis por transmitir e enviar dados,
respectivamente.
Para fins de segurança, será acionado um buzzer quando o usuário tentar
acessar o sistema, mas errar a senha por 3 vezes consecutivas. O buzzer será
conectado ao pino 1 da porta A, sendo o mesmo configurado como pino digital de
saída. O buzzer utilizado emite ondas sonoras quando alimentado por uma tensão de
5V.
Por fim, para fazer a interface entre o sistema e o usuário, será utilizado um
display LCD 16x2. Para isso, é necessário conectar o mesmo a 7 pinos do
microcontrolador, sendo 4 deles conectados aos pinos 0 ao 3 da porta B, destinados
ao envio de caracteres à serem escritos no LCD, e 3 deles para enviar comandos ao
LCD, conectados aos pinos 0, 1 e 2 da porta E.
Além desses periféricos, pode-se conectar um relé de 5 VCC em algum pino
disponível do microcontrolador. Este relé seria utilizado para acionar uma fechadura
elétrica, que é energizada (fechada) ou não (aberta) de acordo com o valor de tensão
proveniente dos terminais do relé. Dessa forma, seria possível controlar a abertura da
porta através no sistema de controle de acessos implementado neste projeto.
b) Circuito esquemático

Figura 6: Circuito Esquemático

O circuito esquemático mostrado na figura 6 ainda não está completo. Falta ser
acrescentado o módulo do Relógio de Tempo Real (RTC) e o buzzer.

c) Simulações

Para simulação do projeto, foi utilizado o software Proteus, de acordo com o


circuito esquemático mostrado na figura 6. As figuras abaixo mostram alguns
momentos do programa, a figura 7 mostra uma das páginas do menu principal,
enquanto que a figura 8 mostra o momento em que o usuário digita a senha para fazer
login no sistema.

Figura 7: Simulação menu


Figura 8: Simulação teclado matricial

Será enviado em anexo o arquivo circuito esquemático criado no Proteus e o


projeto criado no MPLAB, dessa forma o professor poderá, também, simular o projeto.
As instruções de utilização do sistema para o usuário foram incluídas no apêndice.

5. Software
a) Fluxogramas

Fluxograma geral

O fluxograma mostrado na figura 9 tem a finalidade de apresentar, de forma


geral, o projeto. Além disso, observa-se que os blocos na cor verde, são os blocos
implementados até o momento. Enquanto que os blocos em cinza ainda serão
implementados ou não foram concluídos até o momento.
Figura 9: Fluxograma geral do projeto

b) Código de programa em assembly para microcontroladores PIC

Até esse ponto, todo o projeto está sendo desenvolvido usando-se somente a
linguagem assembly. O código em assembly e as bibliotecas utilizadas serão
enviados para o professor juntamente com o relatório. Para o relatório final, todos os
códigos serão inseridos nos apêndices.

6. Referências bibliográficas
[1] BARBACENA, Ilton L.; FLEURY, Claudio A. DISPLAY LCD, 1996.

[2] FAIRCHIELD SEMICONDUCTOR, “256 KBit 2-Wire Bus Interface Serial EEPROM
with Write Protect,” Datasheet, no. June, pp. 1–12, 2000.
[3] Notas de aula da disciplina Microprocessadores UFMT, Professor Nicolás Eusebio
Cortez Ledesma

[4] Datasheet PIC16F877A

7. Apêndices
Manual do usuário

O sistema funciona da seguinte maneira. Assumindo que o microcontrolador


está desligado, quando o mesmo for ligado, será mostrado na tela o primeiro menu,
chamado de menu principal. O usuário poderá navegar entre as páginas do menu,
utilizando os botões indicados no circuito esquemático (figura 6). Temos quatro
botões, UP, DOWN, RIGHT e LEFT. O botão UP, indicado no circuito como botão 4,
tem, basicamente, a função de navegar entre as páginas "conectadas" do menu,
como é explicado no fluxograma. A mesma função tem o botão DOWN (botão 2), no
entanto, enquanto o botão DOWN muda de páginas em um sentido, o botão UP move
no sentido contrário. O botão RIGHT (botão 1), pode ser descrito como um botão de
seleção, pois clicando nele, entramos em um sub menu desta página. Por fim, o botão
LEFT (botão 3) é usado para voltar de um sub menu para a página anterior. Dessa
forma, o fluxograma da figura 9 mostra como o menu principal está relacionado com
os sub menus e suas páginas.

O sistema tem, basicamente, as funções descritas abaixo:


 Acesso ao login do usuário cadastrado;
 Cadastro de novo usuário e informação sobre espaço disponível;
 Remoção de um ou todos os usuários cadastrados;
 Alteração de senha de usuário;
 Visualização e alteração dos parâmetros do Relógio de Tempo Real (RTC);
 Controle de registros de acesso

Dentre as funções descritas acima, somente a primeira pode ser acessada sem
a senha do administrador do sistema. Isso quer dizer que a única tarefa que pode ser
executada sem a autorização do administrador, é o login de usuários já cadastrados
no sistema.
Até este ponto do projeto, ainda não foram concluídas as implementações de
todas das funções descritas. Serão explicadas, com mais detalhes, as funções
descritas acima.

a) Login do usuário cadastrado

Para os usuários já cadastrados, no momento do login será pedido, através do


LCD, o número do ID (2 dígitos) e a senha de acesso (4 dígitos). O usuário terá 3
tentativas para digitar a senha correspondente ao ID digitado, ambos armazenados
na memória. Caso o usuário erre nas três tentativas, o sistema será bloqueado por
um tempo de 15 à 20 minutos, além de ser acionada uma sirene (buzzer), como um
alarme ante furto. No entanto, se o usuário digitar a senha correta, ele terá acesso ao
sistema, e um LED amarelo acenderá na placa do circuito. Futuramente, pode-se
implementar o acionamento de uma fechadura elétrica via relé.
Quando o usuário conseguir acessar o sistema, será armazenado o registro do
mesmo na memória externa, contendo informações como ID, horário de acesso, data
e dia da semana. Na verdade, serão armazenados somente os últimos 10 acessos,
de forma a se verificar os registros caso algo incomum aconteça no local onde o
sistema foi instalado.

Funções acessadas com autorização do administrador:

b) Cadastro

Será disponibilizado pelo sistema cem usuários. Esses usuários serão


identificados através de um ID (00 – 99) e uma senha de 4 dígitos. Todos os IDs e
senhas serão armazenados em uma memória externa EEPROM (24C256).
No momento do cadastro, o microcontrolador informará o primeiro ID
disponível, começando sempre do ID 00. Dessa forma, o usuário poderá digitar sua
senha de acesso de 4 dígitos, e ser cadastrado com sucesso.

c) Remoção de um ou todos os usuários cadastrados

O administrador poderá deletar todos os usuários cadastrados na memória,


deixando os 100 IDs livres para novos usuários, um ID livre será identificado por tem
o valor FF (binário) armazenado na memória. O administrador poderá também,
deletar somente um dado usuário, que neste caso será escolhido anteriormente por
meio do teclado numérico.

d) Alteração de senha do usuário

Nesta opção, deve ser informado o ID do qual se deseja alterar a senha, e


então será pedida a nova senha. Depois disso, a nova senha será armazenada na
memória no lugar da senha antiga.

e) Informe de horário e alteração de parâmetro do relógio de tempo real (RTC)

Existe a possibilidade de visualizar e também alterar os parâmetros do RTC.


Para isso, o administrador pode navegar no sub menu destinado as funções do RTC.
Haverá um módulo RTC independente no projeto. O RTC será utilizado para garantir
que a data e o horário de acesso dos usuários sejam precisos. Caso, por algum
motivo, a contagem do RTC deixe de sem correta, por exemplo, quando acabar a
bateria do mesmo, será possível atualizar o horário e data através da alteração dos
seus parâmetros.

f) Controle de registros de acesso

Esse sub menu controla os registros de acesso no sistema. Haverá suas


opções. A primeira, enviar os registros de acesso ao computador. E a segunda,
remoção dos registros.
Na primeira opção, será necessário que o administrador primeiro conecte o
computador a placa do circuito, por meio de um adaptador Serial/USB. Depois de
conectado, o mesmo deve pressionar o botão RIGHT, para indicar que os dispositivos
estão conectados e a transferência de dados pode ser iniciada. Ao final da
transmissão, será mostrada uma mensagem de sucesso. A transferência de dados é
feita através do protocolo de comunicação serial USART.
Se a segunda opção for selecionada, todos os registros serão deletados da
memória externa.

Como dito, nas funções que somente o administrador terá acesso, será pedida
a senha do administrador, também de 4 dígitos, armazenada na memória. O
administrador também terá 3 tentativas para digitar a senha, caso ele falhe nas três,
o mesmo sistema de bloqueio do login será acionado.
Vale destacar que será utilizado um teclado matricial de 16 teclas para entrada
das informações pelo usuário, como ID e senha.
Neste momento, o teclado funciona da seguinte maneira:

Caso 1. Entrada de ID

Nesse caso, como o ID é composto de 2 dígitos, a rotina do teclado ficará


esperando o usuário digitar os 2 dígitos. Depois disso, se sairá da rotina do teclado,
e os dígitos digitados serão armazenados em um registrador(8 bits) de maneira
"empacotada", ou seja, o correspondente binário de cada dígito em cada nibble do
registrador. Além disso, no LCD será mostrado os dígitos que o usuário digitar.

Caso 2. Entrada de Senha

Agora, como a senhas são compostas de 4 dígitos, a rotina do teclado ficará


esperando o usuário digitar os 4 dígitos. Depois disso, se sairá da rotina do teclado,
e os dígitos digitados serão armazenados em dois registrador(8 bits) de maneira
"empacotada", ou seja, o correspondente binário de cada dígito em cada nibble dos
registradores. Diferentemente do caso do ID, no LCD serão mostrados asteriscos
"****", indicando cada digito da senha digitado.

Você também pode gostar