carrinho de compras automatizado - up.edu.br · quantum® de 4 g bytes, uma placa pci de cartões...
Post on 01-Sep-2018
214 Views
Preview:
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
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
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
top related