1
RESUMO
Este trabalho tem por objectivo implementar um sistema de controle de acesso aos
compartimentos da maternidade da Clínica Cruz Azul. A ideia deste sistema surge
como resposta ao problema de roubo de bebés que tem se verificado
constantemente nas maternidades dos hospitais da cidade de Maputo.
O sistema visa controlar a abertura de portas (accionamento de fechaduras
eléctricas) usando cartão com código de barras. Ele é fisicamente constituido por
leitores de códigos de barras, um microcontrolador, um computador pessoal (PC) e
fechaduras eléctricas.
Os leitores e as fechaduras serão montados na porta de cada compartimento da
maternidade, estes por sua vez, estarão interligados a um microcontrolador
PIC16F877A, através de uma rede de comunicação serial. O microcontrolador
possui um software cuja função é intermediar a comunicação entre os leitores de
código de barras, o PC e as fechaduras.
No PC será instalada uma base de dados (BD), onde serão cadastrados os dados
dos cartões, dos seus proprietários e das fechaduras. Será também instalada uma
aplicação cuja funcão é receber os dados na porta serial (COM1) do computador,
verificar se os mesmos estão cadastrados na BD e enviar um comando para o
microcontrolador operar a fechadura.
2
AGRADECIMENTOS
A Deus, pelo seu imenso amor, misericórdia e graça. Por me ter dado força, saúde e
condições para que pudesse chegar a este nível. Sem Ele nada disto teria sido
possível.
À minha família, em particular a minha querida mãe, por ter criado condições para
que nada me faltasse durante o período de formação.
Aos meus amigos e colegas, em especial a Tafiranhica Juga, por ter se privado de
usar o seu computador, para que eu pudesse fazer este trabalho. A Henriques
Maculuve, Araujo Nuaila, Lauchande Givandas e Igidio Pedro, pelas contribuições
em ideias e soluções, as quais foram preponderantes para a realização deste
trabalho.
Aos meus professores, que durante a minha estadia na universidade, procuraram
passar-me seus conhecimentos para que eu pudesse ser o que sou.
3
ESTRUTURA DO TRABALHO
Capítulo 1. Introdução, objectivos e especificação do problema - Este capítulo
apresenta uma introdução, os objectivos a serem alcançados, qual o problema que
se pretende resolver e a proposta para a solução do problema.
Capítulo 2. Fundamentação teórica – Neste capítulo apresenta-se a fundamentação
teórica das tecnologias usadas para o desenvolvimento deste sistema.
Capitulo 3. Desenvolvimento do trabalho – Neste capítulo fala-se de uma forma
geral de como o sistema funciona, especifica-se os seus blocos, faz-se a
abordagem dos requisistos, e implementação.
Capítulo 4. Viabilidade económica – Neste capítulo é apresentado o orçamento do
projecto.
Capítulo 5. Conclusões e recomendações – Análise e recomendações para o
projecto.
4
LISTA DE ABREVIATURAS
A/D – Conversor Analógico Digital
API – Application Programming Interface
ASCII - Código Padrão Americano para o Intercâmbio de Informação
BD – Base de Dados
BISYNC - Binary Synchronous Communication
CPU – Unidade Central de processamento
DCE - Data Circuit-terminating Equipment
DTE - Data Terminal Equipment
EAN - European Article Number
EEPROM – Eletric Erasable Programable Randomic Memory
EIA – Electronic Industries Association
FLASH – Memória de leitura com escrita electrónica
I2C – Inter-Integrated Circuit
LED – Diodo Emissor de Luz
LRC - Longitudinal Redundancy Checking
PC – Computador Pessoal
PIC – Peripheral Interface Controller
PWM - Pulse Width Modulation
RAM – Random Access Memory
RETMA - Radio Electronics Television Manufacturers Association
RISC - Reduced Instruction Set Computer
ROM – Read Only Memory
RS – RETMA Standard
Rx - Receptor
SOH – Start of Header
SPI – Serial Peripherical Interface
STX - Start of Text
TTL - Transistor Transistor Logic
Tx - Transmissor
UPC - Universal Product Code
USART - Universal Synchronous Serial Receiver Transmitter
5
LISTA DE FIGURAS
Figura 1. Código de barras………………………………………………………….….…12
Figura 2. Processo de leitura de um código de barras…………………………….….14
Figura 3. Diagrama de pinos do PIC16F877……………………………………………16
Figura 4 Transmissão sincrona…………………………………………………………..19
Figura 5. Transmissão Assincrona………………………………………..…………..…19
Figura 6. Descrição dos pinos do Conector DB9 macho………………………………20
Figura 7. Formato de um pacote do protocolo orientado a byte……………………...23
Figura 8. Formato de um pacote do protocolo orientado a bit……………….……….24
Figura 9. Diagrama de blocos do sistema de controle de acessos usando código de
barras………………...…………………………………………………………….………..26
Figura 10. Leitor de código de barras SLOT READER 30………………….…………27
Figura 11. Sensor de código de barras…………………………………….…………...28
Figura 12. Placa descodificadora de código de barras…………………………......…28
Figura 13. Formato do pacote de dados do leitor de código de barras…..………….29
Figura 14. código de barras EAN-8……………………………………………………...30
Figura 15. Formato do pacote de dados para comunicação entre o microcontrolador
e o computador ………………………………………………………………………...….32
Figura 16. Formato do pacote de dados para comunicação entre o computador e o
microcontrolador ………………………………………………………………..…………32
Figura 17. Diagrama esquemático de controlo de acesso aos compartimentos..…33
Figura 18. Fechadura Eléctrica………………………………………………………..….36
Figura 19. Instalação do leitor de código de barras na porta………………………....41
Figura 20. Instalação da fechadura eléctrica na porta ………………………………..41
Figura 21. Ilustração de um cartão para médico……………………………………….42
Figura 21.1. Ilustração de um cartão para parturiente………………………………...42
Figura 22. Sensor de código de barras Nonus com cabo………………………….….50
Figura 23. Conetores da placa descodificadora…………...………………………..….50
Figura 24. Ligação do microcontrolador ao PC……………….……………………..…52
Figura 25 Multiplexação dos sinais dos leitores do código de barras……………..…53
Figura 26. Accionador da fechadura eléctrica e LEDs…………………………….…..54
Figura 27. Fonte de alimentação…………………………………………………….…..54
Figura 28 Fluxograma do programa executado no microcontrolador………….…….55
Figura 29 Fluxograma do programa executado no PC………………………….…….56
6
Figura 30 Interface para Login do administrador do sistema…………………….…...57
Figura 31 Interface principal………………………………………………………………57
Figura 32. Interface para cadastro de funcionários da maternidade………..………..57
Figura 33. Interface para cadastrar Utentes (Parturientes e Visitantes)………..……58
Figura 34. Interface para consultar utilizadores………………………………………...58
Figura 35. Interface para Obtenção de relatórios de acesso a compartimentos..….58
LISTA DE TABELAS
Tabela 1. Comparação entre tecnologias usadas em sistemas de controle de
acesso……………………………………………………………………………………….11
Tabela 2 – Caracteres do protocolo orientado a byte………………………………….23
Tabela 3. Viabilidade económica……………………………………….………………..43
Tabela 4. Função dos sinais no padrão RS 232………………………………..………48
Tabela 5. Caracteríticas técnicas do leitor de código de barras SLOT READER
30…………………………………………………………………………………………….49
7
Índice
1. INTRODUÇÃO, OBJECTIVOS E ESPECIFICAÇÃO DO PROBLEMA ............................... 9
1.1. Introdução .............................................................................................................................. 9
1.2. Objectivos .............................................................................................................................. 9
1.3. Especificação do problema ............................................................................................... 10
1.4. Solução ................................................................................................................................ 10
2. FUNDAMENTAÇÃO TEÓRICA ............................................................................................... 12
2.1. Código de barras ................................................................................................................ 12
2.1.1. Leitores de códigos de barras .................................................................................. 13
2.2. Microcontroladores ............................................................................................................. 14
2.2.1. O Microcontralodor PIC16F877 ............................................................................... 15
2.2.2. Programação de microcontroladores ...................................................................... 16
2.3. Comunicação serial ........................................................................................................... 18
2.4. Protocolos de comunicação.............................................................................................. 22
3. DESENVOLVIMENTO DO TRABALHO ................................................................................. 25
3.2. Especificação dos componentes ..................................................................................... 27
3.2.1. Leitor de código de barras ........................................................................................ 27
3.2.2. Circuito electrónico ..................................................................................................... 30
3.2.3. Progama executado no microcontrolador............................................................... 32
3.2.4. Base de dados ................................................................................................................. 32
3.2.4. Software no PC ........................................................................................................... 35
3.2.6. Fechadura eléctrica ........................................................................................................ 36
3.3. Implementação do sistema ............................................................................................... 36
3.3.1. Código do software no PC ........................................................................................ 36
3.3.2.Base de dados .................................................................................................................. 41
3.3.3. Instalação do sistema ..................................................................................................... 41
3.3.4. Gerar e imprimir códigos de barras .............................................................................. 42
4. VIABILIADADE ECONÓMICA .................................................................................................. 43
5. CONCLUSÕES E RECOMENDAÇÕES ................................................................................ 44
5.1. Conclusões .......................................................................................................................... 44
5.2. Recomendações ................................................................................................................. 45
REFERÊNCIAS BIBLIOGRÁFICAS ................................................................................................ 46
ANEXO 1 – Tabelas ........................................................................................................................... 48
ANEXO 2 – Figuras, Esquemas Electrónicos e Fluxogramas .................................................... 50
8
ANEXO 3 – Código fonte do Software para recepção e envio de dados pela pota serial ...... 59
9
1. INTRODUÇÃO, OBJECTIVOS E ESPECIFICAÇÃO DO PROBLE MA
1.1. Introdução
O surgimento dos computadores pessoais (PCs) contribuiu de forma grandiosa para
o desenvolvimento da automação. Actualmente, com recurso a PC é possível
realizar tarefas, controlar processos com maior agilidade, segurança, economia e
conforto, o que tem como consequência o aumento da qualidade de vida das
pessoas.
É natureza do ser humano procurar a forma mais fácil de realizar o seu trabalho
diário, a electrónica e informática têm sido as ferramentas mais usadas para atingir
este objectivo. A cada ano são criados novos dispositivos de controle, com intuito de
facilitar as tarefas diárias das pessoas. Como exemplo podemos citar as caixas
electrónicas de pagamento usadas nos supermercados, muitas destas usam a
tecnologia de código de barras para identificar produtos e controlar a entrada e
saída dos mesmos nos supermercados. Esta tecnologia serviu de inspiração para o
desenvolvimento deste projecto.
1.2. Objectivos
O presente trabalho tem como objectivo fundamental a aplicação dos
conhecimentos adquiridos ao longo da formação, no desenvolvimento de um
sistema capaz de dotar as maternidades de meios suficientes, capazes de previnir
restringindo ou controlando o acesso de pessoas estranhas, utentes e funcionários
do serviço de saúde aos compartimentos da maternidade.
Os objectivos específicos do trabalho são:
a) Projectar circuitos condicionadores de sinal usando o microcontrolador
PIC16F877;
b) Acoplar leitores de código de barras ao microcontrolador;
c) Acoplar fechaduras eléctricas ao microcontrolador;
d) Interligar o microcontrolador e um PC;
e) Criar um protocolo de comunicação entre o microcontrolador e o PC e vice-
versa;
f) Desenhar uma BD para cadastrar cartões com código de barras, utilizadores
e compartimentos da maternidade;
10
g) Desenhar uma aplicação capaz de receber dados na porta serial, verificar se
os mesmos estão cadastrados na BD e enviar um comando ao
microcontrolador para accionar ou não a fechadura.
1.3. Especificação do problema
Os hospitais são locais onde a população procura por serviços de saúde, isto faz
com estes locais sejam frequentados por qualquer indivíduo, sem ou quase
nenhuma restrição. Nalgumas vezes, indivíduos de má fé, usam-se deste facto para
lograr seus intentos, isto é, para subtrairem bens dos hospitais e até mesmo de
pessoas que vão a procura dos serviços de saúde.
Frequentemente tem se ouvido casos de indivíduos que fazem-se as maternidades
dos hospitais com objectivo de roubar recém nascidos, o que tem de certa forma
preocupado aos utentes e os diregentes destas unidades hospitalares, dado que é
difícil identificar tais indivíduos porque estes locais são frequentados por qualquer
indivíduo.
O problema é, como previnir estes actos.
1.4. Solução A solução proposta neste trabalho é a instalação de um sistema de controle de
acesso aos compartimentos da maternidade.
Existem no mercado várias tecnologias que podem ser usadas para projectar
sistemas electrónicos de controle de acesso, das quais as mais usadas têm sido:
Teclado Matricial – Controle de acesso através da introdução de uma senha de
segurança do utilizador;
Cartão Magnético – Controle de acesso através da leitura electrónica de dados
gravados em um cartão magnético;
Código de Barras – Controle de acesso através da leitura electrónica de dados
codificados em barras e impressas em um cartão;
Biometria – Controle de acesso através da leitura electrónica de dados biométricos
do utilizador (Por exemplo a impressão digital do utilizador);
11
RFID – Controle de acesso através da leitura electrónica de dados transmitidos via
rádio frequência, de uma tag para um reader (leitor).
A tabela1 abaixo mostra as comparações entre as tecnologias acima mencionadas.
O objectivo desta tabela é justificar a escolha da tecnologia de código de barras
para a concepção do sistema de controle de acesso para clínica Cruz Azul.
Parametros do Sistema
Código de
Barras
Teclado Matricial
Biometria (Fingerprint)
Cartão Magnético
RFID
Modelo de leitor de dados
SLOT READER
30
Atmel Avr Geomok Testech Bio-I
Minimag Solo
GAO RFID 216011
Custo do leitor de dados (Mt)
5.503,60 355,30 24.869,23 15.810,85 51.518.50
Custo de fabrico de cartão do
utilizador
Baixo Sem custos
Sem custos Alto Alto
Segurança Alta Baixa Alta Alta Alta Velocidade de
leitura Alta Baixa Alta Alta Alta
Contacto Visual Sim Sim Sim Sim Não
Comparando os preços de aquisição dos leitores de dados, conclui-se que o teclado
matricial é o mais barrato, seguido pelo leitor de código de barras. O leitor de
código de barras apresenta um nível de segurança e velocidade de leitura de dados
melhor em relação ao teclado matricial.
Estes parametros foram determinantes para a escolha da tecnologia a usar, visto
que o sistema será instalado num hospital, e o preço do sistema deverá ser menor
possível. O tempo de resposta tambem deve ser o menor possível e o nível de
segurança deve ser alto.
Sendo assim, conclui-se que a tecnologia ideal para a concepção deste sistema é a
de código de barras.
1 Os dados contidos nesta tabela foram obtidos nos sites dos fabricantes dos respectivos equipamentos. E a
conversão da moeda estrangeira para o metical foi feita usando o mesmo câmbio usado na tabela de
viabilidade económica
Tabela 1. Comparação entre tecnologias usadas em sistemas de controle de acesso
12
2. FUNDAMENTAÇÃO TEÓRICA
Neste capítulo são apresentados aspectos teóricos relacionados com as tecnologias
usadas neste sistema.
2.1. Código de barras
Hoje em dia, muitos produtos são identificados com um código alfanumérico. O
progresso da tecnologia, que tornou relativamente baratos e acessíveis aparelhos
de leitura óptica e computadores, tornou também o uso deste tipo de códigos
bastante frequente. Por exemplo, os produtos que compramos num supermercado
estão identificados por um código de barras, como o mostrado na Figura 1.
Segundo Cechet (2006), o código de barras é não mais do que um símbolo
composto por barras paralelas de larguras e espaçamentos variados que
representam uma determinada informação.
Segundo Milies (2006), a primeira patente de um código de barras foi atribuída em
1952 a Joseph Woodland e Bernard Silver. Seu código consistia num padrão de
circunferências concêntricas de espessura variável. Ao submeter o pedido de
patentes, eles descreviam seu invento como uma classificação de artigos através de
identificação de padrões.
Por volta de 1970, uma empresa de acessória, a McKinsey & Co., junto com a
Uniform Grocery Product Code Council (companhias Norte Americanas), definiu um
formato numérico para identificar produtos e pediu a diversas companhias que
elaborassem um código adequado. Dentre as companhias contactadas, a que
acabou apresentando a proposta vencedora foi a IBM e o código foi criado por
George J. Laurer (MILIES, 2006).
O código proposto, formalmente aceite em Maio de 1973, passou a ser conhecido
como código UPC (Universal Product Code) e foi adoptado nos Estados Unidos e
Figura 1. Código de barras
in Milies, C. Polcino (2006,p. 1)
13
Canadá. Ele consistia em uma sequência de 12 dígitos, traduzidos para barras
(MILIES, 2006).
Tipos de códigos de barras mais utilizados
Existem diversos tipos de código de barras, portanto os formatos das barras variam
de acordo com o código.
Código EAN-13 (European Article Number) - Padrão adotado para codificação de
produtos em supermercados, permite a codificação de até 13 dígitos numéricos.
Código EAN-8 - Versão simplificada do padrão EAN-13, para aplicação em produtos
onde a etiqueta no padrão EAN-13 fique muito grande. Este padrão permite a
codificação de até 8 dígitos numéricos.
Código 2 de5 Intercalado - Utilizado quando se desejam imprimir apenas dígitos
numéricos, é muito utilizado em aplicações comerciais.
Código 3 de 9 - Utilizado quando se desejam imprimir caracteres alfa-numéricos;
muito utilizado em aplicações industriais.
2.1.1. Leitores de códigos de barras
O leitor de código de barras é um equipamento com capacidade para capturar um
código de barras impresso em um cartão, crachá ou algum outro tipo de documento
e disponibilizá-lo em uma porta de saída, serial ou paralela, para comunicação com
outros equipamentos, como um PC por exemplo.
Este dispositivo tem no seu interior, um emissor de luz normalmente vermelha e um
sensor para receber a reflexão dessa luz. Assim, se o dispositivo for colocado em
uma superfície branca, a luz emitida vai reflectir na superfície, o sensor vai captar
essa reflexão e gerará um sinal eléctrico que corresponde a superfície branca. De
maneira oposta, se o dispositivo for posicionado em cima da superfície escura,
normalmente preta, a luz emitida pelo dispositivo será absorvida e o sensor não
captará nenhum reflexo, o sensor irá gerar um sinal eléctrico correspondente a cor
preta.
Se o leitor for passado sobre uma etiqueta de código de barra com velocidade
constante, o leitor irá gerar uma sequência de sinais eléctricos conforme o mesmo
vai passando pelas barras (largas e finas) pretas e espaços em branco.
Através da luz reflectida pelos espaço, ou pelas barras, o leitor interpreta o código.
A interpretação acontece através do uso de um conversor A/D que transforma o
sinal eléctrico analógico produzido pela luz recebida pôr meio de um sensor
14
fotoeléctrico, em um sinal digital (sucessão de 0 e 1 em forma de pulso), assim,
cada caractere do código é interpretado como um número binário, onde cada
módulo reproduz um digito 1 ( reflexão da luz pelo código, ou seja, espaço no
código ), ou um digito 0 (absorção da luz pelo código, ou seja, barra no código).
Actualmente, quase todos os leitores contêm circuitos descodificadores cuja função
é transformar os sinais eléctricos de um dispositivo leitor de código de barras em um
caracter correspondente, de acordo com o padrão do código utilizado.
2.2. Microcontroladores
Um microcontrolador difere de um microprocessador em vários aspectos. O primeiro
e o mais importante, é a sua funcionalidade. Para que um microprocessador possa
ser usado, outros componentes devem-lhe ser adicionados, tais como memória e
componentes para receber e enviar dados, enquanto o microcontrolador foi
projectado para ter todos estes componentes.
Nenhum outro componente externo é necessário, uma vez que todos os periféricos
necessários já estão contidos nele. Este facto poupa tempo e espaço necessário,
aquando do design de um sistema.
Figura 2. Processo de leitura de um código de barras
in Cechet, Rafael (2006, p.21)
15
2.2.1. O Microcontralodor PIC16F877
O PIC16F877 é um dos mais recentes produtos da Microschip. Tem todos
componentes que um moderno microcontrolador tem e, devido ao seu baixo custo,
amplo campo de aplicações e alta qualidade, tem sido a solução ideal para
aplicações como: controle de processos industriais, controle de máquinas, medição
de valores, entre outros.
Algumas das suas funcionalidades são descritas abaixo:
Arquitectura RISC (CPU de instruções reduzidas);
apenas 35 instruções;
todas as instruções de um ciclo, excepto os saltos;
Frequência de operação de 0 a 20MHz;
Oscilador interno de precisão;
frequência pode ser escolhida por software entre 31KHz e 8MHz;
Tensão de alimentação entre 2.0V e 5.5V;
consumo: 220µ[email protected]@4MHz;
modo de poupança de energia;
35 pinos de I/O;
alta corrente para polarizar LEDs directamente;
interrupção quando há mudança nos estados lógicos dos pinos de
entrada;
Memória ROM de 8k em tecnologia FLASH;
o chip pode ser programado cerca de 100.000 vezes;
Memória EEPROM de 256 bytes;
o chip pode ser programado cerca de 1.000.000 vezes;
Memória RAM de 368 bytes;
Conversor A/D;
14 canais;
10 bits de resolução;
3 temporizadores / contadores independentes;
Temporizador Watch-dog;
Módulo comparador analógico;
2 comparadores analógicos;
referência de tensão programável;
Saída por PWM (Pulse Width Modulation);
16
Módulo USART melhorado;
Suporta os padrões RS-485, RS-232;
detecção automática de Baudrate;
Porta série síncrona;
suporta os modos I2C e SPI;
Quase todos os pinos são multi-funcionais;
2.2.2. Programação de microcontroladores
Programar um microcontrolador significa transferir para sua memória de programas
um conjunto de instruções que serão executado pela CPU. As instruções devem ser
carregadas já no formato binário, capaz de ser compreendido pela CPU. No entanto,
este formato é de difícil interpretação por seres humanos. Daí surge a necessidade
de um sistema de desenvolvimento.
Um sistema de desenvolvimento para projectos que empreguem
microcontroladores, tipicamente se utiliza de computadores pessoais para executar
os softwares de desenvolvimento, tais como assembladores, compiladores e
gravadores.
Figura 3. Diagrama de pinos do PIC16F877
in PIC16F877 Datasheet
17
Através do uso de assembladores e compiladores, pode-se implementar programas
facilmente compreensíveis e convertê-los para um executável (linguagem de
máquina).
O gravador permite que o programa executável seja transferido para a memória do
microcontrolador.
As linguagens mais utilizadas actualmente para a programação de
microcontroladores são as linguagens Assembly, C e Basic. Antes que se escolha
entre uma destas linguagens, é necessário examinar cuidadosamente os requisitos
de velocidade de execução, de espaço de memória a ocupar e o tempo disponível
para o desenvolvimento do programa (DO CARMO, 2005).
Segundo (Pereira, 2003) linguagem Assembly consiste em uma forma alternativa de
representação dos códigos de máquina usando mnemónicas, ou seja, abreviações
de formas usuais que descrevem a operação efectuada pelo comando em código de
máquina. Esta linguagem é de baixo nível, isto é, não possui nenhum comando,
instrução ou função além daqueles definidos no conjunto de instruções do
processador utilizado. Isto implica em um trabalho extra do programador para
desenvolver rotinas e operações que não fazem parte do conjunto de instruções do
processador, produzindo por conseguinte, programas muito extensos e complexos,
com um fluxo muitas vezes difícil de ser seguido. Contudo, é a linguagem que
oferece os melhores resultados quando se pretende poupar espaço de memória e
aumentar a velocidade de execução do programa (Pereira, 2003).
A linguagem Basic dispõe de instruções para implementar comunicação serial,
PWM, leitura de entrada analógica, geração e medida de impulsos, geração de tom
e gravação e leitura de memória EEPROM. Possui entrada para botões com
eliminação de ruídos e auto-repetição, conhecidos por deboucing.
Entretanto, é uma linguagem de execução lenta, pois executa aproximadamente
apenas 2000 instruções por segundo (DO CARMO, 2005).
A linguagem C, segundo Pereira (2003), devido a sua proximidade com o hardware
e o Assembly, é uma linguagem extremamente eficiente. É considerada como a
linguagem de alto nível mais eficiente actualmente disponível. O uso do C permite a
construção de programas e aplicações muito mais complexas do que seria
utilizando apenas o Assembly.
18
2.3. Comunicação serial
Segundo Canzian (2005), a Comunicação de Dados estuda os meios de
transmissão de mensagens digitais para dispositivos externos ao circuito originador
da mensagem. Dispositivos Externos são geralmente circuitos com fonte de
alimentação independente dos circuitos relativos a um computador ou outra fonte de
mensagens digitais.
Um canal de comunicação é um caminho sobre o qual a informação pode trasfegar.
Ele pode ser uma linha física (fio) que conecta dispositivos de comunicação, ou
ondas electromagnéticas, laser, ou outra fonte de energia radiante.
Um canal no qual a direcção de transmissão é inalterada é referido como canal
simplex . Um canal half-duplex é um canal físico no qual as mensagens podem
fluir nas duas direcções, mas nunca ao mesmo tempo.
A maioria das mensagens digitais são longas e, por não ser prático nem económico
transferir todos os bits de uma mensagem simultaneamente, a mensagem é
quebrada em partes menores e transmitida sequencialmente. A transmissão bit-
serial, também chamada de transmissão serial, converte a mensagem em um bit por
vez através de um canal. Cada bit representa uma parte da mensagem. Os bits
individuais são então rearranjados no destino para compor a mensagem original.
Este é o método de comunicação usado por diversos periféricos de computadores.
Transmissão Assíncrona e Transmissão síncrona
Geralmente, na transmissão serial os dados são organizados em frames (pacotes) e
estes são enviados seguidos de uma pausa, até que a mensagem tenha sido
totalmente transmitida. O circuito receptor dos dados deve saber o momento
apropriado para ler os bits individuais desse canal, saber exactamente quando um
pacote começa e quanto tempo decorre entre bits. Quando isto ocorre, diz-se que o
transmissor e o receptor estão sincronizados.
Duas técnicas de transmissão de dados são usadas para garantir a sincronização:
Na transmissão síncrona, canais separados são usados para transmitir dados e
informação de tempo. O canal de temporização transmite pulsos de clock para o
receptor. Através da recepção de um pulso de clock, o receptor lê o canal de dados
e armazena o valor do bit encontrado naquele momento. O canal de dados não é
lido novamente até que o próximo pulso de clock chegue.
19
Na transmissão assíncrona a informação é enviada por um único canal. Para que a
comunicação se torne possível, o receptor e o emissor devem ser configurados
antecipadamente, isto é, o oscilador no receptor deve gerar um sinal de clock
interno que é igual ao do transmissor.
Para o protocolo serial mais comum, os dados são enviados em pequenos pacotes
de 10 ou 11 bits, dos quais 8 constituem a mensagem. Quando o canal está em
repouso, o sinal correspondente no canal tem um nível lógico ‘1’. Um pacote de
dados sempre começa com um nível lógico ‘0’ (start bit) para sinalizar ao receptor
que uma transmissão foi iniciada. O “start bit” inicializa um temporizador interno no
receptor avisando que a transmissão começou e que serão necessários pulsos de
clock. Seguido do start bit, 8 bits de dados de mensagem são enviados na taxa de
transmissão especificada. O pacote é concluído com os bits de paridade e de
parada (“stop bit”).
Figura 4. Transmissão sincrona
in Canzian, Edmur (2005 p.10)
Figura 5. Transmissão Assíncrona
in Canzian, Edmur (2005 p.12)
20
[1]
Onde:
T – Duração de um bit
Baud rate (Taxa de transferência) - velocidade com que os dados são enviados
através de um canal. No padrão RS-232, ocorre uma transição de sinal por bit, a
taxa de transferência e a taxa de bit (bit rate) são iguais. Por exemplo, se tivermos
um baud rate de 9600 bauds (9600 bps), T=1/9600=104µs.
Interface serial RS-232 (EIA-232)
O padrão RS-232 específica as tensões, temporizações e funções dos sinais, um
protocolo para troca de informações, e as conexões mecânicas.
O equipamento que faz o processamento dos sinais é chamado DTE (Data Terminal
Equipment – usualmente um computador), tem um conector DB9 ou DB25 macho,
O equipamento doutra extremidade é denominado de DCE (Data Circuit-terminating
Equipment), tem um conector DB9 ou DB25 fêmea.
Na figura a seguir é apresentada a definição dos sinais para um dispositivo DTE.
Entra no DTE
Sai do DTE
Figura 6. Descrição dos pinos do Conector DB9 macho
in Canzian, Edmur (2005 p.15)
21
As funções dos sinais no padrão RS-232 podem ser vista no anexo 1, tabela 4.
No padrão RS-232, Sinais com tensão entre –3 volts e –25 volts com relação ao
terra (pino 5) são considerados nível lógico “1”, e tensões entre +3 volts e +25 volts
são considerados nível lógico “0”. A faixa de tensões entre –3 volts e +3 volts é
considerada uma região de transição para o qual o estado do sinal é indefinido.
O padrão RS-232 especifica uma taxa máxima de transferência de dados de 20.000
bits por segundo (o limite usual é 19200 bps). Baud rates fixos não são fornecidos
pela norma. Contudo, os valores mais usados são 300, 1200, 2400, 4800, 9600 e
19200 bps.
Conversor de nível TTL/CMOS para RS-232 e vice-vers a
A maior parte dos circuitos digitais utilizam níveis TTL ou CMOS. Portanto, o
primeiro passo para conectar um circuito digital a uma interface RS-232 é
transformar níveis TTL (0 a 5 volts) em RS-232 e vice-versa. Isto é feito por
conversores de nível.
Existe uma variedade de circuitos que executam esta função mas, o mais utilizado
tem sido o MAX232 (da Maxim). Ele é capaz de gerar tensões de +10 volts e –10
volts a partir de uma fonte de alimentação simples de +5 volts, bastando para isso
alguns condensadores externos. Este CI (circuito integrado) tem 2 receivers
(conversor RS-232 para TTL/CMOS) e 2 drivers (conversor TTL/CMOS para RS-
232) no mesmo encapsulamento.
Controle de fluxo de dados (handshaking)
Se a conexão entre um DTE e um DCE for diversas vezes mais rápida do que a
velocidade do DCE, os dados transmitidos do DTE podem se perder, nesse caso, é
necessário controlar o fluxo de dados. Isto pode ser feito de três maneiras:
1. Sem controle de fluxo, os dados são enviados mesmo quando o receptor não
puder receber mais dados. Isto pode levar a perca de dados, quando o
emissor transmite os dados a uma velocidade superior que a receptor mas,
pode ser usado quando os bytes a serem transmitidos por vez são poucos
(esta é a forma usada neste sistema).
2. O controlo do fluxo de dados por software, também conhecido como
XON/XOFF utiliza 2 caracteres ASCII; XON e XOFF. O DCE deve ter um
buffer que, quando enche o DCE envia o carácter XOFF para avisar o DTE
22
para parar de enviar dados. Quando o DCE estiver pronto para receber mais
dados ele envia o carácter XON e o DTE enviará mais dados. Este tipo de
controlo de fluxo tem a vantagem de não necessitar linhas adicionais, às
linhas TxD e RxD.
3. O controlo do fluxo de dados por hardware, também conhecido como
RTS/CTS utiliza 2 linhas extras em seu cabo serial além das 2 linhas para
transmissão de dados. Quando o DTE quer enviar dados ele activa a linha
RTS. Se o DCE tiver espaço para receber esses dados, ele irá responder
activando a linha CTS e o DTE começará a enviar dados. Se o DCE não tiver
espaço para receber dados ele não activa a linha CTS.
2.4. Protocolos de comunicação
Segundo Do Carmo (2005), protocolo é um conjunto de regras pré estabelecidas,
cuja função é fazer com que a comunicação de dados entre equipamentos seja
realizada com segurança e de forma ordenada. Estas regras obedecem a uma
sequência lógica e normalmente padronizada.
A seguir são mostrados dois tipos de protocolos mais usados para comunicar
dispositivos, usando a conexões seriais.
Protocolo orientado a byte
De acordo com Do Carmo (2005), são protocolos que utilizam caracteres ASCII para
o controle de operação e do tráfego de suas mensagens. Estes protocolos são os
mais antigos e são usados com frequência em linhas de longa distância. O Binary
Synchronous Communication (BISYNC) é um exemplo de um protocolo orientado a
byte muito utilizado actualmente.
Há 16 caracteres que controlam a conversação do protocolo. A tabela abaixo
apresenta os caracteres mais utilizados na criação de protocolos e as suas
respectivas funções, segundo Do Carmo (2005).
23
Tabela 2 – Caracteres do protocolo orientado a byte
O formato típico de um pacote do protocolo orientado a byte é mostrado na figura a
seguir.
SYN SYN SOH CABEÇALHO STX TEXTO ETX BCC Figura 7. Formato de um pacote do protocolo orientado a byte
in Do Carmo, Vilson (2005, p.17)
Este formato representa uma conexão entre dois dispositivos. Inicialmente o bloco é
enviado com caracteres de sincronismo SYN, seguidos do carácter SOH que pode
indicar o envio de endereço do transmissor. Após o SOH, é enviado o cabeçalho
com o endereço do receptor de destino, após isso é enviado a mensagem, que é
precedida pelo carácter STX. Após o texto, pode seguir o carácter ETB, significando
que, apesar de ter sido preenchido todo campo disponível no bloco, a mensagem
ainda não terminou, ou o carácter ETX, indicando o fim do texto. E por fim, é
colocado o bloco o BCC-Block Check Character, que são um ou mais caracteres
para verificação de erros (DO CARMO, 2005).
Protocolo orientado a bit
De acordo com Do Carmo (2005), protocolos orientados a bit são protocolos que
não utilizam caracteres ASCII para delimitar blocos de mensagem. Todo o controle
Carácter ASCII Código (hex)
Funçã o
SOH 01 Identifica o início do cabeçalho STX 02 Identifica o início do texto e o fim do cabeçalho. ETX 03 Identifica o fim do texto. É sempre transmitido como
último carácter. EOT 37 Indica o fim da transmissão. ETB 26 Indica o fim de um bloco, iniciado com um SOH ou um
STX. ENQ 2D Pede uma resposta em X segundos à estação remota, ou
requer uma retransmissão da última mensagem. ACK0 e ACK1 1070 e 1061 Reconhecimento positivo de uma mensagem recebida e
está pronto para receber outra mensagem. NAK 3D Reconhecimento negativo de uma mensagem recebida,
indicando a necessidade de retransmissão. SYN 32 Mantém o sincronismo entre o transmissor e o receptor. ITB 1F Usado para dividir o texto da mensagem transmitida em
blocos.
24
é tratado em nível de bit, ou seja, campos formados por combinações binárias bem
definidas.
O formato típico de um pacote de protocolo orientado a bit é mostrado na figura a
seguir.
FLAG ENDEREÇO CONTROLE MENSAGEM FSC FLAG Figura 8. Estrutura de um pacote do protocolo orientado a bit.
in Do Carmo Vilson (2005, p.18)
FLAG - sequência binária que delimita o início e o fim da mensagem. É constituída
pela sequência 01111110.
ENDEREÇO - Campo formado por 8 bits, que codificam o controlo da comunicação.
MENSAGEM - Informação útil propriamente dita.
FCS - Campo formado por 16 bits para verificação de erros, empregando a técnica
CRC (Cyclic Redundancy Cheking) (DO CARMO, 2005).
25
3. DESENVOLVIMENTO DO TRABALHO
O sistema de controle de acesso desenvolvido neste projecto subdivide-se em três
módulos básicos:
Módulo de entrada de dados;
Módulo de processamento de dados;
Módulo actuador.
Módulo de entrada de dados
Este módulo é basicamente constituído pelo leitor de código de barras e o
microcontrolador PIC16F877. Em cada porta de acesso aos compartimentos da
maternidade será instalado um leitor de código de barras. Para que os utentes da
maternidade possam aceder aos compartimentos desta, deverão fazer passar os
seus cartões nos leitores das respectivas portas.
Ao fazer passar o cartão no leitor, este capta os dados, descodifica-os numa
sequência de bits correspondente ao tipo de código de barras usado. A esta
sequência de bits acrescentam-se códigos de controle de acordo com o protocolo
de comunicação usado pelo leitor. Os dados são posteriorimente transmitidos para o
microcontrolador.
No microcontrolador instalalou-se um software capaz de perceber o protocolo de
comunicação usado pelo leitor. O microcontrolador recebe os dados, extrai a
informação útil, isto é, o código do usuário e adiciona a este, os códigos de
endereço do leitor e os caracteres de controle do protocolo de comunicação entre o
microcontrolador e o PC.
Módulo de processamento de dados
Este módulo consiste em um computador. A comunicação entre o microcontrolador
e o computador se dá através da Porta Serial RS-232. Mas, para que esses dois
equipamentos troquem informações correctamente é necessário que eles tenham
um protocolo de comunicação.
A modalidade de transmissão (comunicação entre o microcontrolador e o Pc) é Half-
Duplex, ou seja, tanto o computador como o microcontrolador enviam e recebem
dados através de dois fios pelo canal Serial.
No PC estará instalada uma base de dados, onde serão cadastrados não só os
dados dos cartões e dos seus proprietários, como também os dados das portas a
serem controladas. Será também instalado uma aplicação cuja função é receber os
26
dados na porta serial, verificar se os mesmos estão cadastrados na base ou se
estão habilitados a aceder o compartimento em causa, no caso afirmativo, enviar
um comando ao microcontrolador, para que este envie um sinal ao módulo de
actuador.
Através dos dados recebidos do microcontrolador, a aplicação poderá ler o código
do usuário e o endereço do leitor, comparar os dados do código do usuário com os
cadastrados na base de dados. Estando ou não o utilizador habilitado a aceder o
compartimento em causa, a aplicação envia um comando ao microcontrolador.
Módulo Actuador
Este módulo é basicamente constituído pelo microcontrolador, fechadura eléctrica e
LEDs.
O microcontrolador recebe os dados enviados pelo PC, extrai o endereço do leitor
de código, verífica o comando a ser executado, isto é, se deve ou não accionar a
fechadura em causa. Em caso afirmativo, o microcontrolador coloca um sinal no
pino de saída ligado a fechadura correspondente ao endereço do leitor em causa.
Este sinal, energiza o relé acoplado, e este por sua vez, fecha os contactos da
fechadura, fazendo com que a porta seja aberta. Ao mesmo tempo um LED verde é
aceso, indicando ao utilizador que a porta foi aberta. Caso o comando enviado pelo
PC seja negativo, o microcontrolador devolve o funcionamento ao sistema,
mantendo aceso um LED vermelho na fechadura, o que indica que o acesso foi
negado.
A figura seguinte mostra o diagrama de blocos dos módulos desenvolvidos.
Figura 9. Diagrama de blocos do sistema de controle de acessos usando código de
barras
LEITOR DE CÓDIGO DE
BARRAS
MICROCRONTROLADOR
PC
FECHADURA ELÉCTRICA
27
3.2. Especificação dos componentes
3.2.1. Leitor de código de barras
O leitor de código de barras usado neste projecto é o SLOT READER 30 , foi
desenvolvido pela empresa brasileira NONUS, ele é mostrado na figura abaixo.
Este leitor é basicamente constituido por:
sensor de código de barras;
placa descodificadora;
Guia ou canaleta.
a) Sensor de código de barras
O sensor de Código de Barras é um sensor óptico para a captura de código de
barras em documentos ou cartões. Sua utilização necessita de uma placa de
descodificação, para os diferentes tipos de padrões de código de barras existentes
no mercado.
Figura 10. Leitor de código de barras SLOT READER 30
in Nonus (p.1)
28
As características técnicas deste leitor podem ser vistas no anexo 1, tabela 5. No
anexo 2, figura 22. pode-se ver a figura do sensor de código de barras com o
respectivo conector e as legendas dos pinos
b) Placa descodificadora
Esta placa está directamente conectada ao sensor, sua função é receber o sinal
vindo do sensor e descodificar o código em causa. Ela contém uma firmware capaz
de descoficar códigos de barras nos padrões 2 de 5 intercalado, 39, EAN e 128.
Características técnicas
Alimentação 5VDC +/-10% Consume 20mA Máximo
No anexo 2, figura 23., pode-se ver uma ilustração do conector para a placa
descodificadora e as legendas dos respectivos pinos.
Figura 11. - Sensor de código de barras Nonus
in Nonus (p.4)
Figura 12. Placa descodificadora de código de barras
in Nonus (p.2)
29
Comunicação entre o leitor e o microcontrolador
A placa comunica-se com o microcontrolador através de um canal Half duplex,
ligado aos pinos 4 e 6 do interface de comunicação da placa (CN3). O sinal de saída
é enviado no nível RS-232, o que torna necessário, um conversor de nível RS-232
para TTL.
O sinal de saída da placa tem os seguintes parametros:
Taxa de transferência (velocidade de comunicação) ---------------------------2400bps
Paridade -------------------------------------------------------------------------------------------Impar
Numero de bits por carácter -----------------------------------------------------------------7 bits
Numero de Stop bits -----------------------------------------------------------------------1Stop bit
A cada documento lido com sucesso, o Leitor transmite o seguinte pacote:
STX Dados ETX LRC
Onde:
STX - indica o início da Mensagem (02H)
Dados - caracteres lidos no código de barras
ETX - indica o fim da Mensagem (03H)
LRC - verificação de erros de transmissão (ou-exclusivo de todos os dados
transmitidos incluindo ETX e excluindo STX)
Ao receber esta mensagem, o microcontrolador recalcula o LRC, compara o LRC
recebido com o calculado. Caso sejam iguais, o microcontrolador deve transmitir o
código de controlo ACK (06H) ao leitor. Este código indica que a mensagem foi
recebida correctamente. No caso de erro, o microcontrolador deve transmitir ao
leitor o código de controlo NACK (15H). Este código indica que a mensagem
recebida não confere o LRC transmitido com o calculado, e a mensagem deve ser
retransmitida.
O leitor aguarda por estes códigos por um período de 0,5 segundos, não recebendo
resposta considera que a mensagem foi transmitida correctamente.
Figura 13. Formato do Pacote de dados do leitor de código de barras
30
Neste sistema usou-se o código de barras do tipo EAN-8, que é uma variação do
EAN-13. Como o nome sugere, EAN-8 codífica 8 digitos.
3.2.2. Circuito electrónico
Os sub-circuitos do sistema estão ilustrados no anexo 2 figuras 24; 25; 26 e 27.
Para o desenho destes circuitos foi usado o programa Proteus Professional.
Na figura 25., os componentes J1 à J8 identificam os conectores dos leitores de
códigos de barras, onde:
O pino 1 está ligado aos pinos 2 e 5 dos conectores CN3 e CN5
respectivamente da placa descodificadora;
O pino 2 está ligado ao pino 6 do conector CN3 da placa descodificadora;
O pino 3 está ligado ao pino 4 do conector CN3 da placa descodificadora.
Os componentes MAX232 (1) à MAX232 (9) identificam os conversores de nível
RS-232 para TTL e vice-verse.
O componente U2 (74151) identífica um multiplexador de 8 entradas. Os pinos 9; 10
e 11 seleccionam uma das entradas do MUX (X0, X1, X2, X3, X4, X5, X6 e X7 ),
isto é, seleccionam um leitor para que possa enviar dados ao microcontrolador. Por
exemplo, quando o microcontrolador enviar o valor binário “000” aos pinos de
selecção (9; 10 e 11), o leitor J1 será seleccionado. O pino 7 habilita e desabilita o
MUX, o seu estado também é determinado pelo microcontrolador.
O componente U3 (74HCT238) identífica um demultiplexador de 8 saídas. Os pinos
1; 2 e 3 seleccionam a saída do DEMUX (Y0, Y1, Y2, Y3, Y4, Y5, Y6 e Y7), isto é,
seleccionam um leitor para que possa receber dados provenientes do
microcontrolador. Por exemplo, se num dado instante o microcontrolador enviar o
valor binário “001” aos pinos de selecção (1; 2 e 3), os dados provenientes do
microcontrolador, que entram pelo pino 6 do DEMUX, serão entregues ao leitor J2.
Os pinos 4 e 5 habilitam e desabilitam o DEMUX, os seus estados também são
determinados pelo microcontrolador.
Figura 14. código de barras EAN-8
in Milies, C. Polcino (2006,p. 12)
31
Na figura 24, o componente U1 (PIC16F877) identífica o microcontrolador, este é o
coração do sistema. Ele recebe os dados enviados pelos leitores, verífica a paridade
de cada byte recebido, excluindo o carácter ETX, compara com o dados do LRC.
Se a paridade verificar, signífica que os dados recebidos estão correctos. O
microcontrolador envia os dados para o PC através do pino 25.
O componente ligado aos pinos 13 e 14 (XTAL) é um cristal de quartzo oscilando a
10.000.000 (dez milhões de vezes por segundo) ou simplesmente 10Mhz. Este
cristal gera os pulsos precisos para o bom funcionamento do microcontrolador.
O componente J9 identifica a porta COM1 do PC (porta serial RS-232).
O sub-circuito da figura 26 específica o accionador da fechadura eléctrica. Usou-se
um relê para fechar ou abrir os contactos eléctricos da fechadura e ao mesmo
tempo ligar os LEDs D4 (verde) e D5 (vermelho). Usou-se o relé porque não se
pode ligar a saída do microcontrolador directamente na fechadura, pois ela é
accionada com 12Vac / 400mA (corrente alternada). O LED D4 é ligado sempre que
a fechadura é accionada, isto para indicar ao utente que a porta foi aberta. Para
cada fechadura a ser controlada será necessário um circuito idêntico ao sub-circuito
da figura 26. Os sinais que accionam a fechadura vêm dos pinos: 2, 3, 4, 5, 6, 7, 8 e
9 do microcontrolador.
O sub-circuito da figura 27 específica a fonte de alimentação para o circuito
electrónico do sistema. A saída de 12V é utilizada somente para alimentar os sub-
circuito da figura c), e a saída de 5V é para alimentar os demais componentes do
circuito.
Comunicação entre o microcontrolador e o PC
O processo de transferência de dados do microcontrolador para o computador
ocorre logo após a recepção dos dados no microcontrolador.
A comunicação entre o microcontrolador e o computador é realizada sem
interrupções. Os dados são enviados carácter a carácter para o computador,
usando um protocolo semelhante ao usado na comunicação entre o leitor de código
de barras e o microcontrolador.
O formato do pacote de dados para comunicação entre o microcontrolador e o
computador é mostrado na figura abaixo.
32
STX Endereço do leitor de código de barras Código do cartão lido ETX DADOS
Figura 15. Formato do pacote de dados para comunicação entre o microcontrolador
e o computador
O computador verífica se o primeiro e o ultimo carácter recebido são STX e ETX
respectivamente, no caso afirmativo, ele armazena o segundo byte, que
corresponde ao endereço do leitor de código de barras, e depois armazena os bytes
que correspondem ao código do cartão. Se na verificação, se constatar que o
primeiro e o último byte não correspondem a STX e ETX respectivamente, o pacote
recebido é descartado, pois não se tratam de dados válidos.
O mesmo processo acontece no sentido inverso, isto é, comunicação entre o
computador-microcontrolador.
STX Endereço do leitor de código de barras Comando ETX DADOS
Figura 16. Formato do pacote do protocolo de comunicação entre o computador e o
microcontrolador
Onde o campo comando corresponde ao comando enviado para a abrir ou não a
fechadura, dependendo de se o utilizador está ou não habilitado a aceder o
compartimento em causa.
Se comando = 01 – abrir a fechadura;
Se comando = 00 – não abrir a fechadura.
3.2.3. Progama executado no microcontrolador
No anexo 2, figura 28, pode-se ver o fluxograma que mostra as principais tarefas
executadas pelo microcontrolador. A partir deste, pode-se escrever o código pra ser
gravado no microcontrolador.
3.2.4. Base de dados
Para que este sistema possa gerenciar o acesso aos compartimentos da
maternidade da clínica em causa, foi criado uma base dados onde serão
cadastrados todos os utilizadores da maternidade (funcionários, parturientes e
visitantes).
33
Na figura temos um diagrama que mostra, de forma resumida, o funcionamento do
sistema, isto é, quais utilizadores podem aceder a qual compartimento.
As cetas no diagrama indicam que o utilizador em causa está habilitado a aceder a
um certo compartimento.
A partir deste diagrama , projetou-se o Modelo Entidade-Relacionamento (MER) da
base de dados. Este modelo é constituido pelas entidade do sistema (Funcionários,
utentes e compartimentos) e pelos seus relacionamentos.
Figura 17. Diagrama esquemático do controlo de acesso aos compartimentos
Utentes
Visitantes
Parturientes
UTILIZADORES DO SISTEMA
Sala de espera para
parturientes
Sala de parto
Berçario
Sala para médicos
Sala para parteiras
Sala para pessoal de
limpeza
Cozinha
Corredor de acesso aos
compartimentos da
maternidade
COMPARTIMENTOS
Funcinários
Pessoal de
Limpeza
Administração
Cozinheiros
Parteiras
Médicos
34
ADMINISTRADOR Nome Senha
campo nome armazena o nome usado pelo administrador do sistema, para
manejar a base de dados;
campo senha armazena a senha do administrador;
a chave primária desta tabela é formada pelos dois campos.
UTILIZADOR Pnome Snome Apelido Id Tipo
campo Pnome armazena o primeiro nome do utilizador;
campo Snome armazena o sobrenome do utilizador;
campo Apelido armazena o último nome do utlizador;
campo Id armazena o número de identificação atribuido ao utilizador ( este é
o mesmo número que será codificado em barras e impresso no crachá do
utilizador);
campo Tipo armazena o tipo de funcionário (Médico, parteira, cozinheiro,
pessoal de limpeza e administração) ou de utente (parturiente e visitante);
A chave primária desta tabela é formada pelo campo Id.
COMPARTIMENTO Cnome Cnumero TipoUtilizador
campo Cnome armazena o nome do compartimento;
campo Cnumero é o número (endereço) atribuido ao compartimento;
campo TipoUtilizador armazena o tipo de funcionário, é equivalente ao
campo Tipo da tabela UTILIZADOR;
a chave primária desta tabela é formada pelos campos Cnumero e
TipoUtilizador .
Chave primária
Chave primária
Chave primária
35
ACESSO IdCompartimento IdUtilizador Data Hora
campo IdCompartimento armazena o número do compartimento cuja porta
foi aberta;
campo IdUtilizador armazena o número de identificação do utilizador que a
acedeu a um dado compartimento;
campo Data armazena o dia – mês - ano em que a porta de um
compartimento foi aberta;
campo Horas arnazena a hora : minutos : segundos em que a porta de um
compartimento foi aberta.
A tabela ADMINISTRADOR é preenchida no momento da instalação do sistema.
Ela é usada para certificar que a única pessoa que pode manejar a base de dados é
o administrador, previamente cadastrado nesta tabela.
Na tabela UTILIZADOR são cadastrados os utilizadores do sistema, isto é, só se
pode aceder a algum compartimento se se estiver cadastrado nesta tabela.
A tabela COMPARTIMENTO também é preenchida no momento da instalação do
sisema, ela verífica se um utilizador está habilitado a aceder a certo compartimento.
Esta verificação é feita automaticamente pelo sistema (veja o código do programa
que será instalado no PC).
A tabela ACESSO é preenchida automaticamente pelo sistema, ela é usada para
armazenar o número do compartimento cuja porta foi aberta, o número do utilizador
que acedeu ao compartimento e a data e hora de acesso.
Os dados nos campos da tabela ACESSO permanecem na base de dados durante
5 dias, após este período, eles são automaticamente apagados, isto para evitar que
o espaço no disco duro do computador se esgote.
3.2.4. Software no PC
O software para o PC foi desenvolvido usando a linguagem de programação C\C++.
A função do software é de receber os dados enviados pelo microcontrolador na
porta serial, verificar se os mesmos estão cadastrados na base dados e enviar um
36
comando (string) ao microcontrolador. Os dados recebidos e enviados pela porta
serial (COM1) do PC encontram-se no formato ou código ASCII.
O fluxograma do software pode ser visto no anexo 2, figura 29.
3.2.6. Fechadura eléctrica
A fechadura éléctrica é o actuador do sistema. É da marca HDL, modelo C-90,
fabricada por uma empresa brasileira (HDL). Ela é instalada na porta, do lado de
dentro do compartimento. Não existe outra forma de accionar a fechadura do lado
de fora, para além do accionamento através do leitor de código de barras. Ela pode
ser acionada, por dentro, através de uma chave ou através do botão de destrava
manual. Esta fechadura funciona a uma tensão de 12V c.a (corrente alternada), a
uma frequência de 60/50Hz e tem um consumo de 15W.
3.3. Implementação do sistema
3.3.1. Código do software no PC
Para escrever o código capaz de receber e enviar dados pela porta serial do PC,
usou-se algumas funções do API do windows. Estas tornam o código compatível
com as versões 95/98/Me/NT/2000 e XP da Microsoft.
A medida em que se foi escrevendo o código, procurou-se fazer uma breve
explanação acerca do mesmo, de modo a deixar o código mais claro, enquanto se
vai desenvolvendo:
Figura 18. Fechadura Eléctrica
in http://www.nardinieletrica.com.br;
37
#include <iostream>
# include <windows.h>
#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
# define TAMANHO 100
HANDLE hCom = 0; //Manipulador da porta de comunicação
char *PortaSerial =”COM1”; //porta escolhida
HANDLE rs_inicializa()
DCB dcb; // Utilizada para definir todos os parâmetros da
comunicação
COMMTIMEOUTS CommTimeouts;
hcom = CreateFile(
PortaSerial, // Nome da porta
GENERIC_READ |GENERIC_WRITE, // Operações
suportadas (leitura e escrita)
0, //Compartilhamento (0 – nenhuma outra abertura
é permitida)
NULL, //Atributos de segurança
OPEN_EXISTING, //Abertura do arquivo
0, //Entradas e saidas sem overlapped
NULL //Atributos e flags devem ser nulas para COM
);
if(hCom == INVALID_HANDLE_VALUE) //Verificação de ocorrência de erro
na tentiva de de abrir a porta
return 0;
38
Explanação
Antes de iniciar uma comunicação através da porta serial, é necessário abrir uma
conexão. Isto é feito através da função CreateFile(…) do API do windows. Ela
aceita varios parâmetros, sendo que o primeiro é nome da porta, que pode ter
valores como “COM1” , “COM2”, “COM3” e “COM4” . O segundo específica o tipo
de acesso, isto é, para leitura (GENERIC_READ), para escrita (GENERIC_WRITE),
ou para leitura e escrita (GENERIC_READ | GENERIC_WRITE). O terceiro
parâmetro específica o compartilhamento, se for definido como 0 (zero), a porta não
será compartilahada, ou seja, só pode ser usada por um único programa.
hCom é uma variável do tipo HANDLE (identificador), armazena toda informação
necessária sobre a porta serial, ela é usada como parâmetro por outras funções do
API do windows e também é usada para verificar a ocorrência de erros.
if(!GetCommState(hCom, &dcb))
return 0;
dcb.BaudeRate = CBR_2400;
dcb.ByteSize = 7;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
if(SetCommState(hCom, &dcb) == 0)
return 0;
Explanação:
A estrutura DCB da API do windows é utilizada para definir os parâmetros da
comunicação, tais como Baud Rate , Byte Size , Parity checking , e Stop Bit .
Conforme se disse no momento da especificação do leitor de código de barras, a
taxa de transferência é de 2400bps, a quantidade de bits por caracter é 7bits, na
comunicação entre o microcontrolador e o PC não se usou a verificação de paridade
logo, é sem paridade e o número de Stop Bit é 1.
A função GetCommState() tem como objectivo, obter as configurações da porta
depositadas na estrutura DCB. E a função SetCommState() tem como objectivo,
definir o novos parâmetros para a porta.
39
If(GetCommTimeouts(hCom, &CommTimeouts) == 0)
return 0;
CommTimeouts.ReadInternalTimeout = 500;
CommTimeouts.ReadTotalTimeoutMultiplier = 500;
CommTimeouts.ReadTotalTimeoutConstant = 500;
CommTimeouts.WriteTotalTimeoutMultiplier = 500;
CommTimeouts.WriteTotalTimeoutConstant = 500;
if(SetCommTimeouts(hCom, &Commtimeouts) == 0)
return 0;
return hCom;
Explanação:
As funções GetCommTimeouts() e SetCommTimeouts() da API do windows têm
como objectivo obter e modificar as configurações actuais dos timeouts da porta
serial. Quaisquer mudanças nos valores dos atributos da estrutura
COMMTIMEOUTS afectarão consideravelmente os tempos de leitura e escrita na
porta serial.
char LerDados()
char ReceberBuffer[TAMANHO];
DWORD BytesLidos=0;
ReadFile(hCom, ReceberBuffer, TAMANHO, &BytesLidos, NULL );
if(BytesLidos)
return ReceberBuffer;
else
return 0;
Explanação:
É através da função ReadFile() que é feita a leitura dos dados que chegam na porta
serial. Esta função aceita 5 parâmetros, sendo o primeiro hCom o identificador da
porta serial retornado na abertura da mesma através da função CreateFile() . O
40
segundo é um buffer onde os dados lidos da porta serial serão armazenados. O
terceito informa à função ReadFile() , qual o tamanho do buffer. O quarto é uma
variável onde a função ReadFile() armazenará a quantidade exacta de bytes lidos.
O quinto é um ponteiro para uma estrutura "overlapped", no nosso caso não será
utilizada, portanto definimos este parâmetro como NULL .
Bool EnviarDados(char *SaidaDados, const unsigned int sizaBuffer,
unsigned long& length)
if(WriteFile(hCom, SaidaDados, sizeBuffer, &length,NULL) = = 0)
return false;
return true;
Explanação:
A função WriteFile() do API do windows envia dados pela porta serial. Esta função
aceita 5 parâmetros, sendo o primeiro hCom o identificador da porta serial
retornado pela função CreateFile() . O segundo é um buffer onde deverão estar
depositados os dados a serem enviados para a porta serial. O terceiro informa à
função qual o tamanho do buffer de dados. O quarto é uma variável onde a função
armazena os bytes escritos. O quinto é um ponteiro para uma estrutura
"overlapped", no nosso caso não será utilizada, portanto definimos este parâmetro
como NULL .
Void rs_termina()
CloseHandle(hCom);
Explanação:
A função CloseHandle() da API do windows fecha a porta serial aberta pela função
CreateFile() .
41
O código da função principal (int main() ), pode ser visto no anexo 3.
3.3.2.Base de dados
Neste sistema usou-se MYSQL para Gerenciar a Base de Dados. Optou-se pelo
MYSQL porque é o mais popular SGBD para banco de dados relacional que usam
linguagem SQL, o que faz com que haja maior número de foruns que discutem
questões relativas a este. Ele também é grátis para aplicações não comerciais.
A interface gráfica para a base de dados foi desenvolvida no ambiente Visual Basic.
NET. Ela foi desenvolvida para facilitar o gerenciamento da base dados, isto é, não
é necessário que o administrador saiba utilizar o MYSQL, basta que tenha noções
básicas de informática.
As interfaces para a base dados podem ser vistas no anexo 2, figuras 3.2.2; 3.2.2
a), b), c), d) e e).
3.3.3. Instalação do sistema
As figuras acima ilustram a forma como os equipamentos devem ser instalado. Na
figura 19 tem-se uma visão externa do compartimento, o leitor de código de barras
deve ser instalado a uma distância de 110cm do chão, no lado direito da porta. Por
cima do leitor, a uma distância de 2 cm, deve-se instalar o circuito com os LEDs de
sinalização.
Fechadura
eléctrica
Mola Hidraúlica
Leitor de
código de
barras
LED
vermelho
e verde
Figura 19. Instalação do leitor de código de barras na porta.
Figura 20. Instalação da fechadura eléctrica na porta.
42
Na figura 20 tem-se uma visão do interior do compartimento, a fechadura deve ser
instalada a uma distância de 110cm do chão, no lado direito da porta. A Mola
Hidraúlica deve ser instalada no canto superior esquerdo, sua função é manter a
porta fechada, sempre que não houver nenhuma força a empurar a porta no sentido
de abertura.
3.3.4. Gerar e imprimir códigos de barras
Os códigos de barras devem ser imprimidos em cartões PVC, retangulares, com
dimensões 8.5x5.5cm. Nos cartões para funcionários, deve ser impresso juntamente
com o código de barras, o nome da clínica, o nome, cargo ou função e a fotografia
do funcionário, de modo que o cartão sirva como uma forma de identificação do
portador.
Nos cartões para parturientes e visitantes, deve ser impresso, para além do código
de barras, o nome da clínica e a designaçaõ do portador (Parturiente ou visitante),
este deve estar em letras maiores em relação as demais, de modo a destacar-se.
De modo a aumentar a segurança, os números que equivalem ao código não serão
imprimidos, isto diminui a possibilidade de falsificação ou clonagem dos cartões.
Os cartões poderão ser impressos numa gráfica que tenha estes serviços.
A geração do código de barras será feita com auxilio do software
Easybarcodelabelpro , disponivel para download no site
http://www.codigosbarra.com/
foto
CLÍNICA CRUZ AZUL
Nome:::: Fulano de Tal
MÉDICO
Figura 21. Ilustração de um cartão para médico.
Figura 21.1. Ilustração de um cartão para parturiente.
CLÍNICA CRUZ AZUL
PARTURIENTE
43
4. VIABILIADADE ECONÓMICA 2
Qty Item Preço unit . (Mt) Total (Mt) 1 Microcontrolador PIC16F877 339,44 339,44 8 Leitor de código de barras SLOT READER 30 5.503,60 44.028,80
36 Capacitor de poliester de 1µF 19,37 697,32 9 Conversor de nível MAX232 107,59 968,31 1 MUX 74151 43,71 43,71 1 DEMUX 74HCT238 43,71 43,71 1 Oscilador cristal de 10MHz 29,61 29,61 2 Capacitor de cerâmica de 15pF 5,73 11,46
16 Resistor de 2.2kΩ 5,99 95,84 8 Resistor de 100Ω 5,99 47,92 8 LED verde de 9V 25,00 200,00 9 LED vermelho de 9V 25,00 225,00 2 Capacitor electrolítico de 100 µF 19,22 38,44
20 Diodo 1N4004 (rectificador) 0,97 19,40 8 Relé GR2-24-DC12 396,48 3.171,84 8 Transistor BC327 6,65 53,20 8 Fechadura eléctrica C-90 2.398,00 19.184,00 1 Fusível de 1A 5,07 5,07 1 Transformador 220V para 12V 260,10 260,10 1 Resistor de 1kΩ 5,99 5,99 1 Regulador de tensão 7805 45,18 45,18 8 Mola Hidraúlica aerea dorma ma200-2 prata 1.871,73 14.973,84 1 200m de cabo par trançado 11,50 2.300,00 1 Software Easybarcodelabelpro 2.839,30 2.839,30 1 Computador 3.0GHz, 256MB de RAM,
40GB de HD + teclado + mouse + monitor 18.000,00 18.000,00
Total (Mt) 107.627,52
Nota: Todos os preços dos componentes acima tabelados foram extraídos do
website: http://za.rs- online.com , que é um revendedor Sul Africano de
componentes elecrónicos. Excepto os dispositivos abaixo indicados, que foram
extraídos do site do fabricante.
Leitor de código de barras SLOT READER 30 – http:// www.nonus.co.br;
Fechadura eléctrica C-90 - http://www.nardinieletrica.com.br;
Mola Hidraúlica aerea dorma ma200-2 prata - http://www.twenga.com.br/dir-
Jardim-Bricolagem,Portas-e-janelas,Mola-hidraulica;
Software Easybarcodelabelpro - http://www.codigosbarra.com;
2 A conversão das moedas estrangeiras pela metical foi feita usando o câmbio praticado pelo Banco de
Moçambique no dia 27/11/2010 (USD1 = 35.15Mt, 1Real = 16.35Mt, 1Rand = 5.09Mt ).
Tabela 3. Viabilidade económica
44
5. CONCLUSÕES E RECOMENDAÇÕES
5.1. Conclusões
O projecto seguiu basicamente a proposta inicial apresentada. Um ponto
negativo foi A alteração do local para o qual o projecto era destinado, isto porque
os dirigentes do local inicialmente previsto dificultaram a recolha de informações;
A realização deste projecto permitiu aprofundar e adquirir novos conhecimentos.
O aprofundamento dos conhecimentos relativos a microcontroladores, já
adquiridos na disciplina de Electrónica Digital 2, os protocolos de comunicação
entre dispositivos, adquiridos na disciplina de Sistemas de Computadores e
conhecimentos relativos a linguagem de programação C/C++, adquiridos na
disciplina de programação;
Os novos conhecimentos adquiridos foram em relação à tecnologia de código
de barras, linguagem de programação Visual Basic, configuração e uso da porta
serial do PC, para recepção e envio de dados, a teoria de base de dados e os
seus sistemas de gerenciamento;
Durante a especificação do software para o microcontrolador observaram-se
diferenças entre este e um software para desktop. Primeiro, é que usar variáveis
globais é a regra, a programação é estruturada, e que era necessário, muitas
vezes trabalhar-se a nível de bit para aproveitar ao máximo o desempenho do
microcontrolador;
Foram atingidos com sucesso todos os objectivos definidos no início do mesmo.
45
5.2. Recomendações
Recomenda-se que os códigos (programas) apresentados neste trabalho sejam
primeiro testados antes de serem instalados, isto porque, os testes feitos pelo
projectista, foram realizados tomando como base “suposições”, isto é, os códigos
não foram testados com os componentes do sistema.
A especificação RS 232, recomenda que o comprimento máximo dos cabos que
transportam o sinal (dados) entre dois componentes deve ser de 60m, isto para que
não haja atenuação do sinal. Sendo assim, para este sistema, recomenda-se que o
módulo de processamento (módulo que contém o microcontrolador) seja instalado
num local que não esteja a distâncias superiores a 60m dos compartimentos a
controlar.
Deve-se tambem evitar que os cabos que transportam o sinal (dados) sejam
instalados próximo a cabos de corrente eléctrica e de equipamentos que emitem
radiações electromagnéticas, isto para diminuir o nível de interferências externas.
Recomenda-se também a realização de outros trabalhos ligados a este, de forma a
fazer com que este sistema possa servir não só para controlar o acesso na
maternidade, como também o acesso em todo o hospital. E que os dados possam
ser transmitidos através de radiações electromagnéticas que propagam no espaço
(wireless), de modo a diminuir os custo do sistema.
46
REFERÊNCIAS BIBLIOGRÁFICAS
1. Azalea Software, Inc.(2005) “The Barcode FAQ ”. Disponível em http://www.azalea.com/FAQ/BarcodeFAQ_Portuguese.pdf Acesso em 10/08/10.
2. CANZIAN, Edmur (2005). “MINICURSO Comunicação Serial - RS232 ”. Disponível em http://www.professores.aedb.br/arlei/AEDB/Arquivos/rs232.pdf. Acesso em 10/08/10.
3. CECHET, Rafael ( 2006). “Protótipo de um sistema de monitorament o de
salas de aula utilizando tcp/ip sobre redes Etherne t (802.3)” - Trabalho de Conclusão de Curso para a obtenção dos créditos na disciplina Trabalho. - Universidade Regional de Blumenau - Curso de Ciências da Computação - Bacharelado. Disponível em http://campeche.inf.furb.br/tccs/2006-II/2006-2rafaecCechetvf.pdf. Acesso em 22/08/10.
4. Custom Computer Services, Inc.(2005). “Getting Started with CCS C in MPLAB
IDE”, Brasil. Disponível em http://www.hsaugsburg.de/~bhopke/Sonstiges/CCS_C/MPLAB%20- %20Getting%20Started.pdf. Acesso em 16/10/10.
5. DO CARMO, Vilson.(2005). “Protótipo de controle de acesso para academias de ginástica utilizando microcontrolador pic e o pa drão RS485” -Trabalho de Conclusão de Curso para a obtenção dos créditos na disciplina Trabalho - Universidade Regional de Blumenau –Curso de Ciências da Computação — Bacharelado. Disponível em http://campeche.inf.furb.br/tccs/2005-II/2005-2vilsondocarmovf.pdf. Acesso em 21/08/10.
6. FILHO, Constantino Seixas. “Comunicação serial, capitulo 2” . Disponível em http://www.cpdee.ufmg.br/~seixas/PaginaSDA/Download/DownloadFiles/Serial.PDF. Acesso em 15/9/10. http://www.datasheetcatalog.net/pt/datasheets_pdf/M/A/X/2/MAX232.shtml. Acesso em 14/09/10.
7. MAGALHÃES, Luciano dos Santos. (2009).” Abastecimento de estoque por rôbo micro controlado” – Anuário de Produção de Iniciação científica Discente – Faculdade de Anhanguera de Valinhos. São Paulo. – Disponível em http://sare.unianhanguera.edu.br/index.php/anuic/article/viewPDFInterstitial/560/497. Acesso em 22/08/10.
8. MATIC, Nebojsa; ANDRIC, Dragan; JERÔNIMO, Alberto. (2000). ”Microcontroladores pic para iniciantes.” Disponível em http://www.wlmquip.com.br/Microcontroladores.pdf. Acesso em 11/10/10.
9. MAX232 DATASHEET
10. Milies, C. Polcino (2006). “A matemática dos códigos de barras ”. – Disponível
em http://www.ime.ufg.br/bienal/2006/mini/polcino.pdf . Acesso em 26/07/10.
47
11. MURSHED, S. M. Mahbub; Dr HAQ Zahurul.” Designing of a barcode reader in the perspective of bangladesh market”. Disponível em http://www.professores.aedb.br/arlei/AEDB/Arquivos/rs232.pdf. Acesso em 10/08/10.
12. NONUS. “Manual Técnico, 8374 - SENSOR OPTICO COD. BARRAS IN FRA, Versão 6.3.” São Paulo – Disponível em http://www.nonus.com.br/download/ManualSensorBarcode.pdf. Acesso em 20/08/10.
13. PEREIRA, Fábio. (2003) “Microcontroladores pic: programação em c ”. 3.ed.
São Paulo: Érica.
14. PIC16F87X DATASHEET – Disponível em http://ww1.microchip.com/downloads/en/devicedoc/30292c.pdf. Acesso em 9/9/10
15. SENA. António S. “Microcontroladores Pic ” – Disponível em http://www.senaeng.com/files/curso_pic/manual_PICmicro__a.s.sena___senaeng.com.pdf. Acesso em 11/10/10.
16. ZEGRE, Artur; PEREIRA, Victor. ( 2006). “Controlo de acesso a salas de alunos”. Projecto de Final do Curso do 1º Ciclo em Engenharia Electrónica e de Computadores – Escola Superior Tecnologia Setúbal, Portugal. Disponível em http://ltodi.est.ips.pt/aabreu/controloacessos/relat%C3%B3rio-controloacessos.pdf. Acesso em 21/8/10.
48
ANEXO 1 – Tabelas
Pino Nome Descrição 1 Received Line Signal
Detector (CD) Usado quando o DCE for um modem. É habilitado (nível lógico 0) quando uma conexão telefónica é estabelecida. É desabilitado (nível lógico 1) quando não houver resposta.
2 Received Data (RxD) Este sinal está activo quando o DTE receber dados do DCE. Quando o DCE estiver em repouso, o sinal é mantido em nível lógico “1”.
3 Transmitted Data (TxD) Este sinal está activo quando dados estiverem sendo transmitidos do DTE para o DCE. Quando nenhum dado estiver sendo transmitido, o sinal em nível lógico “1”.
4 DTE Ready (DTR) Também chamado de Data Terminal Ready. Este sinal é habilitado (nível lógico “0”) pelo DTE quando for necessário abrir o canal de comunicação, isto é, está pronto para receber dados. Caso contrário é desabilitado (nível lógico “1”).
5 Signal Ground (GND) Sinal de terra de protecção (Está conectado a carcaça do conector). Também é utilizado como referência. Para outros sinais.
6 DCE Ready (DSR) Este sinal é habilitado (nível lógico “0”) para sinalizar ao DTE que o dispositivo está conectado ao canal de comunicação e pronto para transmitir.
7 Request to Send (RTS) Este sinal é habilitado (nível lógico “0”) para preparar o DCE para aceitar dados transmitidos pelo DTE. Quando o DCE estiver pronto, ele responde habilitando o sinal CTS
8 Clear to Send (CTS) Este sinal é habilitado (nível lógico “0”) pelo DCE para informar ao DTE que a transmissão pode começar. Os sinais RTS e CTS são e utilizados no controle do fluxo de dados em dispositivos DCE.
9 Ring Indicator (RI) Usado quando o DCE for um modem. É habilitado (nível lógico “0”) quando um sinal de chamada estiver sendo recebido na linha telefónica.
Tabela 4. Função dos sinais no padrão RS 232
49
Emissor de Luz LED infra Vermelho: Cumprimento de onda 890nm +/- 10nm
Velocidade de leitura 20 a 200cm/s Distância focal De 8mm +/-1.5mm, do documento ao centro dos
furos de fixação Altura mínima do código 7mm Alimentação 5V +/-10% Consumo (Corrente) 25mA máximo Saída digital TTL (barra branca: nível lógico “1”, barra preta:
nível lógico “0”) Temperatura de operação 0 a 50°C Temperatura de armazenamento
-20 a 60°C
Peso 20g
in Manual do kit slot reader
Tabela 5. Caracteríticas técnicas do leitor de código de barras SLOT READER 30
50
ANEXO 2 – Figuras, Esquemas Electrónicos e Fluxogra mas
´Legendas da figura 3.2.1 a)
1 – Jumper para +5VDC ou LED de alimentação
2 - 5VCC (cabo laranja)
3 – Terra (cabo castanho)
4 – Sinal (cabo vermelho)
5 – Sinal analógico (não usado)
Legendas da figura 3.2.1 b)
CN1 – PARA CONECTAR O SENSOR DE CÓDIGO DE BARRAS.
1 – Polarizador
2 – VCC
3 – Terra
Figura 22. Sensor de código de barras Nonus com cabo
Figura 23. Conetores da placa descodificadora
51
4 – Dados
CN2 – PARA CONECTAR SENSOR MAGNÉCTICO (NÃO USADO)
CN3 – INTERFACE DE COMUNICAÇÃO
1 – Clock Terminal (não usado)
2 – Terra
3- Dados Teclado (não usado)
4 – Receptor
5 – clock teclado (não usado)
6 – Transmissor
7 – Dados Terminal (não é usado)
8 - +5VCC
CN4 – SENSOR DE CÓDIGO DE BARRAS 2 + PINOS RESERVAD OS (NÃO
USADO)
CN5 – EXTENSORES - LED E BEEP(NÃO USADO).
Figura 24. Ligação do microcontrolador ao PC
Figura 24. Ligação do microcontrolador ao PC
52
53
Figura 26
Figura 26. Accionador da fechadura eléctrica e LEDs
Figura 27. Fonte de alimentação
54
. Accionador da fechadura eléctrica e LEDs
55
INICIO
INTERRUPÇÃO NO PINO 26?
LER O 1º BYTE
BYTE É STX?
LER O 2º BYTE(ENDEREÇO)
LER O 3º BYTE(COMANDO)
COMANDO=01?
ABRIR A FECHADURA
SELECCIONAR LEITOR (MUX)
INTERRUPÇÃO NO PINO RB0?
LER DADOS DO LEITOR
EXISTE O BYTE STX?
EXISTE O BYTE É ETX?
O LRC VERIFICA?
MONTA PACOTE DE DADOS
ENVIAR PACOTE DE DADOS PARA O PC
ENVIAR CARACTER
“NACK” PARA O LEITOR
SELECIONAR LEITOR
(DEMUX)
NÃO
NÃO
SIM
SIM
NÃO
NÃO
NÃO
NÃO
SIM
SIM
SIM
SIM
SIM
NÃO
Figura 28. Fluxograma do programa executado no microcontrolador
56
INICIO
INTERRUPÇÃO NO PINO 2 DA PORTA SERIAL?
ARMAZENAR A STRING NO BUFFER
DESCARTAR OS DADOS RECEBIDOS
O 1º BYTE É STX?
O 11º BYTE É ETX?
ARMAZENAR O 2º BYTE NA VARIÁVEL ENDEREÇO
CONVERTER OS BYTES DA 3º À 10º POSIÇÃO
PARA DECIMAL
CONSULTAR NA BASE DADOS
OS DADOS VERIFICAM?
ENVIAR A STRING “STX ENDEREÇO 01 ETX”
PARA O PIC
ENVIAR A STRING “STX ENDEREÇO 00 ETX”
PARA O PIC
NÃO
SIM
NÃO
NÃO
SIM
SIM
NÃO SIM
Figura 29. Fluxograma do programa executado no PC
57
´
Figura 30. Interface para Login do administrador do sistema
Figura 31. Interface principal
Figura 32. Interface para cadastro de funcionarios da maternidade
58
Figura 33. Interface para cadatrar Utentes (Parturientes e Visitantes)
Figura 34. Interface para consultar utilizadores
Figura 35. Interface para Obtenção de relatorios de acesso a compartimentos
59
ANEXO 3 – Código fonte do Software para recepção e envio de dados pela
pota serial
int main()
string ComandoRecebido, Enderec, Dados,;
MYSQL * conexao;
MYSQL_RES *resp;
MYSQL_ROW row;
if(rs_inicializa())
Enderec = '\0';
Dados = '\0';
Prefixo = ”STX”;
Sufixo = ”ETX”;
string * resp
resp = &Dados
ComandoRecebido='\0';
ComandoRecebido = LerDados();
if((ComandoRecebido.substr(0, 3) == "STX") && (
ComandoRecebido.substr(12, 3) == "ETX" ))
Enderec = ComandoRecebido.substr(3, 1);
Dados = ComandoRecebido.substr(4, 8);
string query2 = "INSERT INTO acesso VALUES (" + Enderec + "," +
Dados + "," + "CURRENT_DATE," + "CURRENT_TIME"+")";
conexao = mysql_init(NULL);
if(mysql_real_connect(conexao,"localhost","admin","12345","Cruz_Azul
",0,NULL,0))
string query1 = "SELECT tipo FROM utilizador WHERE id = " + Dados ;
if(!(mysql_real_query(conexao, query1.c_str(),query1.size()))
60
res=mysql_use_result(conexao);
row=mysql_fetch_row(res);
if(row[0])
string query = "SELECT cnome,cnumero,tipoUtilizador FROM
compartimento WHERE cnumero= " + Enderec + "AND
tipoUtilizador=" + row[0];
if(!(mysql_real_query(conexao, query.c_str(),query.size()))
res=mysql_use_result(conexao);
row=mysql_fetch_row(res);
if(row[0] && row[1] && row[2])
mysql_real_query(conexao, query2.c_str(), query2.size()));
EnviarDados((Prefixo + Enderec + ”1” + Sufixo).c_str(),
ComandoAbrir.Length(), &BytesEscritos );
else
EnviarDados((Prefixo + Enderec + ”0” + Sufixo).c_str(),
ComandoFechar.Length(), &BytesEscritos );
else
EnviarDados((Prefixo + Enderec + ”0” + Sufixo).c_str(),
ComandoFechar.Length(), &BytesEscritos );
mysql_close(conexao);
rs_termina();
return 0;
Top Related