UNIVERSIDADE DO ESTADO DO RIO DE JANEIRO
Faculdade de Engenharia
Departamento de Engenharia Eletrônica e de Telecomunicações
PROJETO DE GRADUAÇÃO
IMPLEMENTAÇÃO DE UM ALGORITMO PARA ECONOMIA DE
ENERGIA EM REDE DE SENSORES SEM FIO
Sabrina Paiva Costa
Orientadores: Prof. Lisandro Lovisolo
Prof. Felipe da Rocha Henriques
Coordenador: Prof. Paulo Sergio Rodrigues Alonso
Julho de 2012
Ficha Catalográfica
COSTA, Sabrina Paiva
Implementação de algoritmo para economia de
energia em Rede de Sensores Sem Fio.
x, 66pp, 29,7cm (UERJ, Engenharia Eletrônica, 2012)
Projeto de Graduação – Universidade do Estado do Rio de
Janeiro.
1. Rede de Sensores Sem Fio
2. ZigBee
3. Arduino
I UERJ/FEN II. Título (série)
ii
AGRADECIMENTOS
Em primeiro lugar a Jeová meu Deus, pois sem sua orientação e sua
misericórdia nada em minha vida seria possível.
A minha querida mãe Maria da Penha, meu querido pai Nilson, pelo amor e
incentivo sempre acreditando em minha capacidade. Aos irmãos: Renan, Samara e
Nicolas.
Ao meu amado esposo Ricardo Gomes pelo carinho, paciência, motivação e
por sempre acreditar em meu potencial.
A Lisandro Lovisolo e Felipe Henriques, meus orientador e co-orientador,
sempre presentes, competentes, motivadores e sempre prontos para me auxiliar.
A todos os professores e amigos com os quais convivi e muito aprendi
durante todo o curso de Engenharia.
.
iii
IMPLEMENTAÇÃO DE UM ALGORITMO PARA ECONOMIA DE ENERGIA EM
REDE DE SENSORES SEM FIO
RESUMO
Este trabalho tem o propósito de implementar um algoritmo para economia de
energia em uma Rede de Sensores Sem Fio (RSSF) real.
O algoritmo implementado é baseado na fonte, ou seja, todo o processamento
e tomada de decisões é realizado no nó sensor, cabendo ao sorvedouro somente
receber os dados. Neste trabalho, considera-se a comunicação de salto único, em
que o sorvedouro está dentro do raio de alcance do nó sensor. Portanto, os dados
são enviados diretamente, sem a necessidade de roteamento. O algoritmo
implementado utiliza o conceito de limiar de inovação. Após cada amostra
transmitida, o nó apenas envia medidas cuja variação percentual entre a atual e a
anteriormente transmitida seja maior do que um limiar predefinido. O objetivo é a
economia de energia dos nós com a redução da quantidade de transmissões. Além
disso, os nós dormem entre transmissões, de modo a autonomia dos nós, que leva a
uma economia de energia.
A RSSF neste trabalho é usada para realizar o monitoramento de
temperatura. Foram realizados experimentos com módulos ZigBee comerciais em
conjunto com microcontroladores Arduino, e observou-se uma redução da
quantidade de transmissões com o aumento do limiar de inovação, gerando assim
economia de energia. Também verificou-se empiricamente que todos os pacotes
transmitidos foram entregues ao sorvedouro, garantindo 100% de taxa de entrega da
rede.
iv
IMPLEMENTATION OF AN ENERGY CONSERVATION ALGORITHM FOR
WIRELESS SENSOR NETWORKS
ABSTRACT
This work aims at implementing an energy conservation algorithm in a real
Wireless Sensor Network. The employed algorithm is a source-based one, i.e., all
processing and decision tasks are done by sensor nodes, and the sink node only
receives data. In this work, we consider a single hop communication network, in
which the sink is positioned within the range of sensor nodes. Thus, data is sent
directly, without any routing schemes. The implemented algorithm uses the concept
of innovation threshold. After each transmitted sample, sensor node only transmits
measurements whose absolute percentage variation between the current one and
the last transmitted is greater than a predefined threshold. The goal is to save energy
of sensor nodes by reducing the amount of transmissions. Furthermore, nodes sleep
between transmissions in order to increase the node autonomy, what indeed
provides energy conservation.
The wireless sensor network implemented senses temperature. Experimental
tests were done with ZigBee commercial devices and Arduino microcontrollers for
building sensor nodes, and one observed a decrease in the amount of transmissions
with the increase of the innovation threshold, leading to an energy saving scheme.
We also verified empirically that all transmitted packets were received by sink node,
ensuring 100% of network connectivity.
v
ÍNDICE
Capítulo 1 – Redes de Sensores Sem Fio (RSSFs) .............................................................. 1
1.1 - Introdução.................................................................................................................... 1
1.2 - Redes de sensores X Redes ad hoc................................................................................. 1
1.3 – Nós de uma RSSF ......................................................................................................... 2
1.4 - Componentes do nó sensor ........................................................................................... 3
1.5 - Gerenciamento de uma RSSF ........................................................................................ 3
1.6 - Consumo de energia em RSSFs ...................................................................................... 5
1.6.1 - Modelo de energia .................................................................................................. 5
1.6.1.1 - Modelos baseados em pacotes .......................................................................... 5
1.6.1.2 - Modelos baseados em estado............................................................................ 6
1.6.1.3 - Modelo utilizado neste projeto .......................................................................... 7
1.7 – Conclusão .................................................................................................................... 8
Capítulo 2 – ZigBee .................................................................................................................. 9
2.1 – Introdução ................................................................................................................... 9
2.2 - A Pilha de protocolos .................................................................................................... 9
2.3 - Componentes de uma rede ZigBee .............................................................................. 11
2.4 - Topologias de uma Rede ZigBee .................................................................................. 11
2.4.1 - Topologia em estrela............................................................................................. 11
2.4.2 - Topologia P2P ....................................................................................................... 12
2.5 - Conclusão ................................................................................................................... 13
Capítulo 3 – Módulos Zigbee comerciais. ........................................................................... 14
3.1 – Introdução ................................................................................................................. 14
3.2 – Hardware................................................................................................................... 14
3.2.1 - Telos B.................................................................................................................. 14
3.2.2 - MICAz ................................................................................................................... 15
3.2.3 – XBee .................................................................................................................... 18
3.3 – Escolha do Hardware.................................................................................................. 20
3.3.1 – Detalhamento do módulo XBee ............................................................................ 20
3.3.2 – Modos de operação do XBee ................................................................................ 23
3.3.2.1 - Modo Transparente......................................................................................... 23
3.3.2.2 – Modo API ....................................................................................................... 23
3.3.2.3 - Modo Sleep..................................................................................................... 24
3.3.2.4 - Modo de Comando (modo AT) ......................................................................... 25
3.4 – X-CTU ........................................................................................................................ 26
vi
3.4.1 - PC Settings............................................................................................................ 26
3.4.2 - Range Test ............................................................................................................ 27
3.4.3 – Terminal .............................................................................................................. 28
3.4.4 – Modem Configurations ......................................................................................... 28
3.5 – Conclusões................................................................................................................. 30
Capítulo 4 – Arduino .............................................................................................................. 32
4.1 - Introdução.................................................................................................................. 32
4.2 – O Arduino .................................................................................................................. 32
4.3- Arduino Duemilanove .................................................................................................. 33
4.3.1– Alimentação ......................................................................................................... 35
4.3.2 – Memória .............................................................................................................. 35
4.3.3 - Entrada e Saída ..................................................................................................... 35
4.3.4 – Comunicação ....................................................................................................... 36
4.3.5 – Programação ........................................................................................................ 36
4.4 – XBee Shield ................................................................................................................ 36
4.5 – Conclusão .................................................................................................................. 38
Capítulo 5 – Configuração da Rede de Sensores Sem Fio ............................................... 39
5.1 – Algoritmos de salto único para RSSFs .......................................................................... 39
5.1.1 – Algoritmo baseado na fonte ................................................................................. 39
5.1.2 - Algoritmo baseado no sorvedouro......................................................................... 41
5.2 - Configurações da Rede de Sensores sem Fio ................................................................ 43
5.3 – Sensor ....................................................................................................................... 50
5.4 - Programação do Arduino Duemilanove ....................................................................... 51
5.5 – Conclusão .................................................................................................................. 56
Capítulo 6 – Testes e resultados .......................................................................................... 57
6.1 – Introdução ................................................................................................................. 57
6.2 – Testes de consumo do nó sensor ................................................................................ 57
6.3 – Testes de transmissão ................................................................................................ 59
6.4 – Conclusão .................................................................................................................. 62
Capítulo 7 – Conclusões........................................................................................................ 63
Refêrencias bibliográficas..................................................................................................... 64
Apêndice A .............................................................................................................................. 66
vii
Índice de Figuras
Figura 1.1 – Rede não estruturada ......................................................................................... 1
Figura 1.2 – RSSF: a) com o sorvedouro dentro da região de interesse; b) com o
sorvedouro fora da região de interesse ................................................................................ 3
Figura 1.3 – Unidades básicas de um nó sensor ................................................................. 3
Figura 1.4 – Arquitetura genérica de camadas das RSSFs ................................................. 5
Figura 1.5 – Diagrama do modelo baseado em estados ..................................................... 6
Figura 1.6 – Diagrama do modelo de energia utilizado neste trabalho ............................. 7
Figura 2.1 – Pilha de protocolos ZigBee.............................................................................. 10
Figura 2.2 – Estrutura do quadro de dados ........................................................................ 11
Figura 2.3 – Topologia em estrela ........................................................................................ 12
Figura 2.4 – Topologia par-a-par .......................................................................................... 12
Figura 3.1 - a) TesloB b) Diagrama de blocos do TeslosB ............................................... 14
Figura 3.2 – a) Módulo micaz b) Diagrama de blocos micaz ........................................... 16
Figura 3.3 - Módulos Xbee/Xbee PRO .................................................................................. 18
Figura 3.4 a)-Dimensões do xbee/xbee pro........................................................................18
Figura 3.4 b) – Dimensões do XBee/XBee PRO .................................................................. 19
Figura 3.5 – Pinagem do módulo .......................................................................................... 20
Figura 3.6 – Padrão de Radiação das antenas tipo Monopólo ......................................... 22
Figura 3.7 - Padrão de Radiação das antenas tipo Chip ................................................... 23
Figura 3.8 – Tela inicial do X-CTU – Aba PC Settings ........................................................ 26
Figura 3.9 – Mensagem com tipo do hardware e versão de firmware ............................. 27
Figura 3.10 – Range Test ....................................................................................................... 27
Figura 3.11 – Terminal ........................................................................................................... 28
Figura 3.12 – Tela inicial Modem Configurations ............................................................... 29
Figura 3.13 – Tela após selecionar Read ............................................................................. 30
Figura 4.1 – Versões do Arduino .......................................................................................... 33
Figura 4.2 – Pinagem do Arduino Duemilanove ................................................................. 34
Figura 4.3 – Placa XBee shield ............................................................................................. 37
Figura 4.4 – Esquema do circuito impresso XBee shield .................................................. 37
Figura 4.5 – Conjunto XBee+XBee Shield+Arduino Duemilanove ................................... 38
Figura 5.1 – Exemplo de comunicação utilizando o algoritmo baseado na fonte ......... 41
Figura 5.2 – Exemplo de comunicação utilizando o algoritmo baseado no sorvedouro
.................................................................................................................................................. 42
viii
Figura 5.3 – Arduino Duemilanove sem o microcontrolador AT MEGA 168 ................... 43
Figura 5.4 – Arduino Shield XBee com jumpers na posição USB .................................... 44
Figura 5.5 – Teste de conexão entre X-CTU e XBee........................................................... 45
Figura 5.6 – Modificação de parâmetros de rede no XBee através do X-CTU ................ 46
Figura 5.7 – Modificação de parâmetros de rede no XBee através do X-CTU ................ 47
Figura 5.8 – Modificação de parâmetros de rede no XBee através do X-CTU ................ 48
Figura 5.9 – Modificação de parâmetros de rede no XBee através do X-CTU ................ 49
Figura 5.10 – Modificação de parâmetros de rede no XBee através do X-CTU .............. 50
Figura 5.11 – Sensor de temperatura LM 35 encapsulado como transistor ................... 51
Figura 5.12 – Programa gravado no Arduino para ler temperatura ................................. 52
Figura 5.13 – Valores enviados a porta serial do Arduino ................................................ 53
Figura 5.14 – Divisor de tensão soldado no Arduino XBee Shield .................................. 54
Figura 6.1– Circuito de teste ................................................................................................. 51
Figura 6.2 – Amperímetro digital utilizado na medição do consumo com XBee ativo .. 58
Figura 6.3 – Amperímetro digital utilizado na medição do consumo com XBee no modo
Sleep ........................................................................................................................................ 58
Figura 6.4 – Resultado de transmissões do nó sensor programado apenas para
realizar a rotina e enviar os dados ....................................................................................... 59
Figura 6.5 – Resultado de transmissões do nó sensor utilizando o programa 1 com
limiar de inovação de 1%....................................................................................................... 60
Figura 6.6 – Resultado de transmissões do nó sensor utilizando o programa 1 com
limiar de inovação de 3%....................................................................................................... 60
Figura 6.7 – Resultado de transmissões do nó sensor utilizando o programa 1 com
limiar de inovação de 5%....................................................................................................... 61
Figura 6.8 – Resultado de transmissões do nó sensor utilizando o programa 1 com
limiar de inovação de 7%....................................................................................................... 61
ix
Índice de Tabelas
Tabela 2.1 – Frequências das bandas.................................................................................. 10
Tabela 3.1 – Características do TeslosB ............................................................................. 15
Tabela 3.2 – Caracteristica do MICAz .................................................................................. 17
Tabela 3.3 – Características do módulo XBee .................................................................... 19
Tabela 3.4 – Descrição dos pinos do módulo XBee........................................................... 21
Tabela 3.5 – Características de desempenho do módulo XBee ....................................... 21
Tabela 3.6 – Características elétricas do Módulo XBee .................................................... 22
Tabela 3.7 – Gasto energético em cada configuração do modo Sleep ........................... 24
Tabela 3.8 – Configurações do modo Sleep ....................................................................... 25
Tabela 3.9 – Tabela com exemplos de comandos AT ........................................................ 25
Tabela 4.1 – Características do Arduino Duemilanove ...................................................... 34
x
Capítulo 1 – Redes de Sensores Sem Fio (RSSFs)
1.1 - Introdução
Grandes avanços em áreas como a microeletrônica, a eletrônica digital, e a
comunicação sem fio têm possibilitado cada vez mais o desenvolvimento de
sensores de tamanho, consumo energético reduzidos e baixo custo. Estes podem
ser empregados em redes de sensores sem fio (RSSFs), pois possuem a
capacidade de sensoriamento, processamento dos dados coletados, e comunicação.
1.2 - Redes de sensores X Redes ad hoc
As RSSFs são um tipo especial de redes ad hoc (redes onde seus
componentes, chamados nós, podem se comunicar sem que haja uma infraestrutura
pré-existente, como por exemplo a existência de uma estação base a ser
empregada para comunicação).[24] Neste tipo de rede os nós podem comunicar-se
diretamente. Em uma rede tradicional a comunicação dos componentes é realizada
através de uma infra-estrutura de comunicação conforme a Figura 1.1.
Figura 1.1- Rede não estruturada.
Fonte: [24]
Com relação à organização, as RSSFs são similares a redes ad hoc, já que
possuem elementos computacionais que se comunicam entre si através de enlaces
de comunicação sem fio. A rede ad hoc tem como objetivo prover suporte à
comunicação entre os elementos da rede que individualmente podem estar
executando tarefas distintas. Por outro lado, para RSSFs a tendência é que sejam
empregadas para executarem um trabalho colaborativo, onde os nós, que possuem
a capacidade de sensoriamento, processamento de dados e comunicação, coletam
os dados, que são enviados a nós especiais, os sorvedouros. [4]
As RSSFs ainda possuem outras características próprias não observadas em
componentes de redes ad hoc, como, tamanho reduzido, grandes restrições de
energia, capacidade computacional e de memória reduzidas, além de capacidade de
1
adaptação à falhas e de auto-organização. Existem, além dos já mencionados,
outros aspectos que corroboram a afirmação de que as RSSFs são “um tipo especial
de redes ad hoc” [2]:
a quantidade de nós em uma RSSF pode ser muito maior do que em uma
rede ad hoc, visto que o custo dos nós em uma RSSF é menor do que os
custos de um componente em uma rede ad hoc;
os nós são dispostos densamente em uma região;
a topologia de uma RSSF pode mudar frequentemente como no caso de
falhas e falta de energia em algum nó.
RSSFs possuem uma grande variedade de aplicações dentre as quais
podemos destacar:
automação industrial- pode prover algum controle durante a produção. Por
exemplo, sensores podem ser colocados nas peças durante a manufatura
para que sejam colhidos dados sobre a produção;
militar- para o monitoramento de tropas;
médica/biológica – monitoramento de sinais vitais em pacientes;
monitoramento de ambientes internos e externos – monitora-se desde prédios
até uma floresta com a coleta de dados como temperatura, pressão, umidade.
De uma forma genérica as RSSFs podem ser usadas em segurança e
monitoramento, controle, atuação e manutenção de sistemas complexos, e
monitoramento de ambientes internos e externos [4].
1.3 – Nós de uma RSSF
Uma RSSF pode conter dois tipos de nós, os sensores e os sorvedouros. Os
nós sensores ficam espalhados em uma região de interesse para coleta de dados.
Esses dados são enviados para o sorvedouro que pode estar ou não dentro dessa
região. Especialmente no caso em que os sorvedouros estão fora da região de
interesse, os nós sensores utilizam a comunicação em múltiplos saltos para
comunicar-se com o sorvedouro assim envia-se o dado coletado através de outros
nós sensores que encaminha a mensagem nó-a-nó. A Figura 1.2 exemplifica a
arquitetura citada.
2
a)
b)
Figura 1.2- RSSF: a) com o sorvedouro dentro da região de interesse; b) com o
sorvedouro fora da região de interesse.
Fonte:[3]
1.4 - Componentes do nó sensor
Um nó sensor é constituído por cinco componentes principais, conforme
ilustrado na Figura 1.3[1]:
unidade de processamento, responsável pelo processamento dos dados do
sensor;
unidade de sensoriamento, dispositivos que fazem a interface com o mundo
físico, podem observar e controlar parâmetros físicos do ambiente;
unidade de comunicação, pelo qual os nós podem receber e transmitir
dados;
unidade de energia, responsável pela alimentação das unidades acima.
Figura 1.3- Unidades básicas de um nó sensor.
Fonte: [3]
Dentro desta arquitetura, o que se mostra mais crítico é a questão da energia,
visto que esta limita o tempo de vida de uma RSSF e os sensores geralmente são
alocados em regiões de difícil acesso, sendo a troca de bateria geralmente uma
tarefa, muitas vezes complicada. [3]
1.5 - Gerenciamento de uma RSSF
3
A arquitetura genérica dos protocolos de uma rede de sensores sem fio pode
ser vista na Figura 1.4. Podemos observar que as cinco camadas pertencentes ao
modelo híbrido para redes de computadores [6] [7] trabalham juntas com três planos
de gerenciamento [2]. As características dos protocolos e dos planos de
gerenciamento são descritos a seguir:
camada Física – Define as interfaces elétricas e mecânicas e a especificação
do meio físico empregado para transmissão e recepção de bits;
camada de Enlace – Realiza o controle de acesso ao meio compartilhado, o
enquadramento dos dados, a detecção de erros de bits e o controle de fluxo;
camada de Rede – Realiza serviços de roteamento, controle e
endereçamento de dados;
camada de Transporte - Provê a entrega de dados livres de erros e
ordenados ou sem garantia de ordenação;
camada de Aplicação – provê aplicações de rede, como correio eletrônico e
transferência de dados ( no caso de uma rede de computadores).
Os planos de gerenciamento são:
plano de gerenciamento de tarefas – Gerencia as tarefas dos nós sensores
em uma dada região;
plano de gerenciamento de mobilidade – Gerencia o movimento dos nós
sensores, sabendo assim a posição dos nós da rede mesmo que estes ou o
próprio nó se mova;
plano de gerenciamento de energia – Determina a maneira pela qual os nós
gerenciarão sua energia, por exemplo, desligando receptores após receber
uma mensagem.
Desta forma os sensores de uma dada rede podem trabalhar de maneira
colaborativa, já que podem economizar energia, realizar roteamento em redes
móveis e compartilhar recursos entre si, tornando as tarefas realizadas mais
eficientes. [3]
4
Figura 1.4 - Arquitetura genérica de camadas das RSSFs.
Fonte: [3]
1.6 - Consumo de energia em RSSFs
A partir da modelagem do consumo de energia de um nó define-se o gasto
em uma RSSF e com isso pode-se elaborar estratégias para economizar energia e
aumentar o tempo de autonomia da rede.
1.6.1 - Modelo de energia
Um modelo de energia descreve como a energia de cada nó é consumida no
decorrer do tempo. Os modelos de energia para uma rede ad hoc podem ser
divididos em dois grupos, segundo [2], os modelos de consumo por pacotes e os
modelos de consumo por estados. No modelo de consumo por pacotes, a energia é
gasta a cada pacote transmitido ou recebido. Já no modelo de consumo por estados,
a energia do nó é gasta em função do tempo e dos estados pelos quais o nó
transita.
1.6.1.1 - Modelos baseados em pacotes
Nos modelos baseados em pacotes a energia é diretamente proporcional ao
tamanho do pacote transmitido ou recebido. Este consumo pode ser modelado como
uma função linear do tamanho do pacote em bytes, assim:
(1)
5
Os parâmetros m e b são constantes em μJ.
Para o modelo definido pela equação (1), a energia consumida por um nó
sensor durante a transmissão ou recepção de um pacote de dados, ( ), depende
do tamanho do pacote e também de um parâmetro independente (fixo). Logo,
conclui-se que é mais eficiente transmitir um pacote maior do que dividi-lo em vários
pacotes menores com informação equivalente [5].
1.6.1.2 - Modelos baseados em estado
Em modelos baseados em estados, considera-se que cada nó da rede pode
estar em um estado, definido pelo seu modo de operação atual.
Enquanto o nó permanece em um dado estado, consome-se uma
determinada quantidade de energia. A energia consumida é função do estado atual
do nó e do tempo pelo o nó permanece no estado. Em [5] é apresentado um modelo
com quatro estados: Dormência, Ocioso, Tx e Rx, conforme a Figura1.5. Esse
modelo é definido por [2] pela equação (2).
(2)
Na equação (2)
,
e
são as parcelas de tempo em que os nós
permanecem em cada estado, Dormência, Ocioso, Rx e Tx respectivamente,
,
e
são as potências médias consumidas em cada estado por tempo. Outros
modelos podem ser obtidos a partir dos quatros estados já apresentados, com a
inclusão de novos estados e/ou subestados.
Dormência
Ocioso
Tx
Rx
Figura 1.5 - Diagrama do modelo baseado em estados.
6
1.6.1.3 - Modelo utilizado neste projeto
O modelo utilizado neste projeto pode ser considerado híbrido. O modelo é uma
variante do modelo de quatro estados utilizado em [2], onde Dormência será
chamada de estado Inativo e estado Ocioso passa a ser chamado estado Ativo. O
estado ativo engloba quatro subestados: Medição, Processamento, Transmissão e
Recepção. Esta abordagem foi motivada pela necessidade de modelagem de uma
rede mais realista, onde o nó realiza a medição, processa o dado, transmite ou não,
e quando transmite tem um gasto energético alto e quando não, entra no subestado
de dormência onde gasta menos energia. A Figura 1.6 mostra o modelo de energia
utilizado neste trabalho [3].
Figura 1.6 - Diagrama do modelo de energia utilizado neste trabalho.
Fonte: [3]
1. Ativo: neste estado os nós estão com os seus transceptores ligados, não
necessariamente realizando alguma tarefa. Este estado possui quatro
subestados, que são:
medição: neste subestado o nó sensor mede grandezas, tais como,
temperatura, pressão, umidade de um ambiente, etc. ;
processamento: neste subestado o nó processa as grandezas
medidas;
transmissão: neste subestado o nó transmite;
recepção: neste subestado o nó recebe dados advindos de outros nós
da rede.
7
2. Inativo: este é o modo de economia de energia. Neste estado os nós dormem
por um intervalo de tempo (ficam com os transceptores desligados). Após
esse tempo, voltam a realizar suas tarefas.
Desta maneira cada nó pode estar associado a um dos dois estados principais,
ativo ou inativo. Quando ativo realizam as tarefas de medição, processamento,
transmissão e recepção e quando inativo economiza energia.
1.7 – Conclusão
Neste capíitulo foram apresentadas as características de uma RSSF, bem como
as características de seus componentes, os nós sensores e sorvedouro.
No próximo capítulo será abordado o protocolo de comunicação utilizado neste
trabalho para comunicação dos nós de uma RSSF, o ZigBee.
8
Capítulo 2 – ZigBee
2.1 – Introdução
A evolução da tecnologia, a grande variedade de equipamentos eletrônicos, e
a necessidade de conectividade entre eles, é a base para a pesquisa de novas
tecnologias de transmissão de dados que permitam que estes equipamentos sejam
conectados a um baixo custo e com alto grau de segurança. Com isso desenvolveuse o padrão IEEE 802.15.4, para comunicação sem fio em curtas distâncias [8].
O protocolo ZigBee (bee-abelha em inglês) inspira-se justamente no método
de comunicação desses insetos, pois, ao encontrar um alimento elas dançam em
zigue-zague afim de passar informações sobre posição, distância e direção do
alimento. Baseado nessa peculiar característica, surge o ZigBee, que é a união dos
grupos ZigBee Alliance e IEEE 802.15.4 [2].
O ZigBee Alliance é formado por grandes empresas como Motorola, Phillips e
Samsung, cujo objetivo é produzir produtos de controle e monitoramento com baixo
custo, baixo consumo energético e que possuam a capacidade de comunicação sem
fio.
O IEEE 802.15.4 é um grupo que define padrões para camadas Físicas e de
Acesso ao Meio para redes pessoais sem fio (WPANs- Wireless Personal Area
Networks), e tem como principais características baixa taxa de transmissão, baixa
complexidade e baixo consumo de energia [9].
Logo, o padrão IEEE 802.15.4 define a comunicação sem fio para curtas
distâncias, implementando os níveis físicos e juntamente com uma norma
complementar temos o “ZigBee” - que descreve o nível de rede e especifica o
acesso à pilha pela aplicação e se propõe a ser uma forma de conectividade para a
criação de redes dinâmicas e escaláveis, com simplicidade e baixo custo de
implementação [8].
2.2 - A pilha de protocolos
O padrão ZigBee está estabelecido acima das camadas do 802.15.4 e
implementa a maioria das tarefas relacionadas a segurança e ao roteamento
[1].Podemos ver a pilha de protocolos da arquitetura de uma rede ZigBee na Figura
2.1, onde a camada de Rede (NWK) e o esboço para a camada de Aplicação foram
definidas pela ZigBee Alliance e a camada Física e a subcamada de Acesso ao
Meio foram definidas pelo grupo IEEE 802.15.4. Notamos ainda que dentro do
padrão definido pela ZigBee Alliance está incluída a subcamada de suporte a
Aplicação(APS) e a definição dos Objetos dos Dispositivos ZigBee (ZDO) (parte da
aplicação que define as funções dos dispositivos de rede) , além de prover serviços
de segurança [10].
9
Figura 2.1 - Pilha de protocolos ZigBee
Fonte: [3]
Na camada Física os nós podem trabalhar em três bandas. Para a América
do norte e a Europa trabalha-se em bandas de 902-928MHz e 868-868,6 MHz
respectivamente. Já no resto mundo utiliza-se a banda de 2,4-2,4835GHz [11]. Nas
bandas de 902-928MHz e 868-868,6MHz empregam-se modulação BPSK. A
primeira utiliza uma taxa de 40 Kbps e há 10 canais e na segunda utiliza-se uma
taxa de 20 Kbps e há 1 canal disponível. Na banda de 2,4-2,4835GHz utiliza-se a
modulação O-QPSK, com 250 Kbps de taxa e 16 canais disponíveis. Enfim, no
padrão IEEE 802.15.4 utiliza-se a técnica de transmissão DSSS (Espalhamento
Espectral por Sequencia Direta) junto com a modulação. Podemos ver na Figura 2.2
um quadro com o resumo das frequências, as taxas de transmissão em cada uma
delas e as regiões onde são empregadas.
TABELA 2.1 – Frequências das bandas
2.4GHz
868MHz
915 MHz
BANDA
COBERTURA
ISM
MUNDIAL
EUROPA
AMERICAS
ISM
TAXA DE
DADOS
250Kbps
20Kbps
40 Kbps
QUANTIDADE
DE CANAIS
16
1
10
Na Subcamada de acesso ao meio (MAC), pode-se usar o ARQ (Automatic
Repeat reQuest), ARQ é a retransmissão dos quadros não reconhecidos. Na Figura
2.3 é apresentado o formato de um quadro. O quadro possui os seguintes campos:
Controle de Quadro (2 bytes), que possui informações sobre o tipo de quadro, o
formato do campo de endereço e o controle do uso ACK; Número de sequência, (1
Byte), Endereçamento (4 a 20 Bytes), onde existe um identificador da rede destino, o
endereço destino, um identificador da rede fonte e o endereço de origem; Carga útil,
com um tamanho máximo de 104 Bytes e CRC, para detecção de erros (2 Bytes)[3];
10
Figura 2.2 - Estrutura do quadro de dados
Fonte: [3]
As atribuições da Camada de Rede são as de gerenciamento de entrada e
saída de dispositivos da rede e provimento de roteamento aos pacotes de dados até
seus respectivos destinos, a descoberta e a manutenção das rotas entre os
dispositivos, descobertas de nós vizinhos dentro da área de um salto, a inicialização
da rede e é o endereçamento dos dispositivos associados.
Na camada de aplicação, a subcamada APS, estabelece a comunicação entre
a camada de Aplicação e a camada de Rede, através, por exemplo, da conexão
entre dois dispositivos. Dois dispositivos que realizam os mesmos serviços podem
ser conectados, e a subcamada APS pode transferir as mensagens que um deles
receber diretamente para o outro [11].
As responsabilidades do ZDO são entre outras, a definição da função dos
dispositivos na rede, determinação de quais serviços de aplicação os dispositivos
irão prover e a descoberta de dispositivos na rede.
2.3 - Componentes de uma rede ZigBee
O padrão ZigBee define dois tipos de componentes: o Dispositivo de Função
Completa (FFD) e o Dispositivo de Função Reduzida (RFD). Um RFD pode
comunicar-se apenas com um FFD e o FFD pode comunicar-se tanto com um RFD
quanto com FFD. Logo deve haver ao menos um dispositivo do tipo FFD na rede e
um deles será o coordenador da rede. No nosso caso, em uma RSSF, este assumira
o papel de sorvedouro (receptor), e os nós da rede serão dispositivos RFDs.
2.4 - Topologias de uma Rede ZigBee
A arquitetura ZigBee suporta duas topologias: topologia em estrela e a
topologia par-a-par (P2P).
2.4.1 - Topologia em estrela
Na Figura 2.4 mostra a topologia em estrela onde a Rede ZigBee é controlada
por um elemento central, o coordenador da rede.
11
Figura 2.3 - Topologia em Estrela
Fonte: [3]
O coordenador é responsável pela inicialização da rede e pelo gerenciamento
de seus nós e estes por sua vez apenas se comunicam diretamente com ele.
Existem diversas aplicações para esta topologia entre os quais se destacam:
automação residencial, aplicações para periféricos de computadores, jogos e o
monitoramento de sinais vitais de pacientes [11]. Como na topologia em estrela cada
Nó comunica-se apenas com o coordenador, existe a limitação de apenas um salto
para a comunicação [3]. A limitação de um salto para comunicação limita o alcance
da rede.
2.4.2 - Topologia P2P
Na topologia P2P, diferentemente da topologia em estrela, quaisquer
dispositivos (FFD), podem comunicar-se entre si, desde que estejam no raio de
alcance um do outro. Uma rede P2P pode ser ad hoc e auto-organizável [4], e
permite a comunicação em múltiplos saltos para rotear as mensagens de um nó pra
qualquer outro da rede. A Figura 2.4 demonstra o funcionamento da topologia P2P.
Figura 2.4- Topologia par-a-par
Fonte: [3]
12
Como aplicações para a topologia P2P há a possibilidade de RSSFs para
monitoramento e coleta em áreas maiores [3][5][11]. Em uma rede que utiliza
múltiplos saltos a mensagem pode ser encaminhada através de vários nós (que
fazem o papel de roteadores) até chegar ao nó destino. Devido a isso podemos ter
uma região maior sendo abrangida desde haja nós suficientes para
encaminhamento de mensagens.
Neste trabalho é utilizada a topologia em estrela, pois os nós enviarão os
dados diretamente ao coordenador.
2.5 - Conclusão
Neste capítulo foram abordadas as características do protocolo ZigBee, bem
como as possíveis topologias de uma Rede de Sensores Sem Fio.
No próximo capítulo serão abordados alguns tipos de ZigBee comerciais.
13
Capítulo 3 – Módulos Zigbee comerciais.
3.1 – Introdução
A Rede de Sensores montada é constituída por dispositivos, nós sensores e
um sorvedouro. Os nós e o sorvedouro são constituídos de microcontroladores (esse
assunto será tratado no próximo capítulo), os rádios transmissores/receptores e os
sensores, no nosso caso o sensor de temperatura LM35.
No mercado existem vários modelos de rádios transmissores entre os quais
podemos destacar: Telos B, Micaz e Xbee. Cada um possui características próprias
como consumo de potência no estado Ativo e no estado Inativo (modo sleep dos
radios), sensibilidade de recepção. Embora tenham características um pouco
diferentes entre eles, todos utilizam o padrão ZigBee.
3.2 – Hardware
A seguir são apresentadas as características de cada um dos rádios citados.
3.2.1 - Telos B
TelosB Mote (TPR2400) da indústria Crosbow, é uma plataforma para
pesquisas e experimentação em RSSFs.[13] Entre suas características estão: taxa
de transmissão de dados de 250 kbps, microcontrolador TI MSP430 com 10kB
RAM, Antena integrada, coleta de dados e programação via USB e sensor de
temperatura e sensor de umidade opcionais integrados.
a)
b)
Figura 3.1- a) TesloB b) Diagrama de blocos do TeslosB
Fonte: [13]
14
Tabela 3.1 - Características do TeslosB - Fonte: [13]
15
3.2.2 - MICAz
O MICAz é um sistema de medição sem fios, projetado especificamente para
RSSFs. Entre suas características estão: banda centrada em 2,4 GHz, compatível
com IEEE 802.15.4, sistema de medição sem fio, taxa de transmissão de 250 Kbps,
cada nó possui a capacidade de atuar como roteador na rede, conector de expansão
para sensor de iluminação, temperatura, umidade relativa, pressão barométrica,
aceleração, etc. [12] As Figuras 3.2 a) e 3.2 b) apresentam o hardware e o diagrama
de blocos do MICAz. A Tabela 3.2 apresenta características tais como potência,
alcance do rádio transmissor, consumo energético durante recepção e transmissão e
durante o modo sleep. [12].
a)
b)
Figura 3.2 – a) Módulo MICAz b) Diagrama de blocos MICAz
Fonte: [12]
16
Tabela 3.2 - Caracteristica do MICAz - Fonte: [12]
17
3.2.3 – XBee
O XBee é o módulo ZigBee da empresa Maxtream, que também opera na
faixa de 2,4 GHz e suporta diferentes topologias. O XBee apresenta dimensões bem
reduzidas (menores do que as dimensões dos já citados) que podem ser
comprovadas através das Figuras 3.4 a) e 3.4 b). Ele possui 2 versões distintas
XBee e XBee Pro, diferem na potência de transmissão máxima. O XBee tem uma
potência de 1mW máxima e um alcance de 100m ou 30m (outdoor / indoor),
enquanto o XBee Pro opera com uma potência de 60mW, o que lhe permite alcançar
um raio de transmissão até 1,6km ou 100m (outdoor / indoor). Em termos de
consumo, são dispositivos que apresenta um consumo muito reduzido, inferior a
10μA, quando em estado sleep.[14]
Figura 3.3 - Módulos XBee/XBee PRO
Fonte: [14]
Figura 3.4 a) – Dimensões do XBee/XBee PRO
Fonte: [14]
18
Figura 3.4 b) – Dimensões do XBee/XBee PRO
Fonte: [14]
Tabela 3.3 – Características do módulo XBee - Fonte: [14]
19
3.3 – Escolha do Hardware
Com relação aos parâmetros disponibilidade, pode-se verificar que o XBee é
o que apresenta melhor custo beneficio.
Com isso escolheu-se o hardware da Maxtream neste trabalho.
3.3.1 – Detalhamento do módulo XBee
Como visto anteriormente, o módulo XBee preenche os requisitos quanto a
baixo custo e baixo consumo energético. Os módulos XBee podem ser conectados
com microcontroladores e estabelecer comunicação com outros dispositivos que
utilizem o padrão ZigBee[19]. A Figura 3.5 e as Tabelas 3.4 e 3.5, apresentam a
pinagem e as características de hardware do módulo XBee.
Figura 3.5 – Pinagem do módulo
20
Tabela 3.4 – Descrição dos pinos do módulo XBee - Fonte: [14]
Tabela 3.5 – Características de desempenho do módulo XBee - Fonte: [19]
Especificação de performance
Alcance Indoor/Urbano
Alcance Outdoor em linha visível
Potência máxima de transmissão
Taxa de dados de RF
Sensibilidade do receptor
XBee
Até 30m
Acima de 90 m
1mW (0 dBm)
250 Kbpps
-92 dBm
A Tabela 3.4 contém as especificações de cada um dos pinos do módulo
XBee. Ao ser utilizado, o mínimo de pinos que devem ser conectados são os pinos
1(Vcc) e 10 (GND), que devem estar conectados corretamente, pois são os pinos
responsáveis pela alimentação do módulo e os pinos 2(DOUT) responsável pela
transmissão e o 3 (DIN) responsável pela recepção. Os pinos não utilizados devem
ser deixados desconectados [14]. Nas Tabelas 3.5 e 3.6 são apresentadas
características do desempenho do hardware e requisitos de energia necessários
respectivamente.
21
Tabela 3.6 – Características Elétricas do Módulo XBee - Fonte: [19]
O XBee possui três opções com relação à antena utilizada para transmitir e
receber: antenas do tipo monopolo (whip), antenas do tipo dipolo e antenas do tipo
chip. As antenas do tipo dipolo possuem um ganho de 2,1dBi. Já as antenas do tipo
monopolo e tipo Chip possuem um ganho de 1,5dBi. As Figuras 3.7 e 3.8
apresentam os padrões de radiação das antenas tipos monopolo e chip.[14]. Neste
foi utilizado o rádio XBee com antena tipo chip.
Figura 3.6 – Padrão de Radiação das antenas tipo Monopólo
Fonte: [14]
22
Figura 3.7 - Padrão de Radiação das antenas tipo Chip
Fonte: [14]
3.3.2 – Modos de operação do XBee
O modulo XBee possui dois modos de operação com relação a transmissão e
recepção de dados: o modo transparente e o modo API. A seguir são apresentados
cada um dos dois modos e suas peculiaridades.
3.3.2.1 - Modo Transparente
O modo Transparente é o modo default dos módulos XBee/XBee PRO .
Quando operando neste modo o módulo ativa a comunicação serial. Sendo assim
todo dado que é inserido pelo pino de entrada de comunicação serial é transmitido
pela antena e todo dado recebido pela antena é enviado pelo pino de saída da
comunicação serial.
3.3.2.2 – Modo API
O modo API (Application Programming Interface) é uma alternativa ao modo
Transparente. Este modo é baseado em quadros que ampliam o nível em que um
dispositivo interage com os recursos de rede do módulo. Quando neste modo, todos
os dados que entram e saem do módulo, são formatados em quadros que definem
operações ou eventos dentro do módulo.[14]
Os quadros de transmissão de dados recebidos pelo pino DI (Pino 3) incluem:
quadro de transmissão de Dados;
quadro de comandos (equivalente aos comandos AT).
Os quadros de recepção dos dados pelo pino DO (Pino 2) incluem:
quadro de recebimento de dados;
resposta do comando;
notificação de eventos tais como associar, resetar, etc.
23
Logo, a diferença básica entre os modos Transparente e modo API é que no
primeiro, o dado é enviado bruto, ou seja, assim que chega à porta serial é
transmitido ou assim que é recebido é disponibilizado na porta serial e no segundo
modo o dado é enviado por quadros que facilitam a configuração e roteamento de
pacotes. [14]
O modo API também provê facilidades como o envio de dados para múltiplos
endereços sem necessidade de entrar no modo AT, receber mensagens de sucesso
ou de falha após cada envio de dados e identificar o endereço do módulo que enviou
a mensagem recebida.[14]
3.3.2.3 - Modo Sleep
É o modo de grande importância para aplicações em RSSFs, pois através
deste podemos economizar energia quando o módulo encontra-se neste estado. O
modo Sleep pode ser acionado via hardware quando se habilita o pino 9
(SLEEP_RQ) ou através de configuração prévia pelo modo de comando. Quando
habilitado pelo modo de comando, XBee mantém-se neste estado por períodos
cíclicos,. Também podem ser utilizadas as duas formas em conjunto.
Para entrar no Modo Sleep, uma das seguintes condições deve ser atendida:
• SLEEP_RQ (pino 9) é acionado e o módulo está configurado como SM (Sleep
Mode)=1,2ou5;
• O módulo está Inativo (sem transmissão ou recepção de dados) para a quantidade
de tempo definido pelo parâmetro ST (Sleep Time) Este comando só é ativado
quando SM =4-5.
A Tabela 3.7 apresenta os níveis de energia gastos em cada configuração do
modo Sleep e a Tabela 3.8 mostra as possiveis configuraçoes para o uso do Xbee
no modo Sleep.
Tabela 3 .7 – Gasto energético em cada configuração do modo Sleep.
MODO
SM=1
SM=2
SM=3
CONSUMO (DEPENDENDO DA
ALIMENTAÇÃO)
2.8-3V
3.2 V
3.4V
<3µA
32µA
170µA
<35µA
48µA
255µA
RESERVADO
SM=4
<34µA
49µA
240µA
SM=5
<34µA
49µA
240µA
MODO
SLEEP
MODO
ATIVO
SLEEP_RQ SLEEP_RQ
SLEEP_RQ SLEEP_RQ
COMANDO COMANDO
ST
SP
COMANDO SLEEP_RQ
ST
24
Tabela 3.8 – Configurações do modo Sleep
Fonte: [14]
3.3.2.4 - Modo de Comando (modo AT)
O modo de comando (ou modo AT) permite acessar e configurar o módulo
XBee. Através da digitação de caracteres específicos o módulo entra no estado de
programação. Existem alguns softwares para tal fim como o HyperTerminal do
Windows e o XCTU que é um software distribuído pela Digi através do seu site
www.digi.com . Um exemplo de comando AT: ATDL 1F, neste comando AT está
modificando o endereço destino do módulo que está sendo programado para 1F.
[14]
Tabela 3.9 – Tabela com exemplos de comandos AT
Commando AT
Função
ATDL, ATDL5001
O primeiro lê o endereço destino DL do
módulo local. No Segundo, altera o
endereço destino DL do módulo local
para 5001.
ATMY, ATMY5001
Lê o endereço fonte do módulo local. Na
segunda parte, ele altera o endereço
fonte.
ATND
Descobre os nós de uma rede.
ATWR
Escreve as alterações na memória.
Deve sempre ser dado após uma
alteração.
ATNI
Retorna o nome do módulo.
25
A Tabela 3.9 apresenta alguns comandos no modo AT. Esses comandos
como já dito, podem ser enviados ao XBee por alguns softwares. O próximo tópico
apresentará alguns detalhes de configuração do XBee através do software
distribuído pela Digi, o X-CTU.
3.4 – X-CTU
O X-CTU é um programa desenvolvido pela Digi para interação com os
arquivos do firmware encontrados em seus produtos, ou seja, possibilita a leitura de
dados e registradores do XBee através de comunicação serial com um computador.
Ele possui uma interface gráfica de fácil entendimento e também disponibiliza um
terminal onde pode-se entrar no modo comando (AT).[20] X-CTU é projetado para
funcionar com todos os computadores com o sistema operacional Microsoft Windows
98 SE e acima. Ele é dividido em abas PC Settings, Range Test, Terminal e Modem
Configuration. Adiante será apresentada brevemente cada uma das abas citadas.
3.4.1 - PC Settings
Este guia permite que o usuário selecione a porta COM desejada e configure
essa porta para se ajustar as configurações dos rádios. Este guia é o padrão que é
aberto assim que se inicia o programa e é dividido em três areas: a Host Setup, User
COM Ports, Ethernet COM Ports. A tela inicial co X-CTU pode ser vista na Figura
3.9.
Figura 3.8 – Tela inicial do X-CTU – Aba PC Settings
Fonte: [14]
26
Quando selecionada a porta COM correspondente ao rádio que será
configurado, o hardware já conectado ao computador, selecionando Test/Query, é
retornada a mensagem que contém o tipo do hardware e a versão do firmware
utilizado pelo mesmo, conforme mostrado na Figura 3.10.
Figura 3.9 – Mensagem com tipo do hardware e versão de firmware
Fonte: [14]
3.4.2 - Range Test
Permite testar a comunicação entre dois rádios. Este teste verifica o alcance
do enlace de um rádio através de envio de pacotes de dados e verificação da
resposta no outro rádio, a fim de confirmar ou não o recebimento do pacote idêntico
ao enviado dentro de um tempo pré-determinado.
Figura 3.10 – Range Test
Fonte: [14]
27
3.4.3 – Terminal
A aba Terminal tem três funções básicas:
emular o Terminal para programar com comando AT;
habilitar o envio e recebimento de pacote de dados predefinidos;
habilitar o envio e recebimento de dados no formato Hexadecimal e ASCII
(Show/Hidehex);
Figura 3.11 – Terminal
Fonte: [14]
A Figura 3.13 apresenta a tela do Terminal e alguns comandos AT digitados e
suas respectivas respostas. O comando digitado no caso é o atnd, node discovery,
onde possibilita descobrir os nós da rede em questão.
3.4.4 – Modem Configurations
O Modem Configurations tem quatro funções básicas:
28
prover uma interface grafica entre o usuário e o firmware do rádio;
ler e escrever o firmware nos microcontroladores dos rádios ;
baixar versões atualizadas dos firmwares pela internet ou de arquivos
comprimidos;
salvar ou carregar perfis dos modens.
O passo-a-passo para cada uma das funções supracitadas é informado no
guia do usuário, também disponível no site da Digi. Um exemplo é quando o usuário
quer ler as informações gravadas no rádio, é preciso selecionar a porta COM correta
em PC Settings e em Modem Configurations, selecionar “Read” na seção Modem
Parameters and Firmware.
Figura 3.12 – Tela inicial Modem Configurations
Fonte: [14]
29
Figura 3.13 – Tela após selecionar Read
Fonte: [14]
As Figuras 3.14 e 3.15 mostram, respectivamente, a tela do guia Modem
Configurations antes e depois de selecionar o botão Read.
Após a resposta com os parâmetros gravados no rádio é possível fazer
modificações, tais como, ID onde é definido o número da rede a qual o dispositivo
pertence. Depois de feitas as alterações, para gravá-las no rádio, é necessário
selecionar “Write”, encontrado na mesma seção do “Read”.
3.5 – Conclusões
Neste capítulo foram apresentadas opções de módulos, rádios, que podem
ser utilizados em situações em que sejam exigidos o padrão ZigBee e detalhou-se o
rádio escolhido para este projeto. A configuração destes rádios em uma rede ZigBee
30
será abordada no Capítulo 5. No próximo capítulo será apresentado o Arduino, que
foi o kit escolhido com o microcontrolador AT Mega que será programado para que
os rádios exerçam as funções desejadas.
31
Capítulo 4 – Arduino
4.1 - Introdução
Neste capítulo serão abordadas as características do hardware de
processamento utilizado. Conforme já abordado anteriormente, serão utilizados um
radio transmissor e receptor (XBee), um sensor de temperatura, o LM35 e um
microcontrolador que será programado com o algoritmo para economia de energia
da rede. O microcontrolador escolhido foi o Arduino. A seguir são descritas suas
características.
4.2 – O Arduino
Arduino é um kit de desenvolvimento de código aberto que contém uma placa
de circuito impresso com interfaceamento (pinos de entrada e saída) e
microcontrolador AT Mega. É usado para protótipos eletrônicos, pois pode controlar
a alimentação de outros dispositivos, interpretar sinais elétricos e executar diversas
funções preprogramadas.[16]. Existem diversas versões do hardware livre Arduino.
A Figura 4.1 apresenta algumas das versões existentes.
32
4.1 – Versões do Arduino.
Fonte:[16]
Neste trabalho utilizaremos o Arduino Duemilanove. Os próximos tópicos
abordarão detalhes deste hardware.
4.3- Arduino Duemilanove
O Arduino Duemilanove é uma placa baseada no microcontrolador
ATmega168 ou ATmega328. Possui 14 pinos digitais de entrada ou saída (dos quais
6 podem ser utilizados como saídas PWM), 6 entradas analógicas, um oscilador de
cristal de 16 MHz, controlador USB, uma tomada de alimentação, um conector ICSP,
e um botão de reset. Para utilização do Arduino é necessário apenas conectá-lo ao
computador com um cabo USB (nesse caso, utilizará os 5V da porta USB para
alimentação do hardware) ou ligá-lo com um adaptador AC/DC ou com uma bateria.
"Duemilanove" significa 2009 em italiano e é nomeado após o ano de seu
lançamento. O Duemilanove é o último de uma série de placas Arduino USB[15]. A
Figura 4.2 mostra a pinagem da placa utilizada e a Tabela 4.1 apresenta as
características do Arduino Duemilanove. O esquema elétrico do circuito do Arduino
pode ser encontrado no Apêndice A.
Na Figura 4.2 podem ser observados os pinos da placa Duemilanove. Estes
são:
AREF: referência analógica;
GND: terra;
Pinos Digitais: de 0-9 (lembrando que TX e RX já possuem funções
predeterminadas, transmissão e recepção, respectivamente);
Botão de reset: S1;
ICSP: programador serial do circuito;
Pinos de entradas analógicas: de 0-5.
33
Figura 4 2 – Pinagem do Arduino Duemilanove
Como já dito anteriormente o Arduino tem diversos pinos com funções
especificas. Na tabela 4.1 é apresentada brevemente a função de cada pino contido
no circuito impresso.
Tabela 4.1 – Características do Arduino Duemilanove
Microcontrolador
Tensão de Operação
Tensão de Entrada
(recomendado)
Tensão de Entrada
(limite)
Pinos Digitais I/O
Pinos Analógicos I/O
Corrente DC por Pino I/O
Corrente DC por Pino
alimentado por 3.3V)
Memória Flash
SRAM
ATmega168
5v
7-12v
6-20v
I/O
14 (6 podem ser usados como
saídas PWM)
6
40mA
(quando 50mA
16 KB (ATmega168) ou 32 KB
(ATmega328)
1 KB (ATmega168) ou 2 KB
(ATmega328)
34
EEPROM
Clock
512 bytes (ATmega168) ou 1 KB
(ATmega328)
16 MHz
4.3.1– Alimentação
O Arduino Duemilanove pode ser alimentado pela conexão USB ou por
qualquer fonte de alimentação externa. A fonte de alimentação é selecionada
automaticamente.
A alimentação externa (não USB) pode ser tanto de uma fonte ou de uma
bateria. A fonte pode ser conectada com um plug de 2,1 mm (centro positivo) no
conector de alimentação e cabos vindos de uma bateria podem ser inseridos nos
pinos GND (terra) e Vin (entrada de Tensão) do conector de alimentação. A placa
pode operar com uma alimentação externa de 6 a 20 V. Entretanto, se a alimentação
for inferior a 7 V o pino 5 V pode fornecer menos de 5 V e a placa pode ficar instável.
Se a alimentação for superior a 12 V o regulador de tensão pode superaquecer e
avariar a placa. A alimentação recomendada é de 7 a 12 V.[15].Os pinos de
alimentação são:
Vin: Pino para receber a tensão de entrada para a placa Arduino, quando ele
está usando uma fonte externa de energia;
5 V: A fonte de alimentação utilizada para o microcontrolador e para outros
componentes da placa. Pode ser proveniente do pino Vin através de um
regulador on-board ou ser fornecida pelo USB ou outra fonte de 5 V;
3 V3: alimentação de 3,3 V fornecida pelo circuito integrado FTDI (controlador
USB). A corrente máxima é de 50 mA;
GND (ground): pino terra.
4.3.2 – Memória
O microcontrolador ATmega 168 tem 16 KB e o ATmega328 tem 32 KB,de
memória flash ( onde é armazenado o software). O primeiro tem 1 KB de SRAM e
512 bytes de EEPROM (que podem ser lidos e escritos com a biblioteca EEPROM e
guarda os dados permanentemente, mesmo que seja desligado), já o segundo tem 2
Kb de SRAM e 1 KB de EEPROM. A memória SRAM é apagada toda vez que o
Arduino é desligado.[15]
4.3.3 - Entrada e Saída
O Arduino Duemilanove conta com 14 pinos que podem ser usados como
entradas ou saídas digitais, quando usados em conjunto com as funções pinMode(),
digitalWrite() e digitalRead() . Todos os pinos operam em 5V, e suportam ou
fornecem uma corrente máxima de 40 mA e possuem um resistor interno de pull-up
(desconectado por padrão) de 20-50KΩ. Alguns pinos possuem funções especiais
listadas a seguir:
35
Serial: 0 RX e 1 TX usados para receber (RX) e transmitir (TX) dados seriais
TTL. Estes pinos são conectados aos pinos correspondentes do chip serial
FTDI USB para TTL;
Interrupções externas:
PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma saída analógica PWM de 8 bits com
a função analogWrite();
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam
comunicação SPI, que embora compatível com o hardware, não está incluída
na linguagem do Arduino;
LED: 13: Já existe um led na placa do Arduino montado e conectado ao pino
digital 13.[15]
O Arduino Duemilanove também possui 6 entradas analógicas e cada uma
delas está ligada a um conversor analógico digital de 10 bits, que transformam a
leitura analógica em um valor dentre 1024 possibilidades[15].
4.3.4 – Comunicação
Com o Arduino Duemilanove a comunicação com um computador, com outro
Arduino ou com outros microcontroladores é muito simplicada. O ATmega328
permite comunicação serial no padrão UART TTL (5 V), que está disponível nos
pinos digitais 0 (RX) e 1 (TX). Um chip FTDI FT232RL na placa encaminha esta
comunicação serial através da USB e os drivers FTDI (incluído no software do
Arduino) fornecem uma porta virtual para o software no computador.[15]
O software Arduino inclui um monitor serial que permite que dados simples de
texto sejam enviados e recebidos à placa Arduino. Os LEDs RX e TX da placa
piscam quando os dados estão sendo transferidos ao computador pelo chip FTDI e
há conexão USB (mas não quando há comunicação serial pelos pinos 0 e 1).[15]
A biblioteca Software Serial permite comunicação serial por quaisquer dos
pinos digitais do Duemilanove.
O ATmega328 também oferece suporte aos padrões de comunicação I2C
(TWI) e SPI. O software do Arduino inclui uma biblioteca Wire para simplificar o uso
do barramento I2C.
4.3.5 – Programação
A linguagem de programação do Arduino Duemilanove é baseada em C e
C++. O ambiente de programação do Arduino é disponibilizado gratuitamente no
site da empresa, assim como também o manual com a referência da linguagem de
programação.
4.4 – XBee Shield
Como foi abordado no capítulo 3, neste trabalho foi utilizado o XBee como
rádio transmissor/receptor. Existe uma placa para adaptar o XBee diretamente à
placa do Arduino Duemilanove chamado de Arduino Xbee Shield.
O Arduino Xbee Shield permite que a placa Arduino se comunique sem fio
usando ZigBee. Ele foi desenvolvido com a colaboração da empresa Libelium. Com
o uso do Xbee Shield, duas placas Arduino são capazes de se comunicar sem
36
qualquer configuração, usando apenas os comandos padrão na porta serial de cada
Arduino.
Para se programar o Arduino com o XBee Shield, os jumpers existentes na
placa do shield, devem ser colocados na posição USB, ou seja, colocá-los mais
próximos à borda da placa.
Já, para configurar os módulos XBee através do shield conectado ao Arduino,
o microcontrolador Atmega deve ser retirado da placa Arduino e o jumper ficar na
posição USB. Figura 4.4 e 4.5 presentam a placa e o esquema do circuito impresso
do XBee shield respectivamente.
Figura 4.3 – Placa XBee shield
Fonte: [18]
Figura 4.4 – Esquema do circuito impresso XBee shield
Fonte: [18]
37
Figura 4.5 – Conjunto XBee+XBee Shield+Arduino Duemilanove
Fonte: [18]
4.5 – Conclusão
Neste capítulo foram abordadas as características tanto do hardware open
source Arduino quanto do XBee shield. No próximo capítulo é apresentado como
cada uma dessas tecnologias são utilizadas no projeto em questão.
38
Capítulo 5 – Configuração da Rede de Sensores Sem Fio
Este capítulo apresenta a implementação do algoritmo para economia de
energia utilizado em uma rede de sensores sem fio real.
Em [21] e [22] são propostos algoritmos para economia de energia que
utilizam comunicação de salto único e de múltiplos saltos, respectivamente. A seguir
são apresentados brevemente estes algoritmos. Neste trabalho é considerou-se o
algoritmo baseado na fonte.
5.1 – Algoritmos de salto único para RSSFs
Em RSSFs que utilizam a comunicação de salto único, o nó sorvedouro deve
estar dentro do raio de alcance de cada nó sensor. Um exemplo comum de
aplicações que utilizam salto único corresponde as Redes de Sensores Para o
Corpo Humano (BSN – Body Sensor Networks), utilizadas para o monitoramento
remoto de pacientes. Em BSNs, os sensores podem ser dispostos no corpo ou na
roupa dos pacientes, com o objetivo de coletar dados biométricos. Neste exemplo, é
comum que o sorvedouro se encontre a poucos metros do paciente, por exemplo,
em um quarto de hospital [3]. Neste trabalho algoritmo usado utiliza a comunicação
de salto único.
5.1.1 – Algoritmo baseado na fonte
Para este algoritmo utiliza-se a premissa de que a RSSF é composta por nós
sensores autônomos e cada qual realiza suas tarefas de forma independente.
Também é utilizado o conceito de inovação na fonte, ou seja, a verificação de que se
houve inovação (variação percentual em relação à medida anterior) ocorre em cada
nó sensor. [21]
_________________________________________________________________
Algoritmo 1 - Algoritmo baseado na fonte
_________________________________________________________________
while energia >0 do
If
else
if
then
>
then
39
end if
end if
end while
Conforme pode ser observado em algoritmo 1 [21], cada nó sensor realiza a
primeira medida e transmite a amostra para o nó sorvedouro. No algoritmo
são
as medidas, onde representa o sensor e a ordem sequencial das medidas. Então
a partir da segunda medida de cada nó sensor, esta é comprada com a anterior. O
sensor apenas transmitirá as amostras para as quais as variações percentuais entre
a amostra atual e a anteriormente transmitida sejam maiores que um limiar
prefixado, chamado de limiar de inovação. Logo o nó sensor apenas transmite uma
nova amostra
, caso:
>
(3)
Onde
é a última amostra transmitida pelo sensor. Desta forma espera-se
reduzir a quantidade de transmissões de cada nó sensor, economizando energia e
com isso aumentar o tempo de vida da rede. Cada nó de forma autônoma passa
para o estado inativo após uma transmissão inovadora, visando aumentar o tempo
de vida da rede.
Em [21] o tempo em que o nó ficará inativo é definido por:
(4)
Onde
de transmissão anterior.
,
é o instante de transmissão atual e
O período de inatividade é definido por
é o instante
para que os nós possam voltar ao
estado ativo mais rapidamente o que visa o caso de o processo variar rapidamente.
Este período de inatividade não é fixo e pode variar ao longo do tempo e de acordo
com o processo monitorado. Após o período de inatividade, o nó “acorda”, realiza
nova medida e compara esta com a anterior. Este processo é realizado até que a
energia do nó acabe. Na Figura 5.1, é ilustrado um exemplo de utilização do
algoritmo em um processo de comunicação. Percebe-se através dessa figura que o
nó sensor fica mais tempo inativo e assim reduz suas transmissões.
Com este algoritmo, o nó é autônomo para decidir por transmitir ou não,
passar para o estado inativo e por quanto tempo permanecer neste estado. [21]
40
Figura 5.1 – Exemplo de comunicação utilizando o algoritmo baseado na fonte.
Fonte: [21]
A seguir, outra abordagem é descrita, o algoritmo baseado no sorvedouro.
Este algoritmo não foi considerado neste trabalho, pois o autor de [3] verificou que
apresenta pior desempenho que o baseado na fonte.
5.1.2 - Algoritmo baseado no sorvedouro
Diferentemente do algoritmo baseado na fonte, o algoritmo baseado no
sorvedouro, é um algoritmo centralizado, mais especificamente no sorvedouro, onde
acontece todo o processamento (no que diz respeito à verificação das amostras
inovadoras) e a tomada de decisões (no que tange as transições para o estado Ativo
ou Inativo e por quanto tempo permanecer neste modo). Desta forma, podem-se
utilizar nós mais simples (em termos de processamento), pois todo processamento é
realizado no sorvedouro [21].
Nesta abordagem os nós sensores apenas medem as amostras e enviam
para o nó sorvedouro. Este último é o responsável pela tomada de decisões, como
pode ser visto em Algoritmo 2. Para cada nó sensor, o sorvedouro, a partir da
segunda amostra recebida, calcula a variação percentual conforme equação (3),
apenas trocando por , que são as coordenadas da posição de cada nó dentro da
região monitorada. Seja
, o primeiro valor recebido pelo sorvedouro, ou seja, a
amostra atual do sensor
A partir da próxima amostra recebida, o sorvedouro
calcula a variação percentual entre a amostra atual
, e a primeira. Caso esta
variação seja maior do que o limiar de inovação, o sorvedouro calcula o intervalo de
tempo
entre as respectivas recepções e manda que o respectivo nó transmissor
durma metade deste intervalo
segundos. Após este intervalo o nó sensor em
questão volta ao estado ativo continua a transmitir amostras para o sorvedouro [21].
Esta situação é exemplificada na Figura 5.2.
41
Figura 5.2 – Exemplo de comunicação utilizando o algoritmo baseado no
sorvedouro.
Fonte: [21]
_______________________________________________________________
Algoritmo 2 - Algoritmo baseado no sorvedouro
_______________________________________________________________
while energia >0 do
if
then
else
if
>
then
end if
end if
42
end while
5.2 - Configurações da Rede de Sensores sem Fio
O primeiro passo para programar a RSSF e para isso utilizamos o kit montado
de Arduino, Arduino Shield XBee e XBee série1, descritos nos capítulos 3 e 4. É
importante ressaltar que para que o XBee possa ser programado através do Arduino
Duemilanove deve ser retirado o microcontrolador ATMEGA 168, conforme pode ser
visto na Figura 5.3.
Retirado o microcontrolador do Arduino, o próximo passo foi conectar o XBee
+XBee Shield ao Arduino. Também é importante lembrar que o jumper da placa
XBee Shield deve estar na posição USB, para que seja feita a comunicação serial
através da porta USB do Arduino. Esta configuração pode ser vista através da
Figura 5.4.
Figura 5.3 – Arduino Duemilanove sem o microcontrolador AT MEGA 168
43
Figura 5.4 – Arduino Shield XBee com jumpers na posição USB
Para configuração dos parâmetros da rede, utilizou-se o X-CTU (as
características deste software já foram abordadas no Capítulo 3). Ao iniciarmos a
conexão do hardware com o X-CTU, deve-se primeiro verificar se o software
consegue conectar-se pela porta serial onde hardware está conectado. Na Figura
5.5 pode ser visto o teste executado.
44
Figura 5.5 – Teste de conexão entre X-CTU e XBee
Para modificar os parâmetros já gravados no rádio, seleciona-se a aba
Modem Configuration dando o comando READ. É possível ler a versão do firmware
do rádio XBee em questão e alterá-lo de acordo com a necessidade. Para configurar
uma nova rede todos os módulos devem ter o mesmo número de PAN ID
(identificação da rede). A rede foi configurada com PAN ID 1234. Um primeiro rádio
foi configurado como coordenador da rede, ou sorvedouro, através da modificação
do parâmetro CE, Coordinator Enable, setado em 1. Outro parâmetro que foi
45
alterado foi o SM, Sleep Mode, que foi setado em 0, para não entrar no modo sleep,
pois como este é o coordenador, ele ficará todo o tempo recebendo as informações
passadas pelos outros nós da rede. Também foi dado o nome COORD ao rádio,
através do comando NI, Node Identifier. As Figuras 5.6 e 5.7 ilustram as
modificações feitas. Após esse passo, seleciona-se o botão WRITE do X-CTU para
que as modificações sejam gravadas no XBee.
Figura 5.6 – Modificação de parâmetros de rede no XBee através do X-CTU
46
Figura 5.7 – Modificação de parâmetros de rede no XBee através do X-CTU
Para configuração dos outros nós da rede, utilizamos o mesmo Arduino sem o
microcontrolador, apenas inserindo o XBee a ser configurado.
As Figuras 5.8, 5.9 e 5.10 mostram a configuração do nó 1. Conforme já
mencionado o PAN ID foi configurado como 1234. Podemos notar na figura 5.4, o
parâmetro MY está com o número zero (0), este numero é o endereço do nó
coordenador, logo o endereço no qual o nó 1 irá enviar informações é o zero(0). Por
isso DH e DL, (que significam, os quatro bits mais significativos e os quatro bits
menos significativos do endereço de destino dos pacotes de informações enviados
pelo nó 1 , respectivamente) estão configurados em zero. Esta configuração está
ilustrada na Figura 5.8.
47
Figura 5.8 – Modificação de parâmetros de rede no XBee através do X-CTU
Na Figura 5.9, manteve-se CE em 0, pois este nó não será o coordenador da
rede e SM, foi setado em um (1), pois conforme visto no Capítulo 3, esta
configuração permite que o XBee entre no modo sleep através de uma saída digital
do Arduino Duemilaenove em estado lógico alto(1) conectada ao pino 9 do XBee. A
maneira como pode ser feita esta conexão será abordada mais a frente.
48
Figura 5.9 – Modificação de parâmetros de rede no XBee através do X-CTU
Outros parâmetros importantes são D7 e o PR. O D7 deve estar desativado
(setado em zero), pois quando D7 está em 1 ( CTS FLOW CONTROL) , está se
dizendo para por 1 na linha DIO7, que está compartilhada com CTS. Se não for
desativada o Arduino irá se resetar quando o modulo XBee entrar no modo sleep. E
o parâmetro PR deve estar em zero, pois assim, desativam-se as resistências de
pull-up, para economizar energia. Pode-se observar o que fora descrito através da
Figura 5.10.
49
Figura 5.10 – Modificação de parâmetros de rede no XBee através do X-CTU
Uma vez realizada a configuração do nó 1, os outros nós foram configurados
da mesma maneira, apenas mudando o parâmetro MY(endereço do nó) e o NI
(identificação do nó).
5.3 – Sensor
Visto que o Arduino pode fazer a leitura analógica dos valores de saída
diversos sensores, pode-se montar uma Rede de Sensores sem fio com a fim
medir qualquer grandeza. No trabalho em questão, utilizou-se o sensor
temperatura LM 35. As características do LM 35 são abordadas a seguir.
A série LM 35 são circuitos integrados de precisão em sensoriamento
temperatura. A tensão de saída é proporcional à variação de temperatura
de
de
de
de
do
50
ambiente em graus Celsius. A tensão de saída do LM 35 varia 10mV/°C e este
sensor tem precisão de ± 1/4 ° C à temperatura ambiente e ± 3/4 ° C ao longo do
intervalo de temperatura. Entre -55 a +150 ° C. Neste trabalho utilizou-se o LM 35 na
forma de transistor conforme pode ser visto na Figura 5.11. Mais informações sobre
este sensor podem ser encontradas no datasheet do LM 35 em [23].
Com estas características o LM 35 se adequa a este trabalho, já que há a
necessidade de medimos a temperatura para monitorar ambientes.
Figura 5.11– Sensor de temperatura LM 35 encapsulado como transistor
Fonte: [23]
5.4 - Programação do Arduino Duemilanove
Este trabalho visa demonstrar experimentalmente que ao utilizar o algoritmo 1
tem se uma economia de energia do nó em relação a outros nós que não utilizam o
algoritmo 1. Então em um primeiro momento, programou-se o Arduino para apenas
para ler uma entrada analógica executar cálculos e colocar esses valores em sua
porta serial para que fossem enviados para o nó coordenador, o que é ilustrado
pelas Figuras 5.12 e 5.13. Desta forma podem-se realizar testes para verificação da
diminuição da quantidade de transmissões do nó sensor, que leva a uma economia
de energia para os nós.
51
Figura 5.12 – Programa gravado no Arduino para ler temperatura
52
Figura 5.13 – Valores enviados a porta serial do Arduino
O código visto na Figura 5.12 visa apenas receber o valor da entrada
analógica, através do pino 0, como pode ser visto na parte de declaração de
variáveis. A função void setup é utilizada para iniciar a comunicação serial. Dentro
desta função define-se a velocidade de comunicação através do comando
Serial.begin. Neste caso utilizou-se a velocidade de 9600 Baud.
A função void loop define o loop que será executado. Dentro deste loop, t[i] é
um vetor que recebe a temperatura. Como foi visto no item 5.3, a temperatura é
dada no LM 35 através da variação da tensão em seu pino VOUT. Cada 10m/V na
saída é 1°C. Logo, foi preciso converter tensão em temperatura. Multiplicou-se este
valor por 5 pois, utilizou-se a saída de 5V da placa do Arduino para alimentar o
sensor. O valor de 100/1023 é utilizado por conta do conversor A/D da placa. A
Figura 5.13 ilustra a saída, os dados que estão sendo enviados a porta serial do
Arduino. Percebe-se que cada vez que o programa passa pelo loop, ele envia a
temperatura.
O algoritmo 1 é mostrado a seguir, já escrito na linguagem para Arduino.
Antes da programação precisou-se fazer um ajuste no Arduino XBee Shield, pois
para entrar no modo sleep, o XBee precisa receber um sinal de nível lógico alto
(3,3v) em seu pino 9. Como as saídas digitais do Arduino tem um nível lógico alto de
5v, precisou-se fazer um divisor de tensão conforme ilustram as Figuras 5.14 e 5.15.
Desta forma pode-se conectar com segurança o pino digital 7 do Arduino ao pino 9
(sleep request) do XBee.
53
Figura 5.14 – Divisor de tensão
Figura 5.15 – Divisor de tensão soldado no Arduino XBee Shield
Em relação ao Programa 1, após a declaração das variáveis e da função de
inicialização da comunicação serial, utilizou-se dentro de void loop a função while ,
para ser feita a distinção entre o primeiro instante de transmissão e os outros. Em
i=0(primeiro instante) a temperatura é transmitida e incrementa-se o i (i++). No
instante seguinte onde i =1, o programa entra no laço onde fará a comparação entre
a temperatura atual (t[i]) e a temperatura anterior t([i-1]), caso o valor em modulo de
(t[i]-t[i-1]) /t[i] seja maior que o limiar de inovação, esta temperatura será transmitida,
e o XBee entrará no estado de baixo consumo energético por um tempo calculado
pelo programa. Caso contrário, ele incrementa i e retorna ao inicio do laço. No
programa o cálculo do tempo que o XBee fica inativo é realizado pela variável sleep
através da função millis(). A função millis() retorna o tempo desde que o programa
54
começou a funcionar até passar pelo trecho em questão. Este tempo é dado em
milissegundos
Para que o XBee entre neste estado de baixo consumo energético (“durma ” e
“acorde”) utilizou-se a função digitalWrite(). Com esta função pode se enviar uma
tensão em nível logico alto (5V) ou parar de enviar esse nível de tensão para o pino
digital em questão . Conforme já mencionado utilizou-se o pino digital 7 para este
propósito. Para que o radio fique em estado inativo envia-se 5V para o pino digital 7 ,
através do comando digitalWrite(XBee_pin,HIGH), para que este volte ao estado
ativo utiliza-se digitalWrite(XBee_pin,LOW). Desta forma pode-se notar que caso a
temperatura atual tenha passado de um limiar, o nó sensor vai transmitir este valor e
após isso, irá entrar em estado de inatividade pelo tempo calculado em sleep, e
depois deste tempo, voltará ao estado ativo. Espera-se com esse programa que haja
a redução da quantidade de transmissões do XBee, o que resultaria em economia
de energia para os nós sensores.
Programa 1
int pin=0;/*declaração de variaveis */
int i=0, XBee_pin=7;
float x,t[2] ;
unsigned long time=0, sleep;
unsigned long tr=0;
void setup() /*inicia a comunicão serial*/
{
Serial.begin(9600);
}
void loop(){
pinMode(XBee_pin,OUTPUT); /*Configuração do pino digital 7
como saída digital*/
while (i==0){
t[i]=(5.0*analogRead(pin))*100/1023.0;
tr=0+millis();
Serial.print(t[i],2);
Serial.print(" Celsius");
Serial.flush(); /*após transmissão, limpar porta serial*/
i++;
}
while(i>0){
t[i]=(5.0*analogRead(pin))*100/1023.0;
x=((t[i]-t[i-1])/t[i-1]);/*calcula
variação
percentual
da
temperatura*/
x=abs(x);/*calcula o modulo de x*/
55
if(x>inovação){
Serial.print(t[i],2);
Serial.print(" Celsius");
Serial.print(" no3 ");
Serial.print("i=");
Serial.println(i, DEC);
time=0+millis();
sleep=((time-tr)/2);
tr=time;
digitalWrite(XBee_pin, HIGH);
delay(sleep);
digitalWrite(XBee_pin,LOW);
Serial.flush();
}
delay(1000);
i++;
}
}
5.5 – Conclusão
Neste capítulo foi apresentada a maneira como a Rede de Sensores sem Fio
foi programada. Desde a configuração dos rádios XBee até a programação dos
microcontroladores AT Mega da placa Arduino Duemilanove. No próximo capítulo,
são apresentados os resultados dos testes realizados através dos nós da rede
devidamente configurados conforme apresentado neste capítulo.
56
Capítulo 6 – Testes e resultados
6.1 – Introdução
Neste capítulo serão apresentados os resultados obtidos nos testes.
Estes resultados são importantes, pois por meio destes pode-se provar ou
não a economia de energia nos nós sensores utilizando-se o Algoritmo 1, proposto
em [21].
6.2 – Testes de consumo do nó sensor
Para medição da corrente consumida, fez-se a montagem conforme Figura
6.1.
Figura 6.1– Circuito de teste
Para que fosse feita a comparação do consumo, primeiro verificou-se o valor
de consumo do conjunto Arduino + XBee quando o Arduino for programado para ler
a entrada analógica 0, executar os cálculos e enviar a temperatura para porta serial,
conforme código apresentado na Seção 5.4. A leitura feita com o XBee ativo foi de
77,07mA, conforme é ilustrado na Figura 6.2.
57
Figura 6.2– Amperímetro digital utilizado na medição do consumo com XBee
ativo.
Para verificação da economia ou não de energia do conjunto Arduino+XBee
quando XBee entra no modo sleep, o Programa 1, apresentado na seção 5.4, foi
carregado no Arduino. Para utilização deste programa, fez-se necessário, conforme
já ilustrado, a utilização do Arduino XBee Shield, com um divisor de tensão
acoplado. Com o XBee no modo sleep foi feita a leitura de 27,04 mA, conforme
ilustrado pela Figura 6.3.
Desta forma verificou-se que há uma diminuição de 50,03 mA, quando o
XBee está no modo sleep, ou seja uma redução no consumo energético de 64,94%
quando o XBee está inativo.
Figura 6.3– Amperímetro digital utilizado na medição do consumo com XBee
no modo Sleep.
A diminuição de consumo se deu pelo fato que, de acordo com algoritmo 1
[21] apenas se transmite o dado caso haja inovação, caso o contrário ele “dorme”
58
sendo necessário a alimentação do Arduino, por esse motivo o consumo não é ainda
mais reduzido.
A seguir serão apresentados os resultados da verificação de transmissões
feitas pelo XBee nos dois modos, sem e com Algoritmo 1.
6.3 – Testes de transmissão
O primeiro teste foi com o Arduino programado apenas para ler a entrada
analógica 0, realizar cálculos e transmitir, conforme código ilustrado na Figura 5.10.
Neste programa o índice i é um contador de quantas vezes o programa passou pelo
laço. O resultado das transmissões pode ser visualizado na figura 6.4. Percebe-se,
por este gráfico, que a cada passada no laço, o nó sensor realiza a rotina e envia os
dados. Este teste foi realizado até i=30 e durou cerca de 1 minuto.
30
25
TEMPERATURA
20
15
10
5
0
0
5
10
15
20
25
30
35
I
Figura 6.4 – Resultado de transmissões do nó sensor programado apenas para
realizar a rotina e enviar os dados.
O próximo passo foi realizar os testes com o programa 1. Para visualizar a
redução de transmissões e, em consequência a redução de energia gasta pelo nó
sensor, variou-se o campo inovação (define o limiar de inovação) do programa. O
primeiro teste foi com o limiar de inovação de 1%, isto quer dizer que caso a
temperatura atual seja maior que o limiar de inovação (1%) em relação à
anteriormente transmitida, a temperatura atual deverá ser transmitida. O teste foi
realizado durante 5 minutos, e a variação da temperatura foi realizada ao colocar e
retirar o dedo de cima do sensor LM 35. A Figura 6.5 ilustra essa situação. Nota-se
que em relação à Figura 6.4, já houve uma redução no número de transmissões.
Neste gráfico o espaço entre uma transmissão e outra é o período em que o XBee
59
está dormindo. O procedimento também foi realizado para o limiar de inovação de
3%, 5% e 7%. Os resultados podem ser observados nas Figuras 6.6, 6.7 e 6.8
respectivamente.
Figura 6.5 – Resultado de transmissões do nó sensor utilizando o programa 1
com limiar de inovação de 1%.
Figura 6.6 – Resultado de transmissões do nó sensor utilizando o programa 1
com limiar de inovação de 3%.
O teste com o limiar de inovação de 5% durou cerca de 10 minutos e a
variação da temperatura foi conseguida através de um ferro de solda colocado
próximo ao sensor LM 35. A Figura 6.7 ilustra esse experimento.
60
Figura 6.7 – Resultado de transmissões do nó sensor utilizando o programa 1
com limiar de inovação de 5%.
Na Figura 6.8 podem ser observadas as transmissões em um nó programado
para transmitir a temperatura caso o limiar de inovação seja maior que 7%. Para que
fosse transmitida a temperatura, a variação deveria ser bem maior que nos outros
casos. Logo essa variação também foi feita através do ferro de solda. Nota-se por
isso um pico de 43° C quando i=49. Logo depois em i=50 ele também transmite, pois
com o ferro de solda sendo retirado de perto do LM 35 a temperatura baixou a
aproximadamente 24°C.
Figura 6.8 – Resultado de transmissões do nó sensor utilizando o programa 1
com limiar de inovação de 7%.
Através destes testes, pode-se concluir que quanto maior o limiar de
inovação, maior será o período sem que o nó transmita um dado e assim economize
energia.
Outro teste importante foi realizado para verificar a comunicação entre o nó
coordenador e o nó sensor. Foi feita a verificação da Taxa de Entrega de Pacotes.
A Taxa de Entrega de Pacotes é definida pela equação:
61
(5)
Onde
é a quantidade de pacotes recebidos pelo sorvedouro e
quantidade de pacotes transmitidos pelo nó sensor.
éa
Durante 20 minutos foi colocado um nó sensor em um computador e em outro
foi colocado o coordenador. Este nó sensor estava programado com limiar de
inovação de 1%. Foram enviados 56 pacotes para o coordenador. No coordenador
foram recebidos os mesmos 56 pacotes. Conclui-se desta maneira que a
foi de
100%.
Como objetivo do trabalho é avaliar um consumo energético, realizou-se um
teste monitorando dois nós idênticos, onde um utiliza o algoritmo 1 [21] (com o limiar
de inovação de 1%) e o outro apenas coleta os dados e transmite-os. Os dois nós
são alimentados, cada um com uma bateria de 9V. O teste foi realizado durante uma
hora, e após esse tempo verificou-se a tensão de cada bateria. Como resultado,
observou-se que a bateria do nó com o Algoritmo 1 manteve-se com 95% da tensão
na bateria. Quanto ao nó sem o algoritmo 1, este manteve apenas 88% da energia.
Embora não tenha havido uma grande diferença, é importante ressaltar, que o
Algoritmo 1 [21] estava utilizando o limiar de inovação de 1% e o teste foi realizado
durante 1 hora. Logo pode-se verificar que a utilização do Algoritmo 1 leva a
economia de energia nos nós sensores.
6.4 – Conclusão
Com os dados experimentais apresentados neste capitulo, pode-se concluir,
que a utilização do algoritmo proposto em [21], promove a economia de energia nos
nós sensores. Esta redução do consumo energético poderia ser maior caso o
Arduino também fosse desligado. No próximo capitulo serão abordadas as
dificuldades e trabalhos futuros que poderão ser desenvolvidos a partir do que
apresentamos.
62
Capítulo 7 – Conclusões
Neste trabalho, um algoritmo para economia de energia foi implementado em
uma RSSF real. O objetivo do algoritmo é aumentar a autonomia da rede através da
redução da quantidade de transmissões, e assim reduzir o consumo energetico dos
nós sensores, aumentando o tempo de vida da rede.
Após a configuração da RSSF, conforme apresentado no Capítulo 5, foram
realizados testes. O primeiro foi o de consumo de corrente dos nós nos estados
ativo e inativo. Através deste teste, conforme apresentado no Capítulo 6, pode-se
provar que com a utilização do algoritmo, podemos obter uma redução de 64,94%
do consumo quando o nó está com XBee no modo Sleep.
O segundo teste foi o da redução da quantidade de transmissões de acordo
com o limiar de inovação adotado. Através deste teste, percebeu-se que quanto
maior o limiar de inovação, menor a quantidade de transmissões. Como é sabido, a
tarefa que demanda maior consumo de energia é a de transmissão/recepção logo,
se tem uma maior economia de energia quanto maior o limiar de inovação.
Um terceiro teste realizado foi avaliar o consumo energético dos nós. Durante
uma hora de experimento verificou-se o nível da bateria em dois nós idênticos, um
utilizando o algoritmo e o outro não. Verificou-se que o nó sem o algoritmo manteve
88% da tensão na bateria após uma hora de teste, enquanto que o nó com o
algoritmo manteve 95% da tensão. Portanto, verificou-se uma economia de energia
com a utilização do algoritmo conforme esperado.
Com esses testes pode-se comprovar que há o beneficio da redução de
consumo energético em nós de uma RSSF que utiliza o algoritmo implementado e
de acordo com o limiar de inovação, pode haver maior ou menor economia. Porém,
pode-se notar que ainda que o XBee esteja no modo Sleep, há um gasto energético
considerável (27,04mA), pois o Arduino permanece ligado.
Como trabalho futuro, pode-se aprimorar o Programa 1, para que o Arduino
também entre no modo Sleep de uma forma que “durma” consumindo o mínimo de
energia possível durante o tempo calculado no campo sleep do Programa 1 e que
“acorde” automaticamente após esse tempo. Dessa forma aumentar-se-á o tempo
de vida da rede.
63
Refêrencias bibliográficas
[1]KARL, H. AND WILLIG, A. In Protocols and Architectures for Wireless Sensor
Networks. Wiley, 2007.
[2] DE OLIVEIRA CUNHA, D. conservação de energia em Redes Ad Hoc. Master’s
thesis, Universidade Federal do Rio de Janeiro – COPPE, 2004.
[3] HENRIQUES, F. R. Conservação de Energia em Redes de Sensores Sem Fio.
2010. 100 f. Dissertação (Mestrado em Engenharia Eletrônica) – Faculdade de
Engenharia, Universidade do Estado do Rio de Janeiro, Rio de Janeiro. 2010
[4]AKYILDIZ, I.F., VURAN, M.C., AND AKAN, O. B. On Explorating Spatial and
Temporal Correlation in Wireless Sensor Networks. In Proc.WiOpt’04: modeling and
Optimization im Mobile, Ad Hoc and Wireless Sensor Networks( Reino Unido, 2004).
[5] CUNHA, D.O. Conservação de Energia em Redes Ad Hoc. Dissertação
(Mestrado) – Universidade Federal do Rio de Janeiro – COPPE, 2004.
[6] CLAUSEN, T., JAQUET, P., LAOUITI, A , MUHLETHALER, P., QAYYUM, A.,
AND VIENNOT, L. Optimized Link State Routing Protocol. In IEEE International Multi
Topic Conference (INMIC) (2001), pp. 62-63.
[7] CUNHA, D. O., COSTA, L. H. M. K., AND DUARTE, O. C. M. B. An Energy Aware
Routing Mechanism for Mobile Ad Hoc Networks, In The 3rd IEEE Latin American
Network Operations and Management Symposium – LANOMS’2003 (Brasil,
Setembro 2003), pp. 47-54.
[8] GESSINGER, A. K., HENNING, C. H., ZigBee – Conectividade Wireless para
Automação e Controle. In Congresso ISASHOW2005. (Brasil, 2005)
[9] CUNHA D. O., LAUFER, R. P.MORAES, I. M., BICUDO, M, D. D., VELLOSO, P.
D., AND DUARTE, O. C. M. B. Bio-Inspired Field Estimation with Wireless Sensor
Networks. In 12th International Conference on Telecommunications ICT’2005 (África
do Sul, 2005).
[10] DE OLIVEIRA CUNHA, D. Redes de Sensores sem Fio de Múltiplos Saltos:
Protocolos Específicos para Aplicações e Roteamento com Suporte à Diversidade
Cooperativa. PhD thesis, Universidade Federal do Rio de Janeiro – COPPE, 2008.
[11] DESHPANDE, A., GUESTRIN, C., MADDEN, S., HELLESTREIN, J. M., AND
HONG, W. Model-Driven-Data Acquision in Sensor Networks. In Proc. 30th
International Conference on Very Large Data Bases (VLDB) (Canadá, 2004).
[12] CROSBOW TECNOLOGY, I n c. Product Manual, MICAz WIRELESS
MEASUREMENT SYSTEM.
[13] CROSBOW TECNOLOGY, I n c. Product Manual, TESLOS-B MOTE
PLATFORM WIRELESS MEASUREMENT SYSTEM.
64
[14] MAXSTREAM, Inc. Product Manual - XBee/XBee-PRO OEM RF Modules, RF
Module Operation, RF Module Configuration and Appendices. 2006.
[15] http://arduino.cc/en/Main/arduinoBoardDuemilanove. Acesso em 27/11/2011.
[16] http://arduino.cc/en/. Acesso em 27/11/2011.
[17] http://arduino.cc/en/Main/Software. Acesso em 27/11/2011.
[18] http://arduino.cc/en/Guide/ArduinoXbeeShield. Acessado em 28/11/2011.
[19] FIGUEREDO, L. F. C., Tutorial XBee. Departamento de Engenharia
Elétrica, Universidade de Brasília (UnB)(Brasil, 2008).
[20] DIGI. INTERNATIONAL, Inc. Product Manual - X – CTU Configuration & Test
Utility Software.2008
[21] HENRIQUES, F. R., LOVISOLO, L., RUBINSTEIN, M. G., Algoritmo para
aumentar tempo de vida de Rede de Sensores sem Fio utilizando inovação. In XXVI
Simpósio Brasileiro de Telecomunicações SBrt 2009. Santa Catarina, Brasil: [S. N],
2009.
[22] HENRIQUES, F. R., LOVISOLO, L., RUBINSTEIN, M. G., An Inovation – Based
Algorithm for Energy Conservation in Multihop Wirelles Sensors Networks. In IEEE
International Telecommunications Symposium (ITS 2010) Manaus, Brasil [s.n.],
2010.
[23] NATIONAL SEMICONDUCTOR CORPORATION, Inc. Product Manual, LM 35
PRECISION CENTIGRADE TEMPERATURE SENSOR.
[24] LOUREIRO, A. A. F. Redes de Sensores Sem Fio – Minicurso. In: Simpósio
Brasileiro de Redes de Computadores. Rio Grande do Norte, Brasil: [s.n.], 2003, p.
179-226.
65
Apêndice A
66
Download

Implementação de um Algoritmo para Economia de Energia em