Projecto Final Curso

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

Transcript of Projecto Final Curso

Page 1: Projecto Final Curso

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.

Page 2: Projecto Final Curso

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.

Page 3: Projecto Final Curso

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.

Page 4: Projecto Final Curso

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

Page 5: Projecto Final Curso

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

Page 6: Projecto Final Curso

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

Page 7: Projecto Final Curso

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

Page 8: Projecto Final Curso

8

ANEXO 3 – Código fonte do Software para recepção e envio de dados pela pota serial ...... 59

Page 9: Projecto Final Curso

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;

Page 10: Projecto Final Curso

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);

Page 11: Projecto Final Curso

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

Page 12: Projecto Final Curso

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)

Page 13: Projecto Final Curso

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

Page 14: Projecto Final Curso

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)

Page 15: Projecto Final Curso

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);

Page 16: Projecto Final Curso

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

Page 17: Projecto Final Curso

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.

Page 18: Projecto Final Curso

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.

Page 19: Projecto Final Curso

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)

Page 20: Projecto Final Curso

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)

Page 21: Projecto Final Curso

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

Page 22: Projecto Final Curso

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

Page 23: Projecto Final Curso

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.

Page 24: Projecto Final Curso

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

Page 25: Projecto Final Curso

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

Page 26: Projecto Final Curso

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

Page 27: Projecto Final Curso

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)

Page 28: Projecto Final Curso

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)

Page 29: Projecto Final Curso

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

Page 30: Projecto Final Curso

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)

Page 31: Projecto Final Curso

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.

Page 32: Projecto Final Curso

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

Page 33: Projecto Final Curso

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

Page 34: Projecto Final Curso

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

Page 35: Projecto Final Curso

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

Page 36: Projecto Final Curso

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;

Page 37: Projecto Final Curso

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;

Page 38: Projecto Final Curso

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.

Page 39: Projecto Final Curso

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

Page 40: Projecto Final Curso

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

Page 41: Projecto Final Curso

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.

Page 42: Projecto Final Curso

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

Page 43: Projecto Final Curso

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

Page 44: Projecto Final Curso

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.

Page 45: Projecto Final Curso

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.

Page 46: Projecto Final Curso

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.

Page 47: Projecto Final Curso

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.

Page 48: Projecto Final Curso

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

Page 49: Projecto Final Curso

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

Page 50: Projecto Final Curso

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

Page 51: Projecto Final Curso

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

Page 52: Projecto Final Curso

Figura 24. Ligação do microcontrolador ao PC

Figura 24. Ligação do microcontrolador ao PC

52

Page 53: Projecto Final Curso

53

Page 54: Projecto Final Curso

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

Page 55: Projecto Final Curso

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

Page 56: Projecto Final Curso

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

Page 57: Projecto Final Curso

57

´

Figura 30. Interface para Login do administrador do sistema

Figura 31. Interface principal

Figura 32. Interface para cadastro de funcionarios da maternidade

Page 58: Projecto Final Curso

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

Page 59: Projecto Final Curso

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()))

Page 60: Projecto Final Curso

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;