76
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

Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

Embed Size (px)

DESCRIPTION

Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo - Monografia apresentado a Unicruz para obtenção do grau Bacharel em Ciência da Computação.

Citation preview

Page 1: 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

Page 2: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 3: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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 ______

Page 4: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 5: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 6: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 7: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 8: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 9: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 10: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 11: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 12: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 13: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 14: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 15: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 16: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 17: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 18: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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,

Page 19: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 20: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 21: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 22: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 23: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 24: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 25: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 26: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 27: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 28: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 29: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 30: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 31: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 32: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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,

Page 33: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 34: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 35: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 36: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 37: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 38: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 39: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 40: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 41: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 42: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 43: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 44: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 45: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 46: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 47: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 48: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 49: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 50: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 51: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 52: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 53: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 54: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 55: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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,

Page 56: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 57: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 58: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 59: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 60: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 61: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 62: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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.

Page 63: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

}

}

Page 64: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 65: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

}

}

Page 66: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

}

Page 67: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

}

}

}

Page 68: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 69: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

}

}

Page 70: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 71: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

}

}

Page 72: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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) { }

Page 73: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 74: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

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

Page 75: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

74

APÊNDICE B – TELAS DO SISTEMA

Figura 9: Tela de projeto do sistema

Figura 10: Tela de inicialização do servidor

Page 76: Estudo sobre comunicacao bluetooth em um ambiente educacional ubiquo

75

Figura 11: Telas do dispositivo móvel

Figura 12: Tela de finalização do servidor