Post on 07-Nov-2018
UNIVERSIDADE DE SÃO PAULO Instituto de Ciências Matemáticas e de Computação
São Carlos - SP
Comunicação entre Sistemas Embarcados utilizando Bluetooth
Vitor Fiorotto Astolfi
Vitor Fiorotto Astolfi
Supervisor: Prof. Dr. Jorge Luiz e Silva
Monografia final de conclusão de curso apresentada ao Instituto de Ciências Matemáticas e de Computação – ICMC-USP - para obtenção do título de Bacharel em Ciência da Computação. Área de Concentração: Sistemas Embarcados
USP - São Carlos Maio de 2007
Comunicação entre Sistemas Embarcados utilizando Bluetooth
i
Índice
1. INTRODUÇÃO ..................................................................................................................... 1
1.1 OBJETIVOS DO TRABALHO ......................................................................................... 5 1.2 ORGANIZAÇÃO DA MONOGRAFIA............................................................................. 6
2. REVISÃO BIBLIOGRÁFICA ............................................................................................. 7
2.1 SISTEMAS EMBARCADOS............................................................................................ 7 2.2 BLUETOOTH .................................................................................................................. 9 2.3. MICROPROCESSADOR RABBIT 3000....................................................................... 13 2.4. ANÁLISE CRÍTICA....................................................................................................... 15
3. ESTADO ATUAL DO TRABALHO................................................................................. 17
3.1 DESCRIÇÃO DAS ATIVIDADES REALIZADAS ......................................................... 18 3.2 RESULTADOS OBTIDOS............................................................................................. 25 3.3 DIFICULDADES E L IMITAÇÕES................................................................................. 26
4. CONCLUSÕES E TRABALHOS FUTUROS.................................................................. 28
5. REFERÊNCIAS .................................................................................................................. 29
ii
Índice de Figuras
Figura 1.1: Produção de microprocessadores e PCs e população mundial. Fonte: [7] ................... 4
Figura 1.2: Faturamento gerado por hardware embarcado. Fonte: [8]............................................ 4
Figura 1.3: Faturamento gerado por software embarcado. Fonte: [8] ............................................. 5
Figura 2.1: Topologias para a) Sistema de telefonia celular convencional onde os quadrados
representam as estações base estacionárias; b) Sistema convencional ad hoc; c) Sistema ad
hoc utilizado na especificação Bluetooth. Fonte: [17]. ......................................................... 11
Figura 2.2: Processador Rabbit 3000. Fonte: [19]......................................................................... 14
Figura 2.3: RabbitCore RCM3360 utilizado no projeto. ............................................................... 15
Figura 3.1: EmbeddedBlue 506 utilizado no projeto..................................................................... 19
Figura 3.2: Módulos RCM3360 e EB506 instalados em suas protoboards. ................................. 19
Figura 3.3: Teste de funcionamento dos módulos EB506 por meio do HyperTerminal............... 20
Figura 3.4: Topologia original da rede. ......................................................................................... 21
Figura 3.5: Janela principal do cliente Java................................................................................... 21
Figura 3.6: Shell do módulo FAT.................................................................................................. 22
Figura 3.7: Janela principal do servidor Java. ............................................................................... 23
Figura 3.8: Topologia modificada da rede .................................................................................... 24
Índice de Tabelas
Tabela 1.1: Exemplos de aplicações embarcadas existentes no mercado. ...................................... 1
Tabela 2.1: Raio de alcance de acordo com a classe de potência. Fonte: [5]................................ 10
iii
Lista de Siglas
ABS Anti-lock Breaking System
ARM Advanced RISC Machine
FAT File Allocation Table
HDLC High-level Data Link Control
I²C Inter-Integrated Circuit
IrDA Infrared Data Association
LED Light Emitting Diode
PDA Personal Digital Assistant
SDLC Synchronous Data Link Control
SPI Serial Peripheral Interface
SRAM Static Random Access Memory
UART Universal Asynchronous Receiver/Transmitter
VOIP Voice Over IP
iv
Resumo
A computação está cada vez mais presente na sociedade moderna, não somente nas
estações de trabalho e computadores pessoais, mas também em muitos aspectos da vida
quotidiana, podendo estar embarcada nos mais triviais objetos, como interruptores de luz e
canetas. Esta computação, denominada ubíqua, na qual um usuário controla, naturalmente,
diversos computadores “onipresentes e invisíveis”, está em ascendência no mundo. Presente
muitas vezes em objetos móveis, a computação ubíqua requer tecnologias de comunicação sem
fio de baixo custo, como Bluetooth.
Este trabalho tem como objetivo o desenvolvimento de software para sistemas
embarcados que se comunicarão por meio da tecnologia Bluetooth, utilizada para comunicação
sem fio entre dispositivos eletrônicos a curtas distâncias. Serão transferidas imagens de um PC
para outro, sendo utilizados como intermediários microprocessadores com conectividade
Bluetooth. Um protocolo foi desenvolvido para o envio das imagens. No futuro, é possível a
incorporação deste projeto a um sistema de monitoramento de ambientes por imagens através de
robôs, sendo necessária, portanto, a comunicação sem fio. O microprocessador escolhido para o
desenvolvimento do projeto foi o Rabbit 3000, por seu alto desempenho, adequação para controle
embarcado, além de conectividade Ethernet e Bluetooth.
Como resultado deste trabalho são apresentados os softwares desenvolvidos tanto para os
PCs quanto para os Rabbit, além de uma análise de viabilidade para utilização do trabalho no
projeto do robô.
1
1. Introdução
O desenvolvimento de sistemas embarcados está se tornando cada vez mais popular tanto
no meio acadêmico quanto na indústria, graças à crescente demanda por dispositivos mais
confiáveis e de melhor qualidade [1]. Atualmente, aplicações embarcadas estão presentes em
quase todas as técnicas e produtos industriais, como mostra a Tabela 1.1.
Mercado Exemplos de dispositivos embarcados
Medicina Bombas de infusão. Máquinas de hemodiálise. Monitores cardíacos.
Aparelhos Eletrônicos em Geral
Televisões analógicas e digitais. PDAs. Jogos/Brinquedos. Telefones fixos, VOIP e celulares. Câmeras. GPS (Sistema de Posicionamento Global). Periféricos de computadores, como roteadores e impressoras.
Automotivo Sistemas de Ignição. Sistemas de Freio, como ABS (antitravamento).
Musical Instrumentos eletrônicos digitais, como sintetizadores e pianos.
Aeroespacial Sistemas de navegação. Tabela 1.1: Exemplos de aplicações embarcadas existentes no mercado.
Até poucos anos atrás, havia duas fases bem distintas quanto à utilização de computadores:
a dos mainframes, com muitas pessoas compartilhando um computador e a dos computadores
pessoais (PCs), com um computador por usuário. Em 1984, o número de usuários de PCs
ultrapassou o de mainframes [2], cuja utilização é cada vez mais restrita. Uma terceira fase que
surgiu a partir da década de 1990, juntamente com o constante decréscimo do custo de
processadores, é a “computação ubíqua” [2], na qual um usuário utiliza vários computadores.
Centenas desses computadores são os que acessamos em poucos minutos por meio de navegação
pela Internet. Outros são os embarcados em automóveis, eletrodomésticos, aviões, etc.
Computação ubíqua é fundamentalmente caracterizada pela incorporação da computação a
objetos de qualquer tipo em qualquer escala, inclusive a microscópica [3]. Esse termo foi
cunhado por Mark Weiser em 1988 para descrever sua idéia de tornar os computadores
2
onipresentes e invisíveis. Por invisibilidade entenda-se a tentativa de tirar o computador do
caminho entre o usuário e seu trabalho, indo além da “interface amigável”, e longe da realidade
virtual. A computação ubíqua é aproximadamente o oposto de realidade virtual, uma vez que essa
última coloca as pessoas dentro de um mundo gerado por computador, enquanto a primeira força
o computador a viver no mundo com pessoas, sendo uma integração difícil entre fatores humanos,
ciência da computação, engenharia e ciências sociais.
As tecnologias mais profundas são aquelas que desaparecem, tornando-se indistinguíveis
do dia-a-dia das pessoas [4]. Considere a escrita, talvez a primeira tecnologia de informação. A
habilidade de capturar representações simbólicas a partir de uma língua falada libertou a
informação dos limites da memória individual. Hoje essa tecnologia é ubíqua nos países
industrializados, sendo onipresente na vida das pessoas, apesar de não requerer atenção ativa das
pessoas, a informação está pronta para uso sempre que necessário. A tecnologia de informação
digital, porém, ainda não se tornou parte do ambiente. Mark Weiser propõe que, nessa fase de
computação ubíqua, o foco deve ser dirigido à “calma” (calm technology) [2]. Computadores
pessoais são projetados para fixar a atenção, mas quando os computadores forem onipresentes e
quisermos usá-los enquanto fazemos outras coisas, devemos reformular os objetivos dessa
tecnologia, para evitar que ela se torne incômoda, prendendo a atenção dos usuários.
Para que o usuário tenha maior liberdade e não precise ir até o computador, é fundamental
encolher os dispositivos que possam ser facilmente carregados ou vestidos, para garantir que o
usuário se movimente livremente. Dessa maneira, a computação móvel é uma tecnologia
fundamental, sendo englobada pela computação ubíqua. Por isso, é necessário prover conexão
sem fio, através de tecnologias como Bluetooth e telefonia celular, entre outras, para a
manutenção do serviço mesmo com os dispositivos estando em movimento. Como esses
dispositivos portáteis são alimentados por baterias, é fundamental que haja não apenas baixo
consumo de energia, mas também alta eficiência energética, sendo essas duas características
encontradas tipicamente em sistemas embarcados portáteis [1] e Bluetooth [5].
Atualmente, encontra-se com facilidade cerca de quarenta microprocessadores em uma
casa de classe média nos Estados Unidos [2]. Eles estão presentes em relógios com alarme,
fornos de microondas, controle remotos de TVs, aparelhos de som, nas próprias TVs, em
brinquedos, etc. No entanto, não podemos qualificá-los como computação ubíqua, pois eles são
em geral utilizados um por vez e se apresentam como objetos sem inovação, como relógios.
3
Porém, se estivessem conectados à Internet, haveria milhões de fontes de informação para
centenas de sistemas capazes de enviar e receber dados em cada casa. Relógios poderiam se auto-
ajustar depois de uma queda de energia, fornos de microondas “baixariam” novas receitas,
brinquedos seriam atualizados com novos softwares e vocabulários, refrigeradores detectariam
comidas estragadas, aparelhos monitorariam a saúde dos ocupantes da residência, entre uma
infinidade de aplicações. Com a incorporação de uma tecnologia sem fio como Bluetooth, tal
gama de aplicações seria muito maior. Por exemplo, um telefone celular com Bluetooth poderia
obter uma lista de compras gerada automaticamente por uma geladeira “inteligente”. O mesmo
aparelho, utilizando identificação por rádio freqüência (RFID), poderia ser utilizado para
destravar portas, tanto em residências quanto em hotéis, depois de feito o check-in, por exemplo.
A Internet, redes sem fio, câmeras e telemática automotiva poderiam ser combinados para
transferência de informações a milhões de motoristas em grandes cidades para redução de atrasos,
congestionamentos, uso de energia, e poluição. Redes de sensores poderiam ser aplicadas a áreas
agrícolas para monitoramento da qualidade das plantações, do meio ambiente, para ajuste de
irrigação e fertilização, se necessária. Sendo constantes as evoluções causadas pela
miniaturização e a ubiqüidade na computação e telecomunicação, o surgimento e popularização
dos sistemas em rede de sistemas embarcados (EmNets) é apenas uma conseqüência natural disso
[6].
Prevê-se que em 2010 haverá mais de 16 bilhões de dispositivos embarcados
(aproximadamente três dispositivos embarcados por pessoa no mundo), e cerca de 40 bilhões em
2040 [7]. Atualmente, 98% dos microprocessadores produzidos são utilizados em sistemas
embarcados. Como se pode ver na Figura 1.1, o aumento do número de microprocessadores
fabricados é um indício da popularidade dos sistemas embarcados.
4
Figura 1.1: Produção de microprocessadores e PCs e população mundial. Fonte: [7]
Sendo uma área tão promissora, as indústrias de software e hardware embarcados estão
entre as que mais crescem atualmente. Em 2004 o faturamento global gerado por hardware
embarcado foi de aproximadamente US$ 40 bilhões e espera-se que chegará a US$ 79 bilhões em
2009, com taxa média de crescimento anual (AAGR) de 14,2%. Os microprocessadores e
microcontroladores estão liderando esse mercado, seguidos por memórias e chips DSP [8]. A
Figura 1.2 mostra o faturamento gerado por hardware embarcado de acordo com o domínio de
aplicação.
Figura 1.2: Faturamento gerado por hardware embarcado. Fonte: [8]
5
Analogamente ao hardware, o mercado de software embarcado cresce acentuadamente,
sendo a taxa média estimada de crescimento anual entre 2005 e 2009 de 16% [8]. A fig. 1.3
ilustra forte crescimento do desenvolvimento de software em todos os setores, sendo os mais
proeminentes os de telecomunicações, automação e automotivo, nos quais o uso de software
embarcado terá destaque como, por exemplo, em telefones celulares, que cada vez possuem mais
funcionalidades.
Figura 1.3: Faturamento gerado por software embarcado. Fonte: [8]
Um mercado considerado extremamente promissor é a robótica para fins de
monitoramento, tanto com o propósito de segurança quanto coleta de dados ambientais [9][10],
entre outras aplicações. Para tal, é comum a coleta e envio de imagens para posterior análise ou
checagem em um computador central.
1.1 Objetivos do Trabalho
Este projeto tem como objetivo principal a maior familiarização do autor com o
desenvolvimento de sistemas embarcados por meio da utilização de microprocessadores e
desenvolvimento de software específico para eles. Terá foco a comunicação em rede entre
sistemas embarcados, utilizando conectividade tanto com fio (Ethernet) como sem fio (Bluetooth),
sendo dada, porém, maior ênfase a essa última. Para o desenvolvimento dos sistemas embarcados,
são utilizadas duas placas com processador Z-World Rabbit 3000, de 8 bits, específicos para
6
sistemas embarcados, possuindo conectividade Ethernet, memória com sistema de arquivos FAT,
e módulo para conectividade Bluetooth, adquirido à parte.
A meta final deste trabalho é o desenvolvimento de softwares para sistemas embarcados
capazes de armazenar imagens e transmiti-las utilizando Bluetooth, além de um protocolo para o
envio dessas imagens. A fonte primária das imagens e o destino final delas serão, a princípio,
dois PCs comuns, sendo, portanto, necessária também comunicação Ethernet entre eles e os
sistemas embarcados. Mais tarde, planeja-se utilizar processadores Nios II, também disponíveis
no Laboratório de Sistemas Embarcados da USP de São Carlos, por eles terem conectividade
Ethernet e serem mais apropriados para controle embarcado.
No futuro, existe a possibilidade de utilização deste trabalho em um projeto cujo objetivo
é o monitoramento de residências por meio de imagens obtidas por robôs, que poderiam ser
verificadas por meio de telefones celulares, ou mesmo utilizadas para identificação de invasores.
Este projeto está sendo planejado por diversos pesquisadores do Instituto de Ciências
Matemáticas e de Computação da USP, sendo coordenado pelo professor Eduardo Marques.
1.2 Organização da Monografia
Na seção seguinte, são descritos brevemente os conceitos básicos de sistemas
embarcados, como a polêmica definição do que é um sistema embarcado. Ainda nessa seção,
algumas características da tecnologia Bluetooth são descritas, enfatizando-se a comunicação. Por
fim, é apresentado o processador Rabbit 3000 e seu kit de desenvolvimento.
Na seção 3, são descritas as atividades realizadas e os vários problemas que surgiram
durante o desenvolvimento do trabalho. São discutidos, além disso, os métodos e resultados
obtidos.
Finalmente, a seção 4 traz uma conclusão a respeito do projeto realizado e apresenta
algumas considerações finais.
7
2. Revisão Bibliográfica
A seguir, serão apresentados, de maneira sucinta, alguns conceitos e terminologias básicas
que proverão um melhor entendimento das atividades realizadas neste trabalho.
2.1 Sistemas Embarcados
Um sistema embarcado é um sistema computacional no qual o computador está
completamente dedicado ou encapsulado pelo dispositivo ou sistema que ele controla. É aplicado
à solução de um determinado problema, sendo capaz de realizar, em geral, poucas tarefas, ao
contrário de computadores com propósito geral, como um computador pessoal (PC) doméstico
[11].
A definição de sistema embarcado, entretanto, é muito fluída e difícil de estabelecer, uma
vez que acompanha os avanços da tecnologia e o constante decréscimo de custos de componentes
computacionais. As definições mais comuns de um sistema embarcado são descritas a seguir
[1][12].
● Sistemas embarcados são mais limitados quanto à funcionalidade do hardware e/ou
software que um PC.
● Um sistema embarcado é projetado para desempenhar uma função específica.
● Um sistema embarcado é um sistema computacional de qualidade mais alta e maior
confiabilidade que outros tipos de sistemas computacionais.
Todas essas definições são válidas, porém nem sempre verdadeiras. No caso da primeira
definição, muitas vezes hardware ou software encontrados em PCs tanto do presente quanto do
passado são adaptados em sistemas embarcados mais complexos. Quanto à segunda definição,
existem hoje PDAs e telefones celulares capazes de desempenhar uma grande variedade de
funções. Finalmente, um sistema embarcado pode realmente ter mais qualidade e maior
confiabilidade, principalmente quando se trata de aplicações diretamente relacionadas à
segurança, como um sistema de controle de freio em um veículo, ou alguma aplicação médica,
como monitores cardíacos. O mesmo não ocorre, porém, em jogos eletrônicos ou telefones
8
celulares, nos quais uma pane é uma inconveniência, mas não uma situação que envolve risco de
morte.
Como o sistema embarcado é dedicado para tarefas específicas, os engenheiros projetistas
podem aperfeiçoá-lo melhor, reduzindo o tamanho e custo do produto. Sistemas embarcados são
freqüentemente produzidos em massa, beneficiando-se da economia de escala.
O software desenvolvido para um sistema embarcado é comumente chamado firmware, e
é armazenado em chips de memória somente para leitura (ready-only) ou em chips de memória
Flash, sendo eles geralmente de baixa capacidade. Dispositivos como discos rígidos ou leitores de
CDs são raramente usados.
Um sistema embarcado pode tanto não ter interface com o usuário quanto ter interfaces
similares aos computadores de mesa comuns, como ocorre em PDAs, por exemplo. Sistemas
embarcados simples, porém, usam botões, LEDs e visores pequenos para dígitos e/ou caracteres.
Processadores embarcados podem ser divididos em duas categorias, microprocessadores e
microcontroladores. Enquanto o primeiro incorpora em um circuito integrado apenas as funções
de uma unidade central de processamento (CPU), o segundo tem outros periféricos integrados no
chip, além da CPU.
Ao contrário do mercado para computadores desktop, que estão limitados a poucas
arquiteturas competidoras, há muitas arquiteturas diferentes para sistemas embarcados. Os
sistemas embarcados classificados como “simples” utilizam processadores de 8 bits já
considerados ultrapassados quanto ao desempenho, mas que se adequam às tarefas mais
simples[11]. Processadores como o Z-80, 8085 e 6.800 são exemplos de processadores de 8 bits.
Existem também sistemas simples baseados em processadores de 4 bits, mas são muito raros. Os
sistemas considerados simples também empregam CPUs de 16 bits, como o 8086. Esses
processadores simples, de 4, 8 ou 16 bits, são empregados em controles pequenos como sinais de
trânsito, alguns instrumentos médicos, controle de temperatura, etc.
Utilizam-se processadores comparáveis aos das famílias 386 e 486 em sistemas
embarcados de complexidade média, como pontos de venda, computadores de bordo, etc. Já os
sistemas sofisticados utilizam CPUs comparáveis às utilizadas em desktops [11]. Empregam-se
esses processadores em sistemas dedicados multimídia, na automação industrial e de centrais
telefônicas, entre outras aplicações.
9
Atualmente, 75% dos processadores embarcados de 32 bits são ARM [13], devido
principalmente ao seu baixo consumo de energia, que faz deles particularmente apropriados para
dispositivos portáteis. De fato, quase todos os telefones celulares e PDAs usam processadores
ARM.
2.2 Bluetooth
Denominamos Personal Area Network (PAN) uma rede formada por dispositivos, como
telefones celulares e PDAs, muito próximos ao usuário. Seu alcance geralmente é de poucos
metros e é tecnologicamente similar à LAN (Local Area Network), diferindo-se apenas pela
pouca capacidade de crescimento e pela utilização doméstica.
Bluetooth, também conhecido como IEEE 802.15.1, é uma especificação industrial aberta
(royalty-free) que está se tornando muito popular [14] em personal area netoworks sem fio
(WPANs) de topologia ad hoc. É uma tecnologia utilizada para conexão e troca de informações
entre dispositivos como telefones celulares, PDAs, laptops, câmeras digitais, PCs, entre uma
infinidade de outros dispositivos. O nome Bluetooth tem origem em um rei dinamarquês
chamado Harald Blåtand (Bluetooth em inglês), que unificou a Dinamarca e a Noruega no
século X. Daí percebe-se a principal finalidade da tecnologia: unificar a comunicação entre
dispositivos.
O padrão Bluetooth utiliza sinais de rádio em ondas curtas e é considerado seguro e de
baixo custo [15]. Há chipsets, como o BRF6300, da Texas Instruments, que custam menos de
US$ 5.0 [16]. Destacam-se também sua robustez, baixa complexidade e baixo consumo de
energia. A tecnologia Bluetooth é usada na substituição de cabos para conexão entre dispositivos,
como por exemplo, PCs, impressoras e teclados. Outras aplicações possíveis podem ser o
compartilhamento e sincronização de dados entre dispositivos conectados e o acesso à Internet
por meio de outros dispositivos como telefones celulares, entre muitas outras.
Seu desenvolvimento teve início em 1994 pela Ericsson, e, a partir de 1998, pelo
Bluetooth Special Interest Group (SIG), consórcio inicialmente estabelecido pela Sony, Ericsson,
IBM, Intel, Toshiba e Nokia. Hoje esse consórcio inclui mais de 4000 empresas. A aceitação
inicial pelo mercado foi lenta, mas agora está começando a se tornar predominante. Os preços
estão em queda e cada vez mais dispositivos oferecem esse tipo de conexão.
10
Características
A tecnologia Bluetooth é um padrão de transmissão via rádio especialmente desenvolvido
para baixo consumo de energia, possuindo também um microchip emissor-receptor de baixo
custo. Os chips têm excelentes recursos visando economia de energia, pois há alteração de
maneira automática ao modo de baixa potência (estado HOLD, no qual a corrente média é de 30
µA) quando o volume de tráfego diminui ou pára. Seu raio de alcance varia de 1 metro até 100
metros, de acordo com a classe de potência, como mostra a Tabela 2.1.
Classe Potência Raio de Alcance (aprox.)
Classe 1 100 mW ~100 metros
Classe 2 2,5 mW ~10 metros
Classe 3 1 mW ~1 metro
Tabela 2.1: Raio de alcance de acordo com a classe de potência. Fonte: [5].
A maioria dos dispositivos Bluetooth se encontra na Classe 2. Alguns dispositivos, como
dongles que podem ser adicionados a laptops, são Classe 1, e têm raio de alcance comparável ao
da rede Wi-Fi. Na realidade, no caso do Bluetooth, curto raio de alcance é um benefício, uma
vez que reduz as chances de interferência com outros dispositivos localizados em área próxima.
Bluetooth é direcionado tanto para aplicações de dados quanto de voz, sendo capaz de
penetrar objetos sólidos. Opera na faixa ISM (industrial, scientific, medical), centrada em 2,45
GHz, que era anteriormente reservada a alguns grupos de usuários profissionais, mas que foi
aberta mundialmente para uso comercial [17]. No Brasil, de acordo com a resolução 305 da
Anatel [18], a faixa ISM varia de 2400 a 2483,5 MHz, como ocorre nos Estados Unidos. Na
maior parte da Europa a mesma banda também está disponível. No Japão, a faixa varia de 2400 a
2500 MHz.
A taxa de transmissão de dados é de até 1 Mbps para as versões 1.0 e 1.2 e de 3 Mbps
para a versão 2.1. Tecnicamente a versão 2.1 teria consumo maior de energia, mas as taxas de
transferência três vezes maiores reduzem o tempo de transmissão, efetivamente reduzindo o
consumo à metade do consumido pelas versões 1.0 e 1.2 (assumindo tráfegos de dados iguais).
11
Conexão entre Dispositivos Bluetooth
A tecnologia Bluetooth visa à criação de um sistema de comunicação ad hoc, no qual não
há diferença entre as estações base e terminais, ao contrário do que ocorre nas redes
convencionais de sistemas de telefonia celular [17]. Além disso, em ambientes Bluetooth é
comum a coexistência de diversas conexões ad hoc na mesma área sem qualquer coordenação
mútua entre os dispositivos. As diferenças entre os ambientes citados podem ser ilustradas pela
Figura 2.1.
Figura 2.1: Topologias para a) Sistema de telefonia celular convencional no qual os quadrados representam as
estações base estacionárias; b) Sistema convencional ad hoc; c) Sistema ad hoc utilizado na especificação
Bluetooth. Fonte: [17].
Durante o estabelecimento da conexão, um dispositivo deve agir como mestre e pode se
comunicar com até sete outros dispositivos que agem como escravos [5]. Esse tipo de rede
formada por até oito dispositivos, sendo um deles mestre e os outros escravos, é chamada
piconet. Note que na Figura 2.2., item c, há o estabelecimento de cinco piconets.
12
Em um dado tempo, os dados são transmitidos entre o mestre e um escravo, mas o mestre
alterna rapidamente entre escravos usando escalonamento round-robin. A transmissão
simultânea entre o mestre e diversos escravos é possível, mas não muito usada na prática.
Qualquer dispositivo pode assumir a posição de mestre ou escravo em um tempo definido.
A especificação do Bluetooth permite a conexão entre duas ou mais piconets,
estabelecendo assim uma scatternet, com alguns dispositivos podendo agir simultaneamente
como mestre e escravo em piconets diferentes, podendo ser dessa maneira nós compartilhados
(bridges) entre elas. Pode-se notar que, na Figura 2.2, item c, há duas scatternets.
Quando um nó participa de diferentes piconets há utilização da técnica time division
multiplexing (TDM). Isto é, um nó pode participar seqüencialmente de diferentes piconets, sendo
que este pode somente estar ativo em uma piconet por vez. Portanto quando um nó está ativo em
uma piconet ele fica inativo na outra (permanece no estado HOLD). Assim sendo, um nó pode
saltar de uma piconet para outra ajustando os seus parâmetros de comunicação (identificador do
mestre e informações de sincronismo). Uma situação problemática ocorre quando o nó deixa
uma piconet (salta para outra) onde ele é o mestre, suspendendo o tráfego dessa piconet até que
ocorra seu retorno. Um nó também pode ser escravo em várias piconets. No entanto, não é
possível que um nó seja o mestre em diferentes piconets ao mesmo tempo.
Qualquer dispositivo Bluetooth poderá transmitir as seguintes informações quando houver
requerimento:
• Nome do Dispositivo
• Classe do Dispositivo
• Lista de Serviços
• Informações Técnicas (como características do dispositivo, especificação do Bluetooth,
intervalo de clock, etc).
Quando um dispositivo deseja estabelecer uma conexão, mas não sabe quais dispositivos
estão em sua área de alcance, há a difusão de mensagens do tipo inquiry (busca) para encontrar
outros dispositivos aos quais serão feitas conexões, sendo que os dispositivos devem retornar um
pacote FHS (frequency hopping-synchronization) contendo seu identificador e informações para
o sincronismo entre os dispositivos. Os dispositivos que respondem a uma mensagem de inquiry
utilizam uma temporização aleatória para enviar a resposta. O objetivo é evitar possíveis
13
colisões, quando mais de um dispositivo responder ao pedido. Se um dispositivo conhece o
endereço do dispositivo ao qual tentará se conectar, este sempre responderá a requerimentos de
conexão direta e transmitirá informações da lista acima se houver requerimento.
Os dispositivos que estão ociosos podem permanecer num estado de standby para
economizar energia. Contudo, periodicamente devem "acordar" para verificar se existe algum
outro dispositivo tentando se comunicar. Neste momento podemos dizer que a unidade está em
estado de scan.
Cada dispositivo tem um endereço único de 48 bits. Entretanto, esses endereços não são
geralmente mostrados durante as buscas – na prática são utilizados “nomes de Bluetooth”
(Bluetooth name), mais amigáveis aos usuários, e que podem ser definidos por eles. Esses nomes
também serão mostrados nas buscas de dispositivos. Algumas vezes são necessários programas
especiais para obtenção de mais informações sobre dispositivos remotos, uma vez que pode
haver dispositivos com mesmo Bluetooth name. Por exemplo, telefones têm, em geral, nome
padrão definido como o nome do fabricante e o modelo.
Nos dispositivos Bluetooth há também um identificador de classe de 24 bits, que
especifica o tipo de dispositivo (telefone, smartphone, computador, fone de ouvido, etc), que
será transmitido quando outro dispositivo faz uma busca. Em alguns telefones essa informação é
traduzida em um pequeno ícone mostrado ao lado do nome do dispositivo.
Poderá haver também a transmissão de uma lista de serviços de um dispositivo se houver
requisição por outro dispositivo, o que inclui o nome do serviço e o canal utilizado. Esses canais
são virtuais e não têm relação com a freqüência da transmissão, sendo análogos às portas TCP.
Um dispositivo pode ter, portanto, múltiplos serviços idênticos. Dados técnicos usados para o
manejo da conexão também podem ser extraídos de um dispositivo.
2.3. Microprocessador Rabbit 3000
O processador Rabbit 3000 (Figura 2.2), de 8 bits, é derivado do Zilog Z80, que foi
utilizado em ampla escala tanto em desktops quanto computadores embarcados, além de sistemas
militares [19]. O Z80 e seus derivados compõem a família de processadores mais utilizada de
todos os tempos, dominando o mercado de 8 bits entre o fim da década de 1970 e meados da
década de 1980. Apesar de ser baseado no Z80, o Rabbit 3000 não é totalmente compatível
14
quanto à programação, uma vez que diversas instruções foram adicionadas ou removidas para
aumento de desempenho [19]. O Rabbit 3000 foi criado pela Rabbit Semiconductor, que é uma
empresa subsidiária da Z-World.
Figura 2.2: Processador Rabbit 3000. Fonte: [19].
Destacam-se nesse processador o alto desempenho, sendo o clock de 55.5 MHz, e o
suporte de software direto para 1 MB de espaço de código e dados. Quanto às interfaces de
entrada e saída, há seis portas seriais com IrDA (comunicação sem fio por infravermelho), além
de sete portas paralelas de 8 bits, totalizando 56 bits de entrada e saída.
Este processador foi desenvolvido especificamente para controle de sistemas embarcados.
Por isso, uma de suas características principais é a alta eficiência enérgica, possuindo modos de
“dormência” com baixa potência. Além disso, possui temporizador watchdog, de alta
confiabilidade, essencial em muitos sistemas embarcados. Nesse processador há suporte para
conectividade Ethernet, sendo suportados conjuntos de protocolos de comunicação como
TCP/IP, IrDA, SDLC/HDLC, Async, SPI e I²C.
A empresa Rabbit Semiconductor também disponibiliza diversos kits de desenvolvimento
com o processador incorporado, que contém muitas ferramentas de software e hardware
necessárias para o desenvolvimento ágil de aplicações. O kit RabbitCore RCM3360 (Figura 2.3),
que foi utilizado no projeto, tem processador Rabbit 3000 de 44 MHz, Ethernet 10/100Base-T,
512K de memória Flash, 512K de memória SRAM de execução de programas, 512K de
memória SRAM de dados, 50 bits de entrada e saída compartilhados por seis portas seriais, além
15
de suporte a cartões de memória de até 128 MB, vendidos separadamente, que estão formatados
no sistema de arquivos FAT. Este kit tem custo aproximado de 400 dólares [20].
Figura 2.3: RabbitCore RCM3360 utilizado no projeto.
Nos kits de desenvolvimento Rabbit está incluso um compilador C proprietário chamado
Dynamic C, que permite o desenvolvimento de aplicativos complexos em linguagem C para
sistemas embarcados. O ambiente Dynamic C, diferentemente do padrão ANSI C, não utiliza
arquivos header, usando em seu lugar arquivos de biblioteca com os protótipos embarcados
como comentários. Por isso, são necessárias modificações para portabilidade em outros
ambientes.
É possível incorporar ao RabbitCore diversos módulos adquiridos separadamente, como o
EmbeddedBlue 506, que torna possível a comunicação sem fio por meio de Bluetooth.
2.4. Análise Crítica
Considerando a natureza específica do projeto e sua finalidade, a busca de trabalhos
relacionados em outras fontes literárias não faz muito sentido, ainda mais se considerarmos a
escassez ou mesmo inexistência dos mesmos.
16
Para suprir a crescente demanda por ferramentas para o desenvolvimento de sistemas
embarcados, estão surgindo no mercado kits como o descrito acima, que facilitam muito o
desenvolvimento, além de tornarem possível a conclusão, em tempo aceitável, de projetos como
este. A rapidez de desenvolvimento ou tempo do desenvolvimento até a comercialização de um
produto (time-to-market) é extremamente importante, principalmente nos meios industriais em
que os produtos se tornam rapidamente obsoletos, como o de sistemas embarcados.
Considerando a acirrada concorrência no meio empresarial, poucos meses de atraso podem
significar o fracasso de um produto.
Dada a crescente preocupação com segurança tanto doméstica quanto empresarial,
associada à demanda por mecanismos capazes de fazer o monitoramento desses ambientes, a
disponibilidade dos dispositivos e técnicas descritas acima motivou o desenvolvimento deste
projeto, que poderá ser incorporado a um sistema de monitoramento doméstico por robôs que
terão um RabbitCore responsável pelo envio de imagens, entre outros dados, por meio do
Bluetooth, a outros robôs ou um computador central, que poderá por sua vez se comunicar com o
meio externo por meio da Internet.
A escolha das técnicas, dispositivos e padrões descritos se deu quase que exclusivamente à
disponibilidade deles nos laboratórios do ICMC da USP de São Carlos. Apesar de serem
apropriados à finalidade proposta, há muitos outros processadores, kits, e padrões de
comunicação sem-fio adequados para o desenvolvimento deste projeto. Por exemplo, talvez seria
mais apropriada ao projeto a especificação de comunicação sem-fio ZigBee, muito similar ao
Bluetooth, porém mais simples e barata, tendo vida de bateria muito mais longa (10 anos,
contrastando com o Bluetooth, que precisa de recargas freqüentes), porém com alcance um pouco
menor (até 70 m) e menor largura de banda (250 Kbits/s) [21]. O fato de haver disponibilidade de
apenas módulos Bluetooth foi um fator limitante quanto à comparação dos padrões. Outra
limitação foi o número de kits Rabbit e Bluetooth disponíveis, sendo apenas dois. Dessa forma,
não foi possível ligar mais que duas estações Bluetooth para o estabelecimento de uma scatternet,
por exemplo.
17
3. Estado Atual do Trabalho
Este trabalho foi motivado pela possibilidade do mesmo ser incluso no futuro em um
projeto de pesquisa envolvendo o monitoramento de ambientes utilizando robôs, que está em
fase de planejamento, sendo atualmente coordenado pelo professor Eduardo Marques, tendo a
participação de outros pesquisadores.
Considerando que, geralmente, a atividade de monitoramento se dá por recepção e análise
de imagens, este projeto se focará nesse aspecto, no que se refere aos dados a serem transferidos.
Supõe-se que haverá um computador central que fará a comunicação com o mundo exterior,
utilizando, por exemplo, a Internet. Dessa forma, uma pessoa poderia, por exemplo, visualizar
fotos ou checar a segurança de sua residência por meio de um telefone celular conectado à
Internet.
Como não havia disponibilidade dos robôs durante o desenvolvimento deste trabalho,
foram utilizados PCs comuns para a obtenção de imagens, que no caso já estariam no próprio
disco rígido. Cada PC estaria conectado através de uma conexão Ethernet a uma placa com o
processador Rabbit 3000 que, por sua vez, teria um módulo EmbeddedBlue 506 responsável pela
comunicação sem fio através de Bluetooth. Dessa forma, um PC e uma placa Rabbit formariam
uma entidade que poderiam representar um robô, pelo menos no que se refere à comunicação,
uma vez que são utilizados processadores Rabbit para a transmissão das imagens.
Assim, um computador, que faria a captação das imagens, envia, através da conexão
Ethernet, uma imagem a sua respectiva placa Rabbit, que por sua vez a armazena em seu cartão
de memória. Quando a imagem terminar de ser recebida, uma placa se comunicará com a outra,
enviando a imagem por meio da conexão sem fio. Após isso, a placa receptora finalmente envia
a imagem que estará no módulo FAT ao seu respectivo PC, que fará a armazenagem da mesma.
Para que isso seja feito com sucesso, são necessários mecanismos para sincronização dos
elementos que fazem o envio e a recepção, além de um protocolo para o envio correto das
imagens.
Após a utilização de PCs para a tarefa de obtenção e destino final das imagens, será
utilizado o processador Nios II da Altera, por ele ser mais apropriado que um PC para o
18
desenvolvimento de um robô ou um sistema embarcado. Da mesma forma que o PC, os Nios II
estariam conectados às placas Rabbit através de cabos Ethernet.
3.1 Descrição das Atividades Realizadas
Inicialmente, foi preciso se familiarizar com os processadores Rabbit, além do ambiente
Dynamic C, que é um compilador C, editor, depurador, além de desempenhar o carregamento de
programas na placa através da porta serial. A linguagem C do Rabbit 3000, apesar de ser
diferente do padrão ANSI C quanto aos arquivos de header e utilização de bibliotecas, não
consistiu em obstáculo considerável. Nessa fase da pesquisa, deu-se maior ênfase ao estudo dos
periféricos de entrada e saída na placa Rabbit, como, por exemplo, os LEDs, os switches
(pequenos botões na placa), e o visor de cristal líquido. Estudaram-se, principalmente, os
comandos em C envolvidos com essas interfaces.
Após a familiarização com o processador e seu ambiente de trabalho, foi necessário
instalar as placas Bluetooth, EmbeddedBlue 506 (EB506 – Figura 3.1), em duas protoboards
próprias para os módulos RCM3360. Para isso, a leitura do manual do EB506 foi muito útil.
Sendo a instalação diferente para cada modelo do RabbitCore, foi necessário identificar o
modelo exato dele, o que constituiu uma dificuldade inesperada. No invólucro do processador o
modelo é descrito como RCM3300 e, para esse modelo é necessário cortar um pino na placa
Bluetooth para evitar conflitos de acesso às portas seriais, o que inutilizaria as placas em outros
modelos do RabbitCore. Porém, como havia no manual do EB506 uma foto de cada RabbitCore
junto às instruções de procedimento de instalação, foi observado que os RabbitCore disponíveis
se assemelhavam à foto do modelo RCM3360, para o qual a instalação da placa não demanda a
remoção de pinos. Apesar de não haver descrição do modelo em lugar algum, exceto no
invólucro, a instalação foi feita como se fosse para o modelo RCM3360, baseando-se
unicamente pela identificação visual, por receio de haver danificação das placas pelo corte
indevido de pinos. Os jumpers da placa foram configurados para usar a porta serial F do
RCM3360 (uma das seis portas seriais disponíveis), uma vez que a maioria das aplicações de
demonstração fornecidas junto ao EB506 pressupõe a utilização dessa porta.
19
Figura 3.1: EmbeddedBlue 506 utilizado no projeto.
Figura 3.2: Módulos RCM3360 e EB506 instalados em suas protoboards.
Estando cada EB506 instalado em sua respectiva protoboard, finalmente foram instalados
os RabbitCore, sendo o resultado final mostrado na Figura 3.2. Note que em uma protoboard há
um visor de cristal líquido com um conjunto de teclas, que tem a finalidade de prover interface
de entrada e saída junto ao usuário. No projeto, esse visor foi utilizado para informar quantos
bytes de cada imagem foram enviados por meio do Bluetooth.
20
Para a verificação do funcionamento das placas, utilizou-se o próprio HyperTerminal do
Microsoft Windows. Foi escrito um programa simples para o Rabbit que paralelamente lê dados
da porta serial de diagnósticos e os envia para o módulo EB506 e vice-versa. Dessa forma, como
mostra a Figura 3.3, foi possível testar o funcionamento dos módulos, através da utilização de
diversos comandos. Na foto, foram utilizados os comandos ver all, que retorna a versão do
módulo EB506 e get address, que retorna o endereço único de 48 bits do módulo Bluetooth.
Figura 3.3: Teste de funcionamento dos módulos EB506 por meio do HyperTerminal.
Desenvolvimento Este projeto foi desenvolvido, em sua maior parte, no Laboratório de Sistemas
Embarcados no Campus 2 da USP de São Carlos. Isso se deveu à disponibilidade dos
equipamentos utilizados, como os microprocessadores Rabbit, além do próprio Nios II da Altera,
que será utilizado no lugar dos PCs em um estágio mais avançado do projeto.
Originalmente, definiu-se que a conexão Ethernet entre os PCs e o Rabbit seria feita de
maneira direta. Desse modo, tanto o Rabbit quanto o PC não estão conectados à Internet, sendo,
neste último, o DHCP desabilitado e o endereço IP e máscara da subnet definidos manualmente,
o que foi possível porque havia possibilidade de acesso em nível de administrador nos dois PCs
utilizados. A Figura 3.2 ilustra a topologia da rede no aspecto físico.
21
Figura 3.4: Topologia original da rede.
A primeira fase referente à implementação do projeto foi a criação de um aplicativo
“cliente” em Java que, executado no PC, é responsável pela conexão e envio de imagens ao
servidor executado no Rabbit. A Figura 3.5 mostra a janela principal do cliente, que no caso está
conectado ao servidor Rabbit e tem uma imagem carregada
Figura 3.5: Janela principal do cliente Java.
Simultaneamente ao desenvolvimento desse programa, foi desenvolvido no Dynamic C
um servidor para o recebimento das imagens pelas placas Rabbit e para o armazenamento dessas
imagens em seu módulo FAT. Não foi necessário formatar cada módulo FAT porque eles já
22
haviam sido utilizados anteriormente, tendo inclusive alguns arquivos armazenados. O servidor
basicamente procura por partições no módulo FAT e utiliza a primeira encontrada. Para que os
arquivos fossem enviados corretamente, definiu-se um protocolo simples, sem detecção e
correção de erros de envio, uma vez que o próprio TCP/IP é responsável por isso.
Primeiramente, o cliente envia ao servidor Rabbit o comando enviar, que indica que há um novo
arquivo para ser enviado, e desabilita o botão responsável pelo envio de mensagens até que o
cliente receba uma mensagem do servidor indicando que o arquivo foi recebido e armazenado.
Após isso, o nome do arquivo e seu tamanho em bytes são enviados, para que o servidor conheça
de antemão a quantidade de bytes que devem ser lidos e que farão parte do arquivo. Finalmente,
cada byte da imagem é enviado pelo cliente e é armazenado no servidor.
Para fins de teste do programa, diversos arquivos foram enviados, alguns deles no formato
de texto para facilitar esse teste, uma vez que está incluído entre os programas de exemplo do
módulo FAT um shell, que permite a visualização dos arquivos armazenados na memória e até a
impressão do conteúdo dos mesmos em tela, caso forem arquivos de texto. A figura 3.6 mostra a
tela do shell sendo executado na janela de interface de entrada/saída do Dynamic C. No caso,
utilizou-se o comando para listar todos os arquivos presentes na FAT.
Figura 3.6: Shell do módulo FAT.
Analogamente aos programas descritos, foram desenvolvidos outros dois, sendo um deles
executado na outra placa Rabbit, tendo como função a obtenção, através do Bluetooth, e
armazenamento de imagens transmitidas pela primeira placa. No caso, esse programa que recebe
a imagem, executado no Rabbit, é um cliente que se conecta por meio de Ethernet ao servidor
23
desenvolvido em Java, executado no PC, que fará a armazenagem final da imagem. A figura 3.7
mostra esse servidor, no caso com uma conexão Ethernet estabelecida com a placa Rabbit, tendo
recebido uma imagem. Diversos testes foram feitos para verificar se os arquivos enviados não
estavam corrompidos por meio de manipulação ou envio indevido de buffers, entre vários outros
problemas que surgiram. Colocou-se o cartão de memória FAT da primeira placa Rabbit nesta
segunda, para envio ao servidor Java dos diversos arquivos armazenados em testes anteriores.
Figura 3.7: Janela principal do servidor Java.
Após o desenvolvimento dos quatro programas descritos, o problema da comunicação
Ethernet entre cada PC e seu respectivo processador Rabbit foi resolvido. Faltou, porém, fazer a
comunicação Bluetooth entre ambos os Rabbit. Dessa forma, os programas a serem executados
nos Rabbit foram modificados para a implementação desta funcionalidade. Essa etapa provou ser
mais problemática que as anteriores, por motivos que são descritos posteriormente.
A conexão Bluetooth é cliente-servidor, como a Ethernet. O programa da placa que
recebeu a imagem do cliente Java é, no caso da conexão Bluetooth, um cliente, e o programa da
outra placa, o servidor. O endereço Bluetooth ao qual o cliente se conecta já é conhecido por ele
de antemão, obtido através do HyperTerminal, porém poderia ser descoberto utilizando-se o
comando lst, que faz a busca por dispositivos (inquiry). O protocolo utilizado para o envio de
imagens é o mesmo descrito anteriormente. Primeiro envia-se o comando enviar para indicar
que há um novo arquivo. Daí envia-se o nome dele e seu tamanho, para que o servidor saiba
24
quando o recebimento do arquivo chega ao fim. Não foi necessário programar métodos para
tratamento de erros de envio ou perdas de pacotes, pois a especificação Bluetooth é considerada
tão confiável quanto o TCP/IP [5].
Sendo a comunicação entre o processador Rabbit ao módulo EB506 feita pela porta serial,
é necessário haver uma distinção entre comandos e dados enviados. Para isso, o EB506 suporta
dois modos operacionais, o de comando e o de dados, que tiveram que ser levados em
consideração durante o desenvolvimento dos aplicativos.
Uma dificuldade inesperada que surgiu foi o advento da greve de funcionários e alunos da
Universidade de São Paulo, que tornou inviável a ida do autor ao Campus 2 da Universidade
pela falta de ônibus. Assim, os microprocessadores tiveram que ser retirados do Laboratório de
Sistemas Embarcados e levados para os laboratórios comuns utilizados pelos alunos de
graduação. Como não havia mais acesso de administrador, não era possível definir os endereços
IP e máscaras da subnet, criando assim a necessidade de se repensar quanto à topologia da rede.
Os programas executados nos Rabbit tiveram que ser alterados para usar os HUBs dos
laboratórios. Felizmente, como configurações de rede podem se tornar bastante complicadas, as
versões mais recentes do Dynamic C incluem configurações pré-definidas. Dessa forma, não
foram necessárias muitas alterações nos programas e a topologia final da rede pode ser ilustrada
pela Figura 3.8.
Figura 3.8: Topologia modificada da rede
25
Segurança
A especificação Bluetooth dá uma grande importância à segurança e dispõe de muitas
funcionalidades para provê-la. Como este projeto poderá ser utilizado em robôs domésticos com
fins de segurança, foi conveniente adicionar os seguintes mecanismos para evitar que
dispositivos estranhos se conectem aos módulos EB506:
• Criptografia – os módulos EmbeddedBlue disponibilizam criptografia de 56 bits.
• Senha – cada módulo Bluetooth pode ter uma senha definida para estabelecimento de
conexões. Dessa forma, somente clientes autorizados podem fazê-lo.
• Conexões fechadas – somente dispositivos previamente definidos como confiáveis
podem estabelecer conexões.
3.2 Resultados Obtidos
Durante todo o desenvolvimento do projeto foram realizados testes para verificação da
integridade dos arquivos transmitidos e várias falhas de programação foram sendo corrigidas
com o tempo, principalmente no que se refere à manipulação e transferência de buffers de dados.
A maior parte das imagens transmitidas teve sua integridade mantida no processo,
principalmente quando se tratavam de arquivos pequenos. Porém, algumas vezes verifica-se que
alguns bytes de dados se perderam no processo de comunicação Bluetooth, que é tão confiável
quanto o TCP/IP. Isto é, se algum dado é perdido, o mesmo será retransmitido automaticamente.
Esse problema chegou a ser muito comum, a ponto de ser impossível transmitir um arquivo
grande. Depois de muita pesquisa, foi determinado que a causa desse problema era o tamanho
excessivo do buffer de envio, 512 bytes, uma vez que o buffer UART do RabbitCore é de apenas
31 bytes. Mesmo após a correção desse problema, alguns arquivos infelizmente ainda chegavam
corrompidos. Mais testes e correções ainda devem ser feitos, atividades que se tornaram difíceis
de realizar, dadas as presentes circunstâncias decorrentes da greve na USP.
Apesar desses problemas e outros que surgiram, o objetivo inicial do trabalho foi
realizado. Isto é, conseguiu-se transmitir arquivos de um PC para outro, utilizando
microprocessadores com módulo Bluetooth como intermediários.
26
3.3 Dificuldades e Limitações
Uma limitação considerada de certa forma frustrante é a disponibilidade de apenas dois
microprocessadores Rabbit e suas respectivas placas Bluetooth no Laboratório de Sistemas
Embarcados. Isso limitou as possibilidades de desenvolvimento e teste do software, tornando
impossível, por exemplo, o estabelecimento de scatternets.
Alguns problemas foram encontrados nos módulos EmbeddedBlue 506, que, em conjunto,
causaram grande atraso no cronograma do projeto. Por exemplo, os módulos Bluetooth só
poderiam se “enxergar” e estabelecer conexões se as duas placas estivessem muito próximas, a
30 cm de distância. Isso foi um problema sério, porque havia apenas dois computadores no
laboratório que tinham porta serial e, por conseguinte, as placas tiveram que ser conectadas a
eles, pois os programas do Dynamic C eram descarregados do PC até à memória flash do
processador através da porta serial. Estes dois computadores estavam a pelo menos dois metros
de distância, então fios tiveram que ser estendidos. Contudo, como a documentação do
EmbeddedBlue especifica que o módulo suporta distâncias de cerca de 10 metros sem auxílio de
antena externa, durante muito tempo supôs-se que o problema referente à conexão era outro, e
não a distância propriamente dita. Além disso, o programa de exemplo de conexão entre
módulos EmbeddedBlue, que veio junto ao CD dos mesmos, não funcionava nos RabbitCore
3360 utilizados, apesar de serem compilados no Dynamic C e carregados normalmente nos
processadores. Ademais, a documentação interna do programa especificava erroneamente que
aquele programa poderia ser executado no RCM3360. Após a análise do código-fonte, verificou-
se que as funções de acesso aos dispositivos de entrada e saída, como LEDs e switches da
protoboard, estavam incorretas no caso do RabbitCore em questão, sendo posteriormente
corrigidas. Este problema, em conjunto com o primeiro, causou considerável atraso no projeto.
Outras dificuldades encontradas são relacionadas à manipulação e transferência de buffers
de dados, e alguns problemas foram corrigidos para evitar que dados fossem perdidos ou
enviados em excesso, sobrecarregando as próprias capacidades do RCM3300. Eventualmente,
vários erros foram corrigidos, embora alguns ainda persistam.
Finalmente, o desenvolvimento deste projeto foi prejudicado pela greve dos alunos e
funcionários da USP de São Carlos, principalmente por causa da indisponibilidade de ônibus
para o campus 2, forçando o uso de laboratórios de graduação comuns no campus principal, o
27
que causou alguns transtornos, porque os programas precisaram ser modificados para
comunicação entre um PC e seu processador Rabbit por meio de HUB. Além disso, o software
Dynamic C teve que ser copiado para os PCs utilizados no momento, e os cabos Ethernet de dois
outros computadores tiveram que ser utilizados nos RabbitCore. Dessa maneira, quatro
computadores eram ocupados por uma só pessoa, o que causou certo atrito com outros
estudantes e com o próprio STI responsável pelo laboratório. Argumentou-se que, como as
turmas às quais pertencem esses estudantes decidiram entrar em greve, eles não deveriam usar os
computadores, que a priori são utilizados para fins de estudo e foi recomendado que os mesmos
se reunissem no centro acadêmico para discussão a respeito dos rumos da greve. Infelizmente,
essas sugestões não foram bem recebidas.
28
4. Conclusões e Trabalhos Futuros
Apesar de este trabalho ter cumprido seu propósito original, certas limitações externas
como cronograma curto e falta de acesso a laboratórios impediram o uso dos processadores Nios
II, que são mais apropriados para controle embarcado de robôs, no lugar dos PCs. Inicialmente,
planejou-se implementar o sistema utilizando PCs, principalmente pela facilidade de
programação e suporte a imagens. Como os processadores Nios II têm conectividade Ethernet, o
esquema geral do sistema permaneceria o mesmo. Espera-se, contudo, que este trabalho possa ter
alguma utilidade no futuro em projetos de robôs de monitoramento atualmente planejados nesta
Universidade. Devido ao curto raio de alcance obtido na prática, testes deverão ser feitos
utilizando uma antena externa para verificar a viabilidade da utilização dos módulos Bluetooth
no projeto.
Considerando a crescente popularidade de sistemas embarcados nesta era de computação
ubíqua, é importante que o aluno tenha algum tipo de contato com a computação embarcada, e
foi particularmente útil e gratificante ter cursado as disciplinas da ênfase em sistemas
embarcados incorporada ao curso de Ciências de Computação, sobretudo as que se focaram no
aspecto prático de projeto e desenvolvimento, como Co-Projeto em Hardware/Software e Projeto
e Implementação de Sistemas Embarcados, nas quais houve uma certa familiarização com os
processadores Nios II e Rabbit 3000. Foi também uma experiência interessante o contato com a
tecnologia Bluetooth, pelos problemas e peculiaridades inerentes à comunicação sem fio.
Creio que o currículo do curso de Ciências de Computação na USP de São Carlos é
adequado para a formação de um profissional que atua na área. No entanto, disciplinas
relacionadas à programação concorrente focada em baixa granularidade deveriam ter tido maior
atenção, principalmente por causa da crescente popularização dos processadores multi-core.
29
5. Referências
[1] NOERGAARD, T. "Embedded Systems Architecture: A Comprehensive Guide for Engineers
and Programmers". Newnes, 2005.
[2] WEISER, M.; BROWN, J.S.. "The Coming Age of Calm Technology". Xerox PARC,
Outubro de 1996.
[3] GABRIEL, K.. "Engineering Microscopic Machines", Scientific American, Setembro de 1995.
[4] WEISER, M.; "The Computer for the Twenty-First Century", Scientific American, Setembro
de 1991.
[5] Bluetooth Core Specifications v2.0 + EDR, Novembro de 2004.
[6] National Academy of Sciences. "Embedded, Everywhere: A Research Agenda for Networked
Systems of Embedded Computers", National Academy Press, 2001.
[7] FISHER, J.A.; FARABOSCHI, P.; YOUNG, C.; "Embedded Computing", Morgan
Kaufmann Publishers, 2005.
[8] Business Communications Company Report, "Future of Embedded Systems Technology",
Junho de 2005.
[9] Inovação Tecnológica, "Robôs para monitoramento do meio-ambiente", Outubro de 2003.
Disponível em < www.inovacaotecnologica.com.br/noticias/noticia.php?artigo=010180031028>.
Acesso em Junho de 2007.
[10] BOYD, J.; "Robot guard will smoke out villains", New Scientist , Agosto de 2004.
Disponível em < http://www.newscientist.com/article.ns?id=dn6241>. Acesso em Junho de 2007.
[11] ZELENOVSKY, R.; MENDONÇA, A.; "Introdução aos Sistemas Embutidos", Developers'
Magazine, p. 60 - 62, Setembro de 1999.
[12] BERGER, A. S. "Embedded Systems Design: An Introduction to Processes, Tools, &
Techniques". CMP Books, 2002.
[13] ALLISON, A.; Merchant Market RISC Shipments in 2001, January 2002.
[14] TWICE Magazine; "Bluetooth Popularity Is On The Rise", 2006.
[15] MAHMOOD, S.F.; "Wireless Personal Area Networks", Dissertação de Mestrado,
University Of Bridgeport, 2004
[16] TI.com; "Bluetooth Technology: BlueLink 5.0 Platform: BRF6300" Disponível em
<http://www.ti.com/bluelink_5>. Acesso em maio de 2007.
30
[17] HAARTSEN, J.; "The Bluetooth Radio System", IEEE Personal Communication, pp. 28-36,
Fevereiro de 2000.
[18] FLEMING, W.J.; ARANHA, H.; "Enlaces, Antenas e Propagação para Internet Sem Fio",
Abranet, Abril de 2005.
[19] Rabbit 3000 Microprocessor User's Manual, Novembro de 2006. [20] Rabbit Semiconductor. Disponível em <http://www.rabbitsemiconductor.com>. Acesso em
maio de 2007.
[21] ZigBee Alliance. Disponível em <http://www.zigbee.org>. Acesso em maio de 2007.