25
UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO Comparação de plataformas para a programação de nós para Redes de Sensores sem Fio Lucas Bortolaso Torri Trabalho de conclusão de curso apresentada como parte dos requisito para obtenção do grau Bacharel em Ciências da Computação Florianópolis – SC 2008/1

UNIVERSIDADE FEDERAL DE SANTA CATARINA … · Prof. Dr. Daniel T. Cobra Prof. Dr. Mário Antônio Ribeiro Dantas. ... como por exemplo desligar o sinal de rádio por um ... Java Distributed

Embed Size (px)

Citation preview

UNIVERSIDADE FEDERAL DE SANTA CATARINA

DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA

BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO

Comparação de plataformas para a programação de nós para Redes de

Sensores sem Fio

Lucas Bortolaso Torri

Trabalho de conclusão de curso apresentada como parte dos requisito para obtenção do grau

Bacharel em Ciências da Computação

Florianópolis – SC

2008/1

Lucas Bortolaso Torri

Comparação de plataformas para a programação de nós para Redes de Sensores sem Fio

Trabalho de conclusão de curso apresentada como parte dos requisito para obtenção do grau

Bacharel em Ciências da Computação

Orientador: Prof. Dr. Antonio Augusto Medeiros Frohlich

Banca Examinadora

Prof. Dr. Carlos Barros Montez

Prof. Dr. Daniel T. Cobra

Prof. Dr. Mário Antônio Ribeiro Dantas

Resumo

Redes de sensores sem fio são agrupamentos de dispositivos, conhecidos como nós senso-res, com a capacidade de comunicação por rádio frequência e dotados de sensores capazes demonitorar os fenômenos acontecidos no ambiente a sua volta. Dessa forma, é possível atravésdas informações coletadas por esses nós, estudar o meio em que estão inseridos e assim tomardecisões para influenciar o mesmo.

Existem diferentes plataformas disponíveis para a construção dessas redes, cada uma comseus atributos de hardware e software. Neste trabalho, será feito um estudo de algumas dasprincipais plataformas disponíveis para nós sensores, assim como dos recursos e ferramentasdisponíveis, avaliando através de um trabalho prático as vantagens apresentadas por cada umadelas na construção de redes de sensores fios.

Palavras-chave: redes de sensores sem fio.

Abstract

Keywords: wireless sensor networks.

Sumário

Lista de Tabelas

Lista de Figuras

1 Introdução p. 8

2 Nós Sensores p. 10

2.1 Mica mote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 10

2.1.1 EPOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11

2.2 Sun SPOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11

3 Exemplo de uso de um nó sensor p. 13

3.1 IEEE 1451 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 13

3.2 JDDAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 13

3.3 Aplicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 14

4 Implementação p. 22

5 Comparação p. 23

6 Conclusão p. 24

6.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24

Referências Bibliográficas p. 25

Lista de Tabelas

Lista de Figuras

2.1 Blocos básicos de um nó sensor . . . . . . . . . . . . . . . . . . . . . . . . p. 11

2.2 Mica mote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 11

2.3 Sun SPOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 12

3.1 Escopo da JDDAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 13

3.2 Coleta de dados com Sun SPOT e JDDAC . . . . . . . . . . . . . . . . . . . p. 21

8

1 Introdução

A miniaturização dos micro-processadores, juntamente com o aumento de sua capacidade

computacional e da redução dos seus custos de fabricação, permitiu que os mesmos pudessem

ser integrados a diversos dispositivos de baixo custo e consumo de energia (4). Esse acon-

tecimento, estabeleceu uma enorme pervasividade da tecnologia dos computadores em nosso

cotidiano, mudando radicalmente a forma de interpretação e interação com o nosso ambiente.

Um dos mercados que se beneficiou com a evolução do hardware foi a área de redes de sen-

sores sem fio (RSSF), que estuda a utilização de sistemas autônomos formados por dispositivos

micro-processados, com a capacidade de se comunicarem através de sinais de rádio frequência e

que possuem sensores capazes de traduzir as condições do ambiente físico em que se encontram.

Esses dispositivos, conhecidos como nós sensores, podem ser instalados em diferentes lugares

de um espaço físico, monitorando os fenômenos que ocorrem nesse meio, permitindo assim,

utilizar as informações coletadas para entender e tomar decisões adequadas sobre o ambiente

estudado.

Segundo a revista Technology Review, as RSSF são consideradas uma das 10 tecnologias

mais promissoras do mundo (12). O monitoramento através dessa tecnologia foi primeiramente

usado para fins militares, mas hoje eles são empregados em diferentes tipos de aplicações, como

por exemplo monitoramento de Habitats, sistemas de observação e previsão do tempo, área da

saúde, entre outras aplicações comerciais, tornando essa uma área de natureza multidisciplinar

(2, 10, 13, 15). Dentre essas disciplinas, encontra-se a de Ciências da Computação, que é

responsável por solucionar uma grande quantidade de desafios que permitam explorar todo o

potencial dessas plataformas.

As RSSF trazem uma série de novos desafios a serem estudados, já que muitas vezes essas

redes devem operar por longos periodos de tempo, usando quantidades restritivas de energia,

limitando assim a capacidade de processamento e de transmissão de dados. Como o número de

aplicações possíveis é muito grande, cada uma com seus caracteristicas e necessidades, torna-

se difícil especificar requisitos gerais para as redes de sensores. Dessa forma, foram criadas

9

diversas plataformas para facilitar o desenvolvimento e criação das RSSF, cada uma introdu-

zindo novos conceitos, abstrações, formas de manipular dados e algoritmos, além de diversas

combinações de hardware (10).

O fator de homogeneidade é um ponto muito importante no design das redes de sensores,

já que ele afeta toda a complexidade do sistema. O intuito deste trabalho é estudar e avaliar

algumas das principais plataformas de desenvolvimento de redes de sensores sem fio e os bene-

fícios apresentandos por elas, estudando possibilidades de integração entre diferentes sistemas

para cumprir uma mesma tarefa.

10

2 Nós Sensores

Os nós sensores, também conhecidos pela expressão em inglês motes, são as unidades bá-

sicas das redes de sensores sem fio. São dispositivos que podem ser programados afim de de

obterem através de sensores, informações do ambiente em que estão situados, além de se co-

municarem com os outros nós que estejam conectados na mesma rede. As possibilidades de

sensores são varias, incluindo sensores de temperatura, luz, som, posição, aceleração, vibração,

stress, peso, pressão, humidade, etc.

O conceito de motes nasceu junto ao projeto Smart Dust (14), que é uma rede hipotética

formada por dispositivos do tamanho de um grão de areia, com baixo consumo de energia e

dotados de comunicação sem fio, capazes de coletar dados e atuar sobre o meio.

Um nó sensor é formado basicamente por quatro partes: a fonte de energia, CPU e memória,

o transceptor e, finalmente, os sensores juntamente com conversores analógicos digitais (8). A

figura 2.1 mostra o digrama dos blocos que compõem um nó sensor.

A fonte de energia é a responsável por alimentar e manter todo o sistema ativo. Isso implica

em provêr energia não só para o processador, mas para os demais componentes do nó, como

os sensores e a comunicação sem fio. Pelo fato de geralmente as fontes de energia em RSSFs

serem limitadas, esse componente é um dos principais pontos fracos do sistema.

A comunicação sem fio permite os diferentes dispositivos se comunicarem, trocarem in-

formação e as reportã-las a um concentrador dos dados através de um gateway. Esse é um dos

processos que tem o consumo mais intenso de energia, por isso são utilizadas diferentes técnicas

para minimizar o uso de energia, como por exemplo desligar o sinal de rádio por um certo pe-

ríodo ou enviar os dados apenas quando acontecer um evento no ambiente que seja interessante

ao sistema (4).

2.1 Mica mote

2.2

11

Figura 2.1: Blocos básicos de um nó sensor

Figura 2.2: Mica mote

(7)

2.1.1 EPOS

(5)

2.2 Sun SPOT

2.3

(3, 6, 11).

12

Figura 2.3: Sun SPOT

13

3 Exemplo de uso de um nó sensor

3.2

3.1 IEEE 1451

3.2 JDDAC

Java Distributed Acquisition and Control (JDDAC) é uma coleção de APIs Java que conec-

tam aplicações Java ao mundo físico provido por dispositivos providos de sensores e atuadores

(9). Assim, utilizando a JDDAC, é possível através de qualquer dispositivo que possua uma

máquina virtual Java, construir sistemas de larga escala, distribuidos e que forneçam controle

para uma série de sensores e atuadores.

A JDDAC está parcialmente fundamentada nos conceitos e padrôes da IEEE 1451.1 e IEEE

1451.2. Essa implementação inclui todo o modelo de objetos e parte das interfaces que repre-

sentam trandutores e suas capacidades de plug-and-play, já que está segunda é dependente de

plataforma. A figura 3.1 ilustra o escopo da JDDAC.

Figura 3.1: Escopo da JDDAC

14

A Java Distributed Acquisition and Control é formada por 4 APIs:

• Java Transducer API: define interfaces para que a aplicação possa endereçar transduto-

res e suas especificações, de forma a caracterizar suas medições.

• Java Measurement Calculus API: especifica formas padrões de representação de dados

para todos os tipos de medições, além de operações de calculo sobre essas medições.

• Java Measurement Dataflow API: define uma framework de sequência dos dados para

que possam ser processados e transformados.

• Java Precision Clock Synchronization API: especifica uma interface para administrar

e utilizar relógios de sincronização para coordenar o comportamento de medição em sis-

temas distribuidos.

3.3 Aplicação

Para validar a utilização de redes de sensores sem fio, foi construida uma aplicação exemplo

para coletar informações acerca de um ambiente doméstico. Para tanto, foram utilizado um kit

dos motes Sun SPOT e o pacote JDDAC, ambos descritos anteriormente.

Apesar de haver uma implementação em Java ME na JDDAC, a mesma não oferece classes

específicas para o uso dos sensores disponíveis. Para tanto, foi necessário criar implementações

para os trandutores de temperatura e luz. Também foi necessário criar o arquivo de configuração

descrevendo o sistema e quais componentes deveriam ser utilizados.

package br. ufsc . inf . lucastorri . tcc ;

import com.sun.spot . sensorboard .EDemoBoard;

import com.sun.spot . sensorboard . peripheral . ITemperatureInput ;

import net . java . jddac .common.meas.MeasAttr;

import net . java . jddac .common.meas.Measurement;

import net . java . jddac .common.type.TypeAttr;

import net . java . jddac . jmdi. fblock .BasicTIM;

import net . java . jddac .common.type.Float64J2me;

/∗∗∗

15

∗ @author lucastorri

∗/

public class TemperatureTIM extends BasicTIM {

private static final Object teds [][][] = {

{{MeasAttr.NAME, "Temperature"},

{MeasAttr.DESCRIPTION, "On−board temperature"},

{MeasAttr.VERSION, "1.0"},

{MeasAttr.MANUFACTURER, "lucas"}},

{{MeasAttr.NAME, "celsiusTemperature"},

{MeasAttr.DESCRIPTION, "On−board Celsius temperature"},

{MeasAttr.UNITS, "o"},

{MeasAttr.DATA_TYPE, TypeAttr.FLOAT64}},

{{MeasAttr.NAME, "fahrenheitTemperature"},

{MeasAttr.DESCRIPTION, "On−board Fahrenheit temperature"},

{MeasAttr.UNITS, "o"},

{MeasAttr.DATA_TYPE, TypeAttr.FLOAT64}}};

private ITemperatureInput temperatureInput ;

public TemperatureTIM() {

setChannelTeds( teds );

temperatureInput = EDemoBoard.getInstance().getADCTemperature();

}

public String getMetaID() {

return "pHKuzxMt3RGKnsYJVtiVkw";

}

protected Measurement readChannel(int chanNum) {

Measurement newMeas = genEmptyMeasurement(chanNum);

Float64J2me result = new Float64J2me();

try {

switch (chanNum) {

case 1:

result . setValue (Double. toString ( temperatureInput . getCelsius ()));

16

break;

case 2:

result . setValue (Double. toString ( temperatureInput . getFahrenheit ()));

break;

}

} catch (Exception e) {

e. printStackTrace ();

}

newMeas.put(MeasAttr.VALUE, result);

return newMeas;

}

}

package br. ufsc . inf . lucastorri . tcc ;

import com.sun.spot . sensorboard .EDemoBoard;

import com.sun.spot . sensorboard . peripheral . ILightSensor ;

import net . java . jddac .common.meas.MeasAttr;

import net . java . jddac .common.meas.Measurement;

import net . java . jddac .common.type.TypeAttr;

import net . java . jddac . jmdi. fblock .BasicTIM;

import net . java . jddac .common.type.Float64J2me;

/∗∗∗∗ @author lucastorri

∗/

public class LuminanceTIM extends BasicTIM {

private static final Object teds [][][] = {

{{MeasAttr.NAME, "Luminance"},

{MeasAttr.DESCRIPTION, "On−board Luminance"},

{MeasAttr.VERSION, "1.0"},

{MeasAttr.MANUFACTURER, "lucas"}},

{{MeasAttr.NAME, "luminance"},

{MeasAttr.DESCRIPTION, "On−board Celsius Luminance"},

17

{MeasAttr.UNITS, "o"},

{MeasAttr.DATA_TYPE, TypeAttr.FLOAT64}}};

private ILightSensor lightSensor ;

public LuminanceTIM() {

setChannelTeds( teds );

lightSensor = EDemoBoard.getInstance().getLightSensor ();

}

public String getMetaID() {

return "eiqR2V8v3RGVa926VdiVkw";

}

protected Measurement readChannel(int chanNum) {

Measurement newMeas = genEmptyMeasurement(chanNum);

Float64J2me result = new Float64J2me();

try {

switch (chanNum) {

case 1:

result . setValue (Double. toString ((double) lightSensor .getAverageValue ()));

break;

}

} catch (Exception e) {

e. printStackTrace ();

}

newMeas.put(MeasAttr.VALUE, result);

return newMeas;

}

}

<?xml version="1.0"?>

<argArray t="vector">

<argArray>

<arg n="className">net.java . jddac . jmdi. fblock .BasicNCAPBlock</arg>

<arg n="instanceName">NCAP</arg>

18

<arg n="NCAPBlock.probeNetworkId">jddac://00999∗99999∗99999∗99999</arg>

<arg n="NCAPBlock.name">unknown</arg>

<argArray n="NCAPBlock.registry">

<arg n=" description ">NCAP Block</arg>

<arg n="manufacturer">Foobar Industries </arg>

<arg n="modelNumber">JddacClient 1.0</arg>

<arg n="serialNumber"></arg>

<arg n=" description ">JDDAC Client Demo</arg>

<arg n="osVersion">JDDAC 1.0</arg>

</argArray>

<argArray n="FunctionBlock.pubPorts">

<argArray n="announce">

<arg n="topic">ncapAnnounce</arg>

</argArray>

</argArray>

</argArray>

<argArray>

<arg n="className">net.java . jddac . jmdi.comm.DefaultCoder</arg>

<arg n="instanceName">coder</arg>

<arg n="DefaultCoder.defaultContentEncoding">mp,wbxml</arg>

<argArray n="DefaultCoder.coders">

<arg n="mp">net.java. jddac . jmdi.comm.MultiPartCoder</arg>

<arg n="wbxml">net.java.jddac . jmdi.comm.xml.WbxmlObjectCoder</arg>

</argArray>

</argArray>

<argArray>

<arg n="className">net.java . jddac . jmdi.comm.HttpTransportJ2me</arg>

<arg n="instanceName">transport</arg>

<arg n="HttpTransport . coder">coder</arg>

<argArray n="cond" t="vector">

<argArray>

<arg n="prop">microedition . profiles </arg>

<arg n=" exist ">true</arg>

19

</argArray>

</argArray>

</argArray>

<argArray>

<arg n="className">net.java . jddac . jmdi. fblock . Reporter</arg>

<arg n="instanceName">Reporter</arg>

<arg t="long" n="Reporter. connectInterval ">240</arg>

<arg n="Reporter. transport "> transport </arg>

<arg n="Reporter. destination "> http: // localhost:8080 /probe</arg>

<argArray n="FunctionBlock.subPorts">

<argArray n="incomingData">

<argArray n="qual" t="vector">

<arg>storeMeasurement</arg>

<arg>ncapAnnounce</arg>

</argArray>

</argArray>

</argArray>

<arg n="Reporter. timeout">60s</arg>

</argArray>

<argArray>

<arg n="className">net.java . jddac . jmdi. fblock .EchoBlock</arg>

<arg n="instanceName">Echo</arg>

<argArray n="FunctionBlock.subPorts">

<argArray n="incomingData">

<argArray n="qual" t="vector">

<arg>storeMeasurement</arg>

<arg>ncapAnnounce</arg>

</argArray>

</argArray>

</argArray>

</argArray>

<argArray>

20

<arg n="instanceName">Temperature STIM</arg>

<arg n="className">br.ufsc. inf . lucastorri . tcc .TemperatureTIM</arg>

</argArray>

<argArray>

<arg n="instanceName">Temperature TBlock</arg>

<arg n="className">net.java . jddac . jmdi. fblock .BasicTransducerBlock</arg>

<arg n="Entity . description ">Demo Basic Transducer Block for Memory Usage</arg>

<arg n="BasicTransducerBlock.transducerName">Temperature STIM</arg>

<arg t=" int " n="BasicTransducerBlock.period">60</arg>

<argArray n="FunctionBlock.pubPorts">

<argArray n=" result ">

<arg n="topic">storeMeasurement</arg>

</argArray>

</argArray>

</argArray>

<argArray>

<arg n="instanceName">Luminance STIM</arg>

<arg n="className">br.ufsc. inf . lucastorri . tcc .LuminanceTIM</arg>

</argArray>

<argArray>

<arg n="instanceName">Luminance TBlock</arg>

<arg n="className">net.java . jddac . jmdi. fblock .BasicTransducerBlock</arg>

<arg n="Entity . description ">Demo Basic Transducer Block for Memory Usage</arg>

<arg n="BasicTransducerBlock.transducerName">Luminance STIM</arg>

<arg t=" int " n="BasicTransducerBlock.period">30</arg>

<argArray n="FunctionBlock.pubPorts">

<argArray n=" result ">

<arg n="topic">storeMeasurement</arg>

</argArray>

</argArray>

</argArray>

21

Figura 3.2: Coleta de dados com Sun SPOT e JDDAC

<argArray>

<arg n="instanceName">NCAP</arg>

<arg n="NCAPBlock.announceNCAP">true</arg>

</argArray>

</argArray>

Utilizando o servidor do projeto JDDAC, foi possível agregar e armazenar os dados coleta-

dos, podendo gerar relatórios como o da figura 3.2;

22

4 Implementação

23

5 Comparação

24

6 Conclusão

6.1 Trabalhos Futuros

25

Referências Bibliográficas

1

2 M. Aboelaze and F. Aloul. Current and future trends in sensor networks: a survey. Wirelessand Optical Communications Networks, 2005. WOCN 2005. Second IFIP InternationalConference on, pages 551–555, 2005.

3 E. Arseneau, R. Goldman, A. Poursohi, R. Smith, and J. Daniels. Simplifying theDevelopment of Sensor Applications.

4 D. Culler, D. Estrin, and M. Srivastava. Guest Editors’ Introduction: Overview of SensorNetworks. Computer, 37(8):41–49, 2004.

5 A. Frohlich. Application-Oriented Operating Systems. Sankt Augustin: GMD-Forschungszentrum Informationstechnik, 1, 2001.

6 L. Ghisi, B. e Torri. Programando o mundo com o Sun SPOT. Java Magazine, 2008.

7 J. Hill and D. Culler. Mica: A Wireless Platform for Deeply Embedded Networks. 2002.

8 I. Khemapech, I. Duncan, and A. Miller. A Survey of Wireless Sensor NetworksTechnology. Proceedings of the 6th Annual PostGraduate Symposium on the Convergence ofTelecommunications, Networking and Broadcasting, 2005.

9 S. Microsystems. Java distributed data acquisition and control.

10 K. Romer and F. Mattern. The design space of wireless sensor networks. WirelessCommunications, IEEE [see also IEEE Personal Communications], 11(6):54–61, 2004.

11 D. Simon, C. Cifuentes, D. Cleal, J. Daniels, and D. White. JavaTM on the bare metal ofwireless sensor devices: the squawk Java virtual machine. Proceedings of the 2nd internationalconference on Virtual execution environments, pages 78–88, 2006.

12 R. Wade, W. Mitchell, and F. Petter. Ten Emerging Technologies That Will Change theWorld. Technology Review, 106(1):22–49, 2003.

13 L. Wanner. The EPOS System Supporting Wireless Sensor Networks Applications. PhDthesis, B. sc. thesis, Federal University of Santa Catarina, Florianopolis, 2003.

14 B. Warneke, M. Last, B. Liebowitz, and K. Pister. Smart Dust: Communicating with aCubic-Millimeter Computer. 2001.

15 N. Xu. A Survey of Sensor Network Applications. University of Southern California,http://enl. usc. edu/ningxu/papers/survey. pdf, 2003.