Centro Universitário Positivo – UnicenP
Núcleo de Ciências Exatas e Tecnológicas – NCET
Engenharia da Computação
Luís Alberto Menon de Araújo
Sistema de Busca em Linguagem Natural via SMS,
Voltado ao Entretenimento
Curitiba
2005
1
Centro Universitário Positivo – UnicenP
Núcleo de Ciências Exatas e Tecnológicas – NCET
Engenharia da Computação
Luís Alberto Menon de Araújo
Sistema de Busca em Linguagem Natural via SMS,
Voltado ao Entretenimento
Monografia apresentada à disciplina de
Projeto Final, como requisito parcial a
conclusão do Curso de Engenharia da
Computação. Orientador: Professor
Luiz Carlos Albini.
Curitiba
2005
2
SUMÁRIO
LISTA DE FIGURAS ............................................................................................... 4
LISTA DE TABELAS ............................................................................................... 5
RESUMO................................................................................................................. 6
RESUMO................................................................................................................. 6
ABSTRACT ............................................................................................................. 7
1.INTRODUÇÃO ..................................................................................................... 8
1.1 Definição do Trabalho.................................................................................... 8
1.2 Contextualização nos dias atuais .................................................................. 9
1.3 Motivação .................................................................................................... 10
1.4 Descrição das Principais Funcionalidades................................................... 10
1.4.1 Recebimento e Envio de Mensagens.................................................... 11
1.4.2 Reconhecimento de Frases Escritas em Linguagem Corrente ............. 11
1.4.3 Acesso à Banco de Dados .................................................................... 11
1.4.4 Mostrar Última Pesquisa Realizada num Display.................................. 11
1.5 Tecnologias Utilizadas na Implementação................................................... 11
2.FUNDAMENTAÇÃO TEÓRICA.......................................................................... 12
2.1 Teoria Pura e Aplicada a Prática ................................................................. 12
2.1.1 Mensagens SMS (Short Message System)........................................... 12
2.1.2 Formato PDU (Protocol Description Unit).............................................. 13
2.1.3 Comunicação Serial .............................................................................. 14
2.1.4 Microcontrolador.................................................................................... 15
2.2 Teoria de Software ...................................................................................... 15
2.2.1 C++ ....................................................................................................... 15
2.2.2 Interbase ............................................................................................... 16
2.3 Teoria de Hardware ..................................................................................... 16
2.3.1 A Família 8051 ...................................................................................... 16
2.3.2 Display LCD .......................................................................................... 17
3. ESPECIFICAÇÃO ............................................................................................. 20
3.1 Especificação do Hardware ......................................................................... 20
3.1.1 Módulo de Interface (Celular - PC)........................................................ 20
3.1.2 Módulo do Display................................................................................. 20
3.2 Especificação do Software........................................................................... 21
3.3 Aplicabilidade/Funcionabilidade do Hardware ............................................. 21
3.3.1 Módulo de Interface (Celular/PC) .......................................................... 22
3.3.2 Módulo do Display................................................................................. 22
3.4 Aplicabilidade/Funcionabilidade do Software............................................... 23
3.4.1 Módulo Interface (Celular-PC)............................................................... 23
3.4.2 Módulo do Display................................................................................. 24
3.4.3 Módulo Linguagem Natural ................................................................... 24
4. PROJETO ......................................................................................................... 25
3
4.1 Apresentação do Projeto ............................................................................. 25
4.2 Descrição Funcional do Projeto ................................................................... 25
4.3 Requisitos Mínimos para o Funcionamento do Projeto................................ 26
4.4 Projeto de Software ..................................................................................... 27
4.4.1 Diagrama de Casos de Uso .................................................................. 27
4.4.2 Classes do Sistema............................................................................... 28
4.4.3 Diagramas de Seqüência ...................................................................... 32
4.4.4 Dados.................................................................................................... 38
4.4.5 Arquivos Auxiliares................................................................................ 40
4.4.6 Firmware ............................................................................................... 46
4.5 Projeto de Hardware .................................................................................... 48
4.5.1 Serial ..................................................................................................... 48
4.5.2 Microcontrolador.................................................................................... 48
4.5.3 Display LCD .......................................................................................... 49
4.5.4 Componentes ........................................................................................ 50
4.6 Procedimentos de Testes ............................................................................ 51
5. ESTIMATIVA DE CUSTOS ............................................................................... 52
6. RESULTADOS E DISCUSSÃO......................................................................... 53
7. CONCLUSÕES ................................................................................................. 57
8. CRONOGRAMA ................................................................................................ 58
9. BIBLIOGRAFIA ................................................................................................. 60
4
LISTA DE FIGURAS
Figura 1 – Módulo Celular-PC ............................................................................... 22
Figura 2 – Módulo do Display................................................................................ 22
Figura 3 – Classes Módulo Celular-PC ................................................................. 23
Figura 4 – Visão Geral do Sistema........................................................................ 26
Figura 5 – Diagrama de Casos de Uso ................................................................. 27
Figura 6 – Diagrama de Classes ........................................................................... 29
Figura 7 – Classe Broker....................................................................................... 33
Figura 8 – Diagrama de Seqüência de Pergunta via SMS (parte esquerda)......... 34
Figura 9 – Diagrama de Seqüência de Pergunta via SMS (parte direita).............. 35
Figura 10 – Diagrama de seqüência de cadastrar local ........................................ 36
Figura 11 – Diagrama de seqüência de cadastrar sub-local ................................. 36
Figura 12 – Diagrama de seqüência de cadastrar atração.................................... 37
Figura 13 – Diagrama de seqüência de cadastrar sessões .................................. 38
Figura 14 – MER ................................................................................................... 39
Figura 15 – Fluxograma do firmware..................................................................... 47
Figura 16 – Diagrama de Estados......................................................................... 47
Figura 17 – Esquemático da serial ........................................................................ 48
Figura 18 – Esquemático do microcontrolador ...................................................... 49
Figura 19 – Esquemático do display LCD ............................................................. 50
Figura 20– Display LCD em funcionamento .......................................................... 54
Figura 21 – Tela do treinamento ........................................................................... 56
5
LISTA DE TABELAS
Tabela 1 - Descrição de uma Mensagem SMS ..................................................... 14
Tabela 2 – Transformação de alfabeto de 7 para 8 bits ........................................ 14
Tabela 3 – Modelos de LCD mais comuns............................................................ 18
Tabela 4 – Pinagem LCD ...................................................................................... 19
Tabela 5 – Dicionário de Dados Tabela Local....................................................... 39
Tabela 6 – Dicionário de Dados Tabela Atração ................................................... 40
Tabela 7 - Componentes ....................................................................................... 50
Tabela 8 – Estimativa de Custos........................................................................... 52
6
RESUMO
Muitas maneiras diferentes de buscar informações referentes a teatro e
cinema podem ser utilizadas, porém nenhuma consegue incorporar baixo custo,
velocidade e conveniência simultaneamente. Devido a esta falha pensou-se num
sistema capaz de prover esses três aspectos.
O sistema visa auxiliar pessoas na busca de informações relacionadas com
a programação de teatro e cinema, utilizando telefones celulares através das
mensagens SMS (Short Message System), isto permitirá que pesquisas sejam
feitas com:
•
Rapidez: o tempo necessário é o de digitar e enviar uma pergunta e mais
alguns poucos segundos para o retorno da resposta.
•
Conveniência: os celulares são aparelhos que quase todos carregam
consigo.
•
Baixo custo: o preço é o cobrado por uma mensagem de acordo com o que
a operadora estipular.
Além disto, o sistema é capaz de entender algumas mensagens escritas em
linguagem corrente da língua portuguesa brasileira, tornando-o ainda mais fácil de
ser utilizado.
Nesta monografia, será apresentado como o sistema funciona em detalhes
tanto em sua parte de hardware quanto na de software, com os respectivos
esquemáticos e diagramas para haver uma mais fácil compreensão.
7
ABSTRACT
Even though many ways to get information about theater and cinema has
been used. None of them can integrate low cost, speed, and convenience
simultaneously. Due to this fail it has been thought in a system able to provide
these three features.
The system aims to help people in searches for cinema and theater listings
using mobile phones, through its SMS (Short Message System). It allows searches
to be made with:
•
Speed: The time it takes is just the time to write and to send a question and
more a little seconds waiting for the answer.
•
Convenience: Mobiles are devices that almost everybody carries with
themselves.
•
Low cost: the price is just the amount charged for a message according to
what the mobile company stipulates.
Moreover the system shall understand messages written in Brazilian
Portuguese natural language, making it even easier to be used.
In this article it is shown how the system works in details as much in the
hardware part as in the software, with their schematic and diagrams to make the
comprehension easier.
8
1.INTRODUÇÃO
Como atualmente nenhuma forma de busca de programação de teatro, de
cinema e de outros eventos culturais é eficaz e conveniente, o projeto descrito
nesta monografia foi feito buscando um meio alternativo e melhor em relação aos
atuais.
O sistema permite que a busca por programação seja feita através de
telefones celulares via mensagens SMS (Short Message System).
Para que se possa realizar essa busca de forma simples, o sistema é capaz
de entender algumas frases em linguagem corrente do português brasileiro.
Inicialmente este projeto abrange a cidade de Curitiba a qual possui um
grande público freqüentador de cinema e teatro.
1.1 Definição do Trabalho
O projeto visa a construção de um sistema computacional que viabilize a
obtenção de informações voltadas ao entretenimento de forma rápida, confiável,
barata e que possam ser acessadas de qualquer lugar e a qualquer hora.
Essas informações abrangem teatro e cinema (o que está em cartaz,
programação, localizações, preços...).
Para satisfazer esses quesitos pensou-se na utilização de mensagens de
telefones celulares, aparelho que a grande maioria do público freqüentador desses
eventos culturais possui.
O sistema reconhece mensagens SMS (Short Message System) vindas de
um telefone celular. O cliente pode requisitar informações voltadas ao
entretenimento em linguagem natural e receber uma resposta adequada à
pergunta.
Com este projeto, permitisse que uma pessoa interessada em fazer algo
relacionado ao entretenimento possa mandar uma mensagem, em linguagem
natural para um celular, requisitando uma determinada informação. A mensagem é
9
recebida por um celular que por um cabo de transmissão de dados a repassa a
um PC (Personal Computer).
No computador um software entende a mensagem e gera uma resposta
correspondente, a qual é enviada novamente ao celular atrelado ao sistema. Por
fim, a resposta é enviada à pessoa requisitante.
Também foi adicionado ao sistema um display LCD controlado por um
microcontrolador 8051. Ele exibe a pesquisa que acabou de ser realizada e
quantas vezes ela já foi feita, possibilitando que haja o acompanhamento das
pesquisas mesmo sem a existência de um monitor, economizando energia.
1.2 Contextualização nos dias atuais
Curitiba foi eleita em dois mil e três a Capital Americana da Cultura pela
Organização Capital Americana da Cultura[7], o que indica a forte influência
cultural que a cidade possui. Sabendo-se desta apreciação cultural dos cidadãos
curitibanos pensou-se num sistema que auxiliasse na busca do que está
acontecendo em termos culturais.
Os atuais meios para obter informações sobre programação dos cinemas,
teatros e demais eventos culturais não são muito eficientes. Pois no caso do jornal
e internet é necessário possui-los no local, e por telefone a resposta é custosa e
demorada já que mesmo que se queira saber somente sobre um filme, por
exemplo, é necessário escutar toda a programação de cinema.
Uma solução para essas inconveniências seria a utilização de mensagens
SMS de celulares, como os celulares são aparelhos que sempre acompanham as
pessoas, elas terão acesso a esses dados em qualquer lugar e a qualquer hora
bastando somente mandar uma mensagem para o sistema requisitando a
informação desejada.
Além do mais o campo de atuação das mensagens SMS da telefonia celular
é vasto. Esse mesmo projeto poderia ter outras vertentes. Como o acesso a vários
tipos de sistemas especialistas, por exemplo: na medicina poder-se-ia fazer uma
10
busca de uma doença, dado os sintomas do paciente; poder-se-ia também buscar
por endereços de estabelecimentos ou consultar uma lista telefônica.
Ainda mais ampla seria a aplicabilidade da comunicação entre um ser
humano e uma máquina, já que muitas pessoas têm grande dificuldade para lidar
com computadores e outras tecnologias em geral. Isso porque esses utilizam
linguagens diferenciadas da linguagem do dia a dia.
Ao se utilizar softwares e sistemas que entendam um ser humano o número
de pessoas capazes e que se interessariam neles seria muito maior.
1.3 Motivação
É muito gratificante ver um projeto sempre evoluindo, chegando cada vez
mais próximo ao esperado, mesmo que nunca possa alcançar esse ponto.
E ao trabalhar com Inteligência Artificial, neste projeto mais especificamente
com a comunicação entre um ser humano e uma máquina, existe a possibilidade
de estar sempre aprimorando o que foi inventado. Pois a inteligência e o
aperfeiçoamento de comunicação não tem limites. É algo no qual pode-se
começar agora e após décadas de trabalho ainda haverá muito a ser feito.
Além de que, ele terá uma aplicabilidade tremenda, pois quase todos os
programas ou sistemas possuem uma interface homem-máquina, o que
possibilitaria a inclusão deste software em muitos outros.
Outra grande motivação é a possibilidade de aprendizado sobre a telefonia
celular, uma área que ainda existe muito a ser explorado.
1.4 Descrição das Principais Funcionalidades
As principais funcionalidades serão apresentadas de forma sucinta para
mostrar o funcionamento do software como um todo.
11
1.4.1 Recebimento e Envio de Mensagens
O sistema é capaz de transmitir mensagens do celular para o computador e
vice-versa. Também transforma as mensagens que estarão no formato PDU
(Protocol Description Unit) para string e de string para PDU.
1.4.2 Reconhecimento de Frases Escritas em Linguagem Corrente
O sistema entende uma mensagem escrita em linguagem corrente na
língua portuguesa. A princípio, somente algumas mensagens com perguntas que
estejam relacionadas com o entretenimento.
1.4.3 Acesso à Banco de Dados
O sistema é capaz de acessar um banco de dados com as informações dos
eventos que estão acontecendo bem como pode alterá-lo.
1.4.4 Mostrar Última Pesquisa Realizada num Display
O sistema mostra num display LCD a pesquisa que acabou de ser feita e
quantas vezes ela já foi realizada.
1.5 Tecnologias Utilizadas na Implementação
-Mensagens SMS
-Transmissão de Dados via Serial
12
2.FUNDAMENTAÇÃO TEÓRICA
Este capítulo explica teoricamente todo o estudo inicial necessário para o
desenvolvimento do projeto.
2.1 Teoria Pura e Aplicada a Prática
Neste tópico serão apresentadas algumas explicações básicas para um
melhor entendimento do projeto.
2.1.1 Mensagens SMS (Short Message System)
SMS (Sistema de mensagens curtas) provê um mecanismo para
transmissão de mensagens curtas de e para dispositivos wireless. Este serviço
utiliza o SMSC (Short Message System Centre), que atua como um sistema
armazenador e retransmissor de mensagens curtas. As redes wireless provêem o
mecanismo requerido para achar as estações de destino e transportar as
mensagens curtas ao longo dos SMSCs e estações wireless (no caso do projeto
os celulares).[1]
Com o sistema SMS, a entrega da mensagem é garantida. Pois falhas
temporárias, devido a não possibilidade de recebimento da mensagem na estação
receptora são identificadas. Com isso a mensagem é armazenada no SMSC até
que o dispositivo de destino se torne disponível.
As mensagens de SMS, de acordo com o especificado pela Etsi
(Companhia Internacional de Padronizações), podem ter até cento e sessenta
caracteres, de modo que cada caractere tem sete bits de acordo com o alfabeto
padrão de sete bits. Ou se usado o alfabeto de 8 caracteres ter um tamanho de
cento e quarenta.
13
2.1.2 Formato PDU (Protocol Description Unit)
Existem duas maneiras de enviar e receber mensagens SMS: pelo modo
texto ou pelo modo PDU. Alfabetos podem ser diferentes e existem algumas
maneiras diferentes de codificação quando uma mensagem SMS é colocada na
tela.
Uma aplicação é capaz de ler mensagens ou no modo texto ou modo PDU.
Se utilizado o modo texto a aplicação fica limitada a um conjunto de opções de
codificação pré-definida. No caso do modo PDU qualquer codificação pode ser
implementada.
Na tabela 1 demonstra-se o funcionamento desse formato quando enviada
uma mensagem “hellohello”, de acordo com[1]:
A string recebida foi :
07 917283010010F5
Octetos
040BC87238880900F10000993092516195800AE8329BFD4697D9EC37
Descrição
Comprimento da informação de SMSC (em octetos deste caso 7).
Parte inferior do formulário
07
Tipo do endereço SMSC(formato internacional de 91 meios do número de telefone).
Parte inferior do formulário
91
Número da central de serviços de SMS representada no formato de semi-octetos. O
comprimento do número de telefone é impar (11), assim um F foi adicionado aos
octetos apropriados do formulário. O número de telefone deste centro de serviço é
"+27381000015".
Parte inferior do formulário
72 83 01 00 10 F5
04
Primeiro octeto do envio de mensagem SMS.
Comprimento do número do remetente (hex 0B = dec 11).
Parte inferior do formulário
0B
C8
Tipo do endereço do numero quem esta enviando
Número do remetente (semi-octetos decimais),
"+27838890001".
Parte inferior do formulário
com
um
F
adicionado.
72 38 88 09 00 F1
00
00
TP-PID. Identificador de Protocolo (maiores informações em [1]).
TP-DCS. Esquema de codificação dos dados.
99 30 92 51 61 95 80
0A
TP-SCTS. Ano, mês, dia, hora, minuto, segundo e timezon representado no formato
de semioctetos.
Comprimento da Mensagem
E8329BFD4697D9EC37
Mensagem "hellohello". Formato octetos 8-bit, que representam os dados 7-bit.
14
Tabela 1 - Descrição de uma Mensagem SMS
Para que uma mensagem fique no formato correto para envio de
mensagens SMS os caracteres do alfabeto de 7 bits, Tabela ASCII (American
Standard Code for Information Interchange), devem ser transformados em octetos.
Para entender como essa transformação é feita será utilizado como
exemplo a transformação da mensagem hellohello. Nela o primeiro septeto (‘h’)
vira um octeto adicionando o bit mais a direita do segundo septeto (‘e’). Depois o
segundo septeto (‘e’) recebe dois bits do terceiro (‘l’) e assim por diante.
A tabela 2 exemplifica a transformação da mensagem “hellohello” do
alfabeto de 7bits para o formato octeto de 8bits.
Mens
H
agem
Ascii 104
Ascii
em
binari
o
1101000
1101000
8bits 1
Hexa
decim
al
E8
e
l
l
o
h
e
l
l
o
101
108
108
111
104
101
108
108
111
1100101
1101100
1101100
1101111
1101000
1100101
1101100 1101100
110010 1
11011 00
1101 100 110
1101000 00
32
110010 100
9B
1111 11
1000 1
11011 1111 1101 01000 110 100101 11
FD
46
97
100101 1101100 1101100
1101100 1
1
D9
EC
1101111
110111 1
1101100 1101100 110111
37
Tabela 2 – Transformação de alfabeto de 7 para 8 bits
2.1.3 Comunicação Serial
A comunicação serial é de extrema importância em computadores. Pois
permite comunicação entre máquinas apenas com dois fios.
O periférico chama-se serial porque transmite um byte, bit por bit, em
seqüência preestabelecida e pré-programada, para que o receptor possa recebelo e monta-lo de novo em um byte, igual ao originalmente transmitido. Além do
byte que é transmitido no canal serial, inserem-se também alguns bits de controle
de transmissão e recepção, como, por exemplo, os bits de “start” e o bit de ”stop”,
que sinalizam ao receptor o início e o fim da transmissão/recepção do byte.
15
Tipicamente, costuma-se codificar o byte a ser transmitido em código ASCII
(América Standard Coded for Information Interchange), pois é padrão universal de
comunicação. Além destes pré-requisitos, é fundamental que as freqüências do
transmissor e do receptor sejam as mesmas[3].
2.1.4 Microcontrolador
O microcontrolador corresponde a um microprocessador e seus periféricos
típicos, todos num só chip.
Isto devido ao fato de que na maioria das aplicações que se utiliza
microprocessadores necessita-se, alem do chip do microprocessador, da ROM
(Read Only Memory), da RAM (Random Access Memory) e de outros chips
auxiliares, como Timers (que contam o tempo) e Serial (que faz a interface com o
barramento
paralelo
do
microprocessador
e
gera
uma
linha
serial
de
comunicação).
Abaixo temos o conjunto de instruções agrupadas funcionalmente de um
microcontrolador de acordo com :[3]
•
Aritméticas (+,-, / ,*)
•
Lógicas (AND, OR, EXOR, operando com byte)
•
De transferência de dados (Mover Dado = Mov)
•
Booleanas (AND, Or, EXOR, operando com um bit)
•
De ramificação (decisão ou desvio)
2.2 Teoria de Software
Aqui serão apresentados fundamentos básicos em relação aos softwares
utilizados.
2.2.1 C++
16
C++ é uma linguagem de programação desenvolvida por Bjarne Stroustrup
no início dos anos 80. C++ apresenta várias características que melhoram a
linguagem C, mas o mais importante é que fornece recursos para a programação
orientada à objetos [5].
A idéia principal de linguagens orientadas a objetos é a possibilidade de
combinar num único registro, campos que conterão dados e campos que são
funções para operar os campos de dados do registro. Uma unidade assim definida
é chamada classe [4].
Os programas orientados a objetos são de grande valia, pois são mais
fáceis de entender, corrigir e modificar [5].
2.2.2 Interbase
O Interbase é um SGBD (Sistema Gerenciador de Bancos de Dados)
desenvolvido pela Borland. Oferece suporte à linguagem SQL (Structured Query
Language) de acordo com o padrão SQL92, além de mecanismos eficientes de
segurança e integridade de dados. Permite gerenciar transações e utilizar
recursos como visões (views), papéis (roles), procedimentos armazenados (stored
procedures) e gatilhos (triggers).[2]
2.3 Teoria de Hardware
Aqui serão apresentados fundamentos básicos em relação ao hardware
utilizado.
2.3.1 A Família 8051
O microcontrolador 8051 é um componente da família Intel MCS-51,
representada tambem pelos microcontroladores(8071, 8031, 8052, 8752 e 8032),
e possui 4 Kbytes de ROM interna.[3]
17
Pode-se encontrar algumas versões dessa família com o símbolo C entre o
nome do componente que indica que utiliza a tecnologia CMOS (complementary
metal oxide semiconductor), tecnologia que consome menos energia. Hoje todas
as versões citadas podem possuir essa tecnologia.
Abaixo temos algumas características do 8051 de acordo com[3]:
•
RAM interna de uso geral de 128 bytes e 128 bytes correspondentes
aos registradores especiais
•
ROM interna de 4Kbytes
•
Quatro portas de I/O(entrada e saída)
•
Dois Timers de dezesseis bits
•
Uma interface serial
•
Capacidade de 64Kbytes de endereçamento externo de ROM
•
Capacidade de 64Kbytes de endereçamento externo de RAM
•
Ciclos típicos de instrução de um e dois microssegundos a 12MHz
•
Instrução direta de divisão e multiplicação
•
Entradas de interrupção externa
2.3.2 Display LCD
Os módulos LCD são interfaces de saída muito útil em sistemas
microprocessados. Estes módulos podem ser gráficos e a caractere.
Os modelos de LCD comuns (tipo caracter) são especificados em número
de linhas por colunas e são encontrados nas configurações da tabela 3:
Número de Colunas
Número de Linhas
Quantidade de pinos
8
2
14
12
2
14/15
16
1
14/16
16
2
14/16
18
16
4
14/16
20
1
14/16
20
2
14/16
20
4
14/16
24
2
14/16
24
4
14/16
40
2
16
40
4
16
Tabela 3 – Modelos de LCD mais comuns.
Os módulos podem ser encontrados com LED backlight (com uma
iluminação de fundo) para facilitar as leituras durante a noite. Neste caso, a
alimentação deste led é feita normalmente pelos pinos 15 e 16 para os módulos
comuns e 19 e 20 para os módulos gráficos, sendo os pinos 15 e 19 para ligação
ao anodo e os pinos 16 e 20 para o catodo.
A corrente de alimentação deste led varia de 100 a 200mA, dependendo do
modelo.
Estes módulos utilizam um controlador próprio, permitindo sua interligação
com outras placas através de seus pinos. Onde deve ser alimentado o módulo e
interligado o barramento de dados e controle do módulo com a placa do usuário.
Além de alimentar e conectar os pinos do módulo com a placa do usuário
deverá haver um protocolo de comunicação entre as partes, que envolve o envio
de bytes de instruções e bytes de dados pelo sistema do usuário.
A Tabela 4 descreve cada pino do módulo ou do display para conexão
deste a outras placas:[6]
Pino
1
2
3
4
5
6
Função
Alimentação
Alimentação
V0
RS Seleção:
R/W Seleção:
E Chip select
Descrição
Terra ou GND
VCC ou +5V
Tensão para ajuste de contraste
1 - Dado, 0 - Instrução
1 - Leitura, 0 - Escrita
1 - Habilitado, 0 - Desabilitado
19
7
8
B0
B1
LSB
Barramento de Dados
9
10
11
12
13
14
15
16
B2
B3
B4
B5
B6
B7
A (qdo existir)
K (qdo existir)
Barramento de Dados
Barramento de Dados
Barramento de Dados
Barramento de Dados
Barramento de Dados
MSB
Anodo p/ LED backlight
Catodo p/ LED backlight
Tabela 4 – Pinagem LCD
20
3. ESPECIFICAÇÃO
3.1 Especificação do Hardware
A parte de hardware é dividida em dois módulos, o de interface (celular-PC)
e o do display.
3.1.1 Módulo de Interface (Celular - PC)
Neste módulo são utilizados um celular Siemens® e um cabo para
transmissão de dados via serial, pois ambos já estavam disponíveis.
3.1.2 Módulo do Display
Neste módulo são utilizados um display LCD, um kit montado do
microcontrolador 8051 e uma bateria de nove Volts.
3.1.2.1 Microcontrolador 8051
Este microcontrolador foi escolhido devido sua enorme popularidade, o que
resulta em preços baixos, alta disponibilidade e grande suporte, muitas páginas da
internet e livros falam sobre ele. Outra razão é o conhecimento que já se possuía
sobre ele e a disponibilidade de uma placa padrão, a qual já incorpora todo o
circuito para integrá-lo com a memória RAM (Random Access Memory), a
memória ROM (Read Only Memory), e a interface serial. Além do mais, sua
velocidade e capacidade máxima de memória são mais do que suficientes para
esta aplicação.
21
3.1.2.2 Display LCD
O display utilizado é do tipo caractere, pois é mais barato. Um do tipo
gráfico não é necessário, já que não serão utilizados gráficos e seu custo é muito
alto. O seu tamanho será de 16 colunas por 2 linhas, pois não é necessário mais
espaço do que isso.
3.2 Especificação do Software
O Software está divido em três módulos bem distintos, o da interface
(Celular-PC), o do display e o da linguagem natural.
Todos foram programados em C++, pois esta linguagem permite uma alta
integração dos diferentes módulos de uma forma clara e fácil de manter, devido ao
fato desta ser uma linguagem orientada à objetos.
No entanto, o principal motivo da escolha é o conhecimento que já foi
adquirido desta linguagem ao longo dos anos.
Foi utilizado o ambiente de desenvolvimento integrado IDE (Integrated
Development Environment) Borland Builder C++ 6. Pois esse possui uma
excelente biblioteca para manipular strings e permite que interfaces gráficas sejam
criadas e manipuladas com facilidade. Além de possuir componentes que facilitam
a comunicação com o sistema gerenciador de banco de dados InterBase.
O InterBase foi utilizado, pois ele é gratuito, o que torna o projeto mais
barato, e possui boa integrabilidade com o IDE utilizado.
3.3 Aplicabilidade/Funcionabilidade do Hardware
Neste capítulo será apresentado de forma sucinta o funcionamento do
hardware.
22
3.3.1 Módulo de Interface (Celular/PC)
Para receber a mensagem do telefone celular do qual a pessoa está
requisitando uma informação foi utilizado outro aparelho, o qual está conectado ao
PC. Portanto a mensagem é enviada primeiramente para outro celular. Este então
este envia a mensagem ao PC pelo cabo de transmissão de dados via serial. A
figura 1 ilustra essas comunicações.
Figura 1 – Módulo Celular-PC
3.3.2 Módulo do Display
O módulo do display LCD exibe em qual tipo de pergunta a pesquisa que
acabou de ser realizada se enquadrou e quantas vezes ela já foi feita.
O computador transmite para o microcontrolador via serial as informações
que devem aparecer no display, e o microcontrolador faz o controle de todos os
sinais do display e repassa a mensagem para o display, onde a última pesquisa
será mostrada.
Um diagrama em blocos simplificado deste módulo é mostrado na figura 2:
Figura 2 – Módulo do Display
23
3.4 Aplicabilidade/Funcionabilidade do Software
Neste capítulo será apresentado de forma sucinta o funcionamento do
software.
3.4.1 Módulo Interface (Celular-PC)
Este módulo é responsável por ler a porta serial, receber a informação, para
então transformá-la do formato PDU para uma string. E também é responsável
pelo caminho inverso, ou seja, receber uma string de caracteres, transformá-la em
formato PDU e envia-la para o celular através da porta serial.
Para realizar estas tarefas existem duas classes auxiliares, a Porta Serial e
a Converões.
A figura 3 ilustra como as classes auxiliares estão ligadas com a de leitura e
envio de mensagens SMS :
Figura 3 – Classes Módulo Celular-PC
24
3.4.1.1 Classe Serial
Esta classe é a responsável por ler ou escrever o que estiver no buffer da
porta selecionada da serial. Esta classe é utilizada tanto pelo Módulo Interface
quanto pelo Módulo do Display.
3.4.1.2 Classe Conversões
Esta classe realiza todas as transformações necessárias do formato PDU.
Como o deslocamento de bits, a transformação de caracteres do alfabeto de 7bits
para o padrão octetos de 8bits e vice-versa, o tratamento do número recebido e a
ser enviado e a transformação de string para hexadecimal e de hexadecimal para
strings.
3.4.2 Módulo do Display
Este módulo é responsável pela transmissão das strings, com as sessões
nas quais as perguntas se enquadraram e quantas vezes a sessão foi utilizada,
para a porta serial que se comunica com o microcontrolador.
3.4.3 Módulo Linguagem Natural
Este é o principal módulo do software, onde é feito todo o reconhecimento
da pergunta requisitada. Para isso é utilizado: acesso ao banco de dados, acesso
à arquivos, trabalho com strings dentre outras tarefas.
O reconhecimento é feito através da analise de palavras chaves.
25
4. PROJETO
4.1 Apresentação do Projeto
Neste capítulo será apresentada a documentação do sistema, tanto em sua
parte de hardware como a de software. Para tanto serão utilizadas ferramentas da
linguagem UML (Unified Modeling Language), fazendo assim com que o
funcionamento
do
sistema
seja
de
fácil
compreensão.
Também
serão
apresentados esquemáticos feitos em Orcad, para que o funcionamento do
hardware seja entendido.
4.2 Descrição Funcional do Projeto
O sistema reconhece mensagens SMS (Short Message System)
através de palavras chaves, vindas de um telefone celular, a qual requere
informações voltadas ao entretenimento em linguagem natural, para que então
seja gerada uma resposta adequada à pergunta.
Com este projeto permitir-se que uma pessoa interessada em fazer algo
relacionado ao entretenimento possa mandar uma mensagem em linguagem
natural a um celular requisitando uma determinada informação. A mensagem é
recebida por um celular, que através de um cabo de transmissão de dados a
repassa a um PC (Personal Computer). No computador um software “entende” a
mensagem e gera uma resposta correspondente. Essa mensagem é enviada
novamente ao celular atrelado ao sistema, para então, ser enviada à pessoa
requisitante.
Também foi adicionado ao sistema um display LCD controlado por um
microcontrolador 8051. Ele exibe a pesquisa que acabou de ser realizada e
quantas vezes ela já foi feita. Assim é possível que haja o acompanhamento das
pesquisas mesmo sem a existência de um monitor, economizando energia.
26
A figura 4 mostra o sistema de uma forma geral:
Figura 4 – Visão Geral do Sistema
4.3 Requisitos Mínimos para o Funcionamento do Projeto
Para que o sistema funcione e sem muito atraso no processamento das
mensagens, já que existe muita manipulação de strings, é necessário ao menos
um computador com as seguintes especificações:
•
Sistema operacional windows
•
Pentium III 500 (Recomenda-se Pentium IV)
27
•
128MB RAM
•
1,3 MegaBytes de espaço livre no disco rígido
•
Porta serial disponível
•
Porta USB disponível
4.4 Projeto de Software
O projeto do software utilizou-se de ferramentas UML (Unified Modeling
Language) e é descrito neste capítulo.
4.4.1 Diagrama de Casos de Uso
A figura 5 representa o diagrama de casos de uso:
Figura 5 – Diagrama de Casos de Uso
28
4.4.1.1 Pergunta via SMS
Aqui o principal caso de uso é detalhado.
Fluxo de eventos principal: O caso de uso inicia quando um cliente envia
uma mensagem ao celular acoplado ao sistema. Essa mensagem é reconhecida
para que então uma resposta seja retornada ao cliente.
Fluxo excepcional de eventos: A mensagem pode não chegar ao celular
acoplado ao sistema. O sistema não saberá que isto aconteceu e não fará nada.
Fluxo excepcional de eventos: O sistema pode não reconhecer o que esta
escrito na mensagem. Uma mensagem informando que o sistema não pode
reconhecê-la é enviada ao cliente.
4.4.2 Classes do Sistema
As principais classes do sistema serão apresentadas e explicadas neste
capítulo.
4.4.2.1 Diagrama de Classes
A figura 6 mostra as principais classes e suas associações que compõem o
software do sistema:
4.4.2.2 Classe cControlador
Esta é uma classe filha de thread que está sempre verificando na função
execute() se a classe cMensagem recebeu algo. Caso ela tenha recebido, essa
mensagem é repassada para a classe cLinguagemNatural que retorna a resposta
à pergunta recebida na cMensagem e a sessão (maiores detalhes sobre sessões
será dado no capítulo 4.4.5.1) na qual se encaixou. Então a classe cControlador
requer à cControladorArquivos verificar quantas vezes uma frase se encaixou
naquela sessão para que então a classe cLCD faça o que for necessário para que
seja escrito no display esta sessão e o número de vezes que ela foi utilizada.
29
Figura 6 – Diagrama de Classes
30
4.4.2.3 Classe cLinguagemNatural
Esta é a classe responsável pelo reconhecimento de uma pergunta, feita
através de palavras chaves, e retorno de sua resposta, bem como pela verificação
se alguma das perguntas não encontradas em pesquisas anteriores têm alguma
ligação com os campos mais importantes do banco de dados.
Para
realizar
a
primeira
tarefa
são
utilizadas
diversas
funções.
Sucintamente o que ela faz é ler o arquivo DadosBusca (maiores detalhes sobre
os arquivos será dado no capítulo 4.4.5) , verificar em qual sessão a pergunta se
encaixa melhor, criar a clausula de select para adquirir os campos com a resposta
do banco de dados e gerar uma frase adequada para responder a pergunta.
A segunda tarefa só verifica se a pergunta possui algum dos campos mais
importantes, no caso de programação de cinema e teatro, esses campos são os
nomes das atrações e dos locais.
4.4.2.4 Classe cDataHora
Classe que auxilia a cLinguagemNatural, ela é responsável pelo
reconhecimento de datas e horas em uma string e conversão para o formato
TDateTime.
4.4.2.5 Classe cExtenso
Classe que auxilia a cDataHora, substitui valores escritos por extenso por
valores numéricos, como números, dias da semana (segunda, terça...) e meses,
utilizando um arquivo auxiliar “Extenso ini”.
4.4.2.6 Classe cBancodeDados
Classe que auxilia a cLinguagemNatural, ela é responsável por retornar os
campos correspondentes quando inserido-a uma consulta.
31
4.4.2.7 Classe cLogica
Classe que auxilia a cLinguagemNatural. Ela faz analises lógicas em frases,
verificando se esta possui certas palavras. Atualmente suporta os operadores ‘e’,
‘ou’ ‘()’. Os símbolos para estes operadores são lidos do arquivo “símbolos.ini”.
4.4.2.8 Classe cStringPlus
Realiza funções com strings que a AnsiString não possui. Como a
separação de palavras através de separadores diferentes de espaço, ou indicar a
posição de uma palavra numa frase, dado os separadores de palavras.
4.4.2.9 Classe cControladorArquivos
Classe que faz operações com alguns dos arquivos utilizados pelo sistema.
4.4.2.10 Classe cMensagem
Classe responsável pelo recebimento de mensagens e pela decomposição
e validação da mesma. Também é responsável pelo envio de mensagens e
transformação dela em formato PDU.
4.4.2.11 Classe cConversoes
Classe responsável pelas transformações necessárias para compor e
decompor uma mensagem no formato PDU.
4.4.2.12 Classe cComunicacao
32
Classe responsável pela comunicação com uma porta serial. Ela no envio
coloca os caracteres no buffer do Windows®. No recebimento checa o buffer de
RX (Receive) da porta na qual a comunicação foi estabelecida, caso exista algo
ela retorna o que existe e esvazia este buffer.
4.4.2.13 Classe cLCD
Classe responsável pelo envio de duas strings para a porta do display, a
primeira ficará na primeira linha do LCD e a segunda na segunda linha.
4.4.2.14 Classe cBroker
O broker do sistema foi implementado no Data Module do Borland Builder
C++ 6, a classe com seus componente e métodos está representada na figura 7.
4.4.3 Diagramas de Seqüência
Neste capítulo serão apresentados os diagramas de seqüência dos casos
de uso do sistema.
4.4.3.1 Pergunta via SMS
A figuras 8 e 9 descrevem a seqüência do caso de uso pergunta via SMS:
33
Figura 7 – Classe Broker
34
Figura 8 – Diagrama de Seqüência de Pergunta via SMS (parte esquerda)
35
Figura 9 – Diagrama de Seqüência de Pergunta via SMS (parte direita)
4.4.3.2 Cadastrar Local
A figura 10 mostra o diagrama de seqüência do caso de uso cadastrar local:
36
Figura 10 – Diagrama de seqüência de cadastrar local
4.4.3.4 Cadastrar Sub-Local
Local:
A figura 11 mostra o diagrama de seqüência do caso de uso Cadastrar Sub-
Figura 11 – Diagrama de seqüência de cadastrar sub-local
37
4.4.3.5 Cadastrar Atração
A figura 12 mostra o diagrama de seqüência do caso de uso cadastrar
atração:
Figura 12 – Diagrama de seqüência de cadastrar atração
4.4.3.6 Cadastrar Sessões
A figura 13 mostra o diagrama de seqüência do caso de uso cadastrar
sessões:
38
Figura 13 – Diagrama de seqüência de cadastrar sessões
4.4.4 Dados
Neste capítulo serão apresentadas informações sobre os dados utilizados
no banco de dados do sistema.
4.4.4.1 Modelo Relacional
A figura 14 mostra os relacionamentos entre as tabelas do banco de dados:
39
Figura 14 – MER
4.4.4.2 Dicionário de Dados
A tabela 5 provê maiores informações sobre os campos da tabela local:
Nome
Varchar [30], Armazena o nome do cinema, ou do teatro, ou do
NotNull
centro de convenções ou de qualquer outro local
desejado.
Nomes_busca Varchar[150], Armazenará os apelidos do local, por exemplo se o
local se chama Parkshopping Barigui ele pode se
NotNull
chamar somente Barigui.
Endereço
Varchar [80], Armazenará o endereço do estabelecimento
NotNull
Tipo
Varchar [20], Armazenará o tipo do local, se ele é um cinema,
NotNull
teatro...
Tabela 5 – Dicionário de Dados Tabela Local
A tabela 6 provê maiores informações sobre os campos da tabela atração:
Nome
Varchar
[70] Armazena o nome do filme, ou peça teatral ou de
40
NotNull
qualquer outra atração.
Nomes_Busca Varchar[150], Armazenará os apelidos do local, por exemplo, o
NotNull
filme “Dois Filhos de Francisco”, também pode ser
chamado de “Zezé Di Camargo e Luciano”.
Tipo
Varchar [20], Armazenará o tipo da atração, se ela é um filme,
Gênero
NotNull
uma orquestra sinfônica, uma peça teatral...
Varchar [20]
Armazenará o gênero de uma atração, se é
suspense, aventura, comédia...
Censura
Varchar [20]
Armazenará a idade mínima para poder assistir o
filme ou atração.
Sinopse
Varchar [300] Armazenará uma descrição sucinta sobre um filme
Tabela 6 – Dicionário de Dados Tabela Atração
4.4.5 Arquivos Auxiliares
Para tornar o sistema independente de língua e de símbolos foram
utilizados vários arquivos auxiliares, os quais também facilitam a manutenção do
software.
4.4.5.1 Dados Busca
Este é o principal arquivo do sistema, é nele que estão contidas as
informações necessárias para entender uma pergunta e gerar uma resposta.
Este é um arquivo do tipo INI, portanto ele é dividido em sessões e cada
uma delas possui chaves, onde são armazenados valores.
Neste caso cada sessão indica os passos para responder cada tipo de
pergunta e seu nome é dado de acordo com número de palavras chaves e de
campos do banco de dados.
As chaves utilizadas são as seguintes:
41
•
Palavras Chaves: Indica as principais palavras que podem ser retiradas de
uma pergunta para que ela seja entendida, elas são separadas pelo
símbolo # indicando ‘e’, o símbolo & não foi utilizado, pois é mais provável
que ele esteja no meio do nome de algum filme. Os sinônimos são
separados pelo operador |. Caso algum filme venha a possuir algum desses
símbolos em seu nome, eles podem ser alterados, sendo somente
necessário muda-los também no arquivo Símbolos na sessão Lógicos.
•
BuscaBD: Também é utilizado para entender a pergunta, mas o valor desta
chave está relacionado com o banco de dados. Aqui é necessário informar
o campo que estará na pergunta bem como a tabela onde o campo se
encontra, o formato deve ser Tabela.Campo.
•
Possui Tempo: Indica se a pesquisa possui tempo, ou dia ou hora. Em
versões futuras esta chave deverá ser eliminada.
•
Resposta Esperada BD: Indica o campo do banco de dados no qual deve
ser feito o select.
•
Resposta Esperada: Indica a resposta que deve ser dada à pergunta em
questão. Nesta chave as strings <BUSCA BD> será substituída pelo campo
do banco de dados utilizado na pergunta, <RESPOSTA BD> será
substituída pelo campo do banco de dados correspondente a resposta à
pergunta e <DATA> pela data que o usuário digitou na pergunta. Caso na
pergunta não exista um tempo, essa string será simplesmente apagada.
•
Reposta Excecao: Caso o retorno do select no banco de dados for nulo,
esta será a resposta a pergunta que será utilizada. Aqui as String <BUSCA
BD> e <DATA> serão substituídas como no caso da chave Resposta
Esperada.
Para exemplificar este arquivo será utilizada a sessão 2.2.2 como exemplo:
O nome da Sessão é 2.2.2, pois foi a segunda a ser criada, possui duas
palavras chaves diferentes (não sinônimas) e o último dois indica que ela
possui uma palavra em busca bd e possui tempo.
42
Os dois últimos valores servem para indicar o peso da sessão, caso mais
de uma sessão se encaixe com a pergunta do cliente a sessão com maior peso
será utilizada.
[2.2.2]
EXEMPLO=EM QUAIS CINEMAS PASSARA O AVIADOR AMANHA AS 21
HORAS
PALAVRAS
CHAVES=(QUAL|QUAIS#CINEMA|CINEMAS|TEATRO|TEATROS|LOCAL|LO
CAIS|LUGAR|LUGARES)(ONDE|AONDE)
BUSCA BD=TB_ATRACAO.NOMES_BUSCA
POSSUI TEMPO=1
RESPOSTA ESPERADA BD=TB_LOCAL.NOME
RESPOSTA PADRAO=<BUSCA BD> esta(ra) em cartaz <DATA> nos
seguintes locais:<RESPOSTA>
RESPOSTA EXCECAO=<BUSCA BD> nao esta(ra) em cartaz em nenhum dos
locais cadastrados <DATA>.
4.4.5.2 Extenso
Neste arquivo são guardados valores em extenso que devem ser
substituídos por números arábicos, para que a busca seja simplificada.
Atualmente nele existem quatro sessões:
•
[DiasSemana]: Substitui domingo ou dom por 1, segunda por 2 e assim por
diante.
•
[Meses]: Substitui janeiro por 1, fevereiro por 2 e assim por diante.
•
[NumerosExtensoDia]: Substitui um ou primeiro por 1, dois por 2 e assim
por diante
•
[NumerosExtensoHora]: Substitui uma por 1, duas por 2 e assim por diante
43
Os números extensos do dia e hora são diferentes, pois uma palavra é
seguida ou precedida por números no feminino e outro no masculino.
4.4.5.3 Simbolos
Neste arquivo são armazenados símbolos de separação lógica e de
palavras.
Nele existem duas sessões, que são as seguintes:
•
[Logicos]: São os separadores para fazer analises lógicas nas strings. Mais
utilizados nas chaves “Palavras Chaves“ do arquivo DadosBusca. Pois uma
pergunta só poderá se encaixar numa sessão se possuir todas as palavras
separadas pelo símbolo de ’e’ ou alguma das palavras separadas pelo
símbolo de ’ou’.
•
[Separadores]: Indicam símbolos que podem servir como separador de
palavras, como espaço, virgula, pontos e outros.
Abaixo é mostrado como este arquivo está preenchido atualmente:
[Logicos]
separadorAbre=(
separadorFecha=)
and=#
or=|
not=~
[Separadores]
1=
2=!
3=?
4=.
5=,
44
4.4.5.4 Ligações Database
É este arquivo que pode deixar o sistema independente de banco de dados,
podendo mudar o sistema para que funcione como uma lista telefônica, por
exemplo.
Este arquivo ainda deve ser digitado e criado manualmente, mas em
versões futuras ele seria criado automaticamente só indicando o banco de dados.
4.4.5.5 Substituições
É este arquivo que permite que ao treinar uma pesquisa, outra parecida,
com mesmo sentido, seja automaticamente treinada.
Também é através dele que letras acentuadas, não compatíveis com o
padrão adotado de mensagens SMS, sejam substituídas por outras.
Este arquivo possui as seguintes sessões:
•
[Letras] Indicam as letras que devem ser substituídas e por quais, isto é
para evitar letras acentuadas.
Exemplo:
á=a
é=e
í=i
ó=o
ú=u
â=a
ê=e
•
[Sinônimos] Indicam os sinônimos das palavras para treinamento.
Exemplo:
1=lugar|lugares|locais|local|localidade|localizacao|endereco|enderecos
2=Filme|Filmes
3=Peca|Pecas
4=Elenco|Atores|Ator|Atriz|Atrizes
45
•
[Palavras Desnecessárias] Indicam as palavras que não são necessárias,
numa pergunta, as que não são palavras chaves.
Exemplo:
1=o
2=os
3=a
4=as
5=um
•
[SimbolosDesnecessários] Os símbolos que também não seriam palavras
chaves como:
1=.
2=,
3=!
4=?
5=;
4.4.5.6 Contador
Indica quantas vezes cada pergunta se encaixou numa sessão do arquivo
DadosBusca como no exemplo abaixo, sendo o primeiro valor a sessão e o
segundo a quantidade de vezes:
[Numero de Vezes]
Nao Encontrada=39
1=3
2=24
5=1
4=12
3=6
6=1
7=4
46
4.4.5.7 Pesquisas não encontradas
Este é um arquivo txt e nele são armazenadas todas as perguntas que não
se encaixaram em nenhuma sessão do arquivo DadosBusca
4.4.6 Firmware
O firmware deste sistema é responsável pela constante leitura do buffer da
serial do microcontrolador 8051.
Toda vez que um caractere chegar no buffer, ele é adicionado ao final de
uma variável dinâmica de caracteres. Isto continua acontecendo até quando o
caracter que chegar pela serial for um ‘/r’. Então, o valor dessa variável é escrito
no LCD. Por fim o processo recomeça, só que agora o valor será escrito na
segunda linha do LCD. Como o LCD só possui duas linhas, na próxima vez que
chegar um ‘/r’ o LCD será zerado e o valor da variável será escrito na primeira
linha e assim continua o ciclo.
4.4.6.1 Fluxograma
A figura 15 mostra o fluxograma do firmware.
47
Figura 15 – Fluxograma do firmware
4.4.6.2 Diagrama de Estados
A figura 16 mostra o diagrama de estados do firmware.
Figura 16 – Diagrama de Estados
48
4.5 Projeto de Hardware
O hardware do sistema é relativamente simples e sua única função é
mostrar num display LCD de caracteres, 16 colunas por 2 linhas, qual foi e
quantas vezes a última pesquisa foi realizada.
4.5.1 Serial
Os dados a serem mostrados no display são transmitidos serialmente, para
tanto foi criado uma interface serial como mostra o esquemático da figura 17.
Os únicos pinos utilizados foram o 2 (RX) que é a entrada dos dados e o 5
para deixar os níveis de referência da serial do computador com o do
microcontrolador em comum.
Figura 17 – Esquemático da serial
4.5.2 Microcontrolador
O microcontrolador é responsável por sempre verificar se algum caracter
chegou na serial e por guardar esses caracteres numa variável na memória RAM.
49
Sempre que um ‘/r’ chega ele controla o display e escreve o valor que
estava na variável.
A figura 18 mostra o esquemático do microcontrolador. Tendo como
entrada o RX da Serial e como saída os pinos T0 e T1 para controle do display
LCD além dos pinos da porta 1, que possui os bits do caracter que deve ser
escrito no display.
Figura 18 – Esquemático do microcontrolador
4.5.3 Display LCD
O display é o encarregado de mostrar quantas vezes e qual foi a última
pesquisa realizada.
O esquemático deste módulo é apresentado na figura 19.
50
Figura 19 – Esquemático do display LCD
4.5.4 Componentes
Os componentes utilizados foram os da tabela 7.
Tabela 7 - Componentes
51
4.6 Procedimentos de Testes
Os testes principais foram feitos em três módulos distintos:
•
O de envio e recebimento de mensagens do celular.
•
O de envio de mensagem para o display LCD.
•
O da busca pela informação requisitada.
Para testar o funcionamento do recebimento de mensagens pelo celular,
foram enviadas diversas frases de diferentes celulares e de diferentes formas
(com ou sem acentos) para o celular conectado ao sistema e então mostrar na tela
a mensagem recebida.
Para testar o funcionamento do envio de mensagens pelo celular, foram
enviadas diversas frases do computador para diferentes celulares.
Para testar o display LCD foi utilizado o hyper terminal do windows e nele
foram escritas diversas frases.
Finalmente para testar as buscas em linguagem natural, foram feitos
diversas perguntas e visto se as respostas eram condizentes.
Ao garantir que esses três módulos funcionaram foram feitos testes no
sistema como um todo.
52
5. ESTIMATIVA DE CUSTOS
Recurso
Quantidade
Custo Unitário (R$)
Custo (R$)
Kit Microcontrolador 8051
1
50
50
Gastos com SMS
50
0,30
15
Microsoft Windows XP
1
800
800
Microsoft Office XP
1
550
550
Display LCD
1
25
25
Telefone Celular Siemens
1
398
398
1
150
150
750
10
7500
MC-60
Cabo Serial Siemens
Horas de Trabalho
TOTAL
9488
Tabela 8 – Estimativa de Custos
53
6. RESULTADOS E DISCUSSÃO
Os resultados de forma geral foram bem satisfatórios.
Contudo três problemas foram percebidos durante os teste, mas serão
resolvidos em versões futuras.
Um problema é que não é possível incluir um novo padrão de busca com
mais de um campo na chave Busca BD nem na Resposta Esperada BD do arquivo
DadosBusca, porém na próxima versão do software este problema será sanado.
Outro problema é a necessidade de fazer várias perguntas para obter uma
programação completa, por exemplo, se for perguntado onde algum filme esta
passando, só se retorna o local, mas seria interessante que retornasse os horários
também, isto é de fácil resolução. Em princípio isso não foi feito, pois o sistema
perderia o poder de generalização, mas como para esta aplicação isto é
importante, a inclusão de algumas poucas linhas de código resolveria o problema,
seria só verificar se a pergunta se encaixou nessa sessão e retornar também os
horários.
O terceiro é que o software não é totalmente independente da língua, pois a
classe cDataHora faz muitos tratamentos sem utilização de arquivos, então para
mudar de língua seria necessário mexer no código fonte, este também não seria
um problema de difícil solução, pois só é necessária a mudança de código em
uma classe.
No restante o sistema foi eficaz.
O hardware funcionou perfeitamente, após muitos testes serem realizados,
todas as vezes o display LCD mostrou em seu visor o que deveria ser mostrado.
A figura 20 ilustra o funcionamento do hardware.
Todo as funções do software para fazer com que o hardware funcionasse
também funcionaram perfeitamente, sempre foi mostrada a sessão na qual a
pergunta se encaixou na primeira linha e quantas vezes ela foi feita na segunda.
Os cadastros também estavam plenamente funcionais, nenhum erro foi
visto ao testar inclusões, alterações e exclusões.
54
Figura 20– Display LCD em funcionamento
A troca de mensagens entre celulares (recebimento e envio) também não
demonstrou problema algum. Porém, o recebimento está limitado a padrões
conhecidos. Testes com diferentes marcas de celulares e envio de mensagem via
internet foram feitos, mas como aparelhos como teletex, telefax, videotex, etc. não
estavam disponíveis para teste, para verificar os padrões adotados por eles, essas
mensagens são ignoradas, para evitar mensagens de erros inesperados no
programa, já que este não pode parar, pois deve funcionar mesmo na ausência de
um usuário.
A parte de reconhecimento está funcional, ao fazer perguntas como, “Onde
estará passando o filme A Feiticeira amanhã por volta das dezoito horas” ou
parecidas com esta como, “Em quais cinemas Wallace e Grommit estará em
cartaz amanhã lá pelas 18:00? ” a resposta será: “(Wallace e Gromit)(A feiticeira)
esta(ra) em cartaz entre 7/11/2005 17:00 e 7/11/2005 19:00 nos seguintes locais:
55
Shopping Curitiba, Shopping Estacao, Shopping Crystal” ou caso esses filmes
não estejam em cartaz em nenhum lugar nesses horários a resposta será:
“(Wallace e Gromit)(A feiticeira) nao esta(ra) em cartaz em nenhum dos locais
cadastrados entre 17:00 do dia 7/11/2005 e 19:00 do dia 7/11/2005 .”
Como se pode perceber a resposta não possui acentuações, isto se deve
ao fato de que alguns celulares mais antigos não suportam acentos, portanto
adotou-se o padrão sem acentos, até porque o número de caracteres permitidos
quando se utilizam acentos cai para menos da metade, porque o padrão utilizado
passa a ser o de dezesseis bits e não o de octetos de 8 bits (Ambos os formatos
são aceitos no recebimento da mensagem).
O treinamento rápido também funcionou de maneira eficaz, ao ser feita uma
pergunta do tipo “qual é o elenco do filme A Feiticeira?”, esta pergunta como ainda
não havia sido treinada foi para o arquivo de pesquisas não treinadas.
Ao clicar na aba de treinamento rápido a pesquisa apareceu, dentre outras,
para ser selecionada, então após seleciona-la só foi necessário selecionar a
tabela atração e o campo elenco e pressionar Criar para que esta pesquisa
estivesse treinada.
Após este treinamento, pesquisas parecidas, também estariam treinadas,
por exemplo, se a pesquisa, “Quais são os atores do filme Wallace e Grommit”
fosse feita o sistema retornaria o elenco do filme, caso estivesse cadastrado no
banco de dados, caso contrário o retorno seria “Wallace e Grommit não possui
elenco registrado em nosso banco de dados”.
A figura 21 mostra a tela para o treinamento rápido.
Os dois campos (Edit) são opcionais e servem para indicar o formato da
resposta, caso exista algo no banco de dados ou caso o retorno dele seja nulo.
56
Figura 21 – Tela do treinamento
57
7. CONCLUSÕES
Os resultados obtidos foram satisfatórios, porém não são suficientes para
tornar o produto comercial. Isto, principalmente, deve-se ao fato de que antes de
torná-lo comercial, muito mais treinamentos e testes devem ser feitos, pois as
mensagens que não foram possíveis obter respostas, não poderiam ser cobradas,
o que aumentaria o custo do sistema. E um caso ainda pior seria os das
mensagens respondidas erroneamente, o que deixaria os cliente insatisfeitos, pois
teriam pago por mensagens que se tornariam inúteis.
Portanto seria interessante primeiramente disponibilizar o sistema de busca
em linguagem natural gratuitamente na internet, para que se pudesse obter um
grande arranjo variado de perguntas para então treina-las e verificar a real eficácia
do sistema.
Também seria interessante testar o módulo do celular com os mais variados
meios de envio de mensagens SMS.
Porém após estas etapas, o sistema teria grande potencial para se tornar
um grande produto comercial.
Em termos acadêmicos muito foi ganho com a realização do projeto.
Foi possível perceber a importância de um cronograma bem feito, pois a
parte mais difícil do projeto foi deixada para o final, um erro que poderia não ter
ocorrido.
E muito se aprendeu com a realização do projeto, principalmente na
elaboração de um programa grande e com muitas classes.
58
8. CRONOGRAMA
Conteúdo
Datas
21-28 de 29 de fevereiro
fevereiro 28 de março
28 de março 4 4-11 de
de abril
abril
Proposta
Estudo sobre SMS, 8051,
LCD, Linguagem Natural
Especificação
Adquirir cabo de dados e
celular
Testes (Hyper Terminal)
Conteúdo
Datas
Ler mensagem de SMS
Enviar mensagem de SMS
Apagar mensagem SMS
Codificar mensagem
Finalizar módulo SMS
Projeto
11-18 de abril 18-25 de abril
25 de abril 02-16 de 16-23 de
02 de maio maio
maio
59
Conteúdo
Datas
20 de junho 11 de julho 01 - 08 de 08-15 de
23 de maio
06-20 de junho
06 de junho
11 de julho 01 de agosto agosto
agosto
Montagem do hardware
Classe Strings
Classe Reconhecimento
Classe Broker
Classe Pergunta-Resposta
Software Módulo Display
Criação e trabalho com o
banco de dados
Conteúdo
Datas
Testes e aprimoramento
Entrega da implementação e
qualificação do projeto
Aumento da base de dados
e correções
Validação e documentação
Monografia
15 de agosto 10 de outubro
05-12 de
10 de outubro 05 de dezembro dezembro
60
9. BIBLIOGRAFIA
[1] http://www.gsmfavorites.com/sms/introduction/
[2] Juliano Niederauer, Interbase - Guia de Consulta Rápida, Novatec, 2003
[3] Denys E. C. Nicolosi, Microcontrolador 8051 Detalhado, Érica, 2000
[4] Victorine Viviane Mizrahi, Treinamento em Linguagem C++ módulo 2, Makron
Books, 1995
[5] H.M. Deitel e P.J. Deitel, C++ Como Programar 3ª edição, Bookman, 2001
[6] http://www.ime.eb.br/~pinho/micro/apostila/lcdport.pdf
[7] http://www.cac-acc.org/
Download

Sistema de Busca em Linguagem Natural via SMS, Voltado ao