carrinho de compras automatizado - up.edu.br · quantum® de 4 g bytes, uma placa pci de cartões...

46
Centro Universitário Positivo - UnicenP Núcleo de Ciências Exatas e Tecnológicas NCET Engenharia da Computação Kielse Nodari Carrinho de Compras Automatizado Curitiba 2004

Upload: dangbao

Post on 01-Sep-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

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

Engenharia da Computação Kielse Nodari

Carrinho de Compras Automatizado

Curitiba 2004

ii

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

Engenharia da Computação Kielse Nodari

Carrinho de Compras Automatizado

Monografia apresentada à disciplina de Projeto Final, como requisito parcial à conclusão do Curso de Engenharia da Computação. Orientador: Prof. Laerte Cleto.

Curitiba 2004

iii

TERMO DE APROVAÇÃO

Kielse Nodari

Monografia do Projeto Carrinho de Compras Automatizado

Monografia aprovada como requisito parcial à conclusão do curso de

Engenharia da Computação do Centro Universitário Positivo, pela seguinte banca

examinadora:

Laerte Cleto (Orientador) Maurício Schafranski José Carlos da Cunha

Curitiba, 16 de Novembro de 2004.

iv

AGRADECIMENTOS

À minha querida família que me apoiou e cuidou de mim no desenvolvimento

deste projeto. Aos meus caros colegas que ajudaram cada um da sua maneira. À

PSmi por disponibilizar os equipamentos para estudos e testes. E aos professores

da banca pela flexibilidade na apresentação de cada etapa do projeto.

v

SUMÁRIO

1. Introdução .......................................................................................................... 1

1.1. Introdução ao tema do projeto .................................................................................................. 1

1.2. Motivação do desenvolvimento ................................................................................................ 1

1.3. Situação do Projeto no contexto geral em que está inserido ..................................................... 2

1.4. Metas a serem alcançadas ......................................................................................................... 2

2. Descrição ........................................................................................................... 3

2.1. Descrição geral do sistema........................................................................................................ 3

2.2. Módulo Carrinho ....................................................................................................................... 3

2.3. Módulo Servidor ....................................................................................................................... 4

2.4. Componentes externos .............................................................................................................. 4

3. Estudo Teórico .................................................................................................. 6

3.1. Técnicas e aspectos teóricos associadas aos módulos .............................................................. 6

3.1.1. Carrinho .................................................................................................................................... 6

3.1.1.1. TCP/IP ............................................................................................................................... 6

3.1.1.2. Redes ................................................................................................................................. 6

3.1.1.3. Softwares ........................................................................................................................... 6

3.1.1.4. Placa com microcontrolador 8031 ..................................................................................... 6

3.1.2. Servidor ..................................................................................................................................... 7

3.1.2.1. Redes ................................................................................................................................. 7

3.1.2.1.1. DNS................................................................................................................................ 7

3.1.2.1.2. DHCP ............................................................................................................................. 7

3.1.3. Access Point .............................................................................................................................. 8

3.1.3.1. WEP ................................................................................................................................... 8

3.1.4. Carregador de bateria ................................................................................................................ 8

3.2. Justificativa das especificações dos módulos escolhidos .......................................................... 9

3.2.1. Carrinho .................................................................................................................................... 9

3.2.2. Servidor ..................................................................................................................................... 9

3.2.3. Access Point .............................................................................................................................. 9

3.2.4. Carregador de baterias .............................................................................................................. 9

4. Especificação do Hardware ............................................................................. 10

4.1. Funções do Sistema ................................................................................................................ 10

4.2. Requisitos de Hardware .......................................................................................................... 10

4.3. Componentes mais importantes .............................................................................................. 10

4.4. Diagrama em blocos ............................................................................................................... 10

4.5. Ambiente de desenvolvimento ................................................................................................ 11

vi

5. Especificação do Software .............................................................................. 12

5.1. Ambiente de desenvolvimento ................................................................................................ 12

5.2. Linguagens e ferramentas de software .................................................................................... 12

5.3. Interface com o usuário ........................................................................................................... 12

5.4. Funções a serem providas ....................................................................................................... 12

5.5. Requisitos de software exigidos.............................................................................................. 12

5.6. Diagrama em blocos do sistema ............................................................................................. 13

5.7. Desenvolvimento de software ................................................................................................. 13

5.7.1. Cliente / Servidor .................................................................................................................... 13

5.7.2. Módulo do display digital ....................................................................................................... 15

6. Especificação da validação do projeto............................................................. 16

6.1. Descrição e especificação dos procedimentos de hardware e software para validação .......... 16

6.2. Testes e simulações ................................................................................................................. 16

7. Desenvolvimento do Projeto ............................................................................ 17

7.1. Cronograma do Projeto ........................................................................................................... 17

7.2. Desenvolvimento de Software ................................................................................................ 17

7.2.1. Carrinho de compras ............................................................................................................... 17

7.2.2. Servidor ................................................................................................................................... 19

7.2.3. Banco de Dados ...................................................................................................................... 22

7.2.4. Intranet .................................................................................................................................... 23

7.3. Desenvolvimento de Hardware ............................................................................................... 30

7.3.1. Carrinho de compra ................................................................................................................ 30

7.3.1.1. Computador ..................................................................................................................... 30

7.3.1.2. Microcontrolador 8031 com Display digital .................................................................... 30

7.3.1.3. Bateria .............................................................................................................................. 33

7.3.2. Servidor ................................................................................................................................... 34

7.4. Módulos externos .................................................................................................................... 34

7.4.1. Access Point ............................................................................................................................ 34

7.4.2. Carregador de baterias ............................................................................................................ 34

8. Bibliografia ....................................................................................................... 35

vii

LISTA DE FIGURAS Figura 1 – Access Point ........................................................................................................................... 4

Figura 2 – Diagrama do sistema ............................................................................................................ 11

Figura 3 – Diagrama do sistema ............................................................................................................ 11

Figura 4 – Diagrama em blocos dos softwares ...................................................................................... 13

Figura 5 – Cronograma de atividades .................................................................................................... 17

Figura 6 – Diagrama de atividades do carrinho ..................................................................................... 18

Figura 7 – Diagrama de classes do carrinho .......................................................................................... 19

Figura 8 – Diagrama de atividades do servidor ..................................................................................... 20

Figura 9 – Diagrama de classes do servidor .......................................................................................... 21

Figura 10 – Modelo de Entidade e Relacionamento do Banco de Dados ............................................. 22

Figura 11 – Página inicial do sistema de vendas ................................................................................... 24

Figura 12 – Página de estoque do sistema de vendas ............................................................................ 25

Figura 13 – Página com informações dos carrinhos de compras .......................................................... 27

Figura 14 – Página com informações das compras ............................................................................... 28

Figura 15 – Página com informações das compras em andamento ....................................................... 29

Figura 16 – Diagrama do módulo do 8031 ............................................................................................ 31

Figura 17 – Diagrama do módulo de interface do display .................................................................... 32

Figura 18 – Display LCD ...................................................................................................................... 32

Figura 19 – Pinagem do display LCD ................................................................................................... 33

Figura 20 – Pinagem da ligação da fonte na placa mãe ........................................................................ 33

viii

LISTA DE SIGLAS AMD – Advanced Micro Devices bps – bits por segundo C++ – Linguagem de programação CI – Circuito Integrado DHCP – Dynamic Host Configuration Protocol EUA – Estados Unidos da América G – Giga GCC – GNU C-Compiler [Unix] Hz – Hertz IP – Internet Protocol k – Kilo Lan – Local Area Network M – Mega MAC – Media Access Control NCET – Núcleo de Ciências Exatas e Tecnológicas PCI – Peripheral Component Interconnect PCMCIA – Personal Computer Memory Card International Association RFID’s – Radio Frequency Identification SQL – Structure Query Language TCP – Transmission Control Protocol UNICENP – Centro Universitário Positivo UTP – Unshielded twisted pair

V – Volts

WEP – Wired Equivalent Privacy

ix

LISTA DE SÍMBOLOS ® - Registered

x

RESUMO

Este projeto trata de um carrinho de compras automatizado que calcula o valor

acumulados dos itens de compra que são colocados dentro dele e disponibiliza a

informação para o cliente em um display digital.

Quando um item é colocado no carrinho, este se comunica com a base de

dados da loja, mostra a descrição, o valor do item e o valor acumulado da compra.

O carrinho se comunica com o servidor por uma rede wirelessi, sem fio. Os

itens são lançados automaticamente no sistema de compras. Quando o cliente

termina de escolher seus itens ele se dirige ao caixa e paga suas compras.

O caixa entra em uma página da intranet onde ele vê a lista de produtos que

estão dentro do carrinho e o valor total.

xi

ABSTRACT

This project deals with an automated shopping cart that calculates the amount

and value of items that were bought and stored inside it. Right after, the cart shows

this information in a digital display.

When an item is put in the shopping cart, its electronic system communicates

with the store’s database. Then the description, value of each item and the total

value are showed in the display.

The shopping cart communicates to the server through wireless network. Data

is automatically computed on the purchasing system. When a customer finishes

choosing the items he goes to the cashier and pays his purchasing.

The cashier goes to an intranet page where he is able to see the list of products

that are inside of the cart and the total value.

1

1. INTRODUÇÃO

1.1. Introdução ao tema do projeto

Praticidade e conforto. Qualidades que as pessoas procuram quando estão

desempenhando atividades corriqueiras. Quão prático seria se não houvesse filas

em supermercados na hora de efetuar o pagamento das compras? A resposta é

óbvia, seria muito bom. As soluções possíveis são várias. Uma delas é aumentar o

número de caixas, o que aumenta também os custos. Uma outra solução é utilizar o

sistema de Carrinhos de Compras Automatizados (Automated Shopping Cart).

Um carrinho de compras automatizado que calcula a quantidade e o valor

acumulados dos itens de compra que são colocados dentro dele e disponibiliza a

informação para o cliente em um display digital.

Quando um item é colocado no carrinho, este se comunica com a base de

dados da loja, mostra a descrição, o valor do item e o valor acumulado da compra.

O carrinho se comunica com o servidor por uma rede wireless, sem fio. Os

itens são lançados automaticamente no sistema de compras. Quando o cliente

terminar de escolher seus itens ele se dirige ao caixa e paga suas compras. O caixa

entra em uma página da intranet onde ele vê a lista de produtos que estão dentro do

carrinho e o valor total.

1.2. Motivação do desenvolvimento

Este projeto prioriza a praticidade, agilidade e conforto dos clientes de um

supermercado ou ponto comercial semelhante durante a escolha dos produtos e o

pagamento da compra.

Com este sistema de compras não há a necessidade de vários caixas no

supermercado. Apenas um caixa é suficiente para atender todos os clientes. Os

demais caixas devem ser recolocados em outras funções.

A praticidade ocorre pelo simples motivo de não ser necessário passar todos

os produtos do cliente pelo leitor de códigos de barras do caixa. O cliente

simplesmente vai ao caixa para efetuar o pagamento das compras que já estão

computadas no sistema.

2

1.3. Situação do Projeto no contexto geral em que está inserido

Um carrinho de compras semelhante existe em alguns supermercados

japoneses. O carrinho japonês mostra as informações do produto quando este é

passado por um leitor de códigos de barras. Porém, o carrinho japonês se limita

apenas a mostrar as informações de cada produto.

Existem muitos estudos sobre sistemas de vendas com RFID’sii, Radio

Frequency Identification (Identificação por Rádio Freqüência).

1.4. Metas a serem alcançadas

A principal meta é aumentar a praticidade e o conforto das compras para os

clientes eliminando as filas nos supermercados, além de mostrar as informações dos

produtos e da compra para o cliente durante o processo de escolha. O cliente não

precisa calcular os custos das compras, esta e outras informações são mostradas no

display digital.

Há uma nova tecnologia que foi lançada no mercado há pouco tempo. RFID’s,

Radio Frequency Identification (Identificação por Rádio Freqüência). Esta tecnologia

identifica cada produto como sendo único. A identificação ocorre por meio de um

leitor de etiquetas RFID’s. Este sistema de identificação está em estudo e já foi

solicitado pelas grandes redes de supermercados dos EUA. Em poucos anos a

previsão é que cada item de um supermercado seja provido de uma etiqueta RFID.

A intenção é utilizar um sistema de etiquetas RFID no carrinho de compras,

assim substituindo o leitor de códigos de barras e o sensor eletromagnético. Hoje

não há disponível um leitor de etiquetas RFID para estudo e implementação no

projeto. Porém, se até o fim do projeto um leitor for adquirido, poderá ser inserido no

sistema.

A idéia original do projeto previa a utilização de um leitor de etiquetas RFID.

Sem o leitor, algumas funcionalidades do sistema não podem ser implementadas

com total confiabilidade.

3

2. DESCRIÇÃO

2.1. Descrição geral do sistema

O projeto consiste em dois grandes módulos: o carrinho e o servidor. Cada

módulo sendo inteiramente dependente um do outro no sistema. Alguns

componentes externos também são necessários. Todos os detalhes estão descritos

logo abaixo:

2.2. Módulo Carrinho

O carrinho de compras é um carrinho comum, semelhante a estes encontrados

em supermercados. Na parte interior do carrinho é instalada uma bateria de moto de

12 Volts para alimentar o módulo. Ao lado da bateria fica instalado um

microcomputador com um microprocessador Pentium®iii 200 MHz, um disco rígido

Quantum® de 4 G bytes, uma placa PCI de cartões PCMCIA Ricoh ®, um cartão

Orinoco® Wireless Lan chipset 802.11b, um leitor de código de barras Symbal ®, um

módulo microcontrolado com 8031 e um display digital de 16 colunas por 2 linhas.

Na bateria serão instalados cabos de alimentação para os demais

componentes do carrinho. Será instalada uma placa de circuito para as tensões

necessárias ao módulo. Para a tensão de 12 V será utilizado um circuito integrado

(CI) 4812, para -12 V o CI 4912, para a tensão de 5 V será utilizado um CI 4805 e

para tensão de -5 V um CI 4905.

No computador está instalado o sistema operacional Linux Debianiv 3.0 r2 com

o kernel 2.4.26 compilado apenas com os módulos necessários ao conjunto de

hardware e comunicação wireless. A rede wireless entre o carrinho e o computador

é dinâmica. O computador recebe um endereço IP do servidor DHCP.

Foi desenvolvido um software em linguagem C++, padrão Unix, para a

comunicação entre o carrinho e o servidor utilizando socketv. O software, assim que

entra em execução, tenta se conectar ao servidor pelo hostname e porta via TCP/IP.

Estabelecida a conexão, o carrinho entra em estado disponível, e fica aguardando

uma leitura de códigos de barra. Se o produto for passado no leitor de código de

barras, o código do produto detectado é enviado para o servidor que responde com

as informações do produto e da compra deste carrinho. Pela porta serial estas

informações são mostradas no display digital ligado a uma placa com um

microcontrolador 8031 e outros componentes.

4

2.3. Módulo Servidor

O servidor é um microcomputador com um microprocessador AMD Duron®vi

1,3 GHz, um disco rígido Seagate® de 40 GB e uma placa de rede RealTek ® 8139

10/100 Mbps. No computador está instalado o sistema operacional Linux Debian 3.0

r2 com o kernel 2.4.26 compilado apenas com os módulos necessários ao conjunto

de hardware e comunicação de rede incluindo firewall.

O servidor distribui IP’s por um serviço de DHCP para os carrinhos. Apenas os

endereços MAC dos cartões instalados nos carrinhos terão acesso à rede wireless

para evitar que outros computadores entrem na rede. Está instalado um serviço de

banco de dados POSTGRES®vii para armazenar as informações pertinentes ao

sistema de vendas. Foi desenvolvido um software em linguagem C++, padrão Unix,

para a comunicação entre o servidor e o carrinho utilizando socket. O software,

assim que entra em execução, fica ouvindo a rede por TCP/IP esperando os

carrinhos se conectarem. Um carrinho envia um código de produto para o servidor, o

servidor procura pela compra atual neste carrinho, se a compra ainda não foi

iniciada, o servidor a inicia com o produto que foi passado. O servidor envia para o

carrinho a descrição, o valor do produto e o valor da compra.

2.4. Componentes externos

Este módulo consiste de dois componentes essenciais ao sistema como um

todo. O Accesss point e o carregador de baterias. O access point utilizado é o D-

Linkviii ® Wireless 2.4 GHz (802.11b) Access Point DWL-700AP que pode ser visto

na figura abaixo:

Figura 1 – Access Point

E o carregador que pode ser utilizado é um mini-carregador de baterias Nevada

® modelo 11.

O Access point, é conectado ao servidor via cabo UTP (Unshielded Twisted

Pair) e é configurado para conectar apenas os cartões wireless PCMCIA

conhecidos. Em uma loja ou supermercado, vários Access point`s devem ser

5

instalados para cobrir toda a área que os carrinhos podem percorrer. Evitando áreas

de sombra.

6

3. ESTUDO TEÓRICO

3.1. Técnicas e aspectos teóricos associadas aos módulos

3.1.1. Carrinho

3.1.1.1. TCP/IP

Para que os computadores de uma rede possam trocar informações é

necessário que todos adotem as mesmas regras para o envio e o recebimento de

informações. Este conjunto de regras é conhecido como Protocolo de comunicação.

Falando de outra maneira podemos afirmar: "Para que os computadores de uma

rede possam trocar informações entre si é necessário que todos estejam utilizando o

mesmo protocolo". No protocolo de comunicação estão definidas todas as regras

necessárias para que o computador de destino, "entenda" as informações no

formato que foram enviadas pelo computador de origem. Dois computadores com

protocolos diferentes instalados, não serão capazes de estabelecer uma

comunicação e trocar informações.

3.1.1.2. Redes

O carrinho será conectado á uma rede wireless por meio de uma interface de

rede chamada de eth0. A configuração de rede escolhida obtém um endereço IP

dinamicamente através do arquivo /etc/network/interfaces que é mostrado abaixo:

auto eth0

iface eth0 inet dhcp

3.1.1.3. Softwares

Alguns pacotes de software são essenciais para o funcionamento da rede no

carrinho. Estes pacotes, assim como uma breve descrição, são mostrados abaixo:

- pcmcia-cs: configura interfaces PCMCIA - wireless-tools: configura interfaces de redes wireless - hotplug: detecta cartões PCMCIA instalados

3.1.1.4. Placa com microcontrolador 8031

Foi montada uma placa com um microcontrolador 8031, componentes básicos

de funcionamento e um display digital. Esta placa é ligada por um cabo, que foi

devidamente confeccionado, na porta serial do computador. Foi desenvolvido um

software em assembly para receber os dados enviados pela porta serial e mostrá-los

no display digital.

Leitor de códigos de barras

7

O leitor de códigos de barras utilizado é um leitor SYMBOL 61390T,

devidamente configurado para ler o código de barras e enviar o caracter

correspondente a quebra de linha no final (enter).

3.1.2. Servidor

3.1.2.1. Redes

O servidor será conectado a uma rede de Access Point’s pela interface eth0. A

configuração de rede escolhida distribui endereços IP dinamicamente para os

Access Point’s através do arquivo /etc/network/interfaces que é mostrado abaixo:

iface eth0 inet static

address 172.16.0.2

network 172.16.0.0

broadcast 172.16.0.255

netmask 255.255.255.0

gateway 172.16.0.5

3.1.2.1.1. DNS

DNS é a abreviatura de Domain Name System. O DNS é um serviço de

resolução de nomes. Toda comunicação entre os computadores e demais

equipamentos de uma rede baseada no protocolo TCP/IP é feita através do número

IP. Número IP do computador de origem e número IP do computador de destino.

Porém não seria nada produtivo se os usuários tivessem que decorar, ou mais

realisticamente, consultar uma tabela de números IP toda vez que tivessem que

acessar um recurso da rede. Resolver um nome significa descobrir e retornar o

número IP associado com o nome.

3.1.2.1.2. DHCP

O DHCP é a abreviatura de Dynamic Host Configuration Protocol é um serviço

utilizado para automatizar as configurações do protocolo TCP/IP nos dispositivos de

rede (computadores, impressoras, hubs, switchs, ou seja, qualquer dispositivo

conectado à rede e que esteja utilizando o protocolo TCP/IP).

Sem o uso do DHCP, o administrador e sua equipe teriam que configurar,

manualmente, as propriedades do protocolo TCP/IP em cada dispositivo de rede

(genericamente denominados hosts). Com o uso do DHCP esta tarefa pode ser

completamente automatizada

O serviço de DHCP disponibilizado para os Access Point’s localizado no

arquivo /etc/dhcp.conf é mostrado abaixo:

subnet 172.16.0.0 netmask 255.255.255.0 {

8

range 172.16.0.21 172.16.0.254;

default-lease-time 864000;

max-lease-time 864000;

option subnet-mask 255.255.255.0;

option broadcast-address 172.16.0.255;

option routers 172.16.0.2;

option domain-name "asc.intranet";

option domain-name-servers 172.16.0.2;

option ip-forwarding off;

option netbios-name-servers 172.16.0.2;

option netbios-dd-server 172.16.0.2;

option netbios-node-type 8;

}

3.1.3. Access Point

Os Access Point’s são configurados com algoritmos de segurança WEPix

(Wired Equivalent Privacy) definido nos padrões de rede 802.11. Este algoritmo se

baseia numa chave secreta k compartilhada entre os pontos de conexão para

proteger os pacotes enviados pela rede. Estudos de casos comprovam que o

protocolo WEP contém algumas falhas de segurança. Estas falhas podem ser

contornadas utilizando o método de permissão pelo endereço MAC. O que não é

definido nos padrões 802.11 mas permite a confiabilidade e segurança da rede.

3.1.3.1. WEP

A função do WEP é criptografar os pacotes sem fio para que os invasores não

possam lê-los facilmente. O WEP 802.11b oferece duas formas de criptografia: 40

bits e 128 bits (802.11a e 802.11g incluem uma terceira variante, 152 bits). No

entanto, devido à lentidão por parte de alguns fabricantes de hardware sem fio, o

WEP nem sempre é ativado por padrão, e alguns fabricantes (notavelmente a Apple)

não oferecem suporte total à versão mais segura de 128 bits do WEP. Quando o

WEP está ativo, falhas na definição do WEP significam que um invasor com

conhecimento médio é capaz de violar a criptografia e ler ou forjar o tráfego. Várias

ferramentas gratuitas amplamente distribuídas analisam e analisam o tráfego da

WLAN para recuperar a chave WEP; como o 802.11 requer alterações manuais no

segredo compartilhado WEP, significa que você tem que alterar sua senha

freqüentemente ou viver com o risco de que alguém vai recuperá-la.

3.1.4. Carregador de bateria

O carregador de baterias é alimentado numa tensão de 110 a 220 Volts e

carrega baterias de 6 a 12 Volts. As baterias de moto funcionam a 12 Volts.

9

3.2. Justificativa das especificações dos módulos escolhidos

3.2.1. Carrinho

O computador foi escolhido por estar disponível e suprir todas as necessidades

do projeto. A placa PCMCIA e o cartão wireless foram escolhidos pelo fácil acesso

aos mesmos dentro da empresa Psmi, onde trabalho o projetista.

3.2.2. Servidor

Como no caso do computador do carrinho, no servidor foi escolhido um

computador disponível que supre todas as necessidades.

3.2.3. Access Point

O Access Point utilizado é o mesmo que o projetista trabalha na empresa Psmi.

3.2.4. Carregador de baterias

Foi escolhido através de um estudo de custo/ benefício, sendo o mais barato

no mercado e suprindo a necessidade de recarregar uma bateria rapidamente. No

caso de um supermercado, onde vários carrinhos teriam de ser recarregados, há a

necessidade de adquirir um carregador de grande escala.

10

4. ESPECIFICAÇÃO DO HARDWARE

4.1. Funções do Sistema

O servidor disponibiliza as informações necessárias aos carrinhos e faz a

venda dos produtos. Para tanto, está conectado a vários Access Point’s que estarão

fazendo uma rede wireless na área onde os carrinhos de compras transitam.

O carrinho mostrará as informações de compra em um display digital para o

cliente. Através da mesma rede wireless ele obterá as informações do servidor. Para

tanto, é necessário um leitor de códigos de barras para enviar o código numérico ao

servidor.

4.2. Requisitos de Hardware

Os Access Point’s devem trabalhar numa freqüência mínima de 2.4GHz,

freqüência normal de operação. Com esta freqüência obtém-se uma velocidade de

11Mbps na rede wireless. Velocidade suficiente para o bom funcionamento do

sistema. Esta taxa de transmissão pode ser analisada direto dos carrinhos pelo

arquivo /proc/net/wireless pelo comando abaixo:

watch tail /proc/net/wireless

4.3. Componentes mais importantes

Tanto o Access Point quanto o cartão de rede wireless são vitais para o

desenvolvimento do projeto. Não há como implementar tal estrutura com cabos.

Foram escolhidos os modelos citados por serem de baixo custo e por estarem ao

alcance do projetista sem haver a necessidade de aquisição.

Os computadores utilizados suprem todas as necessidades, tendo em vista que

o fator determinante de desempenho é a rede, não havendo muito processamento

do lado do carrinho (cliente) e do servidor. Os computadores pertencem ao

projetista.

4.4. Diagrama em blocos

Os diagramas em blocos representam os módulos e toda funcionalidade do

sistema.

11

Supermercado

Rede ethernet (TCP)

Rede wireless servidor

carrinho

No carrinho de compras está instalado um leitor de códigos de barras, um

sensor eletromagnético, uma bateria de moto, um display digital e um

microcomputador. Como podemos ver no diagrama abaixo:

Figura 2 – Diagrama do sistema

O diagrama abaixo representa o sistema como um todo:

Figura 3 – Diagrama do sistema

4.5. Ambiente de desenvolvimento

Todos os módulos serão desenvolvidos na casa do projetista, na empresa

PSmi onde trabalha e nos laboratórios do UnicenP.

12

5. ESPECIFICAÇÃO DO SOFTWARE

5.1. Ambiente de desenvolvimento

Os softwares foram desenvolvidos na casa do projetista, nos horários de folga

no trabalho e na faculdade.

5.2. Linguagens e ferramentas de software

A linguagem utilizada é C++ padrão Unix. Os programas serão redigidos

utilizando o editor de textos VI, por ser de familiaridade do projetista. Serão

utilizadas as bibliotecas de comunicação de rede SOCKET e as bibliotecas de

manipulação de bancos de dados POSTGRES. Será utilizada a última versão

estável do GCC (3.3.3) para compilar os programas.

Para o módulo do display digital será utilizado o Riegel® para programar em

assembly.

5.3. Interface com o usuário

No carrinho de compras a interface se dará pelo leitor de códigos de barras. No

servidor será possível visualizar as compras utilizando o teclado para entrar com os

comandos do sistema. Os resultados serão mostrados no monitor ligado ao servidor.

5.4. Funções a serem providas

Toda comunicação entre os clientes e o servidor foi implementada. Isto, sendo

utilizado um protocolo a ser criado. Protocolo este que define todas as atividades do

servidor em comunicação com o carrinho e vice-versa.

5.5. Requisitos de software exigidos

Não há necessidade de grande processamento no sistema. Portanto, não é

necessário equipamento muito rápido em nenhum dos módulos. Sendo que os

escolhidos suprem as necessidades de comunicação e interface.

13

5.6. Diagrama em blocos do sistema

O sistema está dividido em dois programas. O software cliente e o software

servidor. Ambos são representados abaixo:

Figura 4 – Diagrama em blocos dos softwares

5.7. Desenvolvimento de software

5.7.1. Cliente / Servidor

No desenvolvimento do software cliente / servidor são utilizadas as bibliotecas

padrão de socket para comunicação entre os clientes e o servidor. Abaixo segue a

relação de arquivos do projeto:

ClientSocket.cpp

Makefile

ServerSocket.o

Socket.o

simple_client_main.cpp

simple_server_main.cpp

ClientSocket.h

ServerSocket.cpp

Socket.cpp

SocketException.h

server.sh

simple_client_main.o

simple_server_main.o

database

Acesso a

dados

Servidor

Controlador

Negócios

socket

Interface Negócios Interface

Carrinho

Controlador

14

ClientSocket.o

ServerSocket.h

Socket.h

client.sh

simple_client

simple_server

Abaixo segue parte da função que envia do cliente a informação do código do

produto que acabou de passar pelo código de barras:

...

std::string strCom;

try

{

std::cin >> strCom;

client_socket << strCom;

client_socket >> reply;

}

catch ( SocketException& ) {}

...

Abaixo segue parte da função que recebe o código do cliente, conecta-se ao

banco de dados e envia a informação ao cliente:

...

try

{

while ( true )

{

std::string data;

new_sock >> data;

sql_str = "SELECT * FROM produtos where codProduto

='";

cstring: strcat (sql_str, data.c_str());

cstring: strcat (sql_str, "'");

result = PQexec(conn, sql_str);

memset(&print_options, '\0', sizeof(print_options));

print_options.header = 1;

print_options.align = 1;

print_options.html3 = 0;

print_options.fieldSep = "|";

print_options.fieldName = NULL;

15

PQprint(output_stream, result, &print_options);

new_sock << output_stream;

std::cout << data << "\n";

}

}

catch ( SocketException& ) {}

...

5.7.2. Módulo do display digital

Para mostrar as informações no display digital é utilizado um programa em

assembly para o módulo do microcontrolador 8031. Abaixo segue parte do código

em assembly que mostra os caracteres enviados pela saída serial do computador no

display digital:

...

MOV R4,#'P' ;escreve letra "P"

ACALL LCDHR ...

...

LCDHR:

MOV DPTR,#08002h ;24 pulsos de clock //habilita barramento de dados

;para leitura do display

BUSY_CHR:

MOVX A, @dptr ;24 pulsos de clock

JB ACC.7, BUSY_CHR ;24 pulsos de clock //passa para a proxima execucao

;quando o busy flag estiver em 0

MOV DPTR,#08001h ;24 pulsos de clock //habilita barramento de dados

;para escrita de dados no display

MOV A, R4 ;12 pulsos de clock

MOVX @dptr, A ;24 pulsos de clock //escreve conteudo de R2 no lcd

RET

...

16

6. ESPECIFICAÇÃO DA VALIDAÇÃO DO PROJETO

6.1. Descrição e especificação dos procedimentos de hardware e software para validação

Para validar o carrinho é utilizado um agrupamento de produtos diversos, os

quais conterão cada um o seu próprio código de barras. Os códigos numéricos

destes produtos serão cadastrados no banco de dados do servidor. Quando um

produto for passado pelo leitor de códigos de barra, devidamente posicionado, o

carrinho será 100 % validado se enviar o código numérico correto para o servidor e

ao receber as informações, mostrá-las no display digital.

Para validar o servidor, assim como o carrinho, será utilizada a base de dados.

O servidor será 100 % validado se ao receber um código numérico do carrinho,

enviar as informações do produto e da compra ao carrinho.

6.2. Testes e simulações

Os testes serão realizados em uma área aberta semelhante a um

supermercado. Com todos os módulos em funcionamento, será feita a simulação de

uma compra de vários produtos e espera-se obter todas as informações da compra

no display digital no carrinho.

17

7. DESENVOLVIMENTO DO PROJETO

7.1. Cronograma do Projeto

O projeto foi desenvolvido com base no cronograma de atividades abaixo:

Figura 5 – Cronograma de atividades

7.2. Desenvolvimento de Software

7.2.1. Carrinho de compras

O módulo do carrinho de compras é gerenciado por um software que se

comunica com o módulo servidor. O software cliente também é responsável por

detectar quando um produto é colocado no carrinho. E disponibiliza as informações

do produto e da compra no display digital.

18

Abaixo segue o diagrama em blocos do software do módulo carrinho.

Figura 6 – Diagrama de atividades do carrinho

19

O software foi desenvolvido a partir do diagrama de classes abaixo.

Figura 7 – Diagrama de classes do carrinho

7.2.2. Servidor

O módulo do servidor é gerenciado por um software que se comunica com

todos os carrinhos. O software servidor disponibiliza as informações dos produtos e

das compra de cada carrinho. Essas informações são obtidas diretamente do banco

de dados.

20

Abaixo segue o diagrama em blocos do software do módulo servidor.

Figura 8 – Diagrama de atividades do servidor

21

O software foi desenvolvido a partir do diagrama de classes abaixo.

Figura 9 – Diagrama de classes do servidor

22

7.2.3. Banco de Dados

Foi instalado um serviço de bancos de dados POSTGRESQL para

administração dos dados do sistema de compras. Neste banco de dados foi criado o

banco de dados carrinho.

Abaixo segue o modelo de entidade e relacionamento do banco:

Figura 10 – Modelo de Entidade e Relacionamento do Banco de Dados

Os comandos de SQL () utilizados para criação das tabelas podem ser vistos

abaixo:

-- Name: produto Type: TABLE Owner: postgres

--

CREATE TABLE "produto" (

"codproduto" character varying(256),

"dsproduto" character varying(256),

"valor" double precision,

"estoque" double precision

);

-- Name: carrinho Type: TABLE Owner: postgres

--

CREATE TABLE "carrinho" (

"mac" character varying(256),

"codcarrinho" integer,

"status" integer,

"ip" character varying(15)

);

-- Name: compras_codcompra_seq Type: SEQUENCE Owner: postgres

--

CREATE SEQUENCE "compras_codcompra_seq" start 1 increment 1 maxvalue

9223372036854775807 minvalue 1 cache 1;

23

-- Name: compras Type: TABLE Owner: postgres

--

CREATE TABLE "compras" (

"codcompra" integer DEFAULT nextval( '"compras_codcompra_seq"'

::text) NOT NULL,

"coditem" integer NOT NULL,

"codcarrinho" integer,

"codproduto" character varying(256),

"quantidade" integer,

"valor" double precision,

"finalizada" integer

);

7.2.4. Intranet

Um serviço de hospedagem de páginas utilizando servidor APACHE 1.3.29

com módulo para linguagem PHP 4.3.4 é utilizado para administração do sistema de

compras que foi desenvolvida em linguagem HTML e PHP. Abaixo uma pequena

descrição dos arquivos da página, seguidos de partes do código-fonte e imagens de

exemplo:

index.php

Página inicial onde as demais páginas podem ser acessadas.

Imagem de exemplo:

24

Figura 11 – Página inicial do sistema de vendas

estoque.php

Página onde podem ser vistos os produtos e a quantidade em estoque.

Parte do código-fonte:

...

<?

$host = "127.0.0.1";

$port = 5432;

$dbname = "carrinho";

$user = "postgres";

$password = "dikp123";

$conexao = pg_connect("host=$host port=$port dbname=$dbname user=$user

password=$password")or die("Erro ao conectar ao banco de dados!");

$sql = "SELECT * from produto";

$comando = pg_query($sql);

?>

...

25

<table width="75%" border="1">

<?

while($how = pg_fetch_array($comando)){

print '

<tr>

<td>'.$how['dsproduto'].'</td>

<td align="left">'.$how['estoque'].'</td>

</tr>

';

}

?>

</table>

...

Imagem de exemplo:

Figura 12 – Página de estoque do sistema de vendas

carrinhos.php

Página onde podem ser vistas as principais informações de todos os carrinhos.

26

Parte do código-fonte:

...

<table width="75%" border="1">

<tr>

<td><b>MAC</b></td>

<td><b>Código</b></td>

<td><b>Status</b></td>

<td><b>Endereço IP</b></td>

</tr>

<?

while($how = pg_fetch_array($comando)){

print '

<tr';

if($how['status']==0)print ' bgcolor="#CCCCCC"';

print '>

<td>'.$how['mac'].'</td>

<td>'.$how['codcarrinho'].'</td>

<td>'.$how['status'].'</td>

<td>'.$how['ip'].'</td>

</tr>

';

}

?>

</table>

...

Imagem de exemplo:

27

Figura 13 – Página com informações dos carrinhos de compras

compras.php

Página onde podem ser vistas algumas informações das compras.

Parte do código-fonte:

...

<table width="75%" border="1">

<tr>

<td><b>CodCompra</b></td>

<td><b>Carrinho</b></td>

<td><b>Produto</b></td>

<td><b>Quantidade</b></td>

<td><b>Valor</b></td>

<td><b>Finalizada</b></td>

</tr>

<?

while($how = pg_fetch_array($comando)){

print '

<tr>

<td>'.$how['codccompra'].'</td>

<td>'.$how['codcarrinho'].'</td>

<td>'.$how['codproduto'].'</td>

<td>'.$how['quantidade'].'</td>

28

<td>R$'.$how['valor'].'</td>

<td>'.$how['finalizada'].'</td>

</tr>

';

}

?>

</table>

...

Imagem de exemplo:

Figura 14 – Página com informações das compras

comprasemandamento.php

Página onde podem ser vistos os produtos de cada carrinho. É nesta página

que o caixa pode finalizar uma compra em um carrinho.

Parte do código-fonte:

...

<table width="75%" border="1">

<tr>

<td><b>CodCompra</b></td>

<td><b>Carrinho</b></td>

<td><b>Produto</b></td>

<td><b>Quantidade</b></td>

29

<td><b>Valor</b></td>

<td><b>Acumulado</b></td>

</tr>

<?

$TotalCompra=0;

$Carrinho="";

while($how = pg_fetch_array($comando)){

$TotalCompra=$TotalCompra+$how['valor'];

print '

<tr>

<td>'.$how['codccompra'].'</td>

<td>'.$how['codcarrinho'].'</td>

<td>'.$how['codproduto'].'</td>

<td>'.$how['quantidade'].'</td>

<td>R$'.$how['valor'].'</td>

<td>R$'.$TotalCompra.'</td>

</tr>

';

...

Imagem de exemplo:

Figura 15 – Página com informações das compras em andamento

30

7.3. Desenvolvimento de Hardware

7.3.1. Carrinho de compra

O módulo do carrinho de compra é composto por dois módulos menores, o

módulo Computador e o módulo Bateria. Estes módulos são descritos

detalhadamente logo abaixo.

7.3.1.1. Computador

Este é um dos principais módulos do sistema. Consiste em um

microcomputador operando com Linux. É um computador comum com

microprocessador Pentium® 200 MHz, 64MB de memória RAM, um disco rígido

Quantum® de 4GB, uma placa PCI de cartões PCMCIA Ricoh ®, um cartão

Orinoco® Wireless Lan chipset 802.11b, um leitor de código de barras Symbal ®.

O sistema operacional escolhido é o Linux Debian 3,0 r2. Sobre o sistema

operacional foi recompilado o kernel 2.4.26 apenas com os módulos necessários ao

sistema de hardware utilizado para tornar o sistema mais ágil.

O software cliente foi instalado no computador e configurado para entrar em

execução sempre que o computador for ligado. Foi instalado o software svscan para

garantir que o software cliente esteja sempre em execução.

O leitor de códigos de barras será instalado na parte superior do carrinho.

Assim, ao colocar ou retirar um produto do carrinho, o código do produto será

detectado pelo software cliente que enviará este código ao servidor. O servidor por

sua vez responde com a descrição do produto e outros dados referentes a compra.

7.3.1.2. Microcontrolador 8031 com Display digital

Os microcontroladores Intel 8031 são muito bons para implementação de

projetos que utilizam displays digitais. A programação em assembly é simples e

direta. Para este projeto foram utilizadas duas placas, a primeira com entrada serial

para comunicação com o computador, entrada de alimentação de 9 V,

microcontrolador 8031 e depois componentes necessários que podem ser vistos no

diagrama abaixo:

31

Figura 16 – Diagrama do módulo do 8031

A segunda placa será utilizada para interface entre o 8031 e o display. Segue

abaixo o diagrama:

32

Figura 17 – Diagrama do módulo de interface do display

O display é ligado na saída serial /dev/ttyS0 do computador. O software cliente

manipula as informações mostradas no display.

O módulo utiliza um display LCD de 2 linhas de 24 caracteres da marca

Solomon LM1180SGR.

Figura 18 – Display LCD

Para manipular o display há um protocolo próprio de comunicação. A descrição

da pinagem do display está apresentada abaixo.

33

Figura 19 – Pinagem do display LCD

7.3.1.3. Bateria

Para alimentar o computador e o display foi instalada uma bateria de moto de

12 Volts ligada a um circuito. Este circuito transforma as tensões necessárias ao

funcionamento do hardware. Abaixo segue a especificação exigida pela placa mãe

do computador.

Figura 20 – Pinagem da ligação da fonte na placa mãe

A bateria gera uma tensão de 12 V. Para a tensão de 12 V será utilizado um

circuito integrado (CI) 4812, para -12 V o CI 4912, para a tensão de 5 V será

utilizado um CI 4805 e para tensão de -5 V um CI 4905.

34

7.3.2. Servidor

O servidor é um microcomputador com um microprocessador AMD Duron® 1,3

GHz, um disco rígido Seagate® de 40 GB e uma placa de rede RealTek ® 8139

10/100 Mbps. No computador está instalado o sistema operacional Linux Debian 3.0

r2 com o kernel 2.4.25 compilado apenas com os módulos necessários ao conjunto

de hardware e comunicação de rede incluindo firewall.

O servidor distribui IP’s por um serviço de DHCP para os carrinhos. Apenas os

endereços MAC dos cartões instalados nos carrinhos terão acesso à rede para

evitar que outros computadores entrem na rede. Está instalado um serviço de banco

de dados POSTGRES® para armazenar as informações pertinentes ao sistema de

vendas. Foi desenvolvido um software em linguagem C++, padrão Unix, para a

comunicação entre o servidor e o carrinho por socket. O software, assim que entra

em execução, fica ouvindo a rede por TCP/IP esperando os carrinhos se

conectarem. Um carrinho envia um código de produto para o servidor, o servidor

procura pela compra atual neste carrinho, se a compra ainda não foi iniciada, o

servidor a inicia com o produto que foi passado. O servidor envia para o carrinho a

descrição, o valor do produto e o valor da compra.

7.4. Módulos externos

7.4.1. Access Point

O access point utilizado é o D-Link ® Wireless 2.4 GHz (802.11b) Access Point

DWL-700AP.

O Access point, é conectado ao servidor via cabo UTP (Unshielded Twisted

Pair) e é configurado para conectar apenas os cartões wireless PCMCIA

conhecidos. Em uma loja ou supermercado, vários Access point`s devem ser

instalados para cobrir toda a área que os carrinhos podem percorrer. Evitando áreas

de sombra.

7.4.2. Carregador de baterias

O carregador que pode ser utilizado é um mini-carregador de baterias Nevada

® modelo 11.

35

8. BIBLIOGRAFIA i Wireless LAN Resources for Linux - http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/, 2004

ii Texas Instruments - http://www.ti.com/tiris/docs/sitemap.htm, 2004 iii Pentium Processors -

http://www.intel.com/design/intarch/pentium/pentium.htm?iid=ipp_embed+proc_pentium&, 2004 iv Linux Debian – http://www.debian.org/, 2004 v Linux Socket Programming In C++ - http://www.linuxgazette.com/issue74/tougher.html, 2004 vi AMD Duron Processors - http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_1200,00.html,

2004 vii POSTGRES Database – http://www.postgres.org, 2004 viii D-Link DWL-700AP Wireless 2.4GHz (802.11b) Access Point - http://www.dlink.com/products/?pid=223,

2004 ix Security of the WEP algorithm - http://www.isaac.cs.berkeley.edu/isaac/wep-faq.html, 2004