Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo
-
Upload
frogstation -
Category
Education
-
view
1.493 -
download
6
description
Transcript of Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo
Fabricio Soares Kronbauer
ESTUDO SOBRE A COMUNICAÇÃO BLUETOOTH EM UM
AMBIENTE EDUCACIONAL UBÍQUO
Trabalho de Conclusão de Curso
CRUZ ALTA-RS, 2010
1
Fabricio Soares Kronbauer
ESTUDO SOBRE A COMUNICAÇÃO BLUETOOTH EM UM
AMBIENTE EDUCACIONAL UBÍQUO
Trabalho de Conclusão de Curso apresentado
ao Curso de Ciência da Computação, da
Universidade de Cruz Alta, como requisito
parcial para obtenção do grau de Bacharel em
Ciência da Computação.
Orientador: Prof. M. Sc. Josiane Kroll
CRUZ ALTA - RS, JULHO 2010
2
Universidade de Cruz Alta – UNICRUZ
Departamento de Ciências Agrárias, Exatas e da Terra
Curso de Ciência da Computação
ESTUDO SOBRE A COMUNICAÇÃO BLUETOOTH EM UM
AMBIENTE EDUCACIONAL UBÍQUO
Elaborado por
Fabricio Soares Kronbauer
Como requisito parcial para obtenção do título de Bacharel em Ciência da Computação.
Comissão Examinadora:
Prof. M. Sc. _______________________________________________/UNICRUZ
Prof. M. Sc. _______________________________________________/UNICRUZ
Prof. M. Sc. _______________________________________________/UNICRUZ
Cruz Alta, ____ de ______________ de ______
3
AGRADECIMENTOS
Mais um trecho de meu caminho se encontra completo. E não poderia deixar
de agradecer a todos aqueles que estiveram ao meu lado nesta jornada.
Em primeiro lugar quero agradecer a meu pai, um homem digno e batalhador
que através de muito esforço conseguiu graduar três filhos em universidades
particulares. Um herói nesses tempos.
Um agradecimento especial aos meus irmãos, mãe, tios e avôs, que sempre
me apoiaram em tudo que foi preciso.
Agradeço a minha namorada por sempre estar ao meu lado, em todos os
momentos, sejam eles bons ou não.
Também aos meus colegas e amigos pela boa companhia que foram e pelas
ajudas prestadas.
Obrigado a todos que de um jeito ou de outro estiveram presentes em minha
jornada.
4
RESUMO
ESTUDO SOBRE A COMUNICAÇÃO BLUETOOTH EM UM AMBIENTE
EDUCACIONAL UBÍQUO
Autor: Fabricio Soares Kronbauer
Orientador: Prof. M. Sc. Josiane Kroll
O atual ambiente onde estão inseridas as pessoas requer uma busca
frequente por eficiência, rapidez e desempenho. Uma forma de alcançar estes
objetivos é através do uso de dispositivos suportados pela computação móvel como
ferramenta para auxílio na busca de informações. A tecnologia bluetooth é um padrão
aberto de comunicação sem fio, através de enlace de radiofrequência, para redes ad
hoc que permite a transmissão de dados e informações entre dispositivos eletrônicos
a uma curta distância, com gasto mínimo de recursos e com transmissão segura e
rápida de dados. Contudo a integração, através de bluetooth, entre dispositivos
móveis e servidores de dados ainda é pouco explorada. Neste trabalho foi abordado
um estudo sobre a eficiência da comunicação bluetooth em um ambiente
computacional ubíquo. Para isso foi desenvolvido um aplicativo para a comunicação
entre um servidor de dados em um ambiente educacional ubíquo. Foram utilizados
dispositivos móveis com tecnologia bluetooth para troca de informações com o
servidor. Com o estudo realizado observou-se que a tecnologia bluetooth se
diferencia de outras formas de redes de comunicação sem fio principalmente por se
tratar de um padrão rápido, aberto e gratuito. Contudo com o avanço das redes Wi-Fi
a tecnologia perdeu sua força inicial e parece estar restrita a substituição de fios.
PALAVRAS-CHAVE: Comunicação bluetooth. Dispositivos móveis. Computação
ubíqua. Ambientes educacionais.
5
ABSTRACT
STUDY ON THE BLUETOOTH COMMUNICATION IN AN EDUCATIONAL
ENVIRONMENT UBÍQUITOUS
Author: Fabricio Soares Kronbauer
Advisor: Prof. M. Sc. Josiane Kroll
The environment current where people are included requires a common quest
for efficiency, speed and performance. One way to achieve these goals is by using of
devices supported by mobile computing as a tool to aid in finding information.
Bluetooth technology is an open standard for wireless communication using radio,
used for ad hoc networks, which allows the transmission of data and information
between electronic devices located in a short distance each other with minimum
costs, secure and fast data transmission. However, the integration between mobile
devices and data servers, by bluetooth, are still little explored. This work was dealt a
study on the efficiency of the bluetooth communication in a ubiquitous computing
environment. This way, an application for communication between a data server and
a ubiquitous learning environment was developed. Mobile devices with bluetooth
technology were used to capture information from the environment coming from a
server. The realized studies showed that the Bluetooth technology differentiates
itself from other forms of wireless communication networks mainly because it is a
fast, open and free standard. However, because the advancement of network Wi-Fi,
the bluetooth technology lost its initial strength and appears to be restricted to
replacement of wires.
KEYWORDS: Bluetooth communication. Mobile devices. Ubiquitous computing.
Educational environments.
6
LISTA DE ILUSTRAÇÕES
Figura 1 Scatternet formando por duas piconets...........................................22
Figura 2 Pilhas de protocolos da arquitetura bluetooth.................................24
Figura 3 Pilha de perfis do bluetooth.............................................................30
Figura 4 Diagrama de procedimento de conexão bluetooth..........................34
Figura 5 Estágios de comunicação num sistema bluetooth..........................35
Figura 6 Visão geral do ambiente..................................................................44
Figura 7 Visão geral de camadas envolvidas no servidor bluetooth.............45
Figura 8
Figura 9
Figura 10
Figura 11
Figura 12
Diagrama da pilha bluetooth com Java e Bluecove........................48
Tela de projeto do sistema..............................................................74
Tela de inicialização do servidor ....................................................74
Telas do dispositivo móvel..............................................................75
Tela de finalização do servidor........................................................75
7
LISTA DE TABELAS
Tabela 1 Versões do bluetooth.........................................................................20
Tabela 2 Classes de dispositivos bluetooth.....................................................25
Tabela 3 Perfis bluetooth.................................................................................31
Tabela 4 Ambiente de desenvolvimento do projeto.........................................43
8
LISTA DE ABREVIATURAS E SIGLAS
ACL
API
CLDC
DBM
EDR
FHSS
FM
GAP
GCF
GHz
GIAC
HCI
HS
Asynchronous ConnectionLess
Application Programming Interface
Connected Limited Device Configuration
Power Ratio in Decibels
Extended Data Rate
Frequency Hopping Spread Spectrum
Frequency Modulation
Generic Access Profile
Generic Connection Framework
Giga Hertz
General Inquiry Access Code
Host Controller Interface
High Speed Technology
IDE
IEEE
IrDA
ISM
JCP
JDK
Integrated Development Environment
Instituto de Engenheiros Eletricistas e Eletrônicos
Infrared Data Association
Industrial, Scientific and Medicine
Java Community Process
Java SE Development Kit
J2EE
J2ME
J2SE
JSR
JSR-82
L2CAP
LMP
MBPS
MIDP
MW
Java2 Enterprise Edition
Java2 Standard Edition
Java2 Micro Edition
Java Specification Requests
Java Specification Requests APIs for Bluetooth
Logical Link Control and Adaptation Protocol
Link Manager Protocol
Megabit por Segundo
Mobile Information Device Profile
Miliwatts
9
OBEX
PDA
PPP
PSK
RFCOMM
SDA
SDDB
SDP
Object Exchange
Personal Digital Assistants
Point-to-Point Protocol
Phase Shift Keying
RS-232 Serial Cable Emulation Profile
Service Discovery Application
Service Discovery Database
Service Discovery Protocol
SIG
SP2
SPP
TCP/IP
USB
UUID
Bluetooth Special Interest Group
Service Pack 2
Serial Port Profile
Transmission Control Protocol / Internet Protocol
Universal Serial Bus
Universally UniqueI Dentifier
WAP
Wi-Fi
WTK
Wireless Application Protocol
Wireless Fidelity
Java Wireless Toolkit
10
SUMÁRIO
1 INTRODUÇÃO ...................................................................................................... 11
1.1 OBJETIVOS ....................................................................................................... 12
1.1.1 OBJETIVO GERAL.......................................................................................... 12
1.1.2 OBJETIVOS ESPECÍFICOS ........................................................................... 12
1.2 JUSTIFICATIVA ................................................................................................. 12
1.3 ESTRUTURA DO TRABALHO ........................................................................... 13
2 FUNDAMENTAÇÃO TEÓRICA ............................................................................. 14
2.1 TECNOLOGIAS DE COMPUTAÇÃO MÓVEL E REDES SEM FIO ................... 14
2.2 DISPOSITIVOS MÓVEIS ................................................................................... 15
2.3 COMUNICAÇÃO BLUETOOTH .......................................................................... 17
2.3.1 ESPECIFICAÇÕES DA TECNOLOGIA........................................................... 19
2.3.2 INFRA-ESTRUTURA ....................................................................................... 20
2.3.3 PROTOCOLOS ............................................................................................... 22
2.3.4 PERFIS ADOTADOS ...................................................................................... 29
2.3.5 ESTADOS E MODOS DE CONEXÃO ENTRE DISPOSITIVOS ..................... 32
2.3.6 ANATOMIA DE UMA APLICAÇÃO BLUETOOTH .......................................... 36
2.4 COMPUTAÇÃO UBÍQUA . ................................................................................. 38
2.4.1 COMPUTAÇÃO CONSCIENTE DE CONTEXTO ........................................... 40
2.5 TRABALHOS RELACIONADOS ........................................................................ 41
3 DESENVOLVIMENTO PRATICO .......................................................................... 43
3.1 TECNOLOGIAS EMPREGADAS ....................................................................... 43
3.1.1 JAVA ............................................................................................................... 46
3.1.2 JSR-82 ............................................................................................................ 47
3.1.3 BLUECOVE ..................................................................................................... 47
4 ANÁLISE DO SISTEMA DESENVOLVIDO ........................................................... 49
4.1 ANÁLISE DOS RESULTADOS .......................................................................... 54
5 CONCLUSÃO ......................................................................................................... 56
5.1 TRABALHOS FUTUROS .................................................................................... 57
REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................... 58
APÊNDICE A – CÓDIGO FONTE ............................................................................. 62
APÊNDICE B – TELAS DO SISTEMA ...................................................................... 74
11
1 INTRODUÇÃO
A evolução na área computacional propicia o uso de diversos tipos de
dispositivos móveis juntamente com outros vários de redes sem fio. Proporcionando
continuo avanço e tornando atraente aos mais variados tipos de usuários que
buscam facilidade e disponibilidade de informações (FORTES, 2009).
Aliado a isso existe uma série de possibilidades existentes no uso em
conjunto de tecnologias móveis, como a comunicação entre os indivíduos, realização
dos mais diversos tipos de tarefas, e principalmente a disponibilização da mobilidade
necessária ao aumento de produtividade.
Tudo isso pode ocorrer em um ambiente móvel, onde o conceito de
intercomunicação entre os dispositivos cresce na mesma proporção que a
necessidade de encontrar a informação desejada com maior rapidez, segurança e
comodidade.
Cada vez mais pessoas carregam junto de si dispositivos capazes de
processar informações pertinentes ao seu meio. Nesse ambiente surge a
necessidade de comunicação e interação entre esses dispositivos. Um tipo de
conectividade essencial para se viver em ambientes colaborativos (ARIMA, 2009).
A tecnologia sem fio bluetooth é um padrão de rádio de curto alcance que
proporciona novas oportunidades para dispositivos sem fio. Originalmente a
tecnologia foi concebida como uma forma de eliminar os cabos de quase todos os
dispositivos eletrônicos de consumo. No entanto, as metas para a tecnologia
cresceram, permitindo a criação de um novo tipo de rede sem fio entre dispositivos.
Dispositivos móveis com tecnologia sem fio bluetooth são cada vez mais
comuns, graças a sua capacidade inerente de proporcionar a transmissão de voz e
dados de uma maneira segura e com um custo relativamente baixo, se comparado a
outras tecnologias de redes sem fio (Bluetooth Special Interest Group, 2009).
Nesse sentido, foi feita uma análise da comunicação bluetooth para a
transferência de informações entre dispositivos móveis e servidores de dados, em
um ambiente educacional ubíquo, onde a informação deve estar disponível a
qualquer pessoa, através de vários meios de consulta e principalmente no momento
que se deseja, ou seja, a informação certa, no momento certo e de maneira correta
(Barbosa, 2007).
12
1.1 Objetivos
1.1.1 Objetivo Geral
Baseado na evolução da computação móvel e das redes sem fio, esse
trabalho tem como objetivo o estudo dos processos de transferência de dados e
informações em comunicações envolvendo o protocolo de redes sem fio bluetooth e
dispositivos móveis em um ambiente educacional ubíquo.
1.1.2 Objetivos Específicos
• Identificar os principais protocolos de transferência de dados adequados à
comunicação móvel, principalmente a comunicação de redes sem fio bluetooth.
• Fazer um estudo aprofundado sobre as características da comunicação
bluetooth, seus conceitos, implementações, seus protocolos, seus perfis e suas
aplicabilidades.
• Estudar linguagens de programação que possibilitem integração com o
bluetooth.
• Verificar ferramentas, bibliotecas, pacotes e métodos para implementação do
protocolo bluetooth.
• Desenvolver um sistema experimental que comprove a possibilidade e
viabilidade do projeto e abordar aspectos envolvidos nesses processos, buscando
uma validação ao uso das tecnologias envolvidas no projeto, assim como suas
vantagens e desvantagens de seu uso.
1.2 Justificativa
A cada ano o número de dispositivos móveis no mercado brasileiro cresce
impulsionado pela difusão das tecnologias de redes móveis, bem como pela grande
gama de serviços e funções que esses dispositivos proporcionam. Nesse meio viu-
se a necessidade de um maior entendimento sobre as formas com que esses
aparelhos fazem acesso e realizam suas comunicações, seu funcionamento e a
13
aplicabilidade dos protocolos de comunicação sem fio, principalmente no âmbito dos
servidores de conteúdo e aplicação.
Além disso, a miniaturização de computadores na forma de celulares,
Personal Digital Assistants (PDA) e outros dispositivos móveis forneceram novas
maneiras para os usuários interagirem em ambiente móvel. Isso também trouxe a
necessidade de desenvolver e redistribuir aplicações de desktop para usuários
móveis (LEE; SCHNEIDER; SCHELL, 2005).
A escolha pela tecnologia bluetooth foi feita principalmente pela característica
desta de estar presente num grande número de aparelhos, porém, ser pouco
explorada e utilizada no ambiente proposto pelo atual trabalho. Por ser uma
tecnologia que possui um chip barato, o que permite uma integração crescente aos
vários tipos de dispositivos. Além de possuir uma distância de cobertura
relativamente alta para o que a tecnologia se propõe, variando de 10 a 100 metros
dependendo da classe do dispositivo. Ainda o chip do bluetooth possui uma maior
economia de energia se comparado ao Wireless Fidelity (Wi-Fi). Outro fator de
escolha foi o fato do bluetooth obter suporte da linguagem Java. Uma linguagem
muito usada graças a seu grande poder de portabilidade. E por fim, pelo fato de usar
uma faixa de rádio livre, que permite tráfego de dados sem cobrança. Tudo isso está
tornando a tecnologia um padrão para conexões de curta distância (GHISI, 2007).
Tendo como base a importância do tema, e o crescimento no mercado móvel,
vê-se necessário um estudo aprofundado sobre as tecnologias envolvidas no
mercado de dispositivos móveis e redes sem fio, principalmente no que se refere ao
padrão bluetooth juntamente com a linguagem de programação Java .
1.3 Estrutura do Trabalho
O trabalho está organizado em 5 capítulos. No capítulo 1 são apresentados os
aspectos introdutórios. No capitulo 2 é abordado a fundamentação teórica para o
trabalho. No capitulo 3 são apresentadas as tecnologias envolvidas no trabalho. No
capítulo 4 é apresentado a analise do desenvolvimento de uma aplicação para testar
as tecnologias envolvidas. No capitulo 5 são apresentados os resultados obtidos a
partir do estudo feito, bem como sugestões para trabalhos futuros.
14
2 FUNDAMENTAÇÃO TEÓRICA
2.1 Tecnologias de Computação Móvel e Redes Sem Fio
Cada vez mais os indivíduos estão dependentes de dispositivos móveis. Isso
se deve primeiramente ao fato de possibilitar ao usuário, corporativo ou não, acesso
a informações em tempo real, de uma maneira rápida e fácil, em qualquer lugar que
se encontre.
Segundo Lee, Schneider e Schell (2005) a maioria das pessoas faz uso de
soluções móveis para comunicação, trabalho, entretenimento, educação e
localização. Nas comunicações, onde a mobilidade agrega seu principal valor,
encontram-se o trafego de dados, voz, textos e imagens. No trabalho as aplicações
móveis dão agilidade aos processos como intercambio de informações e emissão de
instruções.
Na última década é possível notar o crescimento no desenvolvimento de
tecnologias para comunicação em redes sem fio. Permitindo acesso a informações e
abrindo inúmeras possibilidades de serviços e aplicações facilitadoras aos usuários
de dispositivos móveis (FIGUEIREDO; NAKAMURA, 2003).
O termo computação móvel pode assumir muitos significados, mas
basicamente o ponto em comum é que envolve alguma forma de mobilidade, o que
permite ao usuário com um dispositivo móvel se desloque dentro da área de acesso
da rede sem fio local, buscando acesso a informações em qualquer lugar. Unindo
assim a portabilidade, acessibilidade e conectividade das redes sem fio. Nesse meio,
a portabilidade é fornecida pelo dispositivo, permitindo que o usuário se desloque
para qualquer lugar. Quanto à conectividade, basta que o usuário esteja dentro do
raio de cobertura de uma das varias tecnologias móveis (Augustin, 2004).
Figueiredo e Nakamura (2003) definem computação móvel como sendo um
novo paradigma computacional que engloba processamento, mobilidade e
comunicação se fio com o objetivo maior de obter informação em qualquer lugar e a
qualquer momento.
Segundo os autores Lee, Schneider e Schell (2005) a mobilidade esta
diretamente ligada a capacidades como portabilidade, usabilidade, funcionalidade e
conectividade. A portabilidade se define como a facilidade de transportar um
15
dispositivo móvel, tendo em vista seu tamanho e seu peso. Usabilidade remete ao
fato de como um dispositivo é utilizado pelos usuários em relação ambiente que
estes se encontram. Funcionalidade está associada aos tipos de aplicações que
esses dispositivos rodam. Conectividade é a capacidade fundamental dos
dispositivos móveis, pois estes têm como função primordial conectar pessoas e
sistemas, possibilitando troca de dados e informações.
Numa era onde a informação tende a circular quase em tempo real, a
possibilidade de obter o mesmo conteúdo em diversos meios diferentes facilita e
torna a vida mais produtiva. Nesse meio, a computação móvel agregada ao uso da
tecnologia bluetooth possibilita uma mobilidade que agiliza as comunicações entre
vários dispositivos (BRANDELERO, 2007).
As aplicações para a tecnologia móvel evoluem em capacidade de
processamento, e este contexto é favorável para o advento de aplicações móveis
cada vez mais poderosas e para os mais diversos fins.
O ambiente da computação móvel disponibiliza ao programador uma serie de
possibilidades de aplicações e serviços, num mercado onde surge a todo o momento
oportunidades no desenvolvimento de produtos. Existe uma serie de aplicações que
podem fazer uso do meio em prol da mobilidade, como por exemplo, o acesso a
informações, transferência e consulta de dados, acesso remoto, apoio a tomada de
decisão, em áreas de venda, estoque, transporte e automação, transações e
operações financeiras, em ambientes educacionais, militares, segurança,
entretenimento e informações em geral.
Para atingir o nível de mobilidade desejado pelos usuários desses aparelhos,
a indústria estuda e desenvolve uma serie de tecnologias e protocolos que permitem
a comunicação sem fio a esses dispositivos. Há ainda um grande esforço por parte
dos fabricantes de hardware e software para difusão do aumento do uso da internet
móvel por aparelhos portáteis (Bluetooth Special Interest Group, 2009).
2.2 Dispositivos Móveis
Existem no mercado diversos tipos de dispositivos móveis destinados tanto a
usuários corporativos quanto aos consumidores em geral. As capacidades
16
intrínsecas, funções, sistemas, portabilidade e custo de cada um desses dispositivos
móveis variam significativamente (LEE; SCHNEIDER; SCHELL, 2005).
O autor Luiz Barbosa (2006) lista os tipos de dispositivos usados em
computação móvel como: controles inteligentes, utensílios inteligentes, sistemas de
entretenimento e dispositivos de acesso à informação. Sendo este último o tipo de
dispositivo abordado no presente trabalho.
A classificação dos dispositivos móveis varia muito de autor para autor, mas
geralmente dispositivos móveis de acesso à informação podem ser classificados
como PDA, telefones celulares e smartphones (BOEMO, 2007).
Segundo Boemo (2007) dispositivos móveis utilizados em processos de
computação móvel tornaram-se muito mais que assistentes pessoais e agendas
eletrônicas, tornaram-se facilitadores da mobilidade, acesso a informações e coleta
de dados. São equipamentos que atribuem facilidades ao seu usuário, por terem
tamanho reduzido, baixo consumo de energia, proporcionam ainda ganhos de tempo
e eficiência.
Os dispositivos móveis possuem várias formas de acesso à rede sem fio,
como Wi-Fi, Infrared Data Association (IrDA), rede de telefonia celular e a tecnologia
abordada nesse trabalho, o bluetooth (KLEINSCHMIDT, 2004). A seguir são
descritos alguns dispositivos móveis que utilizam comunicação bluetooth:
• Aparelho celular: Um dispositivo celular se comunica através de ondas
eletromagnéticas presentes em uma determinada área geográfica denominada
célula, que deu nome ao dispositivo. Essas ondas magnéticas são disponibilizadas
ao usuário do dispositivo pela operadora de telefonia celular, e segue padrões de
difusão baseada no tipo de compressão usada na distribuição do sinal. Esses
dispositivos oferecem múltiplos serviços e funções além dos serviços básicos de
telefonia. São players de áudio e vídeo, mensagens de texto, imagem e som, rádio,
câmera fotográfica, câmera filmadora, acesso a internet, jogos, além de vários tipos
de aplicações personalizadas (LEE; SCHNEIDER; SCHELL, 2005).
• PDA: Derivado do inglês Personal Digital Assistent, os PDA são dispositivos
de dimensões reduzidas e grande capacidade computacional. Os PDA são
comumente chamados de handhelds ou palmtops. Na verdade pode-se classificá-los
como um computador de tamanho reduzido, graças às funções que equipam esses
aparelhos, como capacidade de processamento, memória e armazenamento,
funções de entrada e saída, funções de multimídia, sistema de escritório e
17
capacidade de comunicações em diversos tipos de redes, como Wi-Fi e o bluetooth
(FIGUEIREDO; NAKAMURA, 2003). Contendo originalmente funções básicas como
agenda, lista de contatos, calendário, relógio, o PDA ganhou ao longo do tempo
maior poder de processamento, sistemas operacionais personalizados, maior
capacidade de memória e de armazenamento, o que proporcionou um aumento de
suas funções, que agora incluem correio eletrônico, acesso a Internet, jogos,
informações e aplicações personalizadas. Atualmente é comum que fabricantes
combinem os PDA com características de telefones celulares, reprodutores
multimídia e outros equipamentos eletrônicos (LEE; SCHNEIDER; SCHELL, 2005).
• Smartphones: Dispositivos que integram funcionalidades de PDA com as
de telefones celulares. É tanto um celular com capacidades de PDA quanto um PDA
tradicional com capacidades de telefone celular. Suas principais funcionalidades são
a de navegar na internet, verificar e-mails, players de áudio e vídeo, edições de
arquivos, além de receber e fazer chamadas telefônicas (LEE; SCHNEIDER;
SCHELL, 2005). Apesar da restrição quanto à capacidade computacional, se
comparados com os PDA, essa mistura de tecnologia celular com a dos PDA torna
esse tipo de dispositivo um dos mais procurados hoje no mercado.
2.3 Comunicação Bluetooth
A tecnologia bluetooth foi originalmente desenvolvida para acabar com o uso
de cabos entre dispositivos a curta distância, permitindo uma conexão sem fio entre
diversos aparelhos como celulares, dispositivos computacionais portáteis de
pequeno porte, acessórios e periféricos como fones de ouvido, microfones, teclados
e mouse, e computadores. No entanto, não se restringe apenas a substituição dos
cabos. A conectividade sem fio entre dispositivos fixos e móveis permite muitos
outros cenários de utilização. Como o abordado no presente trabalho.
A tecnologia promete se tornar um dos principais padrões de mercado na sua
área de aplicação, graças às inúmeras possibilidades que disponibiliza em diversas
áreas, e ao grande número de dispositivos que saem de fábrica com suporte a
tecnologia. Como por exemplo: celulares, PDA, notebooks, câmeras, projetores,
18
teclados, mouses, e ainda uma serie de eletrodomésticos (FIGUEIREDO;
NAKAMURA, 2003).
A tecnologia sem fio bluetooth permite com que um dispositivo se comunique
com outro aparelho em seu raio de alcance, através de um chip que nada mais é do
que um micro rádio transceptor operando na faixa de frequência de 2.4 Giga Hertz
(GHz), na banda Industrial, Scientific and Medical (ISM). A tecnologia bluetooth é
uma especificação de frequência de rádio para comunicações de curto alcance,
segura, aberta, livre de royalties, e de baixo consumo, o que a torna ideal para
dispositivos portáteis de baixo custo. Possibilita tráfego sem fio de voz e dados e
pode operar em qualquer lugar do mundo já que opera em frequência livre
(THOMPSON; KLINE; KUMAR, 2008).
É uma opção de comunicação sem fio considerada barata, de baixo custo e
eficaz entre dispositivos que se comunicam a uma pequena distância. O grande
propulsor da tecnologia é o custo baixo na produção do chip bluetooth que pode ser
encontrado pelo preço de três dólares americanos. Tudo isso, aliado a baixa
complexidade e ao reduzido consumo (Bluetooth Special Interest Group, 2009).
Dispositivos com chips bluetooth podem ser sincronizados com um
computador, o que lhes permite transferir arquivos entre eles, troca de dados e até
acessar a internet. É possível ainda criar uma rede de área pessoal permitindo a
comunicação sem fio de diversos tipos de dispositivos.
O objetivo do Bluetooth Special Interest Group (SIG), órgão regulador da
tecnologia, é a construção de um rádio em um único chip, de baixo consumo de
energia e reduzido custo de fabricação, possibilitando a inserção em diversos tipos
de dispositivos que precisem se comunicar através de um ambiente sem fio. O que
torna a tecnologia ideal para uso em dispositivos móveis (TAURION, 2002).
Concebida como um sistema de rede sem fio de baixo custo para todas as
classes de dispositivos portáteis, os dispositivos bluetooth têm a capacidade de
formar redes ad hoc. Estas redes permitem conexões dinâmicas e transparentes,
onde o usuário pode se vincular rapidamente através de ligações fáceis e
convenientes para impressoras, acesso à internet, e a dispositivos pessoais tanto no
trabalho como em casa (THOMPSON; KLINE; KUMAR, 2008).
A seguir a tecnologia terá aprofundamento através de sua especificação,
abordando um pouco sobre suas origens e características principais.
19
2.3.1 Especificações da Tecnologia
Os estudos originaram-se em 1994 quando a empresa Ericsson começou as
pesquisas para encontrar alternativas para ligar acessórios aos seus telefones
móveis eliminando os cabos entre eles, e buscas por novas tecnologias para
interfaces de comunicações de baixo custo entre telefones e acessórios
(THOMPSON; KLINE; KUMAR, 2008).
No início de 1998, a Ericsson se juntou a Intel, IBM, Nokia e Toshiba e
formou-se o SIG, uma empresa privada sem fins lucrativos para se concentrar no
desenvolvimento de uma especificação aberta para a tecnologia sem fio bluetooth
(GHISI, 2007). Em julho de 1999, o SIG publicou a versão 1.0 da especificação
bluetooth. Em abril de 2009 foi anunciado a última versão do bluetooth (Bluetooth
Special Interest Group, 2009).
A principal tarefa do SIG é publicar as especificações do bluetooth e
disseminar o uso da tecnologia. O trabalho conjunto dessas empresas em prol do
desenvolvimento da tecnologia seguiu um caminho onde houvesse uma rápida
aceitação de mercado. Para tal, mantém o protocolo aberto e compatível a muitas
tecnologias de mercado (Bluetooth Special Interest Group, 2009).
Hoje o SIG inclui as empresas promotoras: Ericsson, Intel, Lenovo, Microsoft,
Motorola, Nokia e Toshiba, e aproximadamente 12 mil empresas adeptas e
associadas. Essas empresas envolvidas no consórcio estão fazendo um esforço
considerável em prol da disseminação da tecnologia (Bluetooth Special Interest
Group, 2009).
O SIG através de cooperação com as diversas empresas que formam o
consórcio lançou uma especificação industrial aberta, definindo assim como deve ser
o comportamento do padrão e a compatibilidade com os mais diferentes produtos.
Ela define o sistema completo, partindo do hardware até as camadas mais altas de
software.
A especificação contém duas partes, o núcleo e os perfis. O núcleo define as
características do rádio e a pilha de protocolos para a comunicação entre dois
dispositivos. Os perfis especificam quais protocolos da pilha devem ser
implementados para determinada aplicação (THOMPSON; KLINE; KUMAR, 2008).
O SIG lança de tempos em tempos novas especificações para o protocolo,
existindo assim varias versões do bluetooth, conforme tabela 1.
20
Tabela 1 - Versões do bluetooth
Data Versão Características
1999 1.0 Primeira versão, problemas de incompatibilidade.
2001 1.1 Acontece o reconhecimento pela IEEE do padrão 802.15.1.
2003 1.2 Compatibilidade, aumento de velocidade para 1 megabit por
segundo (Mbps), Frequency Hopping Spread Spectrum (FHSS).
2005 2.0 + EDR Aumento de velocidade para 3 Mbps, melhorias no broadcast e
multicast.
2007 2.1 + EDR Melhoria na segurança e consumo de energia.
2009 3.0 + HS Considerável aumento de velocidade para 26 Mbps ao utilizar
novo protocolo 802.11, o mesmo do Wi-Fi.
As versões 1.0 e 1.1 foram responsáveis por dividir a especificação em duas
partes, uma responsável por descrever o núcleo do padrão e outra descrevendo os
perfis. A versão 2.0 + Extended Data Rate (EDR) multiplicou por três a taxa
transmissão, aumentando a velocidade para 3 Mbps, graças à mudança no padrão
de modulação do protocolo. A última versão do bluetooth é a 3.0, lançada na
especificação SIG em 21 de abril de 2009, chamada High Speed Technology (HS).
Nela há uma mudança significativa ao passar a utilizar o protocolo 802.11(Wi-Fi),
aumentando sua velocidade para 26 Mbps (Bluetooth Special Interest Group, 2009).
2.3.2 Infra-Estrutura
Uma rede de computadores é formada por um conjunto de dispositivos
capazes de trocar informações e compartilhar recursos, interligados por um sistema
de comunicação (KLEINSCHMIDT, 2004). No caso de redes sem fio, ou wireless, há
troca de dados e informações sem o uso de cabos ou qualquer outra forma de
conexão física. Neste caso a transferência de informações acontece através do ar
como meio físico de propagação, por meio de ondas eletromagnéticas, infravermelho
ou por laser. E para que estas redes sem fio sejam consideradas móveis, o
dispositivo devem ser capaz de se deslocar durante a comunicação sem que esta
seja interrompida (KLEINSCHMIDT, 2004).
21
As redes sem fio são divididas e classificadas de acordo com seu mecanismo
de rotas, através do modo infra-estruturado ou ad hoc (BARBOSA, L., 2006).
Uma rede infra-estruturada é quando dispositivos se comunicam diretamente
com o ponto de acesso central, como é o caso de redes celulares e redes Wi-Fi. Em
redes ad hoc, não existe um ponto de acesso central, e os dispositivos se
comunicam diretamente com os dispositivos mais próximos. Este é o caso de redes
bluetooth, que permite a criação de redes pessoais sem fio, uma rede de curto
alcance que faz conexão entre vários tipos de dispositivos (KLEINSCHMIDT, 2004).
A tecnologia bluetooth permite a formação de dois tipos de redes possíveis em
uma topologia de rede conhecida como ad hoc. Uma piconet ou uma scatternet.
Uma piconet é formada de no mínimo dois e no máximo oito dispositivos bluetooth,
onde o dispositivo que inicia uma conexão se torna o mestre e os demais são
chamados de escravos. Os escravos não podem se comunicar entre si, logo toda
comunicação passa pelo controle do mestre. Numa piconet existe apenas um
mestre, e seus escravos podem participar de outras piconets com o esquema de
multiplexação de tempo. Nesse meio um mestre de uma piconet pode ser um
escravo em outra. Já uma scatternet é o conjunto de várias piconets. Essas redes
podem ser formadas por várias piconets e a comunicação entre elas é feita pelos
dispositivos mestre de cada piconet (TAVARES; LOBATO; WESTPHALL, 2004).
Segundo Sacks (2003), nesse tipo de arquitetura, o dispositivo que assume o
papel de mestre fica encarregado de executar funções de gestão de recursos de
rádio no canal, coordenando e orientando através de instruções e comandos os seus
respectivos escravos. Os dispositivos restantes, os escravos, ao serem
sincronizados ao mestre, executam operações coordenadas pelo mestre.
O número máximo de dispositivos que podem fazer parte de uma rede piconet
são oito dispositivos, sendo que um necessariamente deva ser um mestre e os
restantes escravos. Como esse número é pequeno, implementou-se a tecnologia a
técnica de scatternet, que permite a sobreposição de vários piconets, aumentando
assim a capacidade da rede. O limite máximo de sobreposições é de dez piconets.
Na figura 1 pode-se ver o exemplo de duas redes piconets formando uma
rede scatternet.
22
Figura 1 – Scatternet formada por duas piconets
Fonte: Adaptado de Boemo (2007)
Na figura 1 é possível notar a presença de duas redes piconets, cada uma
contendo um dispositivo mestre. Ao se estabelecer uma ligação direta entre o mestre
e seus escravos temos uma condição de conexão ad hoc que é chamada de
piconet. Nota-se a interposição de duas redes piconets, formando uma scatternet.
A scatternet se forma quando um dispositivo participa de duas ou mais
piconets. Um dispositivo bluetooth pode atuar como mestre ou escravo, já que o
hardware utilizado é o mesmo (PRIESS, 2003).
2.3.3 Protocolos
Alguns autores como Horstmann (2002) e Goelzer (2006) dividem a pilha de
protocolos de acordo com sua função. Assim protocolos como rádio, banda base,
Link Manager Protocol (LMP), Logical Link Control and Adaptation Protocol (L2CAP)
e o Service Discovery Protocol (SDP) são considerados protocolos principais, o
núcleo do sistema. O RS-232 Serial Cable Emulation Profile (RFCOMM) é o
protocolo de substituição de cabos. E existem ainda os protocolos adotados ou
suportados, como o Point-to-Point Protocol (PPP), Transmission Control Protocol /
Internet Protocol (TCP/IP), Wireless Application Protocol (WAP) e Object Exchange
23
(OBEX). Por fim, o bluetooth ainda dá suporte a protocolos de controle e
especificação de telefonia.
Apesar de estarmos citando todos os possíveis protocolos e perfis, só serão
explicados os que terão utilização direta no trabalho. Por exemplo, o OBEX não será
explicado, apesar de fazer parte da especificação.
Já autores como Tanenbaum (2003) dividem a arquitetura bluetooth e as suas
características técnicas em especificações chamadas de núcleo e perfis. O núcleo
define como o sistema funciona. Os perfis determinam como os diversos elementos
do sistema podem ser utilizados. Assim a divisão constaria de uma camada de rádio
contendo o transceptor que estabelece comunicação entre dispositivos; uma
camada de banda base, que seria a parte computacional, com memória e
processador, que interage com hardware; uma camada de pilha de software que
administra a comunicação entre banda básica e os aplicativos: e por fim a camada
do programa aplicativo, que seria o software que promove a interface do sistema
com o usuário. O núcleo do bluetooth pode ser dividido em quatro camadas, L2CAP,
LMP, banda base e camada de rádio. Eles podem ser implementados no hardware e
firmware do dispositivo. O que eliminaria a necessidade do Host Controller Interface
(HCI), já que o L2CAP e a banda base comunicam-se diretamente. Contudo o mais
comum é que o L2CAP seja implementado em software, surgindo assim a
necessidade da camada HCI para comunicar o L2CAP com as camadas inferiores
(TANEMBAUM, 2003).
Siqueira (2006) divide o bluetooth em três grupos lógicos: grupos de
protocolos de transporte, grupo de protocolos de middleware e grupo de aplicação.
O grupo de protocolos de transporte possui camadas de rádio, banda base, LMP e
L2CAP. Estas permitem que dispositivos bluetooth localizem outros dispositivos e
gerenciem links físicos e lógicos para as camadas superiores. O grupo de
protocolos de middleware possui camadas de protocolos de padrões industriais e
outros desenvolvidos por terceiros. Estes protocolos permitem que aplicações já
existentes e novas aplicações operem sobre bluetooth. Esses protocolos de padrões
industriais incluem PPP, TCP/IP, WAP. Outros protocolos desenvolvidos pelo próprio
SIG também foram incluídos como o RFCOMM, o TCS e o SDP. Por fim, o grupo de
aplicação consiste das próprias aplicações que utilizam links bluetooth. Estas podem
incluir aplicações legadas ou aplicações orientadas a bluetooth.
24
Outro método de divisão, encontrado em Priess (2003) e Sacks (2003) é
classificar a pilha de protocolos bluetooth em duas porções de camadas. As
camadas superiores formadas pelos protocolos L2CAP, RFCOMM, OBEX, e os
perfis, e as camadas inferiores formadas pelo rádio, banda base, controlador de
enlace e gerenciador de enlace. Neste caso fica claro uma divisão da pilha de
protocolos bluetooth com ênfase nas camadas de hardware e software. Assim a
camada de hardware e firmware representam as camadas de rádio, banda base e
LMP. O HCI serve de ligação e as camadas superiores como L2CAP, RFCOMM e as
demais são desenvolvidas em software. Na figura 2 é mostrado um exemplo da pilha
de protocolos e a seguir a descrição de cada camada.
Figura 2 – Pilhas de protocolos da arquitetura bluetooth
Fonte: PRIESS (2003)
• Rádio: essa camada é responsável pela comunicação no nível mais baixo,
o nível físico, responsável por modular e demodular os dados em frequências de
sinais de rádio para transmissão e captação no ar. É a camada de tráfego físico dos
dados, que ocorre a transmissão entre dois chips de rádio bluetooth. A especificação
da camada de rádio corresponde essencialmente a operações do transceptor
bluetooth, provendo compatibilidade entre os rádios e qualidade para o sistema. Sua
função é movimentar os bits entre os dispositivos mestre e escravos (THOMPSON;
KLINE; KUMAR, 2008).
25
A tecnologia de rádio usada pelo bluetooth permite com que seu raio de
alcance não se limite a uma linha reta, mas a um perímetro num raio de alcance que
varia, de acordo com a classe do dispositivo, entre 1, 10 e 100 metros (SACKS,
2003). O transmissor de cada aparelho pode ser classificado em três diferentes
classes de potência e transferência de dados, que por sua vez leva em consideração
o alcance da onda de rádio dos dispositivos (MELO, 2005), conforme tabela 2.
Tabela 2 – Classes de dispositivos bluetooth
Classe Alcance Potência
1 ~ 100 metros 1 mW (0dBm) e 100 mW (20dBm)
2 ~ 1 0 metros 0.25 mW (-6dBm) e 2.5 mW (4dBm)
3 ~ 1 metro Até 1 mW (0dBm)
Os dispositivos classe 1 foram desenvolvidos para grandes distâncias,
podendo atingir nominalmente 100 metros com uso de potência máxima de 100
miliwatts (mW), o que decorre num consumo de energia na casa dos 20 power ratio
in decibels (dBm). Contudo, para se atingir o alcance máximo de 100 metros os dois
dispositivos devem ser de classe 1 (MELO, 2005). Já um dispositivo classe 2 possui
alcance médio de 10 metros com potência de 2.5mW e consumo de 4 dBm. Aqui são
encontrados a maioria dos dispositivos presentes no mercado. Por fim existem
dispositivos de classe 3, os mais fracos do mercado, podendo atingir apenas 1
metros são destinados a curtíssimo alcance. Atinge potência máxima de 1mW com 0
dBm de consumo (SACKS, 2003).
O bluetooth é um protocolo de rádio com interface universal que opera na
frequência de rádio não licenciada ISM destinada a aplicações industriais, médicas e
científicas cuja faixa destinada é de 2,4 GHz. Esta faixa de frequência vai de 2400
MHz a 2483,5 MHz (GRAZZIOTIN, 2006).
Essa banda é formada por vários canais formados pela técnica de
espalhamento espectral. Isso é possível porque no intervalo de banda usado pela
tecnologia, 2400 MHz a 2483,5 MHz, há um total de 79 frequências disponíveis,
começando pelo canal 0 ao 78, cada uma com 1 MHz. Cabe deixar claro que cada
transmissão ou recepção de pacotes de dados que ocorrem em um único intervalo
de tempo, utilizam uma única frequência, porém com a técnica de salto, a faixa total
utilizada pela tecnologia é maior, contendo 79 frequências possíveis para troca de
26
dados. Essas 79 frequências diferentes possibilitam 1600 variações por segundo
para evitar ou reduzir colisões com outros tipos de dados que circula na mesma faixa
de banda de rádio. A tecnologia permite com que o dispositivo mestre fique saltando
de frequência para evitar colisões, e após o salto, sincroniza o restante dos escravos
(PRIESS, 2003).
O consórcio SIG definiu os modos de modulação como: um modo básico e
obrigatório, chamado de Basic Rate que usa modulação Frequency Modulation (FM)
e um modo opcional chamado de Enhanced Data Rate (EDR) que usa modulação
Phase Shift Keying (PSK), que aumentou taxas de 1 Mbps para 2 e 3 Mbps (SACKS,
2003). Contudo, a última especificação trouxe mudanças significativas nesses modos
de modulação. Segundo release 3.0 a tecnologia passa a usar High Speed
Technology e a utilizar o protocolo 802.11 aumentando sua taxa de velocidade para
26 Mbps (Bluetooth Special Interest Group, 2009).
O modo de transmissão acontece por espalhamento espectral conhecido
como Spread Spectrum, que faz uso da técnica de salto de frequência chamada
Frequency Hopping, que permite com que um algoritmo alterne entre as frequências
numa velocidade de 1600 saltos por segundo, para assim evitar erros, colisões,
interferência. Neste caso, com 1600 saltos por segundo, daria um salto a cada
0,000625 segundos, ou 625 microsegundos. Essa duração é conhecida como time
slot, ou seja, uma unidade de tempo no sistema (SACKS, 2003).
• Banda Base: é uma camada física da pilha de protocolos que é
responsável pela gerência da banda base através de controle das conexões físicas
via rádio, gerência de enlace montando os pacotes e formatação dos dados de
transmissão recebidos e enviados para a camada de rádio. Além disso, ela é
responsável pela sincronização da comunicação na piconet gerenciando o frequency
hoppig e controlando a seleção de saltos. Além de fazer o controle de erros e ser
responsável pela segurança dos dados (GHISI, 2007).
Esta camada também é responsável pelo descobrimento dos dispositivos,
através de page e inquiry para acessar os dispositivos, formação do link, formato e
controle de pacotes e pelos canais lógicos e físicos (GRAZZIOTIN, 2006). Definindo
assim como os dispositivos bluetooth localizam e se conectam a outros dispositivos.
Funcionando como um administrador de enlace síncronos e assíncronos fazendo
rotinas de conexão.
27
Na realidade a banda base monta os pacotes de dados vindos dos níveis
superiores para enviar a camada de rádio, assim como faz o contrário, ao receber
bits da camada de rádio e montar pacotes para enviar a camada superior
(MONTEIRO, 2006). A função da camada é transformar um fluxo de bits em frames.
Ou seja, uma sequência de bits em quadros. Na transmissão dos frames são
estabelecidos links, onde cada quadro é transmitido sobre um canal entre o mestre e
o escravo (FIGUEIREDO, 2008).
O canal físico é subdividido em unidades de tempos denominados slots. Os
dados são transmitidos entre dispositivos bluetooth em pacotes que são
posicionados nestes slots. Dentro de um canal físico, um link físico é formado entre
quaisquer dois dispositivos, e transmitem pacotes em ambas as direções. Existe
um link físico entre cada escravo e mestre. Contudo não há formação de links físicos
diretamente entre escravos.
Geralmente em um intervalo de tempo é enviado um pacote de dados.
Contudo em determinados sistemas o envio de um único pacote pode levar mais de
uma unidade de tempo, neste caso o pacote é transmitido antes de acontecer o
salto, estendendo a unidade de tempo padrão.
• Link Manager Protocol (LMP): é responsável pelo controle e configuração
das conexões entre os dispositivos, gerenciando todos os aspectos funcionais que
envolvem a ligação entre eles (Bluetooth Special Interest Group, 2009). É
responsável pelos enlaces entre os dispositivos (GRAZZIOTIN, 2006).
Esse controle de enlace é feito através de mensagens do protocolo,
interrogações e respectivas respostas, que são interpretadas pelos gerenciadores
dos dispositivos destinatários (SACKS, 2003). O gerenciador de enlace (LMP) traduz
os comandos da interface de controle do host (HCI) que ele recebe, em operações
na camada de banda de base. Ou seja, as mensagens produzidas no LMP são
filtradas e interpretadas pelo link controller da camada banda base. Protocolo fica
responsável pela configuração e gerenciamento das propriedades do meio de
transmissão entre os dispositivos, nas conexões da banda base (GHISI, 2007).
• Host Controller Interface (HCI): prove um método de acesso às
funcionalidades das camadas mais baixas, LMP e banda base, através de uma
28
interface de controle e parâmetros de configuração (Bluetooth Special Interest
Group, 2009).
Assim a camada provê a comunicação entre o controlador host e o módulo
bluetooth, caracterizando uma ponte entre o software e o hardware, fazendo uma
abstração entre o hardware das camadas inferiores e o software das camadas
superiores (SACKS, 2003).
Melo (2005) classifica a camada em: HCI firmware, que implementa os
comandos para a parte do hardware, acessando banda base e o LMP. O HCI Driver,
que é a parte em software do modulo de driver no servidor que recebe notificações
de eventos HCI. E o Host Controller Transport Layer, que é a camada por onde o
HCI firmware e o HCI Driver se comunicam. É o canal de transporte que comunica o
hardware com o software. Geralmente sendo do tipo Universal Serial Bus (USB).
• Logical Link Control and Adaptation (L2CAP): faz a interface com as
camadas de nível superior e os protocolos de transporte de camadas inferiores,
escondendo os detalhes de implementação da camada de rádio e banda base,
sendo responsável pelos tipos de aplicações capazes de rodarem sobre redes
bluetooth (GHISI, 2007). Entre as funções do protocolo temos a multiplexação e
desmultiplexação, segmentação e remontagem de pacotes, qualidade de serviço e
criação de canais lógicos entre camadas acima e abaixo. Esta camada é usada
apenas para enlaces do tipo Asynchronous ConnectionLess (ACL) e usa conceitos
de canais lógicos, onde cada um é identificado por um identificador local chamado
de Channel Identification (CID) ( KLEINSCHMIDT, 2004).
A camada faz o processo de segmentação de pacotes, pelo fato da camada
inferior banda base permitir carga baixa em seus pacotes, enquanto as camadas
superiores permitem pacotes de tamanho maior. Logo esses pacotes devem ser
segmentados, fragmentados em vários outros pacotes permitindo assim a
transmissão (GRAZZIOTIN, 2006).
O processo de multiplexação é a propriedade do protocolo de pegar os
pacotes de dados da camada de banda base e enviar para a camada de aplicação
correta acima. Basicamente a camada recebe os pacotes das camadas superiores e
dividem eles em frames para que ocorra a transmissão e a remontagem nos
dispositivos de destino. O processo de desmultiplexação é responsável por
29
fragmentar e remontar pacotes de dados que recebe das camadas acima no formato
esperado pelas camadas abaixo (MONTEIRO, 2006).
• Rfcomm: a camada RS-232 Serial Cable Emulation Profile é o protocolo
de transporte que emula uma configuração de cabo serial sobre o protocolo L2CAP
e é usado para fornecer transferência de dados serial suportando diferentes
aplicações legadas que façam uso da porta serial, além de também permitir
implementações de protocolos mais complexos sobre ele, e ainda dos perfis
bluetooth. RFCOMM liga as camadas inferiores da pilha de protocolo bluetooth
através da camada L2CAP (GHISI, 2007).
É através dessa camada que se implementou a comunicação no presente
trabalho e será posteriormente explicado com mais detalhes.
• Service Discovery Protocol (SDP): é a camada de descobrimento de
serviços comum em todo dispositivo bluetooth. Serve para divulgar os serviços de
um dispositivo mestre quando um dispositivo escravo entra na área de cobertura do
sinal bluetooth. Ele é um protocolo do tipo cliente-servidor, onde o servidor mantém
uma lista de serviços e os clientes podem obter acesso a esses serviços
(KLEINSCHMIDT, 2004).
O dispositivo bluetooth mantém as informações dos serviços armazenados
em um Service Discovery Database (SDDB) que possui atributos com registros que
os descrevem. Esses atributos são representados por um número hexadecimal
chamado de identificador de atributo (GHISI, 2007). O Universally Unique Identifier
(UUID) é o tipo de dado usado para identificar os atributos de serviços, protocolos e
perfis. Um UUID é um identificador universal que garante ser único em um tempo e
espaço determinado. Na identificação de um serviço a Java Specification Requests
APIs for Bluetooth (JSR-82) dispõe da classe Javax.bluetooth.UUID para definir
esses identificadores. Esse número deve ser reconhecido tanto pelo mestre quanto
pelo escravo, servidor ou cliente, já que é através dele que será realizada a busca
por pelo serviço (POVOA, 2005).
2.3.4 Perfis Adotados
A especificação do bluetooth definiu aplicações especificas suportada pelas
30
pilhas de protocolos. Formando uma gama de perfis para diferentes tipos de tarefas.
Os perfis são uma combinação de protocolos e procedimentos para uma
implementação de serviços específicos e para diminuir os riscos de falhas de
interoperabilidade entre equipamentos de fabricantes distintos, permitindo assim
uma comunicação confiável e descrevendo como as implementações devem ser
utilizadas nos diferentes ambientes onde se faz uso da tecnologia, atingindo assim
diversos cenários de uso (FIGUEIREDO, 2008).
A figura 3 exemplifica os perfis suportados pelos dispositivos com bluetooth.
Figura 3 – Pilha de perfis bluetooth
Fonte: Bluetooth Special Interest Group (2009)
O presente trabalho não tem por objetivo fazer uma descrição ou analise
completa dos perfis bluetooth, até mesmo porque os desenvolvedores do consórcio
SIG trabalham para que esse numero seja sempre crescente.
O que será visto a seguir é uma análise dos principais perfis da tecnologia e
os perfis que foram utilizados durante a implementação do presente trabalho.
A tabela 3 foi adaptada de Bluetooth Special Interest Group (2009) mostra os
principais perfis e protocolos utilizados no presente trabalho.
31
Tabela 3: Perfis bluetooth
Perfis Características
GAP Perfil de acesso genérico. Base para os demais perfis.
SDA Descreve como usar o SDP para descobrir serviços em um dispositivo
SPP Descreve como configurar portas seriais virtuais e conectar 2 dispositivos
Protocolos Os perfis acima funcionam em conjunto com os protocolos abaixo
RFCOMM Emula configurações de cabo serial e status de uma porta serial RS-232 e
é usado para fornecer transferência de dados serial
SDP Protocolo de descoberta de Serviços.
Abaixo segue a descrição dos principais perfis utilizados no presente trabalho.
• Generic Acess Profile (GAP): é um perfil básico de transporte onde os
demais são construídos. O GAP é à base de todos os outros perfis, pois sobre ele os
outros perfis são aplicados. Define os procedimentos genéricos relacionados ao
estabelecimento de conexões entre dois dispositivos, incluindo a descoberta de
dispositivos, a gestão e configuração de links, e os procedimentos relacionados com
a utilização de segurança. Logo controla a ligação entre dois dispositivos,
semelhante ao que ocorre na camada de rede do modelo tradicional (THOMPSON;
KLINE; KUMAR, 2008).
• Service Discovery Application (SDA): descreve as operações básicas
necessárias para que serviços sejam descobertos. Este perfil define os protocolos e
os procedimentos a ser usado por aplicativos para localizar serviços em outros
dispositivos com bluetooth habilitado (FIGUEIREDO, 2008). O SDA descreve como
um aplicativo deve usar o SDP para descobrir serviços em um dispositivo remoto,
através de inquiry e inquiry scan via SDP. As idéias contidas nas especificações
SDA somam-se as previstas no GAP, no SDP, e em outros processos básicos de
detecção de dispositivos. O SDA define dois papéis, um para o dispositivo local que
inicia o processo de descoberta de serviços, e o dispositivo remoto que pode ser
qualquer dispositivo que participa no processo de descoberta de serviços,
32
respondendo às indagações de serviço geradas por um dispositivo local (Bluetooth
Special Interest Group, 2009).
• Serial Port Profile (SPP): é um perfil de transporte que suporta a
emulação de uma configuração de cabo serial usando o protocolo RFCOMM para
prover esse serviço. O SPP facilita a comunicação entre dispositivos bluetooth,
fornecendo um fluxo baseado em interface para o protocolo RFCOMM, que está
sobre o protocolo L2CAP, emulando uma conexão serial RS-232 (Sun Developer
Network, 2009).
Foi desenvolvida para que programas antigos pudessem ser usados sem
necessidade de reprogramação. Sendo assim, esse perfil permite que, sem
nenhuma modificação, aplicações legadas possam utiliza o bluetooth como se o
mesmo fosse uma conexão a uma porta serial. Esse perfil serve de base para vários
outros, bem como dar suporte a conexões PPP para acesso local entre dois
dispositivos (THOMPSON; KLINE; KUMAR, 2008).
Seu uso se restringe a computadores desktop e laptops. Um cenário típico de
uso seria dois dispositivos, como dois notebooks, ligados através da tecnologia
bluetooth emulando portas seriais virtuais, já que o perfil SPP define como configurar
portas seriais virtuais e conectar dois dispositivos bluetooth (Bluetooth Special
Interest Group, 2009).
2.3.5 Estados e Modos de Conexão entre Dispositivos
Mesmo que uma rede bluetooth trabalhe com uma tecnologia sem fios,
apenas uma única ligação física pode existir entre dois dispositivos bluetooth.
Apesar de ser apenas uma única ligação física, pode haver várias ligações entre os
dois dispositivos. Semelhante à rede cabeada, onde existe apenas um cabo entre
dois dispositivos, mas ainda pode haver várias ligações entre estes dispositivos.
Os dispositivos bluetooth são munidos da capacidade de descobrir novos
dispositivos nas proximidades da rede, além de descobrir os serviços disponíveis na
rede. Para isso todo dispositivo bluetooth tem associado a si um endereço e um
relógio interno com um contador, e durante a pesquisa, o dispositivo eu esta
33
pesquisando recebe os endereços bluetooth e as frequências dos dispositivos
encontrados, para assim identificá-los na rede (GHISI, 2007).
Após acionado o bluetooth em um dispositivo móvel, o software inicia um
processo chamado de inquiry, onde o dispositivo varre a rede atrás de pontos de
acesso que estão próximos. Todos os pontos de acesso respondem com seu
endereço físico. Já que cada módulo bluetooth tem um endereço físico único no
mundo, gravado no momento da fabricação. O dispositivo móvel escolhe então um
destes pontos de acesso.
Para se estabelecer uma ligação bluetooth é necessário que os dispositivos
efetuem um procedimento conhecido como pareamento, o que permite a criação de
um canal físico entre os dois dispositivos. O dispositivo que efetua os pedidos de
pareamento é o mestre, enquanto que o receptor dos pedidos é o escravo.
Quando o dispositivo esta operando no modo de descoberta (inquiry scan) ele
se torna possível de ser descoberto pelo mestre. Para que o pareamento se
estabeleça, o dispositivo escravo deve estar com o bluetooth ativado, ou seja, ele
deve estar escutando os envios de pedidos do mestre. Assim que receba o pedido, o
escravo manda ao mestre uma resposta, este por sua vez, após confirmação, envia
ao escravo um pacote com o seu endereço bluetooth e com o relógio interno, este
pacote permite ao escravo tomar conhecimento de todas as informações para criar a
ligação entre os dois dispositivos. Esse processo é conhecido como paging, e é aqui
que o dispositivo móvel procura sincronizar-se com o ponto de acesso (GHISI,
2007).
Estabelecido o link físico, ocorre a etapa da varredura e descoberta por
serviços disponibilizados. Essa busca utiliza o protocolo SDP, onde o cliente envia
requisições a um servidor, que por sua vez, envia as informações de serviços
disponíveis. Um identificador UUID é usado para identificar os serviços, protocolos,
perfis e demais informações do dispositivo (GRAZZIOTIN, 2006).
Se for descoberto algum serviço, o protocolo L2CAP será criado
possibilitando assim a comunicação entre os dispositivos. Para que essa
comunicação ocorra com sucesso, o protocolo RFCOMM emula uma interface serial
sobre o canal L2CAP que permite trafego de dados. Na figura 5 pode-se observar
um exemplo padrão de procedimentos para conexão de dispositivos bluetooth.
34
Figura 4: Diagrama de procedimento de conexão bluetooth
Fonte: MONCH (2007)
Conformo o modelo apresentado na figura 4, um dispositivo A fica enviando
mensagens de busca por outros dispositivos. Esta etapa chama-se fase de
descobrimento (discovery). Um outro dispositivo B, que esteja na área de cobertura
do sinal, pode receber essa mensagem se estiver com esse serviço habilitado
(discoverable). O dispositivo B então responde a mensagem ao dispositivo A. Após
fase inicial de pesquisa, ocorre a fase de pareamento, onde o dispositivo A pede
uma senha (PIN) para o dispositivo B. Se a resposta de B coincide com o pedido de
A, os dispositivos estão pareados e podem iniciar a comunicação entre ambos
(MONCH, 2007).
Conforme a explicação acima, percebe-se que um dispositivo bluetooth pode
operar em vários estados. Ele pode assumir um estado de espera (standby) ou
estado de conexão. Entre esses dois principais estados encontra-se estados
intermediários usados para estabelecimento de conexão e adicionamento de novos
dispositivos a rede. Entre esses podemos citar um estado de pesquisa (inquiry),
juntamente com a escuta de pesquisa (inquiry scan), um estado de resposta da
pesquisa (page) e escuta de chamada (page scan).
A figura 5 exemplifica esse processo, além de visualizar os papeis do mestre
e do escravo.
35
Figura 5 – Estágios de comunicação num sistema bluetooth
Fonte: GRAZZIOTIN (2006)
Conforme descrito acima, um dispositivo pode inicialmente assumir dois
estados: espera (standby) ou conectado. Antes de estar conectado a uma rede
piconet, diz-se que o dispositivo esta em estado normal. Neste estado de pré-
conexão o dispositivo pode assumir por default o estado de stanby, e a partir desse
assumir estados de page, page scan, inquiry scan ou inquiry, conforme figura 5
acima.
Um dispositivo entra em estado standby ao ser ativado a função bluetooth. O
dispositivo assume então um método de consumo de energia, disparando
mensagens a cada 10ms a procura de dispositivos. A partir desse modo pode
assumir o estado de page ou inquiry.
Quando um dispositivo mestre entra no modo inquiry, ele faz uma
investigação para identificar e descobrir, na sua área de cobertura, dispositivos
visíveis ao seu alcance. E assim colher informações pertinentes à futura conexão.
Neste caso o escravo deve estar no modo inquiry scan para ser visto.
O mestre através do inquiry obtém uma lista de dispositivos em seu alcance,
assim como seus endereços. Inquiry possibilita ao dispositivo descobrir outros em
seu alcance, assim como o endereço e o clock. No estado de inquiry o dispositivo
mestre envia um tipo especifico de pacote para descobrir quais os dispositivos
36
presentes na sua área de alcance, com o objetivo de descobrir o endereço do
escravo (MARTINCOSKI, 2003).
De tempos em tempos, o dispositivo vai para o estado inquiry scan para tentar
ser descoberto por outros dispositivos. Se receber algum pacote de inquiry enquanto
estiver neste estado, responderá com um inquiry response, onde mandará seu
endereço ao dispositivo que enviou o inquiry para que este tome conhecimento de
sua presença na rede.
Logo após, o dispositivo mestre entra no estado de page, onde ocorre uma
convocação pelo dispositivo escravo que ira se conectar a rede piconet. Para tal o
mestre usa o endereço obtido anteriormente. O estado de page é usado para
estabelecer conexão com um futuro escravo cujo endereço seja previamente
conhecido. Nesse caso é estabelecida a conexão sem precisar passar pelo estado
de pesquisa, escuta da pesquisa e resposta da pesquisa. Isso se o mestre já tenha a
identificação do escravo a qual ele deseja se conectar. O dispositivo escravo deve
estar com o modo page scan habilitado para que responda a esta convocação
realizada pelo mestre. No estado de page scan o futuro escravo busca em sua área
de cobertura um futuro mestre no estado de page que esteja enviando o seu
endereço. Em caso de novas conexões, o dispositivo mestre não precisa passar pelo
modo inquiry, pois ele já conhece o endereço do escravo (MARTINCOSKI, 2003).
Resumindo o processo de descoberta e conexão, o dispositivo mestre
executa inquiry e depois page, enquanto o(s) escravo(s) executa inquiry scan e page
scan. Durante uma operação, um canal físico de rádio é compartilhado por um grupo
de dispositivos que estão sincronizados a um clock comum e a um padrão de saltos
de frequência. Um dispositivo mestre provê assim a sincronização de referência.
2.2.6 Anatomia de uma Aplicação Bluetooth
Basicamente o envio de dados para dispositivos móveis através do bluetooth
segue os seguintes princípios:
• Pesquisa de dispositivos. Tanto um dispositivo servidor ou um cliente
podem fazer varredura na rede para achar novos dispositivos ou serviços. Para ser
encontrado, um dispositivo deve estar no modo de descoberta, inquiry scan.
• Obtenção da lista de serviços nos dispositivos encontrados ou de um
serviço específico. Essa busca de serviços usa o protocolo SDP.
37
• O dispositivo que esta efetuando a pesquisa recebe endereços bluetooth e
frequências dos dispositivos encontrados, permitindo assim sua identificação.
• Pedido de envio para os dispositivos encontrados e que suportam o serviço
de envio de arquivos.
• Envio de arquivos
Após a análise desses passos básicos na comunicação bluetooth, precisa-se
aprofundar os conhecimentos envolvendo a tecnologias Java. Para tal segue abaixo
alguns critérios que envolvem a anatomia de um sistema usando esses ambientes.
Essa anatomia de aplicação bluetooth tem cinco partes (Sun Developer Network,
2009):
• A pilha de inicialização,
• Gerenciamento de dispositivos,
• A descoberta do dispositivo,
• A descoberta de serviços e comunicação.
A pilha de inicialização é responsável por controlar o dispositivo bluetooth. Por
isso é necessário inicializar a pilha bluetooth antes de tudo. O processo de
inicialização compreende uma série de medidas cujo objetivo é fazer com que o
dispositivo fique pronto para a comunicação sem fio.
A segunda parte da anatomia de uma aplicação bluetooth é o gerenciamento
do dispositivo. A Application Programming Interface (API) Java para bluetooth conter
algumas classes principais que servem no gerenciamento, como a classe Local
Device que representa o dispositivo, a classe RemoteDevice que representa um
dispositivo remoto dentro de uma faixa de alcance e fornece métodos para recuperar
informações sobre o dispositivo, como seu nome e endereço bluetooth. E ainda a
classe DeviceClass que serve para recuperar o tipo de dispositivo e os tipos de
serviços (Sun Developer Network, 2009).
A terceira parte da anatomia de uma aplicação bluetooth é a descoberta de
dispositivos remotos, que permite encontrarem dispositivos e ter acesso às suas
capacidades. As classes DiscoveryAgent e DiscoveryListener fornecem serviços
necessários para essa descoberta (Sun Developer Network, 2009).
A quarta parte da anatomia de uma aplicação bluetooth é a descoberta de
serviços em dispositivos remotos. Após a descoberta de dispositivos, ocorre a
procura de serviços disponíveis, que nada mais são que aplicação bluetooth que
38
podem realizar uma tarefa especifica. A descoberta de serviços é muito parecida
com a descoberta de dispositivo, logo o uso da classe DiscoveryAgent também
fornece métodos para descobrir serviços em um servidor de dispositivo bluetooth, e
para iniciar as operações de serviços descoberta (Sun Developer Network, 2009).
A quinta parte é o serviço de registro. Um serviço antes de poder ser
descoberto, deve primeiro ser registrado, ou seja, anunciado em um servidor de
dispositivo bluetooth. O servidor é responsável por criar um serviço de registro que
descreve o serviço oferecido, além de adicioná-lo ao SDDB, tornando o serviço
visível e disponível para os clientes em potencial. E por fim o servidor deve aceitar
as conexões de clientes em busca de serviços (Sun Developer Network, 2009).
Essas características serão revistas e devidamente explicadas no capitulo 4,
que faz a análise do sistema desenvolvido.
2.4 Computação Ubíqua
Santos (2009) propõem uma diferenciação entre os termos computação
ubíqua e computação pervasiva, classificando como computação pervasiva modelos
com dispositivos com alto grau de acoplamento e baixo grau de mobilidade,
enquanto que computação ubíqua seriam os modelos com dispositivos com alto grau
de acoplamento e alto grau de mobilidade. Contudo afirma que apesar dessa
proposta de diferenciação, nota-se que não há uma distinção bem definida ou
unânime pela maioria dos autores. Por esse motivo o presente trabalho fará uso do
termo computação ubíqua.
A computação ubíqua agrega um novo paradigma computacional baseado em
equipamentos de pequeno porte, com poder computacional adequado à sua função
e com ampla conectividade a quaisquer outros dispositivos (SANTOS, 2009).
Segundo Araújo (2003), a característica primordial da computação ubíqua é
mover a computação para fora das estações de trabalho e computadores pessoais e
torná-la ubíqua a vida cotidiana das pessoas.
Jorge Barbosa (2007) afirma que as pesquisas sobre computação móvel e
ubíqua possuem origem no crescente uso de dispositivos móveis e a ampla difusão
de redes sem fio. Sua analise nós leva aos estudos sobre mobilidade em sistemas
39
distribuídos que vêm sendo impulsionados pelo aumento dos dispositivos móveis
como os celulares, PDA e netbooks aliado ao uso de novas tecnologias de redes
sem fio como o Wi-Fi, o bluetooth e a rede celular.
Araújo (2003) afirma que a convergência das tecnologias de redes sem fio,
dos microprocessadores cada vez menores e potentes e dos dispositivos móveis
pessoais está levando ao conceito de ubiquidade no qual dispositivos inteligentes,
móveis e estacionários, coordenam-se entre si para prover aos usuários acesso
imediato e universal a novos serviços, de forma transparente, que visam aumentar
as capacidades humanas permitindo uma maior produtividade e comodidade.
Na computação ubíqua, a computação e seus diversos sistemas podem
interagir com o ser humano a todo o momento, não importando onde ele esteja,
constituindo um ambiente altamente distribuído, heterogêneo, dinâmico, móvel e
interativo. Nesse modelo, as aplicações precisam se adaptar ao ambiente,
compreender o contexto em que estão inseridas e estar disponíveis ao usuário, em
qualquer lugar e a qualquer tempo. Além disso, devem manter o acesso à rede e a
seu ambiente computacional, independente de dispositivo (ARAÚJO, 2003).
Santos (2009) afirma que a computação ubíqua pode representar uma
profunda evolução na área de tecnologia da informação, à medida que entre
no cotidiano das pessoas, tornando-se uma tecnologia intrínseca a vida dos
indivíduos. Nesse novo paradigma os sistemas irão coletar informações do ambiente
de acordo com o contexto em que estão embutidos e utilizarão estas informações
para construir modelos computacionais específicos.
Santos (2009) defende ainda que a expectativa com a computação ubíqua é
de que esse quadro se altere drasticamente. Os computadores estarão presentes
em qualquer lugar, na cidade, no aeroporto, na floresta ou na praia. Esses
dispositivos estarão conectados entre si, formando uma grande rede ubíqua e irão
interagir buscando auxiliar nas atividades das pessoas, instituições e empresas, seja
em tarefas simples como acordar, participar de uma reunião, ou em tarefas mais
complexas como o monitoramento da saúde de uma pessoa, no controle de estoque
de uma grande empresa ou na manutenção de equipamentos.
Para isso, há dois pontos chaves na computação ubíqua, o tamanho desses
dispositivos e seu contexto. O tamanho é importante, pois quanto mais
imperceptível ao usuário (ou portátil) melhor. O contexto também é importante para
que o objeto saiba com quais outros dispositivos ele pode interagir.
40
2.4.1 Computação Consciente de Contexto
Segundo Jorge Barbosa (2007) a computação ubíqua vem sendo
potencializada pelo uso de informações de contexto. O autor afirma que a
disseminação da computação ubíqua ocasionará um impacto significativo em
diferentes áreas de atuação da sociedade. Principalmente ao que se refere às
trocas de informações baseadas em contexto.
No cenário das trocas de informações baseadas em contexto apoiada pela
computação ubíqua, novos pressupostos devem ser pensados, uma vez que os
dados podem ser acessados a qualquer momento e em qualquer lugar. O suporte
ubíquo permite a construção de softwares específicos relacionados com questões
dinâmicas do contexto do usuário (Barbosa, J., 2007).
Jorge Barbosa (2007) afirma que a computação consciente do contexto teve
grande impulso com a mobilidade aliada à difusão da comunicação sem fio, o que
permitiu aos serviços computacionais serem disponibilizados em contextos
específicos.
O ambiente controla as aplicações orientadas à informação pertinente,
possibilitando que o contexto seja vinculado com o usuário especifico. A informação
neste cenário é dinâmica e estão distribuídos em contextos.
A computação consciente do contexto se beneficia do uso de informações
contextuais para aprimorar a interação com seus usuários. O contexto pode
descrever informações sobre localização, dispositivos, perfis de equipamentos e da
rede, atividades, objetos computacionais e outros. Assim, essa forma de
computação pode ser entendida como aquela em que as aplicações tomam
decisões de acordo com um contexto particular proveniente do ambiente e da
situação em que se encontram (Barbosa, J., 2007).
Mas o mais importante é que em um cenário em que a informação encontra-
se disponível de forma globalizada, o desafio de um sistema ubíquo não consiste
somente em disponibilizar a informação para qualquer pessoa, em qualquer lugar e
com vários formatos, mas principalmente em disponibilizar a informação certa, no
momento certo e da maneira correta (Barbosa, J., 2007).
Ao analisar os conceitos de tecnologia bluetooth e computação ubíqua
percebesse que existe uma relação muito próxima entre os dois. Nota-se que ao
afirmar que a computação ubíqua é voltada a interação de usuários juntamente a
41
ambientes fixos e móveis onde há obtenção de uma informação, processamento da
mesma e após a disponibilização do resultado ao usuário, fica claro a inter-relação
entre eles e a capacidade de utilização dessas tecnologias, principalmente em um
ambiente dinâmico onde a mobilidade do usuário é o requisito principal e sua
revisitação deva ser tratada pelo sistema a fim de melhorar a qualidade do sistema.
2.5 Trabalhos Relacionados
Como pesquisa relacionada ao assunto, foi revisada uma serie de trabalhos
como artigos, monografias e teses, a fim de obter um bom referencial bibliográfico. A
seguir serão listados alguns trabalhos que tiveram importância na presente
monografia.
A dissertação de mestrado Uma Arquitetura de Conectividade para
Dispositivos Móveis na Plataforma JAMP apresentada por Luiz Barbosa ao
programa de pós-graduação em ciência da computação da universidade de São
Carlos no ano de 2006 trata da criação de um framework de conectividade num
ambiente Java e bluetooth, onde um dispositivo móvel faz uso de serviços presentes
em um computador desktop remoto usado como ponto de acesso. Esse trabalho
serviu de base teórica e referencial para o estudo das tecnologias Java e bluetooth.
Além de importante fonte de material que relaciona computação ubíqua e bluetooth.
Outro trabalho que aborda sobre o assunto é Sistema de Gerenciamento de
Redes e Processos Através de Computadores Portáveis via bluetooth, apresentada
por Anelise Godolphim Sacks ao programa de graduação em ciência da computação
da universidade federal do Rio de Janeiro no ano de 2003. O trabalho serviu para
embasamento teórico sobre tecnologias usadas para comunicação ponto a ponto
entre dispositivos móveis e servidores. Abordando conceitos como protocolo,
transferência e armazenamento de informações. O trabalho serviu de base para o
referencial bibliográfico relacionado ao bluetooth, seus protocolos e infra-estrutura.
Por fim, mas não menos importante, faz-se referência ao trabalho Utilizando
Dispositivos Móveis e Bluetooth para Aplicação de Avaliação em Meio Digital de
Leydson Pontes Ferreira apresentado como parte dos requisitos para a obtenção do
Título de bacharel em engenharia de computação, pela universidade federal do Rio
42
Grande do Norte. No trabalho o autor faz uso da tecnologia bluetooth e Java em
meio móvel, agregado funções a um ambiente de ensino à distância. O ambiente
usado foi muito semelhante ao trabalho atual por fazer uso do Windows juntamente
com Bluecove do lado do servidor desktop e fazer uso do Connected Limited Device
Configuration (CDLC), Mobile Information Device Profile (MIDP) e JSR-82 do lado do
cliente móvel. O trabalho se diferencia dos demais por abordar um ambiente muito
parecido com o projeto o qual se deseja implementar, além de ter uma boa
qualidade bibliográfica e exemplos muito bem descritos dos fontes.
43
3 DESENVOLVIMENTO PRÁTICO
Este capítulo tem como objetivo demonstrar como foi desenvolvida a
aplicação que faz uso do bluetooth para consulta de dados em um contexto
educacional.
3.1 Tecnologias Empregadas
Desenvolver aplicações móveis baseadas em contexto consiste em projetar,
desenvolver e implementar softwares dentro de um contexto onde eles possam se
tornar válidos. Para concretizar e fundamentar o estudo se desenvolveu uma
interface de apoio capaz de permitir o acesso a informações por meio de dispositivos
móveis e com o uso do protocolo bluetooth. Com isso se pretende disponibilizar uma
opção de consulta móvel a informações tidas como pertinentes em um ambiente
educacional, o que permitirá ao aluno fazer consulta a uma base de dados, em
qualquer lugar, desde que dentro da área de cobertura da tecnologia bluetooth, e
não apenas através de um desktop e uma rede fixa. A aplicação construída tem
como objetivo demonstrar na prática como funciona o protocolo de transferência e
comunicação sem fio bluetooth entre dispositivos móveis e servidores de dados.
Assim como fazer uma demonstração de uso dos principais recursos e tecnologias
envolvidas no projeto.
Diversas ferramentas podem ser usadas como solução para programação de
dispositivos móveis usando bluetooth e Java. De um modo geral, as tecnologias
envolvidas no projeto podem ser divididas em tecnologia para o cliente e tecnologia
para o servidor. A tabela 4 retrata o ambiente escolhido para o projeto.
Tabela 4: Ambiente de desenvolvimento do projeto
Sistema Windows 7 Domínio de mercado, versão com winsock.
Linguagem Java Melhor opção para trabalhar com bluetooth.
IDE NetBeans Excelente desempenho, livre.
API ligação Bluecove Permite uso do bluetooth em desktops
Dispositivo Móveis
Celulares Devem possuir bluetooth e suportar Java
44
A escolha pelo sistema operacional da Microsoft Windows 7 se deve pelo fato
deste possuir a pilha de protocolo bluetooth conhecida por Microsoft Bluetooth
Winsock que liga o sistema operacional ao dispositivo de rádio bluetooth, a mesma
presente no sistema operacional Windows XP com Service Pack 2 (SP2). A
linguagem de programação Java para implementar a comunicação bluetooth entre o
servidor e o cliente, juntamente com a Integrated Development Environment (IDE) de
programação NetBeans, e por fim a biblioteca que permite uso do Java com o
bluetooth no ambiente desktop, o Bluecove. A figura 6 apresenta uma visão geral do
ambiente proposto.
Figura 6: Visão geral do ambiente
A típica pilha de protocolos bluetooth para desenvolvimento Java do lado do
servidor pode ser visto na figura 7 abaixo.
45
Figura 7: Visão geral de camadas envolvidas no servidor bluetooth
Fonte: Adaptado de Luiz Barbosa (2006)
A figura 7 exemplifica a divisão do protocolo, bem como as tecnologias
usadas no projeto do lado do servidor. As camadas de baixo são desenvolvidas em
hardware e firmware, enquanto as camadas acima são desenvolvidas em software.
Na camada de rádio bluetooth foi usado um adaptador USB bluetooth V2.0 modelo
ES-388 do fabricante Cambridge Silicon Rádio Ltd. O sistema operacional usado foi
o Windows 7. Presente no ambiente existe ainda a biblioteca Bluecove versão 2.1.0,
ligando a pilha winsock do sistema à linguagem de programação Java
implementando partes do framework Java Specification Requests 82 (JSR-82) para
ambientes desktops. Na verdade só podemos fazer uso do bluetooth em um
ambiente desktop porque o Bluecove implementa a API JSR-82, além disso seu uso
depende da pilha oferecida pelo sistema operacional, permitindo uma comunicação
entre um servidor e um cliente (GOELZER, 2006).
A linguagem de programação escolhida foi a Java, em suas versões Java 2
Micro Edition (J2ME) para o aplicativo cliente e Java 2 Standard Edition (J2SE) para
o sistema servidor, juntamente com o ambiente de desenvolvimento Java SE
Development Kit (JDK) 5.0 e por fim o IDE de desenvolvimento Netbeans 6.8 para
construção dos aplicativos.
46
3.1.1 Java
Buscando por uma linguagem de programação para dispositivos móveis,
constatou-se que uma das melhores opções seria a utilização da linguagem Java,
pelos seguintes fatores: portabilidade independe de marcas, modelos ou sistema;
suporte a sistemas distribuídos; relativa velocidade de desenvolvimento e facilidade
de programação; o custo, já que o Java é uma linguagem livre e a grande
quantidade de IDEs e APIs para os desenvolvedores.
Luiz Barbosa (2006) relata a divisão da plataforma de desenvolvimento Java
em três grupos, tendo como enfoque o tipo de ambiente para o qual se deseja
desenvolver:
• O Java Enterprise Edition (J2EE) é a plataforma Java voltada para
desenvolvimento em redes, como a internet e intranets. Contém bibliotecas
especialmente desenvolvidas para o acesso a servidores, a sistemas de e-mail, a
banco de dados.
• O Java Standard Edition (J2SE) é o ambiente de desenvolvimento voltado
a estações de trabalho, como computadores desktops e notebooks. Esse é o
ambiente utilizado para implementar o programa servidor.
• O Java 2 Micro Edition (J2ME) é o ambiente de desenvolvimento para
dispositivos móveis ou portáteis, como PDA, telefones celulares e smartphones. Foi
utilizado para implementar o programa cliente.
Para fazer uso da linguagem de programação Java, num ambiente do desktop
com uso do sistema Windows, utilizou-se um ambiente integrado para
desenvolvimento de software (IDE) conhecido como Netbeans, em sua versão 6.8. O
ambiente permite uma abstração no desenvolvimento de sistemas usando como
base a linguagem Java. Sua escolha se deve pelo fato de ser uma das melhores
tecnologias livres para programação de softwares.
Para criação e testes no ambiente J2ME fez-se uso do Java Wireless Toolkit
(WTK), um conjunto de ferramentas, desenvolvido pela Sun Developer Network
(SUN), para criação de aplicações Java para dispositivos portáteis, e que contém
ferramentas para criação de aplicações, utilitários e um emulador de dispositivos
móveis. Por razões desconhecidas, o emulador não se comportou da maneira
esperada, portanto os testes foram feitos em meio real através do telefone celular
Nokia modelo 5130, que oferece suporte ao Java e bluetooth.
47
3.1.2 JSR-82
O Java Specification Requests 82 (JSR-82) é um documento que descreve as
especificações para o uso do J2ME com o bluetooth. Definido pelo Java Community
Process (JCP) como um processo onde os interessados na tecnologia possam se
envolver nas futuras versões e funcionalidades, para fornecer um padrão para
desenvolvimento de aplicações bluetooth em Java. É um padrão aberto e não
proprietário para o desenvolvimento de aplicações bluetooth.
A API JSR-82 oculta a complexidade do protocolo bluetooth atrás de um
conjunto de APIs Java que permite emulação de porta serial (POVOA, 2005). Por
esse motivo, fez-se uso no presente trabalho.
Para desenvolver um aplicativo em Java e bluetooth utilizando a JSR-82,
precisa-se possuir ainda de uma pilha bluetooth. Que pode ser um ambiente
simulado como o WTK, ou uma pilha bluetooth real para o Java, como o Bluecove.
Se estiver sendo usado um simulador, não será necessário o uso de
dispositivos bluetooth reais. Caso contrário, para testar a sua aplicação no mundo
real, através de uma pilha bluetooth Java, precisa-se de um dispositivo com sistema
bluetooth. Isso pode ser um dongle bluetooth USB conectado a um computador, ou
um dispositivo com bluetooth interno, como a maioria dos celulares modernos (Sun
Developer Network, 2009).
3.1.3 Bluecove
O Bluecove é uma biblioteca J2SE para bluetooth, uma implementação do
JSR-82 para uso em desktops que possuam o sistema operacional Windows XP
com Service Pack 2 (SP2), utilizem o Windows 7, ou ainda algum outro sistema
especificado pelo desenvolvedor. Foi escolhido por ser gratuito e possuir uma versão
considerada estável, que implementa os principais protocolos bluetooth, como
RFCOMM, L2CAP, SDP e OBEX, e ainda perfis como o GAP, SDA e SPP A figura 7
abaixo mostra a pilha completa de protocolos usados no presente trabalho.
48
Figura 8: Diagrama da pilha bluetooth com Java e Bluecove
Fonte: BLUECOVE (2010)
Na figura 7 vêem-se os protocolos envolvidos, onde a camada abaixo é
formada pelo hardware bluetooth, apresentado no trabalho como o dongle USB e
pelos protocolos envolvidos e citados acima.
A camada intermediaria é formada pela parte de software do sistema
operacional e a pilha bluetooth que implementa os protocolos HCI, L2CAP,
RFCOMM e SDP, ligando o hardware de rádio com o sistema operacional. Essa
camada intermediaria depende do sistema operacional usado. Neste caso o
Windows 7 com stack winsock, uma pilha bluetooth disponível para windows
desenvolvida na linguagem C. Para que o Bluecove, desenvolvido em Java, tenha
uma integração com essa pilha desenvolvida em C utilizou-se Java Native Interface
(JNI), uma tecnologia que possibilita aplicações Java utilizarem códigos nativos em
linguagem C.
A camada superior é formada pela biblioteca Bluecove que implementa
funções do bluetooth com o J2SE, dependendo da pilha stack winsock oferecida
junto ao sistema operacional.
E por fim, no topo do diagrama, o aplicativo base do trabalho, neste caso o
servidor responsável por disponibilizar um serviço ao aplicativo cliente.
49
4 ANÁLISE DO SISTEMA DESENVOLVIDO
Não é objetivo de esse trabalho fazer um estudo comparativo de
tecnologias, marcas, padrões e protocolos envolvidos em computação móvel. Mas
sim apresentar a possibilidade e viabilidade de desenvolvimento de um ambiente de
consulta usufruindo de uma tecnologia ainda pouco usada por pessoas portadoras
de dispositivos móveis, o bluetooth. Logo, neste trabalho, o enfoque principal foi
dado à tecnologia bluetooth e aos processos que dela decorrem. Assim, a aplicação
prática teve como objetivo se aprofundar nos temas estudados e assim validar o que
foi estudado.
O ambiente do sistema é formado basicamente por um servidor e um ou mais
clientes. Para que a aplicação desenvolvida funcione corretamente será necessário
que o cliente e o servidor atendam alguns requisitos de software e hardware.
Assim, o cliente, representado por dispositivos móveis como um celular,
deverá possuir a plataforma J2ME Connected Limited Device Configuration (CLDC),
o perfil MIDP 2.0 e a API do bluetooth com Java JSR-82 presente no dispositivo.
Geralmente aparelhos com bluetooth vindo de fábrica já possuem esse suporte.
Do lado do servidor foi utilizado um notebook, com dispositivo adaptador
bluetooth dongle USB. E como já mencionado acima, o sistema operacional deve
dar suporte a uma pilha de implementação bluetooth, assim, foi utilizado o Windows
7, por possuir uma pilha que pode ser utilizada junto ao Bluecove.
A partir das tecnologias já tratadas acima, e tendo como base as concepções
e especificações das mesmas, programou-se um sistema de apoio ao acesso a
informações relativas ao ambiente educacional dos discentes de uma instituição
fictícia, com uso da tecnologia de redes sem fio bluetooth. Especificamente, uma
consulta de notas das disciplinas de um determinado aluno.
O sistema tem como objetivo verificar a possibilidade e viabilidade de se
fornecer mais uma opção de acesso a informações a um ambiente de consulta
acadêmico, fazendo uso de uma tecnologia pouco utilizada para essa tarefa, mas que
se encontra disponível na maioria dos dispositivos móveis, o bluetooth.
O sistema deve permitir que um discente possa fazer uma consulta rápida a
suas notas mesmo quando não estiver a sua disposição um computador conectado a
50
internet, mas carregando um dispositivo de acesso móvel contendo funções de rede
bluetooth, como a maioria dos celulares.
Assim, o programa pretende agregar um serviço, uma possibilidade a mais de
se fazer uma consulta em um ambiente escolar, utilizando essa tecnologia presente,
contudo pouco explorada.
O software do lado do servidor caracteriza-se como uma espécie de totem
bluetooth, aguardando conexões dos usuários. O programa emula através do
RFCOMM uma porta serial implementando o perfil SPP, disponibilizando um serviço
e esperando por uma conexão. Um cliente, após uma busca por dispositivos
bluetooth achará o servidor e poderá assim receber as notas cadastradas a este
usuário. O servidor fica responsável por disponibilizar um serviço para o cliente. O
cliente fica responsável por descobrir os dispositivos e buscar os serviços, no caso,
no servidor. Todo código escrito para desenvolver o programa servidor e o programa
cliente pode ser revisado através do Apêndice A.
Abaixo será detalhado como foi desenvolvido o sistema, explicando suas
classes e métodos mais importantes. Os códigos e as telas do sistema encontram-se
nos Apêndices A e B respectivamente.
O programa servidor foi desenvolvido na IDE Netbeans, criando um projeto
Java que possui duas classes. A classe principal que contem o cerne do programa e
uma classe secundaria responsável pela consulta dos dados.
Primeiro o servidor inicia a pilha de protocolos bluetooth (parte implementada
em software e parte em hardware, como já descrito acima) e fica rodando o serviço
no modo de descoberta General Inquiry Access Code (GIAC), onde o serviço fica
sempre ativo e rodando a espera de conexões. Ou seja, o aplicativo do servidor
disponibiliza um serviço e aguarda conexões de clientes. O método
acceptAndOpen() fica travado esperando até que uma conexão seja estabelecida.
Quando isso ocorre ele retorna um objeto StreamConnection que nesse caso
representa a conexão bluetooth. A seguir um potencial cliente deve fazer uma
pesquisa por dispositivos, um inquiry, e ao encontrar ocorre o pareamento entre o
servidor e o cliente. Após isso o cliente faz uma pesquisa por serviços disponíveis no
servidor. O servidor então envia os dados para o cliente através da conexão
RFCOMM e por fim o cliente recebe os dados.
A linguagem Java através do JSR-82 possibilita uso de pacotes, classes e
métodos específicos para se desenvolver e trabalhar com o bluetooth. Um exemplo
51
é o pacote javax.bluetooth.* onde se encontra classes e métodos relevantes ao
presente trabalho. Esse pacote permite dois tipos de conexões bluetooth, através dos
protocolos L2CAP ou RFCOMM. Neste trabalho iremos adotar o segundo, por
permitir a emulação de uma porta serial, e possibilitar manipulação através de fluxo
de dados, chamado de streams, que são sequências ordenadas de dados que
possuem uma origem e um destino. Para isso, fez-se uso dos métodos da classe
DataInputStream presente no pacote java.io.* , que é basicamente uma coleção de
classes para escrever ou ler de arquivos.
Outras classes são de grande importância ao trabalho. Por exemplo,
LocalDevice e RemoteDevice, que são responsáveis em manter as informações
definidas pelo perfil GAP, como informações sobre endereço e nome dos
dispositivos. Além de informar o tipo de dispositivo (DeviceClass) e os tipos de
serviços que são oferecidos.
A classe javax.bluetooth.LocalDevice representa o dispositivo local definindo
as funções básicas do gerenciador bluetooth responsável pela comunicação de baixo
nível com a pilha bluetooth. Possui métodos que recuperam dados do dispositivo,
como o getLocalDevice que permite saber o endereço e o nome do dispositivo, e o
getDiscoveryAgent que retorna uma instancia da classe DiscoveryAgent permitindo
que seja realizado busca por dispositivos e serviços, encapsulando a funcionalidade
do SDA. Possui ainda um método de grande importância que seta o modo de
descoberta do dispositivo e serviço. No presente trabalho fez-se uso do modo GIAC,
que permite que este esteja sempre visível. Ao fazer uso do
LocalDevice.getLocalDevice inicializa-se a pilha de protocolos e captura o objeto do
dispositivo local. Ao fazer uso do dispositivo.setDiscoverable(DiscoveryAgent.GIAC)
todo processo de inquiry será disponibilizado com ajuda da classe DiscoveryAgent e
é setado o modo GIAC para que o servidor seja descoberto a qualquer momento.
A classe javax.bluetooth.RemoteDevice representa o dispositivo remoto. Seus
objetos são retornados ao se realizar um inquiry, busca por dispositivos, e permitem
obter informações como o endereço bluetooth e o nome de dispositivos remotos.
Para disponibilizar um serviço, papel realizado pelo servidor, precisa-se antes
de tudo identificar esse serviço com um UUID válido, pois um mesmo dispositivo
pode ser servidor de vários serviços ao mesmo tempo. O UUID é um identificador da
aplicação, do serviço pelo qual o cliente buscará. Na identificação de serviços o JSR-
82 possui a classe javax.bluetooth.UUID que define identificadores únicos
52
representados por numero inteiro, sem sinal, de 16, 32 ou 128 bits. Tal número deve
ser conhecido tanto pelo servidor quanto pelo cliente, já que é através dele que será
efetuada a busca por serviço.
Após, para registrar o serviço usa-se o javax.microedition.io.Connector, que
contém o framework Generic Connection Framework (GCF) que se baseia no MIDP,
permitindo o uso da plataforma Java em dispositivos móveis. O método usado foi o
Connector.open, e sua classe connector, onde foi passado a url de conexão
“btspp://localhost: endereço UUID”. O uso do “btspp” indica utilização do bluettoth
através do perfil SPP com protocolo RFCOMM. O localhost indica que o serviço será
iniciado localmente. E o UUID é o identificador universal. Essa classe connector gera
um objeto do tipo connection, que pode assumir seis tipos básicos. Aqui se fez uso
dos tipos StreamConnection e StreamConnectionNotifier, definindo assim a conexão
bluetooth para o servidor. Neste ponto vale ressaltar que como esse pacote não é
integrante do J2SE, ele só foi possível de uso graças ao Bluecove que implementa a
JSR-82 para desktop. O StreamConnectionNotifier é responsável por aguardar
conexões de dispositivos. O serviço que será disponibilizado tem ligação com o
objeto StreamConnectionNotifier que é responsável por aguardar novas conexões de
dispositivos em busca desse serviço.
Após essa etapa o servidor espera por conexões do cliente, que ao acontecer
inicia o processo de troca de informações através de streams. A partir daqui a
implementação trata do recebimento e envio das informações serializadas entre o
servidor e o midlet. Assim, após estabelecido conexão com uso do connector.open, o
cliente e o servidor se comunicam via InputStreams e OutputStreams.
Para que um cliente em potencial possa fazer acesso ao serviço e uso do
programa, primeiro ele deve baixar para dentro do dispositivo móvel o midlet da
aplicação cliente. Basta usar a própria tecnologia bluetooth para transmitir o arquivo.
Nele estará contido todo o código que possibilita a consulta de suas notas.
Após esse primeiro passo, basta que o cliente execute o aplicativo através do
botão abrir, e depois no botão buscar, efetuando assim o processo de busca por
dispositivos. A busca ocorre e retorna o dispositivo servidor. Ao selecionar esse
dispositivo aparece a mensagem para o cliente decidir se deseja permitir a conexão,
após confirmação, a conexão é feita. O cliente envia algumas informações, como seu
nome, que já deve ter sido cadastrado apriori. O servidor recebe esses dados, e
53
retorna as disciplinas e notas deste discente. Na tela do celular é mostrado essas
informações. O servidor então fecha conexão e aguarda novo pedido de conexão.
No cliente, foi implementado a busca por dispositivos e serviços. Para essa
busca a JSR-82 disponibiliza a classe javax.bluetooth.DiscoveryAgent, responsável
pelo processo do inquiry, e a interface javax.bluetooth.DiscoveryListener. A classe
dispõe de métodos para realizar a busca, como o método startInquiry que inicia uma
thread e faz busca por terminais bluetooth. Quando um dispositivo é achado chama-
se o método deviceDiscovered que passa o dispositivo e a classe deste. Quando
termina o inquiry chama-se o método inquiryCompleted. Os dispositivos encontrados
são colocados em uma lista do tipo vector e exibidos na tela do dispositivo.
O aplicativo cliente é formado por um midlet dividido em 4 classes: ClienteBT,
a classe pricipal. Controle_tela, responsável pela serialização dos dados, envio e
confirmação. Cria_tela, que implementa a apresentação gráfica na tela do cliente com
uso de canvas. E por fim, a classe controle_bt, responsável por toda implementação
bluetooth. Abaixo veremos com mais detalhes cada uma dessas classes.
A classe principal possui os registros de serviço, UUID, e a implementação dos
três métodos necessários em um midlet (startApp, pauseApp e destroyApp), além
dos comandos de ações envolvidos. O cliente implementa um Discovery Agent, logo
é o cliente responsável por descobrir o dispositivo e inicia a conexão. Deve ficar claro
que somente o servidor com o serviço devidamente registrado no UUID e
reconhecido pelo cliente realiza a comunicação serial. Quando o dispositivo é
selecionado o cliente busca o servidor iniciado na UUID pré-definida, busca o serviço
registrado, também definido, para somente assim efetuar a comunicação, e enviar a
mensagem, o servidor recebe esses dados e envia de volta uma resposta ao cliente.
A classe controle_tela cuida da interface do cliente, dispara a busca por
dispositivos, trata os comandos e cuida da parte de serializar as informações que
serão enviadas e recebidas, ou seja, a troca de informações.
A classe cria_tela fica responsável por desenhar a tela de mensagens de
retorno no celular, na qual serão colocadas as saídas de texto vindas do cliente e do
servidor, ou seja, apresenta uma tela para mostrar as mensagens de texto da
comunicação.
A classe controle_bt fica responsável por cuidar de toda parte da
implementação do bluetooth via RFCOMM. Nela temos os métodos necessários ao
se trabalhar com bluetooth, ou seja, Device Discovery e Service Discovery, que
54
permite descobrir dispositivos e serviços. Aqui ocorre o tratamento de vários eventos
disparados por teclas pressionadas pelo usuário. Nesta classe existe um método de
fundamental importância, o iniciaInquiry(UUID[ ] servicoUUIDs ) que tem a finalidade
de iniciar o inquiry, onde inicia a pilha bluetooth, seta modo como GIAC e prepara o
vetor para receber serviços encontrados. Aqui também se encontra o método
getDiscoveryAgent. Cada dispositivo tem apenas um objeto do tipo DiscoveryAgent, e
é esse objeto realiza a busca por dispositivos, encapsulando funcionalidades do SDA.
A procura de dispositivos é feita através da classe DiscoveryAgent que usa os
métodos startInquiry, que inicia uma thread e faz busca por terminais bluetooth.
Neste caso a busca é por dispositivos com o accessCode especificado como
DiscoveryAgent.GIAC definido apriori no aplicativo servidor. Após, será chamado um
método que retorna o primeiro serviço descoberto do dispositivo servidor que foi
selecionado. Este método retorna o serviço que tem o mesmo UUID na operação de
inquiry.
A classe controle_bt ainda controla os comandos de ações disponíveis nos
botões do dispositivo, ou seja, implementação dos command actions do aplicativo
cliente que são basicamente: voltar, buscar e selecionar.
Além disso, quando se implementa a classe DiscoveryListenner são
obrigatórias as implementações de métodos como a busca por dispositivos e
serviços. E estes estão presentes na classe controle_bt, através de métodos como o
deviceDiscovered que retorna os dispositivos encontrados e do método
servicesDiscovered que é chamado quando um serviço é encontrado, retornando
um array de serviços encontrados.
4.1 Análise dos Resultados
O foco do trabalho foi a análise em cima dos processos que envolvem a
computação móvel, mais particularmente ao protocolo de rede bluetooth, e o uso de
dispositivos móveis em ambientes de busca, pesquisa e troca de informações. Para
tal, o trabalho apresentou uma proposta de uso de tecnologia bluetooth para acesso
a informações contidas em um servidor simulando um ambiente acadêmico. O estudo
de caso desenvolvido se mostrou viável e aplicável ao ambiente proposto,
55
permitindo que usuários de dispositivos móveis com suporte a bluetooth façam uso
da tecnologia presente em seus aparelhos para acessar informações pertinentes,
usando a mobilidade que tais tecnologias possibilitam.
Entretanto, existem meios diferentes para se atingir o mesmo objetivo. Alguns
métodos terão melhor desempenho, outros poderão oferecer uma maneira mais
simples, e outros se caracterizam por possuir uma maneira didática de se atingir o
objetivo proposto. Esse foi o meio utilizado para fazer o que foi determinado,
contudo ficou claro que esse não é o meio que possibilita o maior desempenho e
portabilidade, já que existem formas de se obter um melhor uso das tecnologias
envolvidas, mas isso requer um nível de experiência e aprofundamento ainda não
atingido. Tendo está como a grande dificuldade encontrada na realização do
trabalho.
Assim, acredita-se que a tecnologia bluetooth não chegará a se tornar um
padrão amplamente utilizado no ambiente proposto, mas pode sim, se tornar uma
opção a mais, agregando rapidez a um ambiente onde qualquer forma de consulta
pode se tornar útil. Ou seja, ela não irá tomar o lugar de um computador ou
notebook, em uma rede cabeada ou com Wi-Fi, contudo se o usuário estiver apenas
em mãos um aparelho celular com bluetooth, este ainda assim poderá fazer sua
consulta e visualizar sua informação.
Assim sendo, o bluetooth pode não ser a opção mais adequada para uso no
ambiente de consulta a dados de um servidor no ambiente acadêmico, porém o fato
dele estar presente na grande maioria dos dispositivos móveis capacita e viabiliza
seu uso para tal função. Contudo, agregando possibilidades e não substituindo
funcionalidades.
Dando continuidade a análise do trabalho, deve ficar claro que o uso de
computação ubíqua na implementação de programas para busca de informações no
ambiente educacional é perfeitamente possível, porém graças às deficiências na
implementação da parte prática, devido a falta de experiência na área e ao fato da
tecnologia Java apresentar certo nível de dificuldade no aprendizado, não foi
possível atingir o grau de aprofundamento esperado. Contudo, como foi visto na
teoria, através de autores como Santos (2009) e Araújo (2003), os conceitos de
ubiquidade possuem estreitos laços com os conceitos de computação móvel e uso
de redes sem fio como o bluetooth. Fato este, comprovado nos textos de Jorge
Barbosa (2007), citados acima.
56
5 CONCLUSÃO
A computação móvel envolve disciplinas das mais diferentes áreas do
conhecimento. Citando algumas como ciências da computação, engenharia elétrica,
sistemas de telecomunicações, entre varias outras, portanto um estudo sobre essas
tecnologias terá valor agregado para qualquer um que o estude.
O bluetooth possui uma especificação aberta que está disponível a qualquer
um que deseja fazer um estudo aprofundado sobre ele. Sua tecnologia sem fio
permite que dispositivos comuniquem entre si através de uma interface simples, o ar,
permitindo eliminação de fios, agilizando e facilitando os processos envolvidos.
Além de ter um dos menores custos de implementação do mercado, devido
ao preço baixo do chip e banda livre de utilização permite que um crescente número
de dispositivos já saia de fábrica com a tecnologia bluetooth.
O bluetooth utiliza frequência livre de banda, assim como o Wi-Fi, o que
permite ao usuário uma opção de acesso a custo zero, diferente das altas taxas
cobradas pelo serviço nas redes de telefonia celular.
A tecnologia também tem suas desvantagens, como o curto alcance de sua
rede e a taxa de transferência ainda considerada baixa em relação a outras
tecnologias sem fio, assim como o limitado número de dispositivos conectados
simultaneamente obtidos pelo uso de piconets e scatternets.
No inicio da experiência com o uso do bluetooth exaltou seu uso nos mais
diferentes tipos de aparelhos, desde redes sem fio a conexão dos mais variados
periféricos e eletrodomésticos. Contudo, no decorrer dos anos, os fabricantes vêm
considerando seu uso para tarefas um pouco mais restritas. O caminho que o
bluetooth parece seguir é de ser uma opção às interfaces USB, seriais e paralelas
para a conexão de periféricos. Isso se deve principalmente pelo avanço da tecnologia
Wi-Fi que consegue atingir maior distância e permite maiores taxas de transferência.
Isso implica em maior consumo de bateria, mas essa restrição vem sendo contornada
com a utilização de novas técnicas e tecnologias. O que vêm permitindo que a
tecnologia Wi-Fi conquiste um espaço outrora dominado pelo bluetooth. Prova disso
é o aumento de dispositivos móveis com tecnologia Wi-Fi de fábrica.
É certo que a tecnologia bluetooth tem seu espaço no mercado, como uma
eliminação viável dos cabos, provendo uma comunicação barata e rápida, contudo no
57
ambiente ao qual se propôs o trabalho, existem plataformas mais interessantes de
utilização, como é o caso da tecnologia Wi-Fi, que vem crescendo muito nesse meio.
Finalizando, cabe deixar claro que o paradigma que usamos hoje para
programar e visualizamos conteúdo e informação em ambiente móvel não é algo
definitivo, e está em crescente modificação, graças a um mercado onde
frequentemente surge novas formas e tecnologias que permitem acesso a
informações através de dispositivos móveis.
5.1 Trabalhos Futuros
Esse projeto não teve como objetivo exaurir por completo o tema, e sim abrir
caminho para futuros estudos e diferentes implementações em cima do argumento
proposto.
A área de computação móvel e redes sem fio estão apenas na em sua fase
inicial, e tem muito que se desenvolver, dando espaço a um grande número de
trabalhos futuros.
O trabalho apresentado cobriu uma pequena área, a de consulta em um
ambiente educacional com o uso de bluetooth, existindo ainda muitas possibilidades
de desenvolvimento que se pode agregar ao sistema.
Sugere-se como trabalhos futuros agregar funções omitidas no
desenvolvimento da presente aplicação, bem como disponibilizar novas
possibilidades de busca de informações. Como outros tipos de informações, além de
notas, por exemplo, busca por qualquer outro tipo de informação obtida através de
consultas a sistemas acadêmicos.
Aponta-se ainda para a necessidade de melhoria da interação do usuário aos
dados obtidos do servidor. Uma melhoria no método usado para guardar os dados, e
principalmente no método utilizado para se consultar e visualizar esses dados.
Outro possível trabalho seria a aplicação de técnicas especificas com
computação ubíqua, possibilitando disponibilizar informações pertinentes a um
usuário especifico com maior desempenho e comodidade.
Por fim, uma implementação interessante seria a possibilidade do servidor
implementar a busca por dispositivos, cabendo ao usuário apenas receber os dados.
58
REFERÊNCIAS BIBLIOGRÁFICAS
ARAÚJO, Regina Borges. Computação Ubíqua: Princípios, Tecnologias e
Desafios. Simpósio Brasileiro de Redes de Computadores XXI, Natal, 2003.
ARIMA, Kátia. Qual será o seu próximo celular? Revista InfoExame, Editora Abril,
n. 276, São Paulo, fev 2009.
AUGUSTIN, Iara. Abstrações para uma Linguagem de Programação Visando
Aplicações Móveis em um Ambiente de Pervasive Computing. Tese
apresentada para obtenção do grau de Doutor em Ciência da Computação, UFRGS,
Porto Alegre, 2004.
BARBOSA, Jorge; HAHN, Rodrigo; RABELLO, Solon; PINTO, Sergio Crespo.
Computação Móvel e Ubíqua no Contexto de uma Graduação de Referência.
Artigo apresentado a Revista Brasileira de Informática na Educação v. 15, n. 3,
2007.
BARBOSA, Luiz Antonio. Uma Arquitetura de Conectividade para Dispositivos
Móveis na Plataforma JAMP. Dissertação de Mestrado apresentada ao Programa
de Pós-Graduação em Ciência da Computação da Universidade de São Carlos, São
Paulo, 2006.
BLUECOVE. Bluecove JSR-82 Project. Disponível em: <http://www.Bluecove.org/>.
Acesso em: 01 mar 2010.
BOEMO, Daniel. Desenvolvimento de Sistemas Computacionais Móveis,
Integrados a Receptores GPS bluetooth, Aplicáveis a Gestão Rural e Urbana.
Trabalho de conclusão de curso de Pós-Graduação em Geomática, Universidade
Federal de Santa Maria,Santa Maria, 2007.
59
BRANDELERO, Catize. Aplicabilidade da Tecnologia Móvel em Atividades de
Silvicultura de Precisão: Mapeamento, Inventario e Geoestatistica Florestais.
Trabalho de conclusão de curso de Pós-Graduação em Geomática apresentado a
Universidade Federal de Santa Maria, Santa Maria, 2007.
FERREIRA, Leydson Pontes. Utilizando Dispositivos Móveis e Bluetooth para
Aplicação de Avaliação em Meio Digital. Trabalho de Conclusão de Curso de
Bacharel em Engenharia de Computação, Universidade Federal do Rio Grande do
Norte, Natal, 2009.
FIGUEIREDO, Carlos Maurício Serôdio; NAKAMURA, Eduardo. Computação
Móvel: Novas Oportunidades e Novos Desafios. Revista Eletrônica T&C
Amazônia, FUCAPI, n. 2, Jun 2003.
FIGUEIREDO, Leandro C. Uma análise da QoS na Transmissão em redes
802.11G sob Presença de Interferência bluetooth. Trabalho de Conclusão de
Curso de Pós-Graduação em Engenharia Elétrica, Universidade Federal de
Pernambuco, Recife, 2008.
FORTES, Débora. Qual vai ser o seu próximo celular? Revista InfoExame,
Editora Abril, Edição n° 276, São Paulo, fevereiro de 2009.
GHISI, Bruno Cavaler. Marge: Framework para Desenvolvimento de Aplicações
em Java que façam uso da Tecnologia Bluetooth. Trabalho de Conclusão de
Curso apresentado à Universidade Federal de Santa Catarina ao Programa de
Graduação em Sistemas de Informação para obtenção do grau de
Bacharel em Sistemas de Informação, Florianópolis, 2007.
GOELZER, Maiquel. Bluecove: Comunicando aplicativos J2SE com
aplicativos J2ME através de Bluetooth. Revista Web Mobile, Grajaú, v. 2, n.
8, p. 20-27, abr./mai. 2006.
60
GRAZZIOTIN, Juliano F. Aplicação bluetooth em Audio e Dados. Trabalho
apresentado à Faculdade de Engenharia Elétrica da PUC-RS, Trabalho de
Integração, Porto Alegre, 2006.
HORSTMANN, Gilson Norberto. Avaliação de mecanismos para gerenciamento
da fila da interface do Host Controller do bluetooth. Dissertação submetida à
Universidade Federal de Santa Catarina requisito para a obtenção do grau de
Mestre em Ciência da Computação, Florianópolis, 2002.
KLEINSCHMIDT, João Henrique. Redes Bluetooth: Modelagem, Desempenho e
Aplicações. Dissertação de Mestrado apresentada a PUC - PR ao programa de
Pós-Graduação em Informática Aplicada, Curitiba, 2004.
LEE, Valentino; SCHNEIDER, Heather; SCHELL, Robbie. Aplicações Móveis:
Arquitetura, projeto e desenvolvimento. São Paulo: Pearson Education, 2005.
MELO, Orlens da Silva. Um sistema de comunicação sem fio para a aquisição de
dados em ambiente fabril. Trabalho apresentado a Universidade Federal do Rio de
Janeiro como requisito para obtenção do grau de Mestre em Engenharia Elétrica,
Rio de Janeiro, 2005.
MONCH, Erich. Estudo do Bluetooth: Análise e Experimentação da
Performance do Protocolo e Especificação de Driver de Recepção de
Streaming Áudio. Dissertação apresentada à Escola Politécnica da Universidade de
São Paulo para disciplina de Projeto de Formatura II, São Paulo, 2007.
MONTEIRO, Alexandre Coser. Sistema Eficiente de Medição de Consumo de
Energia para Equipamentos de Comunicação Sem Fio. Trabalho apresentado a
Universidade Federal do Rio de Janeiro como requisito para obtenção do grau de
Mestre em Engenharia de Sistemas e Computação, Rio de Janeiro, 2006.
POVOA, Fabio Mesquita. Um jogo J2ME/MIDP multi-usuario usando bluetooth.
Revista Web Mobile, Grajaú, v. 2, n. 4, p. 44-57, ago./set. 2005.
61
PRIESS, Werner. Mecanismos de Escalonamento com Qualidade de Serviço em
Redes com Tecnologia bluetooth. Dissertação submetida ao Instituto de
Matémática da Universidade Federal do Rio de Janeiro, como requisitos a obtenção
do grau de Mestre, Rio de Janeiro, 2003.
SACKS, Anelise Godolphim. Sistema de Gerenciamento de Redes e Processos
Através de Computadores Portáveis via bluetooth. Trabalho de conclusão de
curso de graduação apresentado à UFRJ, Rio de Janeiro, 2003.
SANTOS, Ivairton Monteiro. Computação Ubíqua. Artigo apresentado a
Universidade Federal de Mato Grosso como Programa de Pós-Graduação em
Engenharia Elétrica, Cuiabá, 2009.
Sun Developer Network. A Community for Sun Developers. Disponivel em:
<http://developers.sun.com/> Acesso em: ago 2009
Bluetooth Special Interest Group. The Official Bluetooth Technology Info Site.
Disponível em: <http://www.bluetooth.com>. Acesso em: nov 2009.
SIQUEIRA, Thiago Senador de. Bluetooth - Características, protocolos e
funcionamento. Artigo apresentado ao Instituto de Computação da Universidade
Estadual de Campinas, Campinas, 2006.
TANENBAUM, A. S. Redes de Computadores. 4. ed. São Paulo, SP: [s.n.], 2003.
TAURION, Cesar. Internet Móvel: Tecnologias, Aplicações e Modelos. Rio de
Janeiro: Campus, 2002.
TAVARES, Rafael; LOBATO, Michel; WESTPHALL, Carlos. Análise de Parâmetros
de QoS e Esquemas de Filas em um Ambiente bluetooth. Artigo apresentado ao
IV Congresso Brasileiro de Computação, Porto Alegre, 2004.
THOMPSON, Timothy; KLINE, Paul; KUMAR, C Bala. Bluetooth Application
Programming with the Java APIs. Burlington: Morgan KaufmannPublishers, 2008.
62
APÊNDICE A – CÓDIGO FONTE
/**
* Servidor
* Classe principal do Servidor
*/
// IMPORTANDO PACOTES, CLASSSES E BIBLIOTECAS
import java.io.DataInputStream:
import java.io.DataOutputStream;
import javax.bluetooth.BluetoothStateException
import javax.bluetooth.DataElement;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector
import javax.microedition.io.StreamConnectionNotifier
// inicio da classe principal
public class Servidor implements Runnable {
LocalDevice dispositivo;
public UUID uuid = new UUID("102030405060708090A1B1C1D1E1F111", false);
private int SERVICO = 0x400000;
public boolean acabou = false;
public StreamConnectionNotifier conexaoServidorStream;
public static void main(String[] args ) {
new Servidor().inicia_servidor();
}
public void inicia_servidor() {
try {
dispositivo = LocalDevice.getLocalDevice();
dispositivo.setDiscoverable(DiscoveryAgent.GIAC);
Thread t = new Thread( this );
t.start();
} catch ( BluetoothStateException e ) {e.printStackTrace();
}
}
63
public void run() {
String nameServico = "ServicoRFCOMM";
StreamConnection conexao = null;
try { while (!acabou){
String url = "btspp://localhost:" + uuid.toString() + ";name= "+ nameServico
System.out.println("");
System.out.println("*******************************************************************");
System.out.println("URL - Endereço Servidor : " + url
System.out.println
conexaoServidorStream = (StreamConnectionNotifier)Connector.open( url );
ServiceRecord template = dispositivo.getRecord( conexaoServidorStream );
template.setAttributeValue( 0x0008, new DataElement( DataElement.U_INT_1, 0xFF ) );
template.setDeviceServiceClasses( SERVICO );
String texto1 = le_dados.carregar("C://local//matematica.txt");
String texto2 = le_dados.carregar("C://local//portugues.txt");
String texto3 = le_dados.carregar("C://local//geografia.txt");
System.out.println("Servidor --> Esperando pela Conexão do Cliente...");
conexao = conexaoServidorStream.acceptAndOpen();
System.out.println("Servidor --> Foi aceita a conexão de um cliente, lendo dados...");
System.out.println("---------------------------------------------------------------------------------------");
RemoteDevice dispositivoRemoto = RemoteDevice.getRemoteDevice( conexao );
DataInputStream entrada = conexao.openDataInputStream(); // Recebendo dados
String dados1 = entrada.readUTF();
String dados2 = entrada.readUTF();
System.out.println("Recebendo --> Nome do Cliente : ( '"+dados1+"' )");
System.out.println("Recebendo --> Endereço do Cliente : ( '"+dados2+"' )");
System.out.println("OK, conectado a: "+dados1);
System.out.println("Enviando Notas...");
DataOutputStream saida = conexao.openDataOutputStream(); // Enviando dados
saida.writeUTF("Olá: "+ dados1 );
saida.writeUTF("Nota Matematica: " + texto1 );
saida.writeUTF("Nota Portugues: " + texto2);
saida.writeUTF("Nota Geografia: " + texto3 );
saida.flush();
System.out.println("...Finalizando conexao.");
saida.close();
conexaoServidorStream.close(); }
} catch (Exception e) {e.printStackTrace(); System.out.println(e.getClass().getName()+"
"+e.getMessage());}}}
64
/** le_dados
* Classe presente no projeto Servidor
* que permite ler arquivo txt
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class le_dados {
public String texto;
public static String carregar(String arquivo) throws FileNotFoundException, IOException {
File file = new File(arquivo);
if (! file.exists()) {
return null;
}
BufferedReader br = new BufferedReader(new FileReader(arquivo));
StringBuffer bufSaida = new StringBuffer();
String linha;
while( (linha = br.readLine()) != null ){
bufSaida.append(linha + "\n");
}
br.close();
return bufSaida.toString();
}
}
65
/**
* MIDlet Cliente dividido em 4 classes: ClienteBT, controle_tela , cria_tela, controle_bt
* Classe ClienteBT
* Esta é a classe principal com registros de serviço, UUID, e implementação dos 3 métodos
* necessários em um midlet (startApp, pauseApp e destroyApp), além de command actions
*/
import java.io.*;
import javax.bluetooth.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class ClienteBT extends MIDlet implements CommandListener
{
public static ClienteBT instancia;
public static Display telaInicial;
public UUID uuid = new UUID("102030405060708090A1B1C1D1E1F111", false);
public cria_tela telamensagem = null;
controle_bt util = null;
controle_tela telacliente = null;
public ClienteBT()
{
instancia = this;
}
public void startApp()
{
telaInicial = Display.getDisplay(this);
util = new controle_bt( this, this );
util.startApp();
telacliente = new controle_tela();
telamensagem = new cria_tela();
telaInicial.setCurrent( telamensagem );
}
public void pauseApp() {
}
66
public void destroyApp(boolean arg) {
}
public void commandAction(Command c, Displayable d)
{
if ( c.equals( controle_bt.VOLTA ) )
{
telaInicial.setCurrent( telamensagem );
Thread t = new Thread( new Inicia() );
t.start();
} else if ( c.equals( controle_bt.SELECIONADO ) ) {
telaInicial.setCurrent( telamensagem );
} else if ( d == telamensagem && c.getLabel().equals("Buscar") ) {
util.iniciaInquiry( new UUID[]{ uuid } );
telaInicial.setCurrent( util.mostraBT() );
} else if ( c.equals( controle_bt.VOLTA ) ) {
telaInicial.setCurrent( telamensagem );
} else if (d == telamensagem && c.getLabel().equals("Sair"))
{
instancia.notifyDestroyed();
instancia = null; }
}
public static void escreveSaida(String s)
{
ClienteBT.instancia.telamensagem.adicionar(s);
}
public class Inicia implements Runnable
{
public void run()
{
telacliente.envia_mensagem( util.getPrimeiroServicoDescoberto(), "Aluno 1",
util.dispositivo.getBluetoothAddress().toString() );
}
}
}
67
/**
* Classe cria_tela
* É a classe responsável por apresentar de forma gráfica as informações na tela do cliente.
* Ou seja, apresentar uma tela para mostrar as mensagens de texto da comunicação
*/
import javax.microedition.lcdui.*;
import java.util.*;
public class cria_tela extends Canvas
{
public Vector mensagens = new Vector();
int indexMensagens = 0;
int largura, altura;
int tamanhoFonte;
Font fonte;
int x0=0, y0=0;
public cria_tela()
{
addCommand(new Command("Buscar", Command.SCREEN, 2));
addCommand(new Command("Voltar", Command.BACK, 1));
addCommand(new Command("Sair", Command.EXIT, 1));
setCommandListener( ClienteBT.instancia );
}
protected void paint(Graphics modoGrafico)
{
if ( fonte == null )
{
fonte = Font.getFont( Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL );
largura = this.getWidth();
altura = this.getHeight();
tamanhoFonte = fonte.getHeight();
}
int tam = tamanhoFonte;
modoGrafico.setColor( 255, 255, 255 );
modoGrafico.fillRect( 0, 0, largura, altura );
modoGrafico.setColor( 0, 0, 0 );
68
modoGrafico.setFont( fonte );
modoGrafico.translate(-x0, -y0);
for ( int i= indexMensagens; i< mensagens.size(); i++ )
{
String str = (String)mensagens.elementAt(i);
modoGrafico.drawString( str, 0, tam, Graphics.BASELINE | Graphics.LEFT );
tam += tamanhoFonte;
}
}
public void keyPressed( int key )
{
if ( getGameAction( key ) == Canvas.RIGHT )
{
x0+=50;
} else if ( getGameAction( key ) == Canvas.LEFT )
{
x0-=50;
} else if ( getGameAction( key ) == Canvas.UP )
{
y0-=50;
} else if ( getGameAction( key ) == Canvas.DOWN )
{
y0+=50;
}
repaint();
}
public void adicionar( String s )
{
mensagens.addElement( s );
repaint();
}
}
69
/**
* Classe controle_tela
* Classe que cuida da serialização dos dados, envio e confirmação, e exibição na tela do celular.
* Ou seja, operações de streams busca por dispositivos Bluetooth e realizar conexões
*/
import java.io.*;
import javax.bluetooth.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextField;
public class controle_tela extends List {
public controle_tela() {
super("Dispositivos", List.IMPLICIT);
addCommand( controle_bt.SELECIONADO );
addCommand( controle_bt.VOLTA );
setCommandListener( controle_bt.instancia );
}
public void envia_mensagem(ServiceRecord r, String msg, String addr) {
String url = r.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false );
try {
StreamConnection con = (StreamConnection) Connector.open( url );
escreveSaida("-> Conectado ao Servidor ");
escreveSaida("-> Enviando Nome: '"+msg+"'");
escreveSaida("-> Enviando Endereço: '"+addr+"'");
DataOutputStream saida = con.openDataOutputStream();
saida.writeUTF( msg );
saida.writeUTF( addr );
saida.flush();
escreveSaida("Finalizou Envio");
escreveSaida( "--------------------------------------------------------------------------------------");
escreveSaida("Iniciando Recebimento");
escreveSaida( "--------------------------------------------------------------------------------------");
Thread.sleep(1000);
saida.close();
DataInputStream in = con.openDataInputStream();
70
String s2 = in.readUTF();
String s4 = in.readUTF();
String s5 = in.readUTF();
String s6 = in.readUTF();
escreveSaida(s2);
escreveSaida(s4);
escreveSaida(s5);
escreveSaida(s6);
escreveSaida( "--------------------------------------------------------");
escreveSaida("Finalizou Recebimento de Dados");
con.close();
} catch (Exception e) { e.printStackTrace(); }
}
public void escreveSaida( String s ) {
ClienteBT.escreveSaida( s );
}
public void mostraDispositivos() {
super.deleteAll();
if (controle_bt.dispositivos.size() > 0) {
for (int i = 0; i < controle_bt.dispositivos.size(); i++) {
try {
RemoteDevice dispositivoRemoto = (RemoteDevice) controle_bt.dispositivos.elementAt(i);
String name = dispositivoRemoto.getFriendlyName(false);
append(name, null);
} catch (Exception e) {e.printStackTrace();
}
}
} else {
append("[Não Encontrado]", null);
}
}
public void escreveMSG( String msg ) {
super.deleteAll();
append( msg, null );
}
}
71
/**
* Clase controle_bt
* É a classe q cuida de toda parte da implementação do bluetooth via RFCOMM.
* Nela temos os métodos necessários ao se trabalhar com bluetooth.
*/
import java.util.*;
import javax.bluetooth.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class controle_bt implements CommandListener {
public static Command SELECIONADO = new Command( "Selecionar", Command.SCREEN, 1 );
public static Command VOLTA = new Command( "Voltar", Command.BACK, 1 );
public static MIDlet objetoMidlet;
public static CommandListener retornoComando;
public static controle_bt instancia;
public static Display display;
public static Vector dispositivos = new Vector();
public static Vector classesDispositivos = new Vector();
public static Vector servicos = new Vector();
public static int dispositivoSelecionado = -1; /
public UUID[] servicoUUIDs = null;
public int deviceReturnCode;
public int serviceReturnCode;
public LocalDevice dispositivo;
private DiscoveryAgent agenteDescoberta;
private controle_tela telacliente = null;
public controle_bt(MIDlet midlet, CommandListener listener) {
this.objetoMidlet = midlet;
this.retornoComando = listener;
instancia = this; }
public void startApp() {
display = Display.getDisplay(objetoMidlet);
telacliente = new controle_tela();
telacliente.mostraDispositivos(); }
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
72
public void iniciaInquiry(UUID[] servicoUUIDs ) {
try {
this.servicoUUIDs = servicoUUIDs;
dispositivos.removeAllElements();
classesDispositivos.removeAllElements();
dispositivo = LocalDevice.getLocalDevice();
dispositivo.setDiscoverable(DiscoveryAgent.GIAC);
agenteDescoberta = dispositivo.getDiscoveryAgent();
boolean resultado = agenteDescoberta.startInquiry(DiscoveryAgent.GIAC, new BluetoothListener());
telacliente.escreveMSG("[Aguarde...]");
} catch ( BluetoothStateException e ) {e.printStackTrace(); } }
public Screen mostraBT() {
return telacliente; }
public ServiceRecord getPrimeiroServicoDescoberto() {
if ( servicos.size() > 0 )
return (ServiceRecord) servicos.elementAt(0);
else
return null;
}
public RemoteDevice getdispositivoSelecionado() {
if ( dispositivoSelecionado != -1 )
return (RemoteDevice) dispositivos.elementAt(dispositivoSelecionado);
else
return null;
}
public void commandAction(Command c, Displayable d) {
if ( d == telacliente && c.getLabel().equals("Buscar") ) {
iniciaInquiry( servicoUUIDs );
} else if ( d == telacliente && c.getLabel().equals("Voltar") ) {
retornoComando.commandAction( VOLTA, telacliente);
} else if ( d == telacliente && c.getLabel().equals("Selecionar") ) {
dispositivoSelecionado = telacliente.getSelectedIndex();
RemoteDevice dispositivoRemoto = (RemoteDevice) dispositivos.elementAt( dispositivoSelecionado );
servicos.removeAllElements();
73
try {
agenteDescoberta.searchServices(null,
servicoUUIDs,
dispositivoRemoto,
new BluetoothListener() );
retornoComando.commandAction( SELECIONADO, telacliente);
} catch (BluetoothStateException ex) {
ex.printStackTrace();
}
}
}
class BluetoothListener implements DiscoveryListener {
public void deviceDiscovered(RemoteDevice dispositivoRemoto,
DeviceClass classeDispositivo) {
dispositivos.addElement( dispositivoRemoto );
classesDispositivos.addElement( classeDispositivo );
}
public void inquiryCompleted(int complete) {
deviceReturnCode = complete;
if ( dispositivos.size() == 0 ) {
telacliente.mostraDispositivos();
display.setCurrent( telacliente );
} else {
telacliente.mostraDispositivos();
display.setCurrent( telacliente );
}
}
public void servicesDiscovered(int transId, ServiceRecord[] records) {
for ( int i=0; i< records.length; i ++ ) {
ServiceRecord record = records[i];
servicos.addElement( record ); } }
public void serviceSearchCompleted(int transId, int complete) {
serviceReturnCode = complete;
retornoComando.commandAction( VOLTA , telacliente);}}}
74
APÊNDICE B – TELAS DO SISTEMA
Figura 9: Tela de projeto do sistema
Figura 10: Tela de inicialização do servidor
75
Figura 11: Telas do dispositivo móvel
Figura 12: Tela de finalização do servidor