Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

153
Universidade de Pernambuco Escola Politécnica de Pernambuco Departamento de Sistemas e Computação Programa de Pós-Graduação em Engenharia da Computação Frederico Cox Cavalcanti Lins Junior Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio Dissertação de Mestrado Recife, fevereiro de 2010

description

A limitação de energia disponível em nodos de redes de sensores sem fio é um fator crítico. Na maioria ou quase em sua totalidade, os sensores são colocados em áreas remotas que não permitem facilmente o acesso a esses elementos para troca de baterias. Nodos são alimentados a baterias e o desenvolvimento das baterias ainda é lento quando comparado ao rápido crescimento tecnológico dos componentes eletrônicos. O tempo de vida útil de um sensor depende da quantidade de energia disponível. Protocolos de roteamento e algoritmos devem ser escolhidos considerando a eficiência na descoberta e manutenção das rotas e a otimização na quantidade de energia consumida. A escolha correta destes fatores impactam diretamente no funcionamento da rede. Uma solução viável para minimizar tal problema, consiste na aferição prática do consumo tanto destes dispositivos individualmente quanto dos protocolos de roteamento funcionando conjuntamente numa rede densamente distribuída. Este documento aborda o planejamento, implementação e montagem de um protótipo de dispositivo para aferir o consumo de nós de uma rede de sensores sem fio (Placa de Medição). Uma análise considerando diferentes protocolos de roteamento visando avaliar o consumo de energia de cada um deles foi implementada.

Transcript of Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Page 1: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Universidade de PernambucoEscola Politécnica de Pernambuco

Departamento de Sistemas e ComputaçãoPrograma de Pós-Graduação em Engenharia da Computação

Frederico Cox Cavalcanti Lins Junior

Análise Nodal de Consumo de Energia para Redesde Sensores sem Fio

Dissertação de Mestrado

Recife, fevereiro de 2010

Page 2: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

UNIVERSIDADE DE PERNAMBUCODEPARTAMENTO DE SISTEMAS E COMPUTAÇÃO

PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO

FREDERICO COX CAVALCANTI LINS JUNIOR

Análise Nodal de Consumo de Energia para Redesde Sensores sem Fio

Dissertação apresentada como requisito parcialpara a obtenção do grau de Mestre em Engenhariada Computação

Prof. Dr. Abel Guilhermino da Silva FilhoOrientador

Prof. Dr. Renato Mariz de MoraesCo-orientador

Recife, fevereiro de 2010

Page 3: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

CIP – CATALOGAÇÃO NA PUBLICAÇÃO

Frederico Cox Cavalcanti Lins Junior,

Análise Nodal de Consumo de Energia para Redes de Senso-res sem Fio /

Frederico Cox Cavalcanti Lins Junior. – Recife: PPGECda UPE, 2010.

134 f.: il.

Dissertação (mestrado) – Universidade de Pernambuco. Pro-grama de Pós-Graduação em Engenharia da Computação, Recife,BR–PE, 2010. Orientador: Abel Guilhermino da Silva Filho; Co-orientador: Renato Mariz de Moraes.

1. Redes de sensores sem fio. 2. TinyOS. 3. Zygbee. 4. Micro-controladores. I. da Silva Filho, Abel Guilhermino. II. de Moraes,Renato Mariz. III. Título.

Page 4: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

“Se A é o sucesso, então A é igual a X mais Y mais Z.O trabalho é X; Y é o lazer; e Z é manter a boca fechada.”

— ALBERT EINSTEIN

Page 5: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Agradecimentos

Aos meus pais, Frederico Cox e Maria José Diniz. Por todo apoio, suporte e com-preensão nesse projeto.

À minha irmã, Simone Cox, que sempre me motivou com os seus conselhos.À minha sobrinha, Ana Helena Cox, que despertou uma criança que havia dentro de

mim.Ao Prof. Dr. Abel Guilhermino da Silva Filho, meu orientador. Pela colaboração,

paciência e, principalmente, os seus conhecimentos que foram indispensáveis e passadoscuidadosamente durante todo o desenvolvimento desse trabalho.

Ao Prof. Dr. Renato Mariz de Moraes, meu co-orientador. Pelo modo como apoiouesse trabalho. Sua disponibilidade e empatia foram estímulos que permitiram-me ultra-passar os desafios.

A Aldo Oliveira, um orientador da vida. Pela ajuda nos bons e difíceis momentos.Agradeço também a todos os colaboradores da Universidade de Pernambuco que, di-

reta ou indiretamente, contribuíram para a realização e reflexão desse processo.

Page 6: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Sumário

GLOSSÁRIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

ACRÔNIMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

SíMBOLOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii

LISTA DE TABELAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv

RESUMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi

ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 Características de Redes de Sensores sem Fio . . . . . . . . . . . . . . . . 31.2 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.1 Volcano Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.2 Monitoramento Estrutural da Golden Gate Bridge . . . . . . . . . . . . . . 41.3 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 Organização dessa Dissertação . . . . . . . . . . . . . . . . . . . . . . . . 6

2 CONCEITOS BÁSICOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 MICAz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2.1 Visão geral da Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2.2 Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.3 Microcontrolador - ATMEGA128L . . . . . . . . . . . . . . . . . . . . . . 102.2.4 Alimentação DC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.5 2.4 GHz IEEE 802.15.4 / ZigBee-ready RF Transceiver - CC2420 . . . . . . 112.2.6 Memória Flash (Data Logger) - AT45DB041 . . . . . . . . . . . . . . . . . 122.2.7 Conversor DC-DC - MAX1678 . . . . . . . . . . . . . . . . . . . . . . . . 132.2.8 Mote Interface Board - MIB520 . . . . . . . . . . . . . . . . . . . . . . . . 132.2.9 Placa de Aquisição de dados - MDA100CB . . . . . . . . . . . . . . . . . . 142.3 TinyOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.3.2 Estrutura de Programação - nesC . . . . . . . . . . . . . . . . . . . . . . . 162.3.3 Assinatura de Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . 182.3.4 Componente Essenciais para Uso na Plataforma de Medição . . . . . . . . . 192.3.5 Protocolos de Roteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Page 7: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

3 ESTADO DA ARTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2 Micro Power Meter for Energy Monitoring of Wireless Sensor Networks at

Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2.1 Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2.2 Formulação do Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.2.3 Arquitetura Utilizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2.4 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2.5 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3 A Runtime Energy Monitoring System for Wireless Sensor Networks . . . . 363.3.1 Visão Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.3.2 Arquitetura Utilizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.3.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.3.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.4 Energy Measurements for MicaZ Node . . . . . . . . . . . . . . . . . . . . 403.4.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.4.2 Medições de uma bateria de polímero de lítio (LiPo) . . . . . . . . . . . . . 403.4.3 Medições em um MICAz . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.4.4 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.5 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4 ARQUITETURA PROPOSTA . . . . . . . . . . . . . . . . . . . . . . . . . 464.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.2 Fluxograma de Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464.3 Visão Geral da Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . 484.4 Módulo de Amplificação de Corrente . . . . . . . . . . . . . . . . . . . . . 494.4.1 Alternativas para medição de corrente . . . . . . . . . . . . . . . . . . . . . 494.4.2 Amplificador de Corrente Escolhido . . . . . . . . . . . . . . . . . . . . . 504.5 Conversor de Voltagem para Frequência . . . . . . . . . . . . . . . . . . . 524.6 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.7 Fonte de Alimentação DC e Circuitos Utilizados . . . . . . . . . . . . . . . 564.8 Circuito de Corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.9 Interface MICAz x Placa de Medição . . . . . . . . . . . . . . . . . . . . . 594.10 Captura de Frequência . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.11 Máquinas de Estados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.12 Validação da Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.12.1 Validação da Tensão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.12.2 Validação da Corrente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.13 Esquemático da Placa de Medição . . . . . . . . . . . . . . . . . . . . . . 684.14 Placa de Circuito Impresso . . . . . . . . . . . . . . . . . . . . . . . . . . 694.15 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5 RESULTADOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.2 Cenário Experimental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725.3 TinyOS Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.4 Experimento - Nó Individual . . . . . . . . . . . . . . . . . . . . . . . . . 745.5 Experimento - Protocolo Collection . . . . . . . . . . . . . . . . . . . . . . 75

Page 8: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

5.6 Experimento - Protocolo Tymo . . . . . . . . . . . . . . . . . . . . . . . . 765.7 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

6 CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . . . . . . . 796.1 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

7 I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

8 II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

9 III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

10 IV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

11 V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

12 VI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

Page 9: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Glossário

base-station nó responsável por concentrar os dados provenientes da Rede de Sensoressem Fio (RSSF) - uma rota final. vii, 2, 6, 8, 23, 32, 71, 72, 79

buffer Região de memória temporária utilizada para escrita e leitura de dados.. 12

CCD Charge-Coupled Device ou Dispositivo de Carga Acoplada.. 28

Collection Protocolo de Roteamento multi-hop. 23, 24

data logger Dispositivo utilizado para armazenar em massa de dados de um sistema.. 8

duty cycle ciclo de trabalho. 30, 31, 40, 52

firmware software embarcado. 11–14, 32, 58

flash memória de computador do tipo Electrically-Erasable Programmable Read-OnlyMemory (EEPROM). 10, 53

gateway O mesmo que base-station - uma rota final. 2, 23, 25, 72

I2C (Inter-Intergrated Circuit) é um barramento serial barramento multi-mestre desen-volvido pela Philips que é usado para conectar periféricos de baixa velocidade. 8,14, 20, 21, 29, 32, 33, 37, 38, 40, 46, 56, 61–63

in situ expressão latina que significa no lugar. 30, 31, 46

MICAz É um nó de RSSF.. 56, 58, 59

mote Nodo individual de uma RSSF.. 33

multi-hop Arquitetura flexível para mover dados eficientemente entre dispositivos.. vii,23–27

node-sink O mesmo que base-station - uma rota final. 23, 72

Open Source Código aberto, ou open source em inglês, foi criado pela OSI (Open SourceInitiative) e refere-se a software também conhecido por software livre.. 15

PP3 É uma bateria em formato de prisma retangular com uma tensão nominal de 9V.. 56

RS232 Padrão para troca de dados binários comumente usado nas portas seriais dos PCs..14

Page 10: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

sampling rate Número de amostras do sinal por segundo.. 53

tensão de offset Tensão presente na saída de um amplificador mesmo que as entradassejam 0 Volts. 55

TinyOS 2.x Sistema operacional open-source projetado para redes de sensores sem fio..viii, 26

TYMO Implementação do DYnamic Manet On-demand routing protocol (DYMO) emTinyOS 2.x. 26

Page 11: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Acrônimos

ADC Analog to Digital Converter. 8, 10, 14, 19, 34, 54–56

AES Advanced Encryption Standard. 11

AODV Ad hoc On-Demand Distance Vector Routing. 26

API Application Programming Interfaces. 15, 28

CCP Capture/Compare/PWM. 56, 60–62, 79

CMOS Complementary metal-oxide-semiconductor. 8, 10

CRC Cyclic redundancy check. 74

DIP Dual In Line Package. 56

DSP Digital Signal Processor. 34

DSSS Direct Sequence Spread Spectrum. 8, 11

DYMO DYnamic Manet On-demand routing protocol. viii, 26

EEPROM Electrically-Erasable Programmable Read-Only Memory. vii, 10, 53, 56

IA Instrumentation Amplifier. 50

IC Integrated Circuit. 56

ICSP In-Circuit Serial Programming. 58

IEEE Institute for Electrical and Electronics Engineers. 8, 10, 11

IETF The Internet Engineering Task Force. 26

IO Input/Output. 10, 14

ISM Industrial Scientific and Medical bands. 11

ISP In System Programming. 14

JTAG Joint Test Action Group. 10

LDO Low-Dropout Output. 57

Page 12: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

LED Light Emitting Diode. 8, 14, 41, 44

LiPo Lithium Polymer Battery. 40, 41, 44, 45

LQI Link Quality Indicator. 11

MAC Media Access Control. 11

MANET Mobile Ad-hoc Networks. 26

MEMS Micro-Electro-Mechanical Systems. 1

MIB Mote Interface Board. 23, 73

MSSP Master Synchronous Serial Port. 55

PCB Printed Circuit Board. 20, 48, 56

PDA Personal Digital Assistants. 36, 79

PWM Pulse Width Modulation. 10, 60

RAM Random Access Memory. 9, 10, 12, 15, 52

RERR Route Error. 27

RISC Reduced Instruction Set Computer. 8

RREP Reply Route. 27

RREQ Route Request. 26, 27

RSSF Rede de Sensores sem Fio. vii, 1–7, 15, 16, 22, 23, 25, 26, 28–33, 36, 37, 39, 40,44, 46, 52, 70–72, 74, 78, 79

RSSI Received Signal Strength Indication. 11

RTOS Real Time Operating System. 55

SMD Surface Mounted Devices. 48, 56

SO Sistema Operacional. 15

SOIC Small-Outline Integrated Circuit. 56

SPI Serial Programming Interface. 9–12, 28

SPOT Scalable Power Observation Tool. 32–37, 40, 44

TEP TinyOS Enhancement Proposals. 16, 78

USART Universal Synchronous Asynchronous Receiver Transmitter. 8, 10, 14

USB Universal Serial Bus. 13, 14

V/F Voltage-to-Frequency. 33–35, 53–55, 65, 70, 79

WSN Wireless Sensor Network. 1, 2, 4–7, 11, 15, 23, 29, 30, 32, 36, 40, 44, 53, 79, 80

Page 13: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Símbolos

Bit Menor unidade de informação que pode ser armazenada ou transmitida.. xi

Byte 8 (oito) Bits.. 12

dBm A relação da potência de um dado dispositivo em relação a 1 mW é expressa emdecibeis. 73, 78

Ghz Unidade de frequência (Hz) multiplicada pelo fator 1.000.000.000. 8, 11

Hz Unidade derivada do SI para frequência. xi

kb 1024 bytes. 9, 10

Kbps 1000 bits por segundo.. 11, 20, 21

Khz Unidade de frequência (Hz) multiplicada pelo fator 1000. 4, 31, 32, 79

mA unidade de corrente elétrica por fator 1000. 9, 11, 12, 25, 33, 34, 37, 41, 43, 44, 52,54, 73

Mhz Unidade de frequência (Hz) multiplicada pelo fator 1.000.000.000. 9, 12, 31

mV unidade de Tensão elétrica por fator 1000. 33, 52, 54, 55

V unidade de Tensão elétrica. 10–13, 39, 41, 42, 52

Page 14: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Lista de Figuras

1.1 Exemplo típico de uma RSSF. . . . . . . . . . . . . . . . . . . . . . 31.2 Arquitetura do Projeto “Volcano Monitoring”. . . . . . . . . . . . . . 41.3 Gold Gate Bridge. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.1 Arquitetura e foto do MICAz. . . . . . . . . . . . . . . . . . . . . . 82.2 Arquitetura detalhada do MICAz. . . . . . . . . . . . . . . . . . . . 92.3 Circuito de Alimentação DC do MICAz. . . . . . . . . . . . . . . . 112.4 Valores típicos para RSSI x potência de entrada. . . . . . . . . . . . 122.5 Pinagem da memória AT45DB041. . . . . . . . . . . . . . . . . . . 122.6 Circuito típico de utilização do MAX1678. . . . . . . . . . . . . . . 132.7 Vista superior da MIB520. . . . . . . . . . . . . . . . . . . . . . . . 142.8 Foto da placa de aquisição de dados - MDA100CB. . . . . . . . . . . 142.9 Matriz MDA100CB. . . . . . . . . . . . . . . . . . . . . . . . . . . 152.10 Grafo da Aplicação BlinkLed. . . . . . . . . . . . . . . . . . . . . . 172.11 Fluxograma da aplicação BlinkLedAppC. . . . . . . . . . . . . . . . 182.12 Conexões do módulo Atm128I2CMasterC. Fonte: [4] . . . . . . . . . 212.13 Cenário Típico com 7 sensores . . . . . . . . . . . . . . . . . . . . . 232.14 Aplicação Prática: Proposta de Cenário . . . . . . . . . . . . . . . . 252.15 Exemplo: A envia um pacote para H. . . . . . . . . . . . . . . . . . 262.16 Requisição de rota entre A e H. . . . . . . . . . . . . . . . . . . . . 272.17 RREP é enviada pela rota mais curta entre A e H. . . . . . . . . . . 272.18 O nó G deslocou-se para outra posição e o nó F não tem mais rota

para alcançar G e H. B e C não encaminha RERR porquê C conheceo caminho para D. . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.19 Aplicação Prática: Proposta de Cenário . . . . . . . . . . . . . . . . 28

3.1 Comportamento do consumo em função do tempo durante 4 segundos. 313.2 Comportamento do consumo em função do tempo durante curto pe-

ríodo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3 O “Scalable Power Observation Tool -SPOT”, consiste de um resis-

tor shunt, amplificador, conversor de voltagem para frequência e doiscontadores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.4 SPOT - Arquitetura. . . . . . . . . . . . . . . . . . . . . . . . . . . 333.5 Comparação das medidas obtidas pelo SPOT e um amperímetro. . . . 353.6 Energia (mJ) em Função do Tempo (S). . . . . . . . . . . . . . . . . 353.7 Corrente (mA) em função do Tempo (S). . . . . . . . . . . . . . . . 363.8 Arquitetura do “Runtime Energy Monitoring System for Wireless Sen-

sor Networks”. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.9 Foto da placa de medição. . . . . . . . . . . . . . . . . . . . . . . . 38

Page 15: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

3.10 Curva de Erro do “Runtime Energy Monitoring System for WirelessSensor Networks”. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.11 Descarga de uma bateria de LiPO a 37.8mA. . . . . . . . . . . . . . 413.12 Modos de economia de energia do ATMega128L. a: Busy (mul),

b:Busy (jmp), c:NOP, d:Idle, e:ADC, f:Ext. Standby, g: Save. . . . . . 423.13 Média do Consumo de Energia. . . . . . . . . . . . . . . . . . . . . 433.14 Benefício de diminuir a frequência do ATMEGA128L. . . . . . . . . 433.15 Consumo do CC2420. . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.1 Fluxograma de Projeto da Placa de Medição . . . . . . . . . . . . . . 474.2 Visal Geral da Arquitetura da Placa de Medição. . . . . . . . . . . . 484.3 Voltímetro aferindo a queda de tensão no resistor “shunt”. . . . . . . 494.4 Low-side current sensing . . . . . . . . . . . . . . . . . . . . . . . . 504.5 High-side current sensing . . . . . . . . . . . . . . . . . . . . . . . 504.6 Diagrama Funcional - MAX4372. . . . . . . . . . . . . . . . . . . . 514.7 Um típico comportamento nodal de consumo consistindo de longos

períodos de baixa corrente pontuado por curtos períodos de atividadecom alta corrente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.8 Diagrama funcional do AD654. . . . . . . . . . . . . . . . . . . . . 534.9 Configuração simples V/F do AD654. . . . . . . . . . . . . . . . . . 544.10 Configuração do conversor de voltagem para frequência utilizada na

placa de medição. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.11 Pinagem do PIC18F2620. . . . . . . . . . . . . . . . . . . . . . . . 564.12 Panasonic PP3 (9 volt) battery. . . . . . . . . . . . . . . . . . . . . . 574.13 Pinagem do LE33AB. . . . . . . . . . . . . . . . . . . . . . . . . . 574.14 Circuito de Captura de Corrente. . . . . . . . . . . . . . . . . . . . . 584.15 Fotos do Esquema de Captura de Corrente. . . . . . . . . . . . . . . 594.16 Sensor Board MDA100CB e Matriz de Prototipação. . . . . . . . . . 594.17 Barra de Pinos para Interconexão Mote x Placa de Medição. . . . . . 614.18 Diagrama de Blocos do Modo de Captura. . . . . . . . . . . . . . . . 614.19 Máquina de Estados do PIC18F2620. . . . . . . . . . . . . . . . . . 614.20 Máquina de Estados do CCP. . . . . . . . . . . . . . . . . . . . . . . 624.21 Máquina de Estados do MICAz. . . . . . . . . . . . . . . . . . . . . 624.22 Diagrama de Blocos do Modo de Captura. . . . . . . . . . . . . . . . 644.23 Tabela de Variação de tensão em função de Multímetro e Osciloscópio. 654.24 Relação entre a tensão no multímetro e a tensão capturada. . . . . . . 664.25 Relação entre a corrente no multímetro e a corrente capturada. . . . . 664.26 Relação entre a corrente no multímetro e a corrente capturada. . . . . 674.27 Diagrama Esquemático da Placa de Medição. . . . . . . . . . . . . . 684.28 Placa de Circuito Impressso - PCB. . . . . . . . . . . . . . . . . . . 694.29 Foto da Placa de Medição. . . . . . . . . . . . . . . . . . . . . . . . 70

5.1 Fluxograma de obtenção de medidas de consumo. . . . . . . . . . . . 715.2 Cenário Experimental com detalhes para o raio de alcance de cada nó

e rotas de comunicação. . . . . . . . . . . . . . . . . . . . . . . . . 725.3 Cenário Experimental para Teste dos Protocolos de Roteamento . . . 725.4 Software TinyOS Terminal . . . . . . . . . . . . . . . . . . . . . . . 745.5 Dados de apenas um nó Individual . . . . . . . . . . . . . . . . . . . 755.6 Nó Individual - Gráfico. Relação entre a Corrente e o tempo . . . . . 75

Page 16: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

5.7 Protocolo Collection Dados do Nó 1 . . . . . . . . . . . . . . . . . . 755.8 Protocolo Collection Dados do Nó 2 . . . . . . . . . . . . . . . . . . 765.9 Protocolo Collection Dados do Nó 3 . . . . . . . . . . . . . . . . . . 765.10 Protocolo Collection Gráfico. Relação entre a potência e o tempo dos

3 nós . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765.11 Protocolo Tymo Dados do Nó 1 . . . . . . . . . . . . . . . . . . . . 775.12 Protocolo Tymo Dados do Nó 2 . . . . . . . . . . . . . . . . . . . . 775.13 Protocolo Tymo Dados do Nó 3 . . . . . . . . . . . . . . . . . . . . 775.14 Protocolo Tymo Gráfico. Relação entre a potência e o tempo dos 3 nós 77

Page 17: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Lista de Tabelas

1.1 Características de RSSF. . . . . . . . . . . . . . . . . . . . . . . . . 3

2.1 Componentes da Arquitetura do MICAz . . . . . . . . . . . . . . . . 82.2 Características - MICAz. . . . . . . . . . . . . . . . . . . . . . . . . 92.3 Função de cada pino da memória AT45DB041. . . . . . . . . . . . . 132.4 Principais Interfaces do componente CollectionC . . . . . . . . . . . 242.5 Tipos de Perfis no protocolo Collection . . . . . . . . . . . . . . . . 252.6 Camadas do protocolo TYMO. . . . . . . . . . . . . . . . . . . . . . 26

4.1 Fases de Projeto da Placa de Medição . . . . . . . . . . . . . . . . . 474.2 Etapas da Arquitetura da Placa de Medição. . . . . . . . . . . . . . . 484.3 Relações entre Corrente, Tensão diferencial de entrada e Tensão de

Saída. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524.4 Características principais do PIC18F2620. . . . . . . . . . . . . . . . 564.5 Características principais do LE33AB. . . . . . . . . . . . . . . . . . 584.6 Conector ICSP - Pinagem. . . . . . . . . . . . . . . . . . . . . . . . 584.7 Conector MOTE - Pinagem. . . . . . . . . . . . . . . . . . . . . . . 594.8 Modos do CCP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Page 18: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Resumo

A limitação de energia disponível em nodos de redes de sensores sem fio é um fatorcrítico. Na maioria ou quase em sua totalidade, os sensores são colocados em áreas remo-tas que não permitem facilmente o acesso a esses elementos para troca de baterias. Nodossão alimentados a baterias e o desenvolvimento das baterias ainda é lento quando compa-rado ao rápido crescimento tecnológico dos componentes eletrônicos. O tempo de vidaútil de um sensor depende da quantidade de energia disponível. Protocolos de roteamentoe algoritmos devem ser escolhidos considerando a eficiência na descoberta e manutençãodas rotas e a otimização na quantidade de energia consumida. A escolha correta destesfatores impactam diretamente no funcionamento da rede. Uma solução viável para mi-nimizar tal problema, consiste na aferição prática do consumo tanto destes dispositivosindividualmente quanto dos protocolos de roteamento funcionando conjuntamente numarede densamente distribuída. Este documento aborda o planejamento, implementação emontagem de um protótipo de dispositivo para aferir o consumo de nós de uma rede desensores sem fio (Placa de Medição). Uma análise considerando diferentes protocolos deroteamento visando avaliar o consumo de energia de cada um deles foi implementada.

Palavras-chave: Redes de sensores sem fio, TinyOS, Zygbee, microcontroladores.

Page 19: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Abstract

The limitation of energy available in the nodes of wireless sensors networks is a criti-cal factor. The sensors are placed in remote areas that do not easily allow access to theseelements for changing batteries. Nodes are powered by batteries and the developmentof batteries is still slow compared to the rapid technological growth of electronic com-ponents. The lifetime of a sensor depends on the amount of energy available. Routingprotocols and algorithms must be chosen considering the efficiency in finding and main-taining routes and optimizing the amount of energy consumed. The correct choice of thesefactors directly impact the functioning of the network. A feasible solution to minimizethis problem is the practice of measuring consumption of both of these devices individ-ually and the routing protocols running together in a densely distributed network. Thisdocument discusses the planning, implementation and installation of a prototype deviceto measure the consumption of nodes in a network of wireless sensors - Measuring Board.This includes an analysis considering different routing protocols to evaluate energy con-sumption.

Keywords: MICAz, routing protocols, wireless sensors networks, energy consumption.

Page 20: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Capítulo 1

Introdução

Redes de Sensores sem Fio - RSSF é uma tecnologia que possibilita o monitoramentoe controle do mundo físico[42]. Consistem de uma árvore de dispositivos - denominadossensores, nodos ou nós - densamente distribuídos em uma área na qual deseja-se investigarou controlar um fenômeno físico. Nodos em RSSF podem ser equipados com sensores deinfra-vermelho, acústicos, temperatura, humidade, sísmicos, etc...

O desenvolvimento da indústria eletrônica, a miniaturização dos circuitos integrados,a popularização dos Micro-Electro-Mechanical Systems (MEMS)1 e a necessidade de umaarquitetura de rede auto-organizável de baixo custo e consumo, resultou no surgimentodas redes de sensores sem fio - RSSF também conhecidas por Wireless Sensor Network(WSN).

Em telecomunicações, redes ad hoc são um tipo de rede que não possui um nó outerminal especial - geralmente designado como ponto de acesso - para o qual todas as co-municações convergem e que as encaminha para os respectivos destinos. Assim, uma redede computadores ad hoc é aquela na qual todos os terminais funcionam como roteadores,encaminhando de forma comunitária as comunicações advindas dos terminais vizinhos.

Ligeiramente diferente das redes ad hoc, as RSSF´s são uma sub-categoria das redesad hoc que possuem um ou mais nós, também chamados de “base-station” ou estaçõesbase, cujo objetivo é a coleta de dados provenientes dos sensores da rede.

A importância das Redes de Sensores sem Fio se deve à viabilização de uma infra-estrutura de comunicações de baixo custo que possibilita a coleta, disseminação e monito-ramento de uma variedade de fenômenos físicos. Redes de sensores têm grande aplicaçãoem locais de difícil acesso ou áreas perigosas (reservas ambientais, oceanos, vulcões, rios,florestas, etc.)[41][51][52].

Algumas aplicações de RSSF´s são:

Militar: funções de monitoramento, rastreamento, segurança, controle e manutenção;

Industrial: funções de monitoramento, em processos químicos e biológicos;

Aviação: substituindo as redes com fio, como já são usadas hoje;

Ambiente: monitorando variáveis ambientais em prédios, florestas, oceanos, etc;

Tráfego: monitoramento de vias, estacionamentos, etc;

1Integração de elementos mecânicos, sensores, atuadores e eletrônica no mesmo substrato comum datecnologia de microfabricação.

Page 21: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

2

Medicina: Monitoramento de órgãos vitais de organismos vivos.

Uma WSN pode ser definida portanto como uma infraestrutura compreendendo sen-sores, elementos computacionais (microcontroladores) e elementos de comunicação quepossiblite ao administrador investigar os fenômenos do ambiente. O administrador podeser um grupo de pesquisa, uma entidade governamental, industrial ou comercial. O am-biente pode ser o mundo físico, um sistema biológico, um grupo de pacientes sendo mo-nitorados, entre outras aplicações[55].

Os principais componentes de um nó Sensor são o transceptor de comunicação semfio[31], a fonte de energia[10] e o microcontrolador[24]. Neste trabalho será utilizado osensor MICAz, produzido pela Crossbow Technology[57, 25, 17] para validar a metodo-logia de controle de consumo de energia. O escopo de desenvolvimento desse texto selimitará apenas a redes cujos nós são constituídos de sensores produzidos pela Crossbow,especificamente o MICAz. Esta limitação se deve principalmente à plataforma que temosdisponível para desenvolvimento desta dissertação de mestrado. No entanto, tais aspectosnão empobrecem o trabalho, tendo em vista que esta é uma solução do estado da arte comcaracterísticas que serão levantadas posteriormente.

RSSFs diferem de redes de computadores tradicionais em vários aspectos[43, 52, 41]:

• Geralmente possuem um grande número de sensores distribuídos que operam sema intervenção humana.

• Severas restrições de energia.

• Possuem mecanismos de auto-gerenciamento, auto-organização, auto-manutençãoe auto-proteção.

• Todos os sensores operam de modo colaborativo.

Assim, as RSSF´s desempenham uma tarefa importante através de um esforço colabo-rativo dos sensores que enviam os dados provenientes da rede até atingir a estação-base(base-station ou gateway). A base-station encarrega-se de entregar estes dados a um oumais computadores que elaboram cálculos de maior complexidade tornando a informaçãovisível aos observadores.

Page 22: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

3

1.1 Características de Redes de Sensores sem FioA Figura 1.1 é um cenário típico de uma RSSF. Observa-se uma árvore de sensores

distribuídos e denominados “Wireless Sensor Network”. Uma rota cuja origem é o nodoFonte foi estabelecida. O ponto denominado sorvedouro agrega as informações proveni-entes da rede. Este agregador pode ser uma estação conectada à internet ou diretamente aum PC. O usuário visualiza as informações provenientes da rede através de seu PC.

Figura 1.1: Exemplo típico de uma RSSF.

A Tabela 1.1 exibe algumas características de uma RSSF.

Tabela 1.1: Características de RSSF.

Endereçamento dos nós: Cada nó da rede possui um endereço distinto de16 bits.

Agregacão dos dados: Um ou mais nós, também chamados de “base-station” ou estação base que coletam os dadosprovenientes dos sensores.

Móvel ou Estacionária: Os sensores podem ser estáticos ou móveis.Densidade: Quantidade de sensores que foram distribuídos

ao longo da cobertura da RSSF.Limitação da energia disponível: Há uma limitação de energia porque os nós são

alimentados com baterias.Baixa capacidade de Processamento: O processamento de um nó da rede é desempe-

nhado por um microcontrolador com limitaçõesde memória. O MICAz possui apenas 128Kby-tes de memória Flash.

Auto-organização da rede: Uma RSSF se auto-organiza no caso de senso-res que apresentem problemas deixando de fazerparte da rede.

Baixo duty cicle: Na maior parte do tempo os sensores estão nomodo sleep. A taxa típica de duty cicle é de 1%.

Page 23: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

4

1.2 Motivação

1.2.1 Volcano Monitoring

O “Volcano Monitoring” é um projeto do “Harvard Sensor Networks Lab” que con-siste no monitoramento de erupções de vulcões ativos e perigosos através de RSSF´s. Obaixo custo, tamanho e requisitos de energia das redes de sensores sem fio são algumasdas vantagens existentes na instrumentação utilizada no estudo de atividades vulcânicas etectonismo[37, 39, 63, 62].

Uma árvore de sensores foi distribuídas no vulcão “El Reventador” situado no Equa-dor entre julho e agosto de 2005. A distribuição consistiu de 16 nós, equipados com senso-res sísmicos com resolução de 24 bits por canal, numa faixa de 3 km a partir do cume até abase. A Figura 1.2 ilustra a organização e topologia usada nesta pesquisa[37, 39, 63, 62].

Figura 1.2: Arquitetura do Projeto “Volcano Monitoring”.

1.2.2 Monitoramento Estrutural da Golden Gate Bridge

Em 7 de Novembro de 1940, a ponte Tacoma Narrows de 1.600 metros, cai após al-guns meses de sua inauguração. Este fato se deu devido a um colapso gerado por fortesventos naquela região. A Ponte de Tacoma sempre balançava, mas neste dia os ventos auma velocidade de aproximadamente 65 km por hora gerou movimentos torsionais colo-cando a estrutura em ressonância provocando o seu desmoronamento.[64].

Para monitoração de fenômenos deste tipo, WSN´s têm sido utilizadas em estruturascríticas e vulneráveis a ações de fenômenos ambientais[35].

A Golden Gate Bridge (GGB), Figura 1.3, é analisada por uma RSSF constituída de64 nós equipados com acelerômetros e distribuídos de forma a coletar vibrações a umataxa de sample de 1Khz[34, 35].

Entre as duas colunas da ponte foram adicionados 51 nodos sensores cobrindo umaextensão de 4200ft. Em cada coluna foram colocados 8 nós ao longo de 500ft de altura.

A limitação de energia disponivel nos nós das RSSF´s é um fator crítico. Na maioriaou quase em sua totalidade, os sensores são colocados em áreas remotas que não permitemfacilmente o acesso a esses elementos para troca de baterias.

Nodos de RSSF´s são alimentados a baterias e, segundo GINATTO, o desenvolvi-mento das baterias ainda é lento quando comparado ao rápido crescimento tecnológicodos componentes eletrônicos. Ainda segundo [21], além do aumento nas pesquisas sobre

Page 24: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

5

Figura 1.3: Gold Gate Bridge.

o desempenho das mesmas, o foco deixou de ser voltado apenas para o aumento da suacapacidade e passou a ser visto de forma unificada durante um projeto eletrônico.

Segundo LOUREIRO et al., o tempo de vida de vida de um sensor depende da quan-tidade de energia disponível.

Protocolos de roteamento e algoritmos para RSSF´s devem ser escolhidos conside-rando a eficiência na descoberta e manutenção das rotas e a otimização na quantidade deenergia consumida.

A escolha correta destes fatores implica diretamente na vida útil dos sensores e funci-onamento da WSN como um todo.

Uma solução viável para minimizar tal problema consiste na aferição prática doconsumo tanto destes dispositivos individualmente quanto dos protocolos de roteamentofuncionando conjuntamente numa rede densamente distribuída.

1.3 ObjetivoEste documento aborda o planejamento, implementação e montagem de um protó-

tipo de um dispositivo para aferir o consumo de nós de uma RSSF (Placa de Medição).Uma análise inédita considerando diferentes protocolos de roteamento visando avaliar oconsumo de energia de RSSF´s é apresentada.

Novos protocolos de roteamento podem ser avaliados quanto à eficiência energéticaatravés de avaliações nodais.

O hardware de medição desenvolvido neste trabalho pode ser utilizado para aperfei-çoar modelos de energia de simuladores, tornando assim os resultados das simulações omais próximo possível de um sistema real.

Page 25: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

6

1.4 Organização dessa DissertaçãoO Capítulo 2 mostra a arquitetura do nodo utilizado nos experimentos práticos e os

conceitos básicos sobre o desenvolvimento para RSSF.O Capítulo 3 ilustra as pesquisas do “estado da arte”, destacando o que há de mais

recente no campo de aferição prática no consumo de nodos de RSSF´s.O Capítulo 4 ilustra o planejamento, organização, projeto, implementação e monta-

gem do protótipo da placa de medição de consumo para nós em WSN. Adicionalmente sãoabordadas as alternativas e técnicas que foram utilizadas e o princípio de funcionamentode cada dispositivo empregado na montagem da Placa de Medição.

O Capítulo 5 compreende os resultados obtidos através de três experimentos. Sendo 2em função dos protocolos de roteamento Collection[20] e Tymo[7, 19, 58] e 1 consistindode uma rede com apenas um nó enviando informações de consumo diretamente (1 salto)para uma base-station. Os protocolos utilizados[20, 7, 19, 58] são oficialmente incluídosna distribuição do TinyOS 2.1[4, 40].

As conclusões e sugestões de futuros trabalhos são apresentadas no Capítulo 6.

Page 26: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Capítulo 2

Conceitos Básicos

2.1 Introdução“Wireless Sensor Networks” (WSN) são constituídas de um sistema de “motes”1 den-

samente distribuídos que operam de forma colaborativa. Cada dispositivo é dotado decapacidade computacional (microcontrolador), sensores, transceptor de rádio e fonte deenergia.

Estes sistemas conectam o ambiente físico combinando o gerenciamento de informa-ções para monitoramento, automação e controle de diversas aplicações.

O sensor utilizado nesta dissertação é o MICAz[57, 25], fabricado pela Crossbow quepossui um vasto portifólio de produtos, kits e ambientes de desenvolvimento além de serlider no mercado de soluções para WSN´s. O principal motivo por ter adotado o MICAz,plataforma oficial deste trabalho, se deve ao fato da disponibilidade de alguns kits dedesenvolvimento cedidos gentilmente pelo co-orientador deste trabalho, Prof. Dr. RenatoMariz de Moraes.

Este capítulo aborda cada um dos componentes da arquitetura do MICAz[57, 25] e osistema operacional utilizado pelo MICAz.

2.2 MICAz

2.2.1 Visão geral da ArquiteturaA Figura 2.1 ilustra à esquerda a arquitetura do MICAZ, tecnicamente chamado de

MPR2400[25], e à direita uma foto do sensor.

1Sensores de pequenas dimensões projetados projetados para RSSF.

Page 27: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

8

Figura 2.1: Arquitetura e foto do MICAz.

A Tabela 2.1 sumariza os principais componentes do MICAz com base na Figura 2.1.

Tabela 2.1: Componentes da Arquitetura do MICAz

Item DescriçãoAntena Comunicação (1

4 de onda)Memória flash “data logger” dos dados coletados. É utilizada

para armazenamento de parâmetros do softwareembarcado e para guardar uma sequência dedados que será posteriormente enviada à base-station.

Light Emitting Diode (LED)´s Dispositivo de uso geral que pode ser utilizadopara sinalização ou alerta pela aplicação embar-cada.

CC2420 Um rádio transceptor Direct Sequence SpreadSpectrum (DSSS) que trabalha na faixa de 2.4Ghz/ZigBee-ready, padrão Institute for Electri-cal and Electronics Engineers (IEEE) 802.15.4e fabricado pela Texas Instruments[31].

ATMEGA128L Microcontrolador Complementary metal-oxide-semiconductor (CMOS) de 8 bits, baixo con-sumo, baseado na avançada tecnologia AVR Re-duced Instruction Set Computer (RISC) fabri-cado pela ATMEL Corporation[24].

Conector de Expansão Conector de 51 pinos para interconexão e expan-são produzido pela Hirose Electric Group[22]

O conector de expansão possibilita a interceptação de qualquer pino do microcontro-lador, tais como: Universal Synchronous Asynchronous Receiver Transmitter (USART)´s,Analog to Digital Converter (ADC)´s, pinos de uso geral, barramento I2C, LED´s, inter-rupções externas e fonte de energia.

Page 28: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

9

Cada componente está conectado através de barramentos de comunicações. O rádio secomunica com o microcontrolador através de 12 pinos do barramento Serial ProgrammingInterface (SPI) e a memória flash utiliza barramento SPI.

O MICAz possui entrada para conexão externa de alimentação DC permitindo assim,que uma fonte de energia de maior capacidade seja também utilizada.

A Figura 2.2 ilustra uma organização mais detalhada da arquitetura do MICAz.

Figura 2.2: Arquitetura detalhada do MICAz.

2.2.2 CaracterísticasA Tabela 2.2 expõe as principais características do MICAz:

Tabela 2.2: Características - MICAz.

Modelo MPR2400[25]Microcontrolador Chip ATMEGA128L, frequência de clock

7.37Mhz, palavra de 8 bits, 128kb de memóriade programa e 8kb de memória Random AccessMemory (RAM).

Transceptor de Rádio CC2420[31].Memória flash Chip AT45DB041 com capacidade de 512kb

Fonte de Energia Padrão 2 baterias alcalinas do tipo AA[10] com capaci-dade de 2000 mA-h.

Page 29: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

10

2.2.3 Microcontrolador - ATMEGA128L

O microcontrolador ATMEGA128L[24] é uma arquitetura de 8 bits Havard2 modifi-cada; baseado na avançada tecnologia AVR-RISC desenvolvida pela Atmel Corporation[47,3].

O ATmega128 é “low-power”, tecnologia CMOS e executa uma instrução a cada ciclode clock. Algumas características mais notáveis neste microcontrolador são:

Memória flash 128kb;

Memória EEPROM 4kb;

Memória RAM estática 4kb;

Joint Test Action Group (JTAG) Interface compatível com o padrão IEEE 1149.1;

Timers 2 timers de 8 bits e 2 de 16 bits;

Pulse Width Modulation (PWM) 6 canais com resolução programável de 2 a 16 Bits;

ADC 8 canais com resolução de 10 Bits;

USART 2 programáveis e independentes;

SPI Interface serial “master” e “slave”;

Modos de economia de energia 6 modos; “Idle”, “ADC Noise Reduction”, “Power-save”, “Power-down”, “Standby” e “Extended Standby”;

Input/Output (IO)´s 51 pinos programáveis;

Tensão de Operação 2.7 a 5.5 V .

2.2.4 Alimentação DC

A MPR2400 foi projetada para operar com baterias alcalinas do tipo AA. Podendo uti-lizar qualquer combinação de baterias, desde que a tensão de alimentação esteja entre oslimites de 2.7V a 3.6V DC. Possui um conector do tipo Molex[9] destinado à alimentaçãoexterna, desde que o nível de tensão não ultrapasse os 3.6V.

A Figura 2.3 ilustra o circuito de alimentação da MPR2400.Quando a chave SW2 está na posição 1, o circuito é alimentado ou pelas baterias

ou pela fonte de energia externa. Na posição 2 o circuito está desligado. Os capacitoreseletrolíticos C1 e C2, mostrados na figura 2.3, têm a finalidade de filtrar espúrios de tensãoprovenientes de uma fonte de energia ruidosa.

2É uma arquitetura de computador que se distingue das outras por possuir duas memórias diferentes eindependentes em termos de barramento e ligação ao processador.

Page 30: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

11

Figura 2.3: Circuito de Alimentação DC do MICAz.

2.2.5 2.4 GHz IEEE 802.15.4 / ZigBee-ready RF Transceiver - CC2420

O CC22420[31] é um transceptor de 2.4Ghz compatível com o padrão IEEE 802.15.4para aplicações de baixo consumo (“low-power”). O transceptor inclui um DSSS pro-vendo uma taxa efetiva de comunicação de 250Kbps. Uma solução integrada e robustapara WSN´s na faixa de rádio frequência - “Industrial Scientific and Medical bands(ISM)”. A interface de comunicação do CC2420 é acessada via barramento SPI.

As principais características do CC2420 são[31]:

• Frequência de operação de 2.4Ghz;

• Baixo consumo: (Recepção: 18.8mA, Transmissão:17.4 mA);

• Tensão de alimentação entre 2.1V a 3.6V com regulador de tensão integrado;

• Potência de Transmissão programável;

• Poucos componentes são necessário para o funcionamento;

• Suporte a Received Signal Strength Indication (RSSI) e Link Quality Indicator(LQI);

• Criptografia Advanced Encryption Standard (AES) de 128 Bits;

• Ferramentas de desenvolvimento disponíveis: SmartRF Studio[29] e SmartRF Pro-tocol Packet Sniffer[30].

O valor do RSSI pode ser lido através de um registrador interno de 8 bits do CC2420denominado RSSI.RSSI_VAL. A Figura 2.4 ilustra valores típicos para RSSI.RSSI_VAL emfunção da potência de entrada[31].

O LQI está relacionado quanto à caracterização da qualidade e potência do pacoterecebido. O RSSI, descrito no parágrafo anterior, é utilizado pelo firmware da camadaMedia Access Control (MAC) para produzir o LQI.

Page 31: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

12

Figura 2.4: Valores típicos para RSSI x potência de entrada.

2.2.6 Memória Flash (Data Logger) - AT45DB041O AT45DB041D é uma memória flash com interface serial desenvolvida idealmente

para uma variedade de aplicações, tais como: digitalização de voz e imagem, armaze-namento de firmware´s e dados. Suporta a interface serial SPI com frequências acimade 66Mhz. Possui 4.325.376 bits de memória organizados em 2.048 páginas de 256/264bytes cada. Adicionalmente possui buffers de RAM estática com 256/264 Bytes cada.Os buffers aumentam a velocidade de acesso porque possibilitam a recepção de dadosenquanto a memória está sendo reprogramada[15].

As principais características desse dispositivo são:

• Tensão de alimentação entre 2.5V a 3.6V;

• Interface serial com 66 Mhz de clock;

• Tamanho da página programável: 256/264 Bytes por página;

• Opções flexíveis de apagar os dados;

• Baixo consumo “low-power”: 7 mA (leitura), 25 µA (Standby);

A Figura 2.5 expõe a configuração dos pinos da memória flash AT45DB041 e a Tabela2.3 ilustra a função de cada pino respectivamente[15].

Figura 2.5: Pinagem da memória AT45DB041.

Page 32: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

13

Tabela 2.3: Função de cada pino da memória AT45DB041.

Pino FunçãoCS Chip Select. Um nível baixo nesse pino põe o

dispositivo em operação.SCK Serial clock. Entrada de relógio.

SI Serial input. Entrada de dados.SO Serial output. Saída de dados.

WP Proteção contra escrita. Um nível baixo nessepino desabilita a escrita de dados na memória.

RESET Um nível baixo nesse pino põe o dispositivo emestado “idle”.

VCC Alimentação DC.GND Terra em relação a VCC.

2.2.7 Conversor DC-DC - MAX1678

O MAX1678 é um conversor DC-DC “buck” desenvolvido para dispositivos alimen-tados por baterias alcalinas, NiMH - Níquel Metal Hidreto e NiCd - Níquel-Cádmio oucélulas de lítio. A tensão de saída vem pré-configurada para 3.3V ou poderá ser ajustadaentre 2.0V a 5.5V utilizando somente 2 resistores. O dispositivo alcança eficiência acimade 90% e possui um modo de “shutdown” com apenas 2µA de consumo[45]. A Figura2.6 mostra um circuito típico de operação do conversor DC-DC MAX1678.

Figura 2.6: Circuito típico de utilização do MAX1678.

2.2.8 Mote Interface Board - MIB520

A MIB520 é a placa utilizada para conectividade entre o MICAz e o PC. A Mote Inter-face Board (MIB520), apresentada na figura 2.7, através da porta UNIVERSAL SERIALBUS (USB) do PC este dispositivo possibilita conectividade tanto para programação dofirmware quanto para comunicação com o sensor[25].

Page 33: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

14

Figura 2.7: Vista superior da MIB520.

A chave SW1, quando pressionada, reinicializa o sistema embarcado que está ins-talado no Mote. O conector Hirose[22] é a interface de conexão entre a MIB520 e aMPR2400. Os LEDs são apenas sinalizadores visuais da placa.

A placa de interface com o PC é equipada com um chip FT2232C, fabricado pela Fu-ture Technology Devices International Ltd.[44]. Quando conectado ao PC, esse chip criaduas portas de comunicação seriais independentes. A primeira porta é utilizada exclusi-vamente para gravação In System Programming (ISP) enquanto que a segunda, pode ounão ser utilizada para comunicação serial com o MICAz através de protocolo RS232. Porexemplo: considere a situação na qual a primeira porta criada foi a COM5 e a segundafoi a COM6, então as funções das portas serão as seguintes:

COM5: ISP - Gravação do firmware;

COM6: Comunicação serial com o MICAz.

O FT2232C é a terceira geração da família dos populares chips USB/USART daFTDI[44].

2.2.9 Placa de Aquisição de dados - MDA100CBA MDA100CB (Figura 2.8)[17] é uma placa de extensão para o MICAz que possui

um sensor de luz (fotoresistor), um sensor de temperatura de precisão (termistor 3) e umaárea de prototipação que fornece acesso as duas portas seriais, barramento I2C, portas deIO, todos os oito canais ADC além de 45 ilhas desconectadas para uso geral.

Figura 2.8: Foto da placa de aquisição de dados - MDA100CB.

A Figura 2.9 ilustra a disposição da matriz de acesso da placa de aquisição de dados eprototipação MDA100CB.

3Condutor sensível à temperatura.

Page 34: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

15

Figura 2.9: Matriz MDA100CB.

2.3 TinyOS

2.3.1 IntroduçãoTinyOS é um Sistema Operacional (SO) Open Source desenvolvido inicialmente pela

Universidade de Berkeley para aplicações de baixo consumo, WSNs, redes de sensoresatuadores e robótica[18, 4].

Segundo BORGES; CARVALHO; CRUZ, os SO´s atuais que estão sendo desenvol-vidos pela comunidade científica são, o TinyOs da Universidade de Berkeley[4], Con-tiki[12] do Instituto de Ciências de computação da Suécia, MantisOs[8] da Universidadedo Colorado, SOS da Universidade de Califórnia, Yatos da Universidade de Minas Ge-rais, EYES da Universidade de Twente e o Nano-QPLUS da Divisão de Informática,CNU, Daejeon, Coréia do Sul.

Ainda segundo BORGES; CARVALHO; CRUZ, o TinyOS tornou-se mais confiávelpara aplicações finais, mais portável e já é compatível com as plataformas eyesIFXv2,intelmote2, mica2, micaZ, telosb em seu novo versionamento.

O TinyOs proporciona a escrita rápida de aplicações para RSSF através de:

• Um modelo de programação orientado a componentes reutilizáveis com alto nívelde abstração;

• Modelo de execução concorrente que define como os componentes interagem entresi;

• Uma vasta Application Programming Interfaces (API) consistindo de uma biblio-teca para escrita de novas aplicações e serviços.

O modelo de execução preemptivo com gerenciamento de tarefas executadas ao mesmotempo enquanto o sistema dispõe de pouca memória RAM. As tarefas são escalonadas edivididas em fases.

Esta seção tem a finalidade de prover uma breve noção do sistema operacional TinyOSbem como a utilização dos componentes necessários para utilização na Placa de Medição

Page 35: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

16

de Consumo. Grande parte dela será baseada no livro TinyOS Programming[40] de autoriade Philip Levis e David Gay, amplamente utilizado pela comunidade acadêmica como omelhor ponto de referência para a iniciação da programação para RSSF, e o restante nasTinyOS Enhancement Proposalss (TEPs) e tutoriais disponíveis no site do TinyOS[4].

2.3.2 Estrutura de Programação - nesCProgramas que utilizam o sistema operacional TinyOS são escritos na linguagem

nesC[6] e são construídos a partir de componentes interconectados wireds. Para ilus-trar a diferença; considere um programa, que pisca alternadamente um LED durante umperíodo de 500 milisegundos, escrito em C e o código equivalente escrito em nesC. OCódigo 2.1, corresponde hipoteticamente ao programa escrito em linguagem C.

Código 2.1: BlinkLed.c1 # i n c l u d e " mote . h "2 i n t main ( ) 3 m o t e _ i n i t ( ) ;4 whi le ( 1 ) 5 l e d 0 _ t o g g l e ( ) ;6 delay_ms ( 5 0 0 ) ;7 8

O programa equivalente em nesC possui dois componentes, configuração e módulo.Configurações em nesC realizam a interconexão wired da aplicação e instanciam outroscomponentes de alto nível disponíveis na árvore do TinyOS. Módulos possuem imple-mentações de código e interfaces. Os Códigos 2.2 e 2.3 ilustram a configuração e omódulo da aplicação respectivamente[40].

Código 2.2: BlinkLedAppC.nc1 c o n f i g u r a t i o n BlinkLedAppC 2 implementat ion 3 /∗4 ∗ Componentes u t i l i z a d o s p e l a a p l i c a ç ã o5 ∗ /6 components MainC , LedsC , BlinkLedC ;7 components new TimerMi l l iC ( ) a s Tempor izador ;8 /∗9 ∗ Wired i n t e r c o n e x ã o das i n t e r f a c e s

10 ∗ /11 BlinkLedC . Boot−>MainC ;12 BlinkLedC . Leds−>LedsC ;13 BlinkLedC . Tempor izador−>Tempor izador ;14

Código 2.3: BlinkLedC.nc1 module BlinkLedC 2 uses 3 i n t e r f a c e Boot ; / / Contém o e v e n t o de i n i c i a l i z a ç ã o do s i s t e m a4 i n t e r f a c e Leds ; / / I n t e r f a c e que imp lemen ta os t r ê s LEDs5 i n t e r f a c e Timer < TMi l l i > as Tempor izador ;6 7

Page 36: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

17

8 implementat ion 9

10 e v e n t void Boot . b oo t e d ( ) 11 c a l l Tempor izador . s t a r t P e r i o d i c ( 5 0 0 ) ; / / Timer d i s p a r a a cada 500

ms12 1314 e v e n t void Tempor izador . f i r e d ( ) 15 c a l l Leds . l e d 0 T o g g l e ( ) ; / / Muda o e s t a d o do Led16 17

A rotina BlinkLedAppC utiliza diversos componentes e realiza a conexão entre elesconforme podemos observar na Figura 2.10 que ilustra o grafo da aplicação para piscar oLed0 do MICAz.

Figura 2.10: Grafo da Aplicação BlinkLed.

Os Códigos [2.1],[2.2] e [2.3], mostram a diferença entre nesC e C. Programas escritosem C são compostos de funções e programas escritos em nesC, são desenvolvidos a partirde um conjunto de componentes que implementam serviços particulares. Funções em Ctipicamente interagem diretamente, enquanto que componentes nesC são especificadospor interfaces. O módulo que utiliza a interface necessariamente precisa implementar oseventos e fazer chamadas call dos comandos quando necessário. Interfaces em nesC sãosemelhantes às interfaces da linguagem Java: um “contrato” para o desenvolvimento deuma classe.

A Figura 2.11 mostra o fluxograma da aplicação BlinkLedAppC.

Page 37: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

18

Figura 2.11: Fluxograma da aplicação BlinkLedAppC.

2.3.3 Assinatura de ComponentesUm programa escrito em nesC é uma coleção de componentes. Todo componente

tem o seu respectivo código fonte. Por exemplo, LedsC.nc contém o código nesC para ocomponente LedsC, enquanto que o código fonte para o componente BlinkLedC pode serencontrado no arquivo BlinkLedC.nc(Código 2.3).

Há dois tipos de componentes: Módulos (Module) e Configurações (Configuration),os quais são utilizados para interconectar uma combinação de serviços ou abstrações.

Os dois tipos de componentes diferem na sua implementação conforme podemos ob-servar através das respectivas assinaturas em 2.4 e 2.5.

Código 2.4: configAppC.nc1 c o n f i g u r a t i o n configAppC 23 4 implementat ion 56

Código 2.5: configC.nc1 module BlinkLedC 23 4 implementat ion 56

A Implementação de módulos em nesC, consiste de um código fonte que aparentaum programa em linguagem C. Configurações consiste de código de interconexão entrecomponentes[40].

Page 38: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

19

2.3.4 Componente Essenciais para Uso na Plataforma de Medição2.3.4.1 Componente MicaBusC

Para trabalhar com portas de entrada e saída, conversores ADC e as interrupções ex-ternas do MICAz devemos utilizar o componente MicaBusC que provê acesso aos pinosatravés das seguintes interfaces:

Adc0 interface MicaBusAdc as Adc0

Adc1 interface MicaBusAdc as Adc1

Adc2 interface MicaBusAdc as Adc2

Adc3 interface MicaBusAdc as Adc3

Adc4 interface MicaBusAdc as Adc4

Adc5 interface MicaBusAdc as Adc5

Adc6 interface MicaBusAdc as Adc6

Adc7 interface MicaBusAdc as Adc7

Int0 interface GeneralIO as Int0

Int1 interface GeneralIO as Int1

Int2 interface GeneralIO as Int2

Int3 interface GeneralIO as Int3

PW0 interface GeneralIO as PW0

PW1 interface GeneralIO as PW1

PW2 interface GeneralIO as PW2

PW3 interface GeneralIO as PW3

PW4 interface GeneralIO as PW4

PW5 interface GeneralIO as PW5

PW6 interface GeneralIO as PW6

PW7 interface GeneralIO as PW7

Os Códigos 2.6 e 2.7 mostram um exemplo de utilização da interface GeneralIO(acesso a porta digital de entrada e saída). Deve-se observar que somente na implementa-ção do componente configuração (configuration) é que se atribui o endereço físico do pino(PW2) do microcontrolador. A programação no módulo é desempenhada considerandouma interface GeneralIO em alto nível de abstração.

Page 39: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

20

Código 2.6: ioportAppC.nc1 c o n f i g u r a t i o n iopor tAppC 2 3 implementat ion 4 components MainC , MicaBusC , i o p o r t C ;5 components new TimerMi l l iC ( ) a s Tempor izador ;6 I2CTes t ingC . Boot−>MainC . Boot ;7 I2CTes t ingC . wakeUpPIC−>MicaBusC .PW2;8 i o p o r t C . Tempor izador−>Tempor izador ;9

Código 2.7: ioportC.nc1 module i o p o r t C 2 uses 3 i n t e r f a c e Boot ;4 i n t e r f a c e Timer < TMi l l i > as Tempor izador ;5 i n t e r f a c e Genera l IO as p o r t a I O ;6 7 8 implementat ion 9 e v e n t void Boot . b oo t e d ( )

10 c a l l p o r t a I O . makeOutput ( ) ; / / C o n f i g u r a o p ino como s a í d a11 c a l l p o r t a I O . c l r ( ) ; / / Põe o p ino em n í v e l b a i x o12 c a l l Tempor izador . s t a r t P e r i o d i c ( 5 0 0 0 ) ; / / Tempor i zador a cada 5

segundos13 14 e v e n t void Tempor izador . f i r e d ( ) 15 c a l l p o r t a I O . t o g g l e ( ) ; / / A l t e r n a o n í v e l da p o r t a16 17

2.3.4.2 Componente Atm128I2CMasterC

O barramento I2C foi desenvolvido pela Philips em meados dos anos 80 para possi-bilitar fácil comunicação entre componentes localizados na mesma Printed Circuit Board(PCB). A Philips Semiconductors migrou para NXP em 2006[53].

O barramento I2C apresenta três modalidades com diferente taxas de comunicação[53]:

Standard 100Kbps;

Fast mode 400Kbps;

Fast mode plus 3.4Mbps.

Algumas características significativas neste tipo de barramento são:

• Somente duas linhas de comunicação são requisitos;

• Relação master/slave entre todos os dispositivos que fazem parte do barramento;

• Cada dispositivo conectado possui um único endereço;

• Detecta colisão.

Page 40: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

21

O componente Atm128I2CMasterC, que implementa as duas interfaces ilustradas naFigura 2.12, é destinado a desempenhar comunicação I2C entre MICAz e outros disposi-tivos.

É importante ressaltar que o projeto desse componente foi realizado de modo que oMICAz seja sempre e unicamente master enquanto que o restante dos dispositivos conec-tados ao barramento devem ser estritamente slaves. Este componente admite somente amodalidade Standard (100Kbps de taxa de comunicação)[4].

Figura 2.12: Conexões do módulo Atm128I2CMasterC. Fonte: [4]

Os Códigos 2.8 e 2.9 demonstram a utilização do componente Atm128I2CMasterC.O programa escreve e ler no barramento I2C a cada 3 segundos.

Código 2.8: I2CBusAppC.nc1 c o n f i g u r a t i o n I2CBusAppC 2 implementat ion 3 components MainC , I2CBusC ;4 components new TimerMi l l iC ( ) a s Tempor izador ;5 components new Atm128I2CMasterC ( ) ;6 I2CBusC . Boot−>MainC . Boot ;7 I2CBusC . Tempor izador−>Tempor izador ;8 /∗9 ∗ I2C Wir ing

10 ∗ /11 I2CBusC . Resource−>Atm128I2CMasterC ;12 I2CBusC . I2CPacke t−>Atm128I2CMasterC ;13

Código 2.9: I2CBusC.nc1 module I2CBusC2 uses 3 i n t e r f a c e Boot ;4 /∗5 ∗ Timers6 ∗ /7 i n t e r f a c e Timer < TMi l l i > as Tempor izador ;8 /∗9 ∗ P r o t o c o l o I2C

10 ∗ /11 i n t e r f a c e I2CPacke t <TI2CBasicAddr > ;

Page 41: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

22

12 i n t e r f a c e Resource ;13 14 15 implementat ion 16 u i n t 8 _ t t x D a t a [ 8 ] ;17 u i n t 8 _ t rx Da t a [ 8 ] ;18 enum 19 SLAVE_ADDR = 0x60 / / Endereço do d i s p o s i t i v o s l a v e no barramento

I2C20 ;2122 e v e n t void Boot . b oo t e d ( ) 23 c a l l Tempor izador . s t a r t P e r i o d i c ( 3 0 0 0 ) ; / / 3 segundos24 25 e v e n t void Tempor izador . f i r e d ( ) 26 c a l l Resource . r e q u e s t ( ) ;27 2829 e v e n t void Resource . g r a n t e d ( ) 30 memcpy ( txData , " t e s t e " , s t r l e n ( " t e s t e " ) ) ;31 c a l l I2CPacke t . w r i t e ( I2C_START | I2C_STOP , SLAVE_ADDR, s i z e o f (

r xD a t a ) , &t x D a t a [ 0 ] ) ;32 3334 async e v e n t void I2CPacke t . readDone ( e r r o r _ t e r r o r , u i n t 1 6 _ t addr ,

u i n t 8 _ t l e n g t h , u i n t 8 _ t ∗ d a t a ) 35 c a l l Resource . r e l e a s e ( ) ;36 3738 async e v e n t void I2CPacke t . wr i t eDone ( e r r o r _ t e r r o r , u i n t 1 6 _ t addr ,

u i n t 8 _ t l e n g t h , u i n t 8 _ t ∗ d a t a ) 39 i f ( e r r o r ==SUCCESS) 40 c a l l I2CPacke t . r e a d ( I2C_START | I2C_STOP , SLAVE_ADDR, s i z e o f (

r xD a t a ) , &r xD a t a [ 0 ] ) ;41 42 43

2.3.5 Protocolos de RoteamentoRoteamento é o processo de encontrar um caminho de uma origem até um destino.Redes de Sensores sem Fio (RSSF) são constituídas de uma árvore de nós densamente

distribuídos que operam de forma colaborativa. Cada dispositivo é dotado de capacidadecomputacional (microcontrolador), sensores, transceptor de rádio e fonte de energia. Oprotocolo de roteamento é um algorítmo responsável pela busca, descoberta e manutençãodas rotas entre um nó de origem e o nó de destino.

O projeto de um algorítmo de roteamento além de ser complexo, deve considerar a rotamais curta entre a origem e o destino. O protocolo de roteamento pode ser desenvolvidoem função dos seguintes fatores:

• complexidade da rede;

• modelo de mobilidade;

• eficiência energética;

Page 42: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

23

• gerenciamento de memória.

2.3.5.1 Protocolo Collection

O protocolo Collection[20] é um serviço que soma esforços para entregar pacotesmulti-hop em uma RSSF[20]. CollectionC é o componente responsável pelo funciona-mento do protocolo Collection. O perfil do nó na RSSF é determinado pelo uso seletivodas interfaces disponíveis neste componente. O Algoritmo 2.10 ilustra a implementaçãoe as interfaces disponíveis nesse protocolo.

As informações na rota final são exibidas para os observadores da RSSF. Considere aFigura 2.13 que é um caso típico de uma WSN e as observações listadas abaixo:

1. Os nós A,B,C,D,E e F são responsáveis pelo sensoriamento da RSSF;

2. O nó G é a base-station, gateway ou node-sink;

3. Os círculos são apenas ilustrações do alcance do rádio dos respectivo nó central;

4. O nó G está conectado a uma placa de interface denominada MPR2400CB[25, 57]ou Mote Interface Board (MIB);

5. A rota mais curta para que um pacote cuja origem é o nó A e o destino o nó G é:A⇒ B⇒ D⇒ E⇒ F ⇒ G

Figura 2.13: Cenário Típico com 7 sensores

CollectionC é o componente responsável pelo funcionamento do protocolo Collec-tion. O perfil do nó na RSSF é determinado pelo uso seletivo das interfaces disponíveispor este componente. O Algoritmo 2.10 ilustra a implementação e as interfaces disponí-veis do protocolo.

Código 2.10: Componente CollectionC1 c o n f i g u r a t i o n C o l l e c t i o n C 2 p r o v id e s 3 i n t e r f a c e S t d C o n t r o l ;4 i n t e r f a c e Send [ u i n t 8 _ t c l i e n t ] ;5 i n t e r f a c e Rece ive [ c o l l e c t i o n _ i d _ t i d ] ;6 i n t e r f a c e Rece ive as Snoop [ c o l l e c t i o n _ i d _ t ] ;

Page 43: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

24

7 i n t e r f a c e I n t e r c e p t [ c o l l e c t i o n _ i d _ t i d ] ;89 i n t e r f a c e P a c k e t ;

10 i n t e r f a c e C o l l e c t i o n P a c k e t ;11 i n t e r f a c e C t p P a c k e t ;1213 i n t e r f a c e C t p I n f o ;14 i n t e r f a c e C t p C o n g e s t i o n ;15 i n t e r f a c e R o o t C o n t r o l ;16 1718 uses 19 i n t e r f a c e C o l l e c t i o n I d [ u i n t 8 _ t c l i e n t ] ;20 i n t e r f a c e C o l l e c t i o n D e b u g ;21 22 2324 implementat ion 25 components CtpP ;2627 S t d C o n t r o l = CtpP ;28 Send = CtpP ;29 Rece ive = CtpP . Rece ive ;30 Snoop = CtpP . Snoop ;31 I n t e r c e p t = CtpP ;3233 P a c k e t = CtpP ;34 C o l l e c t i o n P a c k e t = CtpP ;35 C t p P a c k e t = CtpP ;3637 C t p I n f o = CtpP ;38 C t p C o n g e s t i o n = CtpP ;39 R o o t C o n t r o l = CtpP ;4041 C o l l e c t i o n I d = CtpP ;42 C o l l e c t i o n D e b u g = CtpP ;43

A Tabela 2.4 relaciona as principais interfaces do serviço Collection e as respectivasfunções.

Tabela 2.4: Principais Interfaces do componente CollectionC

Interface FunçãoStdControl Inicialização e parada do serviço Collection. Obrigatória para todos

os nós que façam parte da coleção.Send Envio de pacotes pelos producers.

Receive Recepção de pacotes pelos consumers.Snoop Escuta dos pacotes sem interferir na coleção.

Intercept Responsável pelo encaminhamento multi-hop dos pacotes.RootControl Implementa comandos que definem se o nó é ou não uma rota final da

coleção. Obrigatório para os consumers.

Os nós no protocolo Collection desempenham tarefas específicas. Cada perfil, listado

Page 44: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

25

na Tabela 2.5, corresponde a um papel diferente ou participação na RSSF.

Tabela 2.5: Tipos de Perfis no protocolo Collection

Perfil interface Descriçãoproducer Send Coletam dados dos sensores e enviam para a

rota final da rede.snooper Snoop Escutam o tráfego de dados na rede.

in-network processor Intercept Interceptam os pacotes em trânsito na redee os encaminham para o próximo salto(forward). O processo de interceptação e en-caminhamento também permite a modifica-ção do pacote. (update)

consumer Receive Recebem os dados produzidos pela coleçãode sensores distribuídos na rede.

Nesta seção desenvolveremos uma aplicação prática (veja Figura 2.14) com os seguin-tes requisitos:

1. Para fins experimentais todos os nós tiveram a potência do rádio reduzidas paraPdBm =−25dBm. A potência de -25dBm é equivalente a PW = 3.162×10−6W ou3.16µW . O consumo do rádio reduz-se para 8.5mA e isto facilita a observação docomportamento do protocolo em pequenas distâncias;

2. Quatro nós híbridos, numerados de 1 a 4, serão distribuídos: (producers+in-networkprocessor). A finalidade desses nós consiste na leitura dos sensores (temperatura ede luminosidade), envio dos dados para o consumer e encaminhamento multi-hopde pacotes - (forward);

3. O nó 5 desempenhará o papel de consumer;

4. A Figura 2.14 ilustra o cenário dessa experiência prática;

5. Dois sistemas embarcados diferentes são necessários; um para a árvore da rede (nósde 1 a 4) e outro para o nó 5 (gateway).

Figura 2.14: Aplicação Prática: Proposta de Cenário

Page 45: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

26

O código fonte referente à aplicação prática dessa seção está disponível no ApêndiceV desse documento.

2.3.5.2 Protocolo de Roteamento - Tymo

DYMO[7, 58] é um protocolo de roteamento reativo4 e multi-hop desenvolvido paraMobile Ad-hoc Networks (MANET) e baseado no mecanismo de funcionamento do Adhoc On-Demand Distance Vector Routing (AODV)[48][7]. A especificação do DYMOpelo The Internet Engineering Task Force (IETF) ainda está em fase de desenvolvimento.

Ilustraremos, nessa seção, os princípios básicos da operação do protocolo TYMO[58].A Figura 2.15 ilustra a representação de uma RSSF onde o nó A deseja enviar um pacotepara o nó H. As linhas representam conexões dos nós com os seus vizinhos.

Figura 2.15: Exemplo: A envia um pacote para H.

Conforme THOUVENIN, a fim de evitar contradições e incoerências verbais, divi-diremos o processo de comunicação do protocolo em duas camadas segundo a Tabela2.6.

Tabela 2.6: Camadas do protocolo TYMO.

Camada DescriçãoLink Layer Os pacotes são trocados entre os emissores e receptores (vi-

zinhos).Network Layer Os pacotes são enviados do emissor para o receptor.

O TYMO[58] é a implementação do DYMO em TinyOS 2.x. Este protocolo é abordadodetalhadamente no documento de dissertação de mestrado de THOUVENIN.

Um protocolo reativo não armazena informações da topologia da rede. Os nós pro-cessam informações sobre as rotas somente quando necessário. O resultado disso é ummenor overhead na troca de informações de rotas entre os nós vizinhos e redução dotráfego economizando banda e energia.

As características principais do DYMO são a descoberta e manutenção de rotas. Estasatividades são desempenhadas através da troca de mensagens: RREQ, RREP e RERR. ODYMO também possui mecanismos para evitar a utilização de informações de roteamentoantigas e a formação de loops.

A operação básica consiste no envio de mensagens de requisição de rota Route Request(RREQ); que é enviada quando um nó necessita obter o caminho entre a origem e o destino

4Adaptativo quanto à mudanças na topologia da rede e descoberta de rotas sob demanda.

Page 46: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

27

do pacote. Esta mensagem percorre toda a rede até o destino conforme a Figura 2.16[19,58, 7].

Figura 2.16: Requisição de rota entre A e H.

Cada nó que recebe uma RREQ, guarda a rota para a origem e reencaminha o pacotede controle para o destino.

O destino responde com uma mensagem de resposta de rota - Reply Route (RREP)quando o pacote da origem encontra o nó de destino, conforme Figura 2.17.

Figura 2.17: RREP é enviada pela rota mais curta entre A e H.

Uma mensagem RREQ é bastante similar às mensagens RREP. A diferença reside nofato das mensagens RREP serem unicasts enquanto que RREQ são broadcasts.

Quando um nó recebe uma RREQ ou RREP, as informações sobre a rota estão numatabela (cache) que poderá ser utilizada posteriormente para fins de comunicação entre aorigem e o destino sem a necessidade de envios de mensagens RREQ.

As rotas são eliminadas quando não estão sendo utilizados por um período de tempo.Uma mensagem Route Error (RERR) é disseminada se um nó tentar encaminhar um pa-cote através de uma rota que foi perdida. A Figura 2.18 ilustra o processo da mensagemRERR.

Nesta seção desenvolveremos uma aplicação prática (veja Figura 2.19) com os seguin-tes requisitos:

1. Para fins experimentais todos os nós tiveram a potência do rádio reduzidas paraPdBm =−25dBm. A potência de -25dBm é equivalente a PW = 3.162×10−6W ou3.16µW . O consumo do rádio reduz de 17,4mA para 8.5mA e, com isso, facilita aobservação do comportamento do protocolo em pequenas distâncias;

2. Quatro nós (1,2,3 e 4) serão distribuídos com a finalidade desses de leitura dossensores (temperatura e de luminosidade), envio dos dados para a base-station eencaminhamento multi-hop de pacotes - (forward);

Page 47: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

28

Figura 2.18: O nó G deslocou-se para outra posição e o nó F não tem mais rota paraalcançar G e H. B e C não encaminha RERR porquê C conhece o caminho para D.

3. O nó 36 desempenhará o papel de base-station;

4. A Figura 2.19 ilustra o cenário dessa experiência prática.

5. O código fonte do exemplo prático está disponível no Apêndice VI deste docu-mento.

Figura 2.19: Aplicação Prática: Proposta de Cenário

O código fonte referente à aplicação prática dessa seção está disponível no Apêndice8 desse documento.

2.4 ConclusãoForam abordados cada um dos componentes do MICAz, através de uma visão arqui-

tetural detalhada de cada um de seus componentes e suas características.Em geral, desenvolvedores de sistemas embarcados utilizam a linguagem C. O TinyOS

pode se mostrar, no início, um pouco difícil e diferente devido às difereças do C proce-dural e o nesC orientado a componentes. Todavia, com o passar o tempo, o projetista desistemas embarcados para RSSF se acostuma com o paradigma da programação orientadaa componentes e passa inclusive a admirar o vantajoso conjunto de APIs, níveis de abstra-ções e a vasta quantidade de componentes reutilizáveis que executam tarefas complexas.O desenvolvimento de subrotinas para sistemas embarcados onde o tempo é crítico é umatarefa complexa. Sabe disso quem desenvolveu por exemplo: uma API para controle eacesso SPI de uma câmera CCD ou até mesmo quem precisou desenvolver um conjunto de

Page 48: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

29

subrotinas de acesso ao barramento I2C. Tarefas complexas demandam tempo e quandose tem componentes que implementam estas tarefas com nível de abstração alto o tempode desenvolvimento reduz-se significativamente.

TinyOS é o Sistema Operacional para RSSF mais utilizado na comunidade acadê-mica. Apresenta confiabilidade e o seu projeto foi desempenhado visando dispositivoscom pouca memória, severas restrições de energia, baixo consumo e WSNs.

Dois protocolos de roteamento, Collection e Tymo foram explicados resumidamenteatravés de experimentos práticos com os seus respectivos códigos fonte.

Page 49: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Capítulo 3

Estado da Arte

3.1 Introdução

Nesta seção serão mencionados alguns trabalhos relacionados com estratégias de me-dição de consumo de energia em RSSF. Vários trabalhos serão referenciados neste texto,mas três destes serão discutidos em detalhes pois são fortemente relacionados ao temadesta dissertação de mestrado - Técnicas de Medições de Consumo de Energia em RSSF.

O primeiro trabalho[32], demonstra o desenvolvimento de uma placa de mediçãode consumo denominada “Scalable Power Observation Tool - SPOT”, desenvolvido em2007 por uma equipe do Departamento de Ciências da Computação da Universidade daCalifórnia, Berkeley.

O segundo trabalho[61], compreende o desenvolvimento da ferramenta de monitora-mento de consumo “A Runtime Energy Monitoring System for Wireless Sensor Networks”,elaborado em 2008 pelo Instituto Tecnológico de Graz, Áustria.

O terceiro trabalho[36], denominado de “Energy Measurements for MicaZ Node”,ilustra uma série de medições realizadas na MPR2400[25] obtidas a partir de instrumen-tação eletrônica e elaborados em 2006 por um grupo da Universidade de Kaiserslautern,Alemanha.

3.2 Micro Power Meter for Energy Monitoring of Wire-less Sensor Networks at Scale

3.2.1 Visão Geral

Eficiência energética é um problema a ser solucionado nas pesquisas em WSN´s. Alacuna principal para avaliar eficientemente o consumo de energia de um nodo de umaRSSF é um método que viabilize a observação prática da realidade.

Segundo JIANG et al., aproximações de simuladores baseadas no uso da energia no-dal, derivada de estimativas a partir do duty cycle e taxas de comunicação não são capazesde capturar precisamente o comportamento do consumo em função do tempo (power pro-file). Os simuladores atuais extrapolam valores, generalizam características importantes eproduzem dados incoerentes.

O trabalho de JIANG et al. sugere a obtenção de medidas in situ a fim de corrigirmodelos de simuladores caracterizando variâncias e validando generalizações.

Page 50: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

31

A Figura 3.1 mostra o comportamento do consumo, durante 4 segundos, de uma típicaaplicação para RSSF.

Figura 3.1: Comportamento do consumo em função do tempo durante 4 segundos.

Observando a Figura 3.1, nota-se longos períodos de baixo consumo pontuados porpulsos discretos de alta corrente. Isto acontece porque na maior parte do tempo o dis-positivo encontra-se no estado sleep, só entrando em atividade (estado ativo) quando énecessário efetuar alguma tarefa de sensoriamento. RSSF´s trabalham com um duty cycletípico de 0.1% a 1%.

Um sistema de medição de consumo deve ter uma faixa dinâmica que exceda três or-dens de magnitude para capturar suficientemente a corrente no sleep mode com precisão.

A Figura 3.2 mostra o detalhe de uma transição do modo sleep para o modo ativocom uma duração de 20 milisegundos. Observa-se que o nodo não drena uma correnteconstante durante este período. Há dois transitórios nos últimos 10 microsegundos equatro diferentes níveis e oscilações. O consumo de energia total é a soma dos consumosde cada um dos componentes que fazem parte do nodo. Esta abordagem sugere que taxasde amostragem da ordem de Khz ou Mhz podem ser necessárias para viabilizar a capturadessas características transitórias.

Figura 3.2: Comportamento do consumo em função do tempo durante curto período.

O sistema de medição deve ser minimamente invasivo, ou seja, deve-se evitar o má-ximo possível a influir no sistema que está se realizando as aferições. Finalmente, me-dições in situ têm como requisitos dispositivos de pequeno tamanho e baixo custo. Asolução desenvolvida é mostrada na Figura 3.3.

Page 51: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

32

Figura 3.3: O “Scalable Power Observation Tool -SPOT”, consiste de um resistor shunt,amplificador, conversor de voltagem para frequência e dois contadores.

Este sistema possibilita a medição da potência e energial nodal com uma faixa di-nâmica excedendo 10000:1 e uma resolução temporal da ordem de microsegundos. OScalable Power Observation Tool (SPOT) acumula as medições de corrente, possui ummecanismo de calibração e utiliza a interface I2C para comunicação com o nodo da RSSF.

3.2.2 Formulação do ProblemaEsta seção apresenta os requisitos básicos do SPOT com ênfase na faixa dinâmica,

taxa de amostragem, pertubação externa e sua fácil integração.Uma RSSF pode exibir uma variedade de diferentes “profiles”1 que dependem da fi-

nalidade e da aplicação firmware. Por exemplo: uma simples aplicação de sensoriamentoe armazenamento poderá ter o comportamento exibido na Figura 3.1. Em outro cená-rio, uma outra aplicação poderá coletar e gravar dados a cada 5 minutos e executar um“upload”2 apenas uma vez por dia. O “profile” - comportamento do consumo em funçãodo tempo - dessa aplicação é diferente do mostrado na Figura 3.1. O SPOT é utilizadocomo um dispositivo de medição independente do perfil de consumo da aplicação. Istoimplica que o sistema necessida cobrir toda a densidade espectral do consumo.

Sensores de WSN são aplicações pulsantes. A largura desses pulsos ou ciclo de tra-balho ativo devem ser considerados para definir a taxa de amostragem do dispositivo demedição. Se a duração de um pulso for mais curta que o período de amostragem “sam-ple”, os dados serão perdidos e a cobertura espectral estará comprometida. O dispositivode medição deve atender o critério de Nyquist. Na Figura 3.2 temos uma janela de apro-ximadamente 20 milisegundos. A densidade espectral de potência exibe a energia atravésde todo espectro. É necessário limitar o sinal com um filtro passa baixa e a frequênciade corte desse filtro deve ser a mais alta frequência presente na amostra de pulso ativo daFigura 3.2.

A frequência de corte do exemplo é por volta de 20Khz e isto implica numa taxamínima de amostragem “sample rate” de 20Khz× 2 = 40Khz, desta forma atendendo o

1Perfil do consumo da aplicação.2Enviá-los para a “base-station”.

Page 52: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

33

critério de Nyquist.O dispositivo de monitoramento de energia não deve influenciar no consumo do mote

e isto implica que o mecanismo de medição deve ser alimentado por uma fonte de energiaexterna (separada do mote).

Uma das características principais do projeto SPOT é que cada nodo numa RSSF podeser equipado com um medidor de consumo. Isto sugere que o dispositivo necessita ser defácil integração e também deve ter um custo irrisório comparado ao preço de um mote.

3.2.3 Arquitetura UtilizadaNesta seção é apresentada a arquitetura do SPOT e algumas características. A arquite-

tura consiste de quatro estágios: sensoriamento, condicionamento de sinal, digitalizaçãoe saída de energia (Figura 3.4).

Figura 3.4: SPOT - Arquitetura.

O estágio de sensoriamento compreende um resistor “shunt” colocado em série como mote, convertendo corrente para tensão. Esta voltagem é proporcional ao consumo depotência do mote.

No estágio de condicionamento, um amplificador diferencial e um filtro passa baixa éutilizado para amplificar e limitar a banda do sinal respectivamente.

O estágio de digitalização compreende um conversor Voltage-to-Frequency (V/F), queproduz na saída uma onda quadrada proporcional à tensão de entrada.

No estágio de saída de energia, os pulsos de procedência do conversor V/F são soma-dos (integrados) em um contador com a finalidade de obter a medição de energia. Umoutro contador também é utilizado para armazenar a base de tempo da onda quadrada.

Os valores dos contadores são obtidos pelo mote através do barramento I2C.O sensoriamento é o primeiro estágio assim como na maioria dos sistemas de captura

e conversão de sinais. Particularmente no SPOT , a grandeza obtida é a potência que é oproduto da tensão e corrente. A tensão foi considerada fixa no projeto do SPOT .

Um resistor “shunt”3 foi colocado em série entre o mote e a fonte de energia. Aqueda de tensão através desse resistor é proporcional a corrente a ser medida. No projetodo SPOT o valor dessa resistência foi de 1Ω. Assumindo que a máxima corrente no moteé de 40mA então a máxima queda de tensão no “shunt” é de 40mV .

3Resistência de muito pequeno valor.

Page 53: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

34

Amplificadores diferenciais produzem tensões de “offset”. Isto é uma característicacomum em amplificadores e a causa se deve ao desbalanceamento dos componentes inter-nos. Supondo que a diferença entre as entradas do amplificador seja zero, mesmo assimhaverá uma tensão residual presente na saída do amplificador; esta tensão é denominada“offset”.

Para compensar este problema foi incluído no SPOT um mecanismo de calibração. Osvalores são armazenados no mote e utilizados na curva de calibração a fim de compensaro “offset”.

A amplificação de pequenos sinais é crítica porque qualquer ruído é significante naamostra do sinal. Foram colocados múltiplos estágios RC para diferentes frequências.Também foi descoberto que o oscilador, presente no estágio digital, introduzia um ruídono amplificador. Este problema foi solucionado isolando a parte analógica da digitalatravés de anéis de terra distintos. Isto pode ser observado através da Figura 3.3.

A corrente drenada por um mote situa-se na faixa de 20µA a 40mA. Utilizando umresistor de 1Ω, a mínima voltagem para capturar é 20µA× 1 = 20µV . Isto é um valormuito baixo para processamento de sinais. Por isso que esse sinal é amplificado atravésde um amplificador diferencial ilustrado na Figura 3.4. O ganho do amplificador utilizadono SPOT foi de 82.5;

A digitalização é o estágio que converte o sinal analógico para o domínio digital via-bilizando processamento digital de sinais para interconexões em sistemas digitais (micro-controladores).

Conversores ADC são comumente utilizados como dispositivos de digitalização de si-nais analógicos. ADC´s capturam uma tensão de entrada e produzem na saída um valordigital com uma especificada resolução. A faixa dinâmica do SPOT tem requisito de nomínimo 14 bits de resolução. Foram analisados quatro diferentes tipos de implementa-ções:

ADC Interno de Microcontroladores: Considerado inadequado porque são usualmentede 10 a 12 bits de resolução e também implicam em um aumento considerável noconsumo do microcontrolador;

16 bits ADC´s: Significativamente mais caros e implicam na utilização de Digital SignalProcessor (DSP)´s. Utilizar um DSP no projeto aumentaria a complexidade, custoe o consumo;

Conversores V/F: São dispositivos analógicos de baixo custo cuja saída é um trem depulsos digitais;

Circuito Integrados de Medição de Consumo: Não foi encontrado nenhum que atendaos requisitos do SPOT .

O último estágio é a acumulação de energia e a saída digital. Para viabilizar isto énecessário integrar a potência em função do tempo (Equação 3.1).

E(t) =∫ t

t0P(t)dt (3.1)

O SPOT utiliza contadores para somar o trem de pulsos. Cada borda de subida dotrem de pulsos incrementa o contador. Quando o consumo é alto verifica-se pulsos commaior frequência e menor intervalo de tempo. A diferença no contador entre os intervalos

Page 54: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

35

de tempo t0 e t representam o consumo de energia durante o tempo t − t0. Para evitar“overflow”4 do contador o mote possui uma linha para zerar esses contadores.

Adicionalmente foi utilizado como base de tempo um outro contador que mede preci-samente o tempo decorrido da medida. Este contador é disparado pelo próprio osciladordo conversor V/F.

3.2.4 Resultados

As Leituras dos contadores são obtidas do SPOT , calibradas e comparadas com umacurva de referência obtida de um equipamento de instrumentação eletrônica profissional(Figura 3.5).

Figura 3.5: Comparação das medidas obtidas pelo SPOT e um amperímetro.

Na Figura 3.5, o mote em observação está drenando 9µA. Após 6 minutos o erro émenor que 0.1mJ ou 3%.

A Figura 3.6 ilustra a energia monitorada pelo SPOT comparativamente a de um os-ciloscópio. As porções mais longas da curva são representadas pelo consumo de energiadurante modo “sleep” enquanto que os crescimentos repentinos entre os degraus da es-cada correspondem ao consumo durante o ciclo ativo.

Figura 3.6: Energia (mJ) em Função do Tempo (S).

4Quando o valor do buffer de contagem ultrapassa sua capacidade máxima.

Page 55: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

36

A Figura 3.7 é o gráfico da corrente em função do tempo. Nota-se que a resolução éum pouco baixa. Isto se deve ao tempo de espera do mote para ativar uma medição.

Figura 3.7: Corrente (mA) em função do Tempo (S).

3.2.5 Conclusão

O trabalho abrange os requisitos, arquitetura, projeto e resultados do SPOT . Foi es-clarecido que o dispositivo está habilitado a efetuar medições e ultrapassou os desafios.O SPOT emprega uma arquitetura que, através do domínio analógico, viabiliza uma largafaixa dinâmica. Os dois contadores: acumulador de energia e resolução temporal, possi-bilitam a realização das medições com boa precisão.

O SPOT , devido às similaridades dos “profiles” das aplicações para WSN pode serextendido para efetuar aferições em Personal Digital Assistants (PDA), telefones celularese novas classes de sensores para WSN´s.

3.3 A Runtime Energy Monitoring System for WirelessSensor Networks

3.3.1 Visão Geral

Eficiência energética é um dos tópicos mais importantes no desenvolvimento de RSSF.Há uma grande demanda de artigos sobre o problema do consumo de energia com focoem protocolos e aplicações. Observa-se que há uma lacuna quando se trata da obtençãode medidas reais.

Segundo TRATHNIGG; WEISS, simuladores como o PowerTOSSIM[54] e AEON[38]têm grande valor, mas o modelo de energia é limitado. Medidas precisas do consumo deenergia de cada nó em uma WSN é desejável por inúmeras razões. Primeira, o modelode energia de simuladores são incoerentes. Segunda, o número de plataformas para RSSFestá crescendo significativamente. Isto implica em um alto número de plataformas nãosuportadas por simuladores existentes. Terceira, a informação detalhada do consumo deum nodo viabiliza a investigação em todas as camadas da plataforma. Por exemplo, atécnica “dynamic power management” pode ser utilizada para adaptar a qualidade doserviço em função da energia remanescente. A informação de energia pode ser utilizadapara a descoberta e manutenções das rotas.

Page 56: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

37

A plataforma SPOT detalhada em [32] alcança boa precisão mas considera a tensão dafonte de energia constante. Isto não é nada realista no cenário de dispositivos alimentadosà bateria porque a tensão da fonte de alimentação diminui com o passar do tempo.

Foram identificadas algumas questões importantes em sistemas de medições de ener-gia, são elas:

Precisão: Deve ser melhor do que os resultados obtidos pelos simuladores;

Faixa Dinâmica: A corrente drenada por um mica2 situa-se em torno de 35mA quandono estado ativo. No modo “sleep” a corrente baixa para cerca de 30µA;

Custo e Tamanho: Cada nodo de uma RSSF deve ser monitorado simultaneamente e osistema de monitoramento deve ser de pequenas dimensões e viabilidade econô-mica;

Não invasivo: O sistema de medição deve influenciar o mínimo possível no consumo deenergia do nó que está sendo aferido;

Simplicidade: Fácil integração, instalação e utilização.

3.3.2 Arquitetura UtilizadaO consumo de energia do nodo de uma RSSF depende da tensão aplicada. Por isso a

arquitetura utilizada efetua medições tanto da tensão quanto da corrente simultaneamente.A Figura 3.8 mostra a arquitetura utilizada no projeto em [61].

Figura 3.8: Arquitetura do “Runtime Energy Monitoring System for Wireless SensorNetworks”.

O esquema de medição apresentado no diagrama de blocos da Figura 3.8 é marginal-mente invasivo. O mote, por si só, efetua a leitura do consumo através do barramentoI2C[53].

A energia utilizada pelo mote é denotada por:

E =∫ T

t=0u(t)× i(t)dt (3.2)

Como os valores são discretos, teremos então:

E =N

∑n=0

u[n]× i[n]× t[n] (3.3)

Page 57: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

38

Para viabilizar as medições com o TinyOS[40, 4] foi implementada uma interfaceem camadas. A primeira camada basicamente implementa todas as funções da interfaceI2C. A segunda, simples mas suficientemente eficiente para medições de energia, é umainterface com nível de abstração mais alto do que a primeira. A aplicação inicializa oprocesso de medição por um período de tempo. Quando o processo termina, a energia éobtida da aplicação através de um evento. O Código 8 .5 ilustra a simplicidade e o nívelde abstração da interface de medição projetada.

Código 3.1: Interface de Medição1 i n t e r f a c e EnergyMeasurement 2 command r e s u l t _ t s t a r t E n e r g y M e a s u r e m e n t ( u i n t 3 2 _ t s e c o n d s3 e v e n t void energyMeasurementDone ( double j o u l e ) ;4

Um fator de calibração teve de ser determinado. O cálculo do fator de calibração Kfoi viabilizado utilizando um resistor de valor conhecido ao invés do mote, aplicando umatensão estável e obtendo a energia consumida pelo resistor durante um período de tempo.A Equação 3.4 ilustra como o fator K foi calculado.

E = K×N

∑n=0

u[n] (3.4)

Para calibração do “offset” utilizou-se a Equação 3.4 subtraindo o erro de “offset” doamplificador operacional (Equação 3.5).

E = K×N

∑n=0

u[n]−EO f f set (3.5)

A disposição do medidor de energia foi implementada numa placa do tamanho de ummica2. O dispositivo de medição foi acoplado ao mote através do conector de extensão.Como não é possível interceptar a fonte de alimentação do mote através deste conectorfoi necessário substituir a fonte de alimentação do mote. A Figura 3.9 mostra a placaconectada ao mote.

Figura 3.9: Foto da placa de medição.

As diferenças de “clock” entre o mote e o microcontrolador ATtiny45 iria gerar erronas medidas e na correção do “offset”. Por isso foi escolhido a utilização de um “timer”

Page 58: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

39

do mote para temporização das medidas. Isto impõe uma carga extra no mote mas aenergia adicional pode ser negligenciada.

Como a medida de pequenos sinais são sensíveis a ruídos, foram utilizados capacitores“bypass”5, anéis e planos de terra de forma a manter o ruído o mais baixo possível.

3.3.3 Resultados

Para validar a precisão das medidas foi realizado um procedimento prático experi-mental com a finalidade de avaliar a energia consumida em função de várias cargas. Umafonte de alimentação bem estável foi usada para manter a tensão estabilizada dentro dafaixa de 2.7V a 3.3V . Vários resistores de valores fixos foram utilizados no lugar do motee um multímetro digital modelo 34401A da Agilent foi utilizado para efetuar as medidas.Como a tensão e a resistência são conhecidas, a corrente pôde facilmente ser calculada.As medidas efetuadas pelo instrumento foram comparadas com as do protótipo. O gráficoilustrado na Figura 3.10 mostra a curva de erro para várias cargas alimentadas por umatensão fixa de 3.15V . O erro obtido foi de 2%. As medições da energia consumida pelomica2 apresentaram excelente precisão.

Figura 3.10: Curva de Erro do “Runtime Energy Monitoring System for Wireless SensorNetworks”.

Para experimentos reais, mica2 conectado ao protótipo, a correção de “offset” sofrevariações com a temperatura e o tempo. Esta avaliação não foi concluída e ainda está emfase de desenvolvimento.

O ponto chave do “runtime energy-measurement setup” é a capacidade de efetuarmedidas em cenários com muitos nodos distribuídos. O dispositivo pode ser utilizadopara melhorar a eficiência de protocolos e aumentar o tempo de vida útil da RSSF. O ins-trumento se mostrou suficientemente hábil para efetuar aferições do consumo em nodosindividuais de RSSF´s.

5Arranjo de capacitores que filtram determinadas frequências.

Page 59: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

40

3.3.4 ConclusãoA precisão e a faixa dinâmica do SPOT e o “runtime energy-measurement setup” são

equivalentes. Isto se deve principalmente às similaridades das abordagens para mediçõesde corrente.

Um importante avanço do “runtime energy-measurement setup” comparado com ou-tras abordagens é a capacidade de monitorar a tensão continuamente. Isto é de grandeimportância porque a tensão da bateria decresce com o tempo. Custo, tamanho e fácilintegração são semelhantes ao SPOT .

O SPOT utiliza contadores baseados no protocolo I2C. Nesta abordagem, para evitar“overflow”, o mote deve periodicamente efetuar leitura desses contadores e zerá-los. Istoimpõe um consumo extra de energia que, no caso de aplicações de muito baixo duty cycle,pode ser negligenciado.

Conforme foi apresentado o “runtime energy-measurement setup” interfere o mínimopossível no consumo de energia do mote. O protótipo pode ser montado com baixo custo,pequenas dimensões, proporcionando boa precisão dentro de toda a faixa dinâmica típicados motes. Este é a primeira abordagem de medição de energia de WSN que consideraa tensão de alimentação variável. A montagem pode ser facilmente adaptada para ou-tras plataformas de RSSF e futuros trabalhos serão focados na redução do consumo doprotótipo e a integração das informações de consumo para utilização em protocolos eaplicações de RSSF.

3.4 Energy Measurements for MicaZ Node

3.4.1 IntroduçãoDispositivos móveis são geralmente alimentados a baterias. Fabricantes de baterias

recarregáveis especificam a capacidade da célula que é avaliada utilizando medições comuma carga fixa. Para baterias de polímeros de lítio esta carga é relativamente alta compa-rada com o consumo de um dispositivo “low-power”. A capacidade da bateria dependeprincipalmente da tensão mínima operacional necessária para o funcionamento do dispo-sitivo, a corrente e a temperatura. Para determinar o perfil do consumo de um dispositivoalimentado a bateria deve-se considerar dois itens importantes: a capacidade real e o con-sumo de energia do dispositivo móvel. O microcontrolador que faz parte do dispositivopode operar no modo “idle”, “sleep” ou algum outro modo de economia de energia. Istoimplica em variações no perfil do consumo de energia do equipamento.

O consumo de energia é alto se o dispositivo não faz uso do modos de economia deenergia. O microcontrolador do MICAz dispõe de seis modos diferentes de economia deenergia. A transição dos modos ocasionam alguns efeitos importantes como por exemplo:desligar o oscilador principal da CPU, desabilitar “timers” ou interrupções externas.

3.4.2 Medições de uma bateria de polímero de lítio (LiPo)Para muitas aplicações é necessário saber quando a capacidade da bateria está abaixo

de um certo nível. Se a bateria estiver no limite de sua carga, uma mensagem de alertapode ser sinalizada ou o dispositivo poderá desligar-se automaticamente. A escolha daLithium Polymer Battery (LiPo) foi idealizada porque os dispositivos móveis devem pos-suir fontes de energia de baixo peso e alta densidade energética. Para baterias de LiPo há

Page 60: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

41

poucas curvas de demonstração da descarga e, na maioria das vezes, são correntes comníveis múltiplos da capacidade. A razão disso é que estes modelos de bateria são muitoutilizados em aeronaves onde há um alto consumo de corrente.

Para o experimento foi utilizada uma bateria recarregável de LiPo fabricada pelaKokam[1] com uma capacidade nominal de 1.5Ah e uma tensão de 3.7V . A bateria foidescarregada por uma corrente constante de 37.8mA circulando através de um conversorDC-DC e um resistor. Os valores foram obtidos através de um osciloscópio.

O resultado do experimento é mostrado através da Figura 3.11. O eixo X compreendedo tempo em unidade de 30 segundos e o eixo Y expõe a tensão da bateria e a saída doconversor DC-DC. A primeira seção da curva, com 250 unidades de tempo, decresce maisrapidamente que a seção do meio. Nas duas primeiras seções, a relação entre a tensão eo tempo são praticamente lineares. Somente na última seção, cerca de 3250 unidades detempo, a tensão diminui abruptamente em um curto período de tempo até o ponto de totaldescarga t=3816.

Figura 3.11: Descarga de uma bateria de LiPO a 37.8mA.

A capacidade utilizável da bateria pode ser calculada através da seguinte Equação 3.6.

3816.30s3600 s

h×37.8mA = 1202mAh (3.6)

Um dos resultados importantes neste experimento é que a tensão varia com a descargada bateria.

3.4.3 Medições em um MICAz3.4.3.1 Microcontrolador ATMEGA128L

A avaliação do tempo de operação de um nodo MICAz tem como requisito a obten-ção de medidas exatas do consumo de energia do dispositivo. O MICAz consiste de ummicrocontrolador[24], um transceptor de rádio[31], três LED´s e alguns poucos compo-nentes que não são relevantes citar nesta seção. Todos os componentes citados podemser ligados e desligados ou migrar para algum mecanismo de economia de energia. Oconsumo de energia está presente nos “datasheets” da maioria desses componentes ele-trônicos. A soma do consumo, especificado nos “datasheets”, pode diferir de um valor

Page 61: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

42

correto porque há um consumo adicional dos outros componentes tais como resistores,capacitores, entre outros. Um outro problema é a diferença marcante no consumo apre-sentado pelo dispositivo no modo de economia de energia e no modo ativo.

Para este experimento prático utilizou-se o mesmo regulador DC-DC citado na se-ção anterior para reduzir a tensão a nível de utilização do MICAz (3.1V). Na saída doregulador foi adicionado o MICAz. A corrente do MICAz e a tensão foram obtidas porinstrumentação eletrônica (osciloscópio).

Para cada um dos estados foram realizadas medidas do consumo de energia do MI-CAz. Outro paradigma utilizado foi a variação da frequência de clock “frequency scaler”.A figura 3.12 mostra o consumo de energia dos diferentes modos providos pelo micro-controlador ATMEGA128L[24].

Figura 3.12: Modos de economia de energia do ATMega128L. a: Busy (mul), b:Busy(jmp), c:NOP, d:Idle, e:ADC, f:Ext. Standby, g: Save.

Antes de efetuar a transição para estes modos o programa espera a estabilização doconsumo. As primeiras três medições concerne ao modo de operação normal. Duas delasrepresentam “duty cycles” enquanto que a terceira corresponde a um “loop idle”. Ambosos “loops” apresentam um alto consumo, enquanto que o “loop NOP” tem um consumobaixo de 1mA. Todos as outras aferições mostram os modos de economia de energia. Omodo “idle” apresenta um consumo alto relativo aos demais, mas tem a vantagem de teros periféricos do microcontrolador em plena operação. Outros modos apresentam muitobaixo consumo mas apresentam efeitos resultantes da desabilitação dos periféricos do mi-crocontrolador. Nestas medições, os modos “standby” e “powerdown” não foram con-siderados. Estes dois modos param o relógio do microcontrolador e uma nova transiçãopara outro modo somente é possível através de uma interrupção externa.

A Tabela 3.13 mostra a média do consumo de energia em cada modo discutido[36].Detalhes para diferentes modos podem ser obtidos na folha de dados do microcontrolador[24].

Uma segunda forma de limitar o consumo de energia consiste na redução da frequên-cia de operação do microcontrolador[36]. Se a próxima tarefa pode ser executada em umtempo t, a frequência pode ser diminuída para um nível onde a tarefa termine no tempo t.Um exemplo disto é ilustrado na Figura 3.14.

Page 62: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

43

Figura 3.13: Média do Consumo de Energia.

Figura 3.14: Benefício de diminuir a frequência do ATMEGA128L.

3.4.3.2 Transceptor CC2420

O transceptor é o componente que mais consome energia no MICAz. Este compo-nente tem quatro modos diferentes de operação: “down, idle, send e receive”. De acordocom o datasheet[31], o modo “receive” consome maior energia que o modo “send”. Asmedições experimentais determinaram um consumo de 20mA em ambos os modos. Omodo “idle” tem um consumo de 0.4mA maior que o modo “down”. A Figura 3.15 mos-tra o perfil de consumo do rádio[36]. Neste experimento foi conservada a corrente domicrocontrolador o mais baixo possível para obter precisão. A frequência de operação foidividida por 16. O transceptor inicializa e entra no modo “receive”. Após um período,uma operação de transmissão “send” é iniciada. Isto não é visualizado pelo experimentoe finalmente o dispositivo retorna de volta ao modo “receive”.

Figura 3.15: Consumo do CC2420.

Page 63: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

44

3.4.3.3 LEDs

As aferições realizadas nos LED´s determinaram um consumo médio de 10.2mA in-cluindo o microcontrolador. Subtraindo o consumo do microcontrolador 7.69mA o con-sumo de 2.5mA por LED.

3.4.4 ConclusãoAs medidas efetuadas em baterias de LiPo tiveram uma boa relação com a capacidade

remanescente da bateria. As avaliações no dispositivo foram suficientes para determinar aquantidade de energia consumida em cada modo de operação. Alguns modos de economiade energia disponíveis são ilusórios quanto aos valores presentes nos “datasheets” e nãodevem ser utilizados na contenção do consumo e eficiência energética. Doravante, ométodo de “frequency-scaling” pode ser utilizado para diminuir o consumo quando omodo “sleep” não for aplicável na situação.

Com os resultados obtidos é possível aperfeiçoar o modelo de energia do simuladorAVRORA[59]. Os próximos passos serão o desenvolvimento de um agendamento dinâ-mico que viabilizará estimar o consumo de energia das tarefas e suas prioridades. Haverátambém espaço para diminuir a frequência do microcontrolador para execução das tarefasde forma a minimizar o consumo de energia.

3.5 ConclusãoA Seção 3.2 expressa a elaboração da ferramenta de medição denominada de “Sca-

lable Power Observation Tool -SPOT”. Este dispositivo apresentou boa estabilidade ealcançou a larga faixa dinâmica necessária para aferir o consumo em RSSF.

O SPOT apresentou excelente precisão quando comparado com instrumentação ele-trônica. No entanto, apresenta uma latência nas medições devido à espera do mote paradisparar uma medida. Isto acontece quando o rádio recebe um pacote. Neste instante, oTinyOS dispara um evento, e somente depois desse evento acontecer é que o dispositivo,através barramento I2C, zera os contadores e solicita uma amostra da potência instantâ-nea, provocando um atraso na medida. O ideal seria que a medida inicializasse antes dorádio sair do estado “idle” para “receive”. O segundo e maior problema de projeto doSPOT foi considerar a tensão do mote fixa. Esta simples falha de projeto gera resultadospráticos incoerentes porque sabe-se que a tensão da fonte de energia do mote diminui como tempo.

Na Seção 3.3 foi mostrado o projeto de uma ferramenta de medição do consumo deenergia denominada de “Runtime Energy Monitoring System for Wireless Sensor Networks”.Na visão geral é abordado os requisitos do projetos mas, a arquitetura poderia ser maisdefinida e detalhada. O dispositivo é mais simples que o SPOT e apresentou boa estabili-dade e precisão nas medidas. O diferencial marcante foi a consideração de uma variávelde grande importância nas medidas do consumo de energia em WSN, a tensão da fonte deenergia. Portanto este é o único equipamento, até então, que considera a tensão do motecomo uma grandeza variável. Foi citado que o dispositivo já está sendo utilizado paraelaboração de um modelo de energia mais eficiente do simulador AVRORA[59].

A Seção 3.4 ilustrou medidas nos componentes eletrônicos mais importantes que fa-zem parte do MICAz. Os testes efetuados com uma bateria de LiPo foram fundamentaisporque foi comprovado que a capacidade nominal da bateria, fornecidade pelo fabricante,

Page 64: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

45

é dependente do tipo de aplicação a que será utilizada. A bateria de LiPo, utilizada nostestes, não fornece a capacidade de 1500mAh mas sim de 1202mAh como foi evidenci-ado no experimento. Foram efetuadas medições do consumo dos seis modos de operaçãodo microcontrolador ATMEGA128L[24] e concluiu-se que alguns modos de economiade energia não devem ser utilizados. A diminuição da frequência “frequency-scaling”,quando possível, deve ser utilizada para diminuir o consumo de energia do MICAz. Ostestes realizados no transceptor de rádio[31] mostraram que não há diversidade no con-sumo do rádio quanto à transmissão e recepção. Ao contrário do que está citado no“datasheet”, verificou-se que o dispositivo drena a mesma quantidade de corrente tantono modo “send” quanto no modo “receive”.

Os trabalhos citados neste capítulo estão diretamente relacionados com o projeto eimplementação do dispositivo de medição desenvolvido nesta dissertação de mestrado. Oprincípio de captura das variáveis físicas e as arquiteturas apresentadas são equivalentes,no entanto diferem no aspecto de precisão, eficiência, integração e metodologia adotadano desenvolvimento do protótipo do Capítulo 4.

Page 65: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Capítulo 4

Arquitetura Proposta

4.1 IntroduçãoHá lacunas na análise de consumo de redes de sensores sem fio - RSSF. A necessidade

de efetuar uma análise real de cada nó de uma RSSF motivou o projeto de uma placade medição que proporcionasse flexibilidade e produzisse o mínimo de interferência nocircuito a ser medido. Desta forma, este capítulo abrange o projeto, análise e montagemde um circuito de medição com as seguintes características:

1. “in situ” meter1

2. Minimamente invasivo - Mínima interferência no circuito a ser medido;

3. Pequenas dimensões;

4. Medicões de tensão e corrente instantânea e consultas desses valores através doprotocolo I2C.

5. Cobertura dinâmica - Abrangência maior possível da faixa dinâmica;

6. Baixo consumo - circuito em “standby” entrando no modo normal somente medi-ante às solicitações do nó da RSSF;

7. Consideração do valor real da tensão e corrente em cada medida simultaneamente;

8. Baixo custo.

9. Monitoramento do consumo durante a operacão (“runtime”).

As seções seguintes explicam individualmente os circuitos integrados utilizados, cál-culos efetuados e os periféricos utilizados no processo de conversão.

4.2 Fluxograma de ProjetoO projeto da placa de medição foi dividido em onze fases, conforme ilustradas na

Figura 4.1. A Tabela 4.1 explica detalhadamente cada fase com suas características.

1A operação do instrumento é realizada sem interromper o estado normal do sistema.

Page 66: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

47

Figura 4.1: Fluxograma de Projeto da Placa de Medição

Tabela 4.1: Fases de Projeto da Placa de Medição

Fase DescriçãoI Estudo de caso dos dados, sinais, interface com o mundo real,

domínio digital e analógico e variáveis necessárias para medição.Cálculos dos modelos que serão adotados no projeto.

II Pesquisa aprofundada de componentes eletrônicos disponíveis nomercado com ênfase no atendimento dos requisitos da fase I, pre-cisão e baixo custo.

III Verificar se os componentes eletrônicos atendem ou não as espe-cificações do projeto.

IV Desenho do diagrama esquemático (“layout”) do circuito utili-zando software Eagle PCB[11].

Page 67: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

48

V Desenho da placa de circuito impresso (“PCB”) do circuito utili-zando software Eagle PCB[11].

VI Compra dos componentes eletrônicos.VII Montagem do protótipo com tecnologia Surface Mounted Devi-

ces (SMD) e desenvolvimento, em linguagem C, do software em-barcado no microcontrolador PIC18F2620[26].

VIII Desenvolvimento em TinyOS do sistema embarcado do MICAz.IX Desenvolvimento em Delphi do TinyOS Terminal.X Verificação e testes do conjunto de sistemas.XI Análise dos resultados obtidos na fase experimental.

4.3 Visão Geral da ArquiteturaA figura 4.2 ilustra a visão geral da arquitetura do placa de medição desenvolvida.

Figura 4.2: Visal Geral da Arquitetura da Placa de Medição.

De acordo com a figura 4.2, verifica-se três etapas que são abordadas com detalhes natabela 4.2.

Tabela 4.2: Etapas da Arquitetura da Placa de Medição.

Etapa DescriçãoSensoriamento Condicionamento, amplificação e aquisição de corrente e tensão.Conversão V/F Transforma os valores de tensão e corrente em um trem de pulsos

cuja frequência é proporcional ao sinal de entrada.Digitalização Captura de frequência de tensão e corrente através de periférico

integrado ao microcontrolador PIC18F2620.

Page 68: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

49

4.4 Módulo de Amplificação de CorrenteEficiência energética em sistemas eletrônicos é um fator crítico. O sensoriamento de

corrente permite o monitoramento e avaliação dos níveis de consumo de energia do equi-pamento, bem como a prevenção de falhas de curto-circuito e as indesejáveis descargasabruptas da bateria.

Existem diferentes topologias para sensores de corrente, cada uma com seus atributose requisitos de aplicações. A escolha da configuração do sensor pode ser determinante noprojeto final.

Um sensor de corrente é um circuito que monitora o fluxo de corrente em um circuitoelétrico, que através da passagem de corrente elétrica, provoca uma queda de tensão emum resistor-série (“shunt”) colocado no caminho da corrente[28]. Como apresentado naFigura 4.3.

Esta conversão de corrente/tensão pode ser condicionada a níveis proporcionais paraser capturada em conversores e instrumento de medições[28, 46].

Figura 4.3: Voltímetro aferindo a queda de tensão no resistor “shunt”.

4.4.1 Alternativas para medição de correnteEsta seção descreve e justifica o uso e o tipo de amplificador de instrumentação utili-

zado no projeto para amplificação de corrente.Há dois métodos básicos disponíveis para sensoriamento de corrente elétrica. O pri-

meiro método utiliza o processo de medição do campo magnético ao redor do condutorpor onde flui a corrente elétrica e o segundo utiliza a inserção de um resistor de pequenovalor “shunt” no caminho da corrente para medir a queda de tensão através dele. A pri-meira abordagem, além do alto custo, é suscetível a perdas pela não linearidade e erros docoeficiente de temperatura. Sensores magnéticos são usualmente restritos para aplicaçõesque justifiquem o alto custo associado[46].

Para medição de baixas correntes utiliza-se comumente duas configurações:

• High-Side Current Monitoring

• Low-Side Current Monitoring

Muitas aplicações utilizam o princípio de Low-Side Current Monitoring, que consistenum resistor conectado em série entre a carga e o terra conforme Figura 4.4[46].

Page 69: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

50

Figura 4.4: Low-side current sensing

Algumas desvantagens dessa abordagem são as corrrentes de curto-circuito resultantesde acidentes entre a bateria e a terra que não são detectáveis e o aparecimento dos efeitosindesejáveis de “terra flutuante” resultantes da resistência extra entre a carga e o terra.

High-side current sensing (Figura 4.5 consiste em colocar o resistor “shunt” entre afonte de alimentação e a carga. Esta abordagem elimina os problemas de flutuações deterra em “low-side sensing” e também possibilita a detecção de curto-circuitos acidentaisda bateria para o terra [46, 49].

Figura 4.5: High-side current sensing

4.4.2 Amplificador de Corrente EscolhidoTipicamente para aplicações de baixa tensão a abordagem “high-side sense amplifier”

utiliza-se um amplificador de instrumentação integrado Instrumentation Amplifier (IA).Para o projeto da placa de medição utilizou-se o MAX4372F, um monitor dedicado

de corrente da Maxim Integrated Products[50].O MAX4372F é um amplificador de precisão e de baixo custo, disponível em en-

capsulamento SOT23-5pinos. Este amplificador opera com uma fonte de alimentaçãoassimétrica com faixa de 2.7-28V, consume apenas 30µA, possui ganho fixo de 50V/Ve largura de banda de 200Khz. É ideal para monitoramento de corrente em sistemas ali-mentados a bateria. A Figura 4.6 ilustra um diagrama funcional do MAX4372F.

Apresenta as seguintes vantagens[49, 50]:

• Opera na faixa de temperatura de −40C até +85C;

Page 70: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

51

• projetado para pequenos sinais (0-28V);

• baixo consumo 60µA;

• facilidade de uso porque é um dispositivo específico para monitoramento de cor-rente;

Figura 4.6: Diagrama Funcional - MAX4372.

O circuito possui tensão de modo comum de 0 a 28V que é independente da fontede alimentação. Esta característica possibilida o monitoramento do fluxo de corrente dabateria em “deep discharge”2 e tensões que ultrapassam a fonte de alimentação (VCC).

A tensão diferencial de entrada VSENSE é igual a VIN-V- e o transistor, na saída deA1, amplifica a corrente por um fator β , de modo que IM = β×V SENSE

RG1 .A saída do amplificador A2 é dada por:

VOUT =RGD×β ×V SENSE

RG1(1+ R2R1)

(4.1)

O ganho do dispositivo é dado por:

VOUTV SENSE

=RGD×β

RG1(1+ R2R1)

(4.2)

Função transferência do circuito adotado:

VOUT =V SENSE×50 (4.3)

A Tabela 4.3 mostra na primeira coluna a corrente que está passando pelo resistor“shunt”. A segunda coluna ilustra a queda de tensão produzida pela passagem de corrente

2Processo em que descarrega-se uma bateria até 20% ou menos da sua capacidade nominal.

Page 71: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

52

Tabela 4.3: Relações entre Corrente, Tensão diferencial de entrada e Tensão de Saída.

Corrente Vsense Ganho do MAX4372 Vout0.300 mA 0.300 50 15mV1.000 mA 1.000 mV 50 50mV5.000 mA 5.000 mV 50 250mV

10.000 mA 10.000 mV 50 500mV50.000 mA 50.000 mV 50 2,5V

no resistor. A terceira coluna expõe o ganho fixo do amplificador de corrente e a quarta eúltima coluna corresponde à saída do amplificador de corrente que é o produto da segundacoluna com a terceira.

4.5 Conversor de Voltagem para FrequênciaUma RSSF, dependendo da aplicação, exibe diferentes curvas de comportamentos de

consumo (profiles)[32]. A título de exemplo, considere uma aplicação com 0.5Hz deduty cycle3 exibindo um profile ilustrado na Figura 4.7. Na Figura 4.7, o gráfico inferiorcorresponde a uma abertura “zoom” de apenas um dos pulsos exibidos no gráfico superior.

Figura 4.7: Um típico comportamento nodal de consumo consistindo de longos períodosde baixa corrente pontuado por curtos períodos de atividade com alta corrente.

A aplicação pode ler e guardar na RAM4 valores de sensores, armazenar os valores em

3Descreve a fração de tempo em que um sistema está em um estado “ativo”.4Tipo de memória que permite a leitura e a escrita, utilizada como memória primária em sistemas ele-

Page 72: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

53

memória flash5 uma vez por dia e realizar (“upload”) dos dados uma vez por semana[32].A situação descrita no parágrafo anterior é ligeiramente diferente da que nós iremos

utilizar nos casos de teste, uma vez que, o objetivo é cobrir uma faixa dinâmica do espectrode corrente e tensão neste projeto.

Nós sensores em WSN são aplicações pulsantes. A largura do pulso ou o tempo deatividade deve ser considerado para determinar a taxa de amostragem (sampling rate).

A cobertura da faixa dinâmica é um fator crítico no projeto.Utilizou-se um conversor de Voltagem para Frequência de baixo custo, o AD654 da

Analog Devices[2], cujo diagrama funcional é ilustrado na Figura 4.8.

Figura 4.8: Diagrama funcional do AD654.

O AD654 é um circuito integrado conversor de voltagem para frequência que consistede uma entrada amplificada, um sistema oscilador de precisão e um estágio de saída dealta corrente. Uma rede RC é o único requisito para configurar a frequência de fundo deescala[2].

Algumas características do AD654:

• Opera com fonte simétrica ou assimétrica (5V a 36V, ±5V a ±18V);

• Frequência de fundo de escala acima de 500KHz;

• Simplicidade. Mínimo número de componentes externos são necessários para con-figuração;

• Baixo consumo. 2.0mA de corrente quiescente;

• 1mV de offset;

• A frequência de fundo de escala é estabelecida pela simples realação: FS = Vin10∗R∗C .

Uma configuração do conversor V/F AD654 para tensões positivas de entrada é ilus-trada na da Figura 4.9. Um amplificador operacional é o estágio de entrada e o propósitoé converter o valor da tensão de entrada para o transistor de realimentação da saída. Bonsdesempenhos são alcançados quando esta corrente de 1mA é aplicada na entrada do con-versor V/F. Há um multivibrador astável cuja função é produzir uma onda quadrada nasaída. O transistor de saída possui o coletor aberto para que a lógica digital seja referen-ciada indiferente dos níveis de alimentação do circuito analógico.

trônicos digitais.5Memória de computador do tipo EEPROM

Page 73: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

54

Figura 4.9: Configuração simples V/F do AD654.

No esquema de conexão da Figura 4.9, o amplificador de entrada apresenta uma impe-dância muito alta. Os resistores R1 e R2 são selecionados junto com o capacitor CT paraprover a frequência de fundo de escala. O diodo Schottky CR1 (MBD101) normalizaos níveis lógicos digitais eliminando 500mV abaixo de -VS. Este diodo não foi requi-sito haja vista que no circuito de medição projetado o conversor opera com alimentaçãoassimétrica[2]. A Figura 4.10 ilustra o circuito utilizado na placa de medição.

Figura 4.10: Configuração do conversor de voltagem para frequência utilizada na placade medição.

A frequência de saída em função da tensão de entrada é dada pela Equação 4.4:

Fout =Vin

10×1E−9×100E3(4.4)

A corrente máxima em um MICAz é de 60mA, lembrando que 60mA equivale a umaqueda de tensão de 60mV na entrada do MAX4372 e multiplificando pelo ganho (fator50), temos uma tensão de entrada de 3V, portanto, isto nos fornecerá uma frequência defundo de escala de 3KHz, que é provada pela Equação 4.5[2]:

Fout =60mA×50

10×1E−9×100E3= 3KHz (4.5)

Utilizando V/F ao invés de ADC maximiza-se a precisão da faixa dinâmica de cober-tura do espectro. O PIC18F2620 possui ADC de 10 Bits cuja resolução[60]6 (tamanho do

6Definida como a menor alteração que pode ocorrer na saída.

Page 74: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

55

degrau) é dada pela Equação 4.6:

Resolução =3.0

210−1= 2.933mV (4.6)

Para o cálculo da resolução do conversor V/F devemos considerar a tensão de off-set[33] de entrada, que é 1mV, e a tensão de 3V correspondente à frequência de fundo deescala do conversor. Com um pouco de algebrismo calcula-se a resolução do conversoratravés da Equação 4.7.

Resolução =3.0−1×10−3

3.0−1×10−3

10×1×10−9×100×104

= 1mV (4.7)

O ganho de resolução quando se utiliza conversor V/F é notável porque a coberturadinâmica proporciona 3000 degraus de 1mV cada, ao invés dos 1023 degrais de 2.93mVdo (ADC).

Para alcançar os 3000 degraus utilizando um ADC seria necessário, no mínimo, umADC externo de 12 bits que seria bastante oneroso no projeto e consumo de energia.

4.6 MicrocontroladorA Microchip Inc. tem desenvolvido a série PIC18 de microcontroladores para uso

em aplicações complexas. O PIC18F é uma solução custo-benefício para aplicações depropósito geral que utilizam Real Time Operating System (RTOS)7 e possuem requisitosde protocolos de comunicações complexos, tais como: TCP/IP, CAN, USB ou Zigbee[23,26].

As características básicas principais da série do PIC18F são[23, 26]:

• 77 instruções;

• Compatível com a série PIC16;

• Interrupções com níveis de prioridade;

• Instruções de 16 bits e caminho de dados de 8 bits;

• Capacidade de alta corrente (25mA);

• Master Synchronous Serial Port (MSSP) (SPI e I2C);

• Conversores ADC de 10 bits

Neste projeto ficou definido que o microcontrolador a ser utilizado seria o da da série18F da Microchip - PIC18F2620[26].

O PIC18F2620 é um microcontrolador com estrutura flexível, tecnologia nanoWatt[27]8

e várias configurações de osciladores. Algumas características principais são citadas naTabela 4.4.

7Um sistema operacional destinado à execução de múltiplas tarefas onde o tempo de resposta a umevento é pré-definido.

8É um padrão industrial de baixo consumo, larga faixa de tensões de operação e gerenciamento depotência flexível concebido pela Microchip Technology Inc.

Page 75: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

56

Tabela 4.4: Características principais do PIC18F2620.

Parâmetro ValorTipo de Memória de Programa FlashMemória de Programa (KB) 64

CPU Speed (MIPS) 10Ram Bytes 3968

Data EEPROM (bytes) 1024Periféricos de comunicação digital 1-A/E/USART, 1-MSSP(SPI/I2C)

Capture/Compare/PWM Peripherals 2 Capture/Compare/PWM (CCP)Timers 1 x 8-bit, 3 x 16-bitADC 10 canais de 10 bits

Comparadores 2Tensão de Operação 2V a 5.5V

Número de Pinos 28

Na escolha dos componentes do projeto, procurou-se sempre utilizar encapsulamentosSMD a fim de reduzir as dimensões finais da placa de medição. Para o microcontroladorPIC18F2620, utilizou-se Small-Outline Integrated Circuit (SOIC) porque possui dimen-sões menores que o encapsulamento Dual In Line Package (DIP), desta forma, ocupamenos espaço físico na PCB. A Figura 4.11 ilustra a pinagem do PIC18F2620.

Figura 4.11: Pinagem do PIC18F2620.

4.7 Fonte de Alimentação DC e Circuitos Utilizados

O circuito da placa de medição, conforme citado anteriormente, tem como requisitobaixo consumo de energia. Desta forma, na maioria do tempo, ele estará desligado emstandby e só entrará em operação quando o MICAz solicitar, através do barramento I2Cas informações de consumo.

Um outro requisito é ser minimamente invasivo, ou seja, a operação da placa de me-dição deverá produzir o mínimo de interferência na fonte de alimentação do circuito aser medido, no caso o MICAz. Assim sendo, adotou-se uma bateria de 9V(Figura 4.12),também conhecida pelo nome coloquial de “PP3 battery” como fonte de alimentação.

A alimentação do microcontrolador e o circuito digital é responsável pelo IntegratedCircuit (IC) LE33AB; um regulador de tensão de 3.3V[56].

Page 76: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

57

Figura 4.12: Panasonic PP3 (9 volt) battery.

O restante do circuito, conversores V/F e sensor de corrente são alimentados direta-mente pela bateria de 9V.

Figura 4.13: Pinagem do LE33AB.

A Tabela 4.5 mostra as características do Low-Dropout Output (LDO) LE33AB queproduz na saída uma tensão compatível com a operação do microcontrolador PIC18F2620.A Figura 4.13 ilustra respectivamente os pinos disponíveis no circuito integrado.

O LE33AB é um LDO disponível com encapsulamentos TO-92 e SO-8 e opera comuma larga faixa de tensões de saída.

Page 77: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

58

Tabela 4.5: Características principais do LE33AB.

Parâmetro ValorEncapsulamento TO-92

Baixa corrente quiescente 50µA no estado OFF e0.5mA no estado ON

Vout Nominal 3.3VCapacidade de corrente de saída 100mA

O conector In-Circuit Serial Programming (ICSP) é uma barra de 6 pinos cuja fina-lidade é gravar o firmware no PIC18F2620. A Tabela 4.6 ilustra os 6 pinos disponíveisbem como a função de cada um deles.

Tabela 4.6: Conector ICSP - Pinagem.

Pino Função1 VPP2 VDD - tensão de Alimentação do circuito digital.3 GND - terra digital4 PGD - Programável DATA5 PGC - Programável Clock6 NC - Não conectado

4.8 Circuito de CorrentePara capturar a queda de tensão no resistor “shunt” antes de alimentar o MICAz,

utilizou-se a estratégia ilustrada na Figura 4.14.

Figura 4.14: Circuito de Captura de Corrente.

A estratégia foi elaborada com intuito de influenciar o mínimo possível no circuitode alimentação do MICAz. A corrente de que será drenada pelo MICAz percorre anteso resistor de aferição - “shunt”. O circuito está ilustrado na Figura 4.14. A Figura 4.15ilustra fotos da montagem. As baterias ilustradas na Figura 4.15 são a única fonte de

Page 78: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

59

energia do MICAz.A corrente passa pelo circuito de medição, provocando uma queda de tensão no resis-

tor, e retorna para a alimentação do MICAz.

Figura 4.15: Fotos do Esquema de Captura de Corrente.

A barra de 3 pinos denominada MICAZ_BAT tem por finalidade interceptar a cor-rente que passa pelo circuito do MICAz fazendo com que circule através do resistor“shunt” produzindo uma queda de tensão na entrada do amplificador diferencial MAX4372F.

4.9 Interface MICAz x Placa de MediçãoPara conectar a placa de medição ao MICAz, utilizou-se a MDA100CB[17], Sensor

Board da Crossbow Technology, Inc., que disponibiliza todos os pinos de acesso ao mi-crocontrolador AVR ATMEGA128L[24] conforme ilustrado na Figura 4.16.

Figura 4.16: Sensor Board MDA100CB e Matriz de Prototipação.

A barra de 5 pinos ilustrada na Figura 4.17 e denominada MOTE, realiza interfaceentre o MICAz e a placa de medição de consumo. Cada pino e sua respectiva função podeser constatado correlacionando a Figura 4.16 com a barra de pinos ilustrada na Figura4.17. A matriz de interconexão está especificada na Tabela 4.7.

Tabela 4.7: Conector MOTE - Pinagem.

Linha Coluna Função10 A Alimentação do MICAz segundo esquema especifi-

cado na figura .9 C I2C - Serial Data.

Page 79: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

60

8 C I2C - Serial Clock4 F Interrupção externa INT0 do PIC18F2620. Quando

este pino vai para nível alto, o microcontrolador PICrealiza um “wakeup” do modo standby para o modoativo.

14 A GND - Terra

4.10 Captura de FrequênciaO PIC18F2620 possui o CCP, que é um periférico que pode ser utilizados para três

finalidades ilustrados na Tabela 4.8:

Tabela 4.8: Modos do CCP.

Modo FinalidadeCapture Mode Um par de registradores de 8 bits, CC-

PRXH e CCPRXL, capturam o valordo timer 1 ou timer 3 quando os even-tos (borda de subida ou descida) dosinal de entrada ocorrem.

Compare Mode O valor do registrador CCPRX é cons-tantemente comparado com timer 1ou timer 3. Quando este valor coin-cide com os registradores, pino CCPXdo PIC18F2620 poderá realizar as se-guintes ações: ir para nível alto, irpara nível baixo ou alternar o nível ló-gico.

PWM Mode O pino CCPX do PIC18F2620 produzum pulso de 10 bits de resolução.

No projeto da placa de medição utilizou-se o Modo de Captura, cujo diagrama deblocos está ilustrado na Figura 4.18.

No diagrama de blocos da Figura 4.18, nos pinos CCP1 ou CCP2, estão presentes umsinal quadrado que dispara a flag CCP1IF ou CCP2IF na borda de subida ou de descida.O modo de disparo, preescaler e a associação do timer 1 ou timer 3 ao respectivo móduloCCP é configurado através de registradores específicos do PIC18F2620.

O timer fica contando e esperando que um evento (“trigguer”) ocorra. Quando istoacontece, a “flag” CCPXIF irá para nível alto e o conteúdo do timer é transferido para oregistrador CCPXRH e CCPXRL que forma um número inteiro de 16 bits correspondenteao período da forma de onda de entrada.

Page 80: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

61

Figura 4.17: Barra de Pinos para Interconexão Mote x Placa de Medição.

Figura 4.18: Diagrama de Blocos do Modo de Captura.

4.11 Máquinas de EstadosEsta seção abordará as três máquinas de estados principais do sistema da Placa de

Medição. A primeira, Figura 4.19, corresponde ao software embarcado instalado noPIC18F2620, a segunda, Figura 4.20 ,ilustra o funcionamento do periférico CCP (capturade freqüência) e a terceira, Figura 4.21, ilustrará o funcionamento do sistema embarcadodo MICAz que é responsável por manter a comunicação e pelas solicitações da potênciainstantânea através do barramento I2C.

Figura 4.19: Máquina de Estados do PIC18F2620.

A figura 4.19 ilustra a máquina de estados do PIC18F2620. O Estado inicial corres-

Page 81: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

62

ponde à inicialização do dispositivo. Momento em que aplica-se um sinal DC e o disposi-tivo realiza a ação initPIC() que desempenha as configurações dos periféricos, ajuste dostimers, definições de I/O e põe o dispositivo no modo sleep. No estado 1, o dispositivopermanece no modo sleep até que o MICAz aplique um nível alto no pino INT0, que põeo microcontrolador no modo ativo. O estado 2 aguarda uma solicitação de medição doconsumo do MICAz através do barramento I2C. A transição do estado 2 para o estado3 ocorre quando acontece o evento RxI2C e o dispositivo captura a freqüência nos pinosde tensão e corrente indo para o estado 3. Na transição do estado 3 para o estado 1, odispositivo envia para o MICAz o valor da potência instantânea e retorna para o modo deoperação sleep.

Figura 4.20: Máquina de Estados do CCP.

A figura 4.20 ilustra a máquina de estados do CCP. O estado inicial correspondeao momento em que o dispositivo foi alimentado por uma fonte DC e executa a açãoconfigCCP() que atribui valores a registradores, configura timers e o modo de captura. Oestado 1 permanece aguardando uma borda de subida do sinal quadrado na entrada do pinode captura e, quando isto acontece, o evento CCPIF sinaliza para o periférico armazenarnos registradores os valores de tensão e corrente através da ação storeCCPRX(). Emseguida, ocorre a transição do estado 2 para o estado 1 que é acompanhada do eventoclearCCPIF e a ação resetTimer(), cuja função é zerar o timer de captura e apagar a flagde interrupção.

Figura 4.21: Máquina de Estados do MICAz.

A figura 4.21 ilustra a máquina de estados do MICAz. O estado inicial corresponde aomomento em que a chave foi colocada no estado ON pelo usuário. O evento Boot é dispa-rado e ocorre a transição do estado inicial para o estado 1. Na transição do estado 1 para

Page 82: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

63

o estado 2, é disparado o evento booted e ocorre a ação radioON(), cuja função é ligar orádio. O estado 2 aguarda a resposta da ação radioON() e, se houver uma falha no rádio,o evento radioFail é disparado resultando na transição do estado 2 para o estado 1. Esteprocesso se repete até que o rádio esteja em condições de operação, o que resulta na tran-sição do estado 2 para o estado 3 através da ação configNode(), cuja função é configurar obarramento I2C, os temporizadores e os pinos de I/O do MICAz. O evento configNodeOké disparado após a execução da ação configNode() resultando na transição do estado 3para o estado 4. O estado 4 fica aguardando o overflow do timer e, quando isto acontece,o evento timerFired é disparado e o MICAz executa a ação reqI2CPower(), cuja funçãoé solicitar à placa de medição uma amostra de potência instantânea naquele momento. Oestado 5 aguarda uma resposta da placa de medição (waitI2CPower). Quando o MICAzrecebe as amostras de tensão e corrente solicitadas, o evento I2CPowerRx é disparado e aação TxPower() envia, através do rádio, os valores de tensão e corrente obtidos retornandopara o estado 4.

Page 83: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

64

4.12 Validação da ArquiteturaTodos os instrumentos de medição necessitam de um parâmetro de avaliação. Uma

avaliação paramétrica fornece os requisitos suficientes para verificar a exatidão e a preci-são do instrumento de medida.

A placa de medição utiliza dois canais de captura: um para tensão e outro para cor-rente.

Para validação da arquitetura utilizou-se os seguintes equipamentos:

1. Multímetro Minipa Modelo ET1400[13];

2. Osciloscópio Analógico Modelo:MO-1225[14];

3. Uma fonte chaveada de PC de 450W;

4. Protoboard de 840 pontos.

5. Potenciômetro de 470Ω;

6. Potenciômetro de 5kΩ;

7. Capacitor eletrolítico 0.47µF ;

8. Capacitor eletrolítico 1µF ;

9. Regulador de Tensão variável LM317T[16].

4.12.1 Validação da TensãoPara validação da tensão utilizou-se um regulador de tensão variável LM317 utili-

zando o circuito proposto de aplicação típica ilustrado na Figura 4.22.

Figura 4.22: Diagrama de Blocos do Modo de Captura.

Efetuou-se medidas discretas de forma a variar a tensão no intervalo de 3.00 Volts até olimiar de 2.00 Volts. O escopo de tensão foi restrito porque se a bateria indicar uma tensãoabaixo 2.10 Volts o nodo não funciona e sua bateria está totalmente descarregada. Umasubstituição das baterias é necessária. Logo, não há necessidade de verificar intervalomaior que o especificado na Tabela 4.23.

Page 84: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

65

Figura 4.23: Tabela de Variação de tensão em função de Multímetro e Osciloscópio.

Conforme podemos observar as colunas na Tabela 4.23, da esquerda para direita, te-mos:

Coluna 1 Número sequencial da medida efetuada;

Coluna 2 Valor da tensão no multímetro;

Coluna 3 Ciclos de clock da captura. Cada ciclo de clock corresponde a 200nS;

Coluna 4 Frequência capturada ( 1Ciclos de clock da captura×200E−9 );

Coluna 5 Tensão capturada. Frequência capturada×10×100E3×1E−9;

Coluna 6 Desvio. Diferença entre a tensão capturada e a tensão no multímetro;

Coluna 7 Valor corrigido. Diferença entre a tensão capturada e a média dos desvios -(0.07).

Coluna 8 Erro Relativo Percentual. (Valor corrigido−Valor da tensão no multímetroValor corrigido ×100).

O valor da coluna 7 da Tabela 4.23 foi obtido através da Equação 4.8:

Valor corrigido = Tensão capturada−Desvio Médio (4.8)

O erro percentual médio foi de 0.2%. O instrumento, com apenas um ajuste, mostrouuma notável exatidão com relação aos dispositivos de medidas paramétricas utilizados. Aprecisão alcançada pelo instrumento foi de ±0.7 Volts.

A Figura 4.24 expõe a relação entre a tensão no multímetro e a tensão capturada pelaplaca de medição. O valor capturado sempre é maior que o valor medido pelo equipa-mento de instrumentação. Isto se dá devido a um leve desbalanceamento do resistor detemporização (Rt) do conversor V/F. Apenas subtraindo a tensão capturada pela médiados desvios (0.07) temos um resultado aceitável e realista.

Page 85: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

66

Figura 4.24: Relação entre a tensão no multímetro e a tensão capturada.

4.12.2 Validação da CorrentePara validação da corrente utilizou-se regulador de tensão variável LM317 com a

mesma configuração proposta na Figura 4.22.Efetuou-se as medidas variando a corrente no intervalo de 1.56mA até 30.60mA. Ob-

temos os dados registrados na Tabela 4.25.

Figura 4.25: Relação entre a corrente no multímetro e a corrente capturada.

Conforme podemos observar as colunas na Tabela 4.25, da esquerda para direita, te-mos:

Coluna 1 Número sequencial da medida efetuada;

Coluna 2 Valor da corrente no multímetro;

Coluna 3 Ciclos de clock da captura. Cada ciclo de clock corresponde a 200nS;

Coluna 4 Frequência capturada ( 1Ciclos de clock da captura×200E−9 );

Page 86: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

67

Coluna 5 Corrente capturada. (Frequência capturada×10×100E3×1E−950 ×1000);

Coluna 6 Desvio. Diferença entre a corrente capturada e a corrente no multímetro;

Coluna 7 Valor corrigido. Produto da corrente capturada e a média dos desvios - (0.94).

Coluna 8 Erro Relativo Percentual. (Valor corrigido−Valor da corrente no multímetroValor corrigido ×100).

Na coluna 7 da Tabela 4.25, o valor 50 corresponde ao ganho do amplificador decorrente. A corrente capturada é multiplicada pelo fator 1000 somente para ser ilustradaem unidades de mA.

O erro percentual médio foi de 0.89%. O instrumento novamente mostrou-se exce-lente exatidão com relação aos dispositivos de medidas paramétricas utilizados. A preci-são alcançada para medições de corrente foi de ±0.94 mA.

A gráfico ilustrado na Figura 4.26 ilustra a relação entre a corrente no amperímetro ea corrente capturada pela placa de medição.

Figura 4.26: Relação entre a corrente no multímetro e a corrente capturada.

A corrente capturada é sempre maior. Há um comportamento linear observado nacaptura da corrente, e esta linearidade converge para o valor real à medida que a correntese aproxima do limiar de “offset” do amplificador de corrente - 1mA.

Page 87: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

68

4.13 Esquemático da Placa de Medição

Figura 4.27: Diagrama Esquemático da Placa de Medição.

Page 88: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

69

4.14 Placa de Circuito Impresso

Figura 4.28: Placa de Circuito Impressso - PCB.

Page 89: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

70

4.15 ConclusãoO circuito da placa de medição foi projetado de maneira que proporcione flexibilidade

suficiente para atender os requisitos para aferição do consumo do MICAz, mas tambémpara ser estendido na execução de aferições em outros nós de RSSF, tais como:

• Btnode3

• EyesIFX

• IntelMote2

• Mica2

• Mica2dot

• Telosa e Telosb

A faixa dinâmica foi ampliada através do uso de conversores V/F. Utilizou-se umamplificador de instrumentação com largura de faixa de 250KHz e um microcontroladorcapaz de capturar eficientemente o consumo do dispositivo, possibilitando análises delongos e curtos períodos.

O Capítulo 5, aborda sobre a organização, planejamento integração e obtenção dosresultados obtidos nas medições de consumo.

A Figura 4.29 é uma foto do “hardware” de medição desenvolvido acoplado ao MI-CAz.

Figura 4.29: Foto da Placa de Medição.

Page 90: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Capítulo 5

Resultados

5.1 IntroduçãoEste capítulo é dedicado à organização, planejamento, integração e obtenção dos re-

sultados obtidos nos testes de campo com a placa de medição.Foram analisados 3 experimentos sendo 2 em função dos protocolos de roteamento

Collection[20] e Tymo[7, 19, 58] e 1 consistindo de uma rede com apenas um nó envi-ando informações de consumo diretamente (1 salto) para a base-station. Os protocolosutilizados[20, 7, 19, 58] são oficialmente incluídos na distribuição do TinyOS 2.x[4, 40].Não foram utilizados protocolos de terceiros que não fazem parte da árvore oficial de dis-tribuição do TinyOS. O fluxograma de obtenção das medidas de consumo está ilustradoatravés da Figura 5.1.

Figura 5.1: Fluxograma de obtenção de medidas de consumo.

A primeira fase consiste na distribuição linear dos nós da RSSF. A segunda etapa com-preende a aquisição dos dados originados dos nós através do software TinyOS Terminalque foi desenvolvido exclusivamente para este propósito e será apresentado na Seção 5.3.Na terceira fase os dados coletados são formatados para visualização final em planilha

Page 91: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

72

de cálculo e a quarta e última etapa compreende a observação dos resultados obtidos nasmedidas.

5.2 Cenário ExperimentalPara análise dos protocolos de roteamento foi definido um cenário padrão para os tes-

tes que consiste de 4 nós, sendo 1 gateway e três nós distribuídos linearmente de formaque o raio de alcance do rádio de cada nó coincida com a interseção do alcance do próximonó (Figura 5.2). Como cada nó está ao alcance de seu adjacente, quando um necessita en-viar um pacote, os nós vizinhos desempenham encaminhamento necessário da mensagempara que a mensagem seja encaminhada ao destino final (base-station).

Figura 5.2: Cenário Experimental com detalhes para o raio de alcance de cada nó e rotasde comunicação.

A configuração adotada nos testes está também ilustrada através da Figura 5.3, ondepodemos vizualizar não só o nó de número 36 que corresponde ao gateway como tambémos nós 1,2 e 3 responsáveis pelo sensoriamento e envio das informações para o nó 36.

Figura 5.3: Cenário Experimental para Teste dos Protocolos de Roteamento

A finalidade de cada um dos itens especificado nas Figuras 5.2 e 5.3 são os seguintes:

1. Os nós 1,2 e 3 são responsáveis pelo sensoriamento da RSSF;

2. O nó 36 é a base-station, gateway ou node-sink;

3. As setas são apenas ilustrações das rotas disponíveis;

Page 92: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

73

4. O nó 36 está conectado a uma placa de interface denominada MPR2400CB[25, 57]ou MIB;

5. A rota mais curta para que um pacote cuja origem é o nó 3 e o destino o nó 36 é:3⇒ 2⇒ 1⇒ 36;

6. Os nodos foram distribuídos linearmente com distância fixa de 3 metros.

Os nós responsáveis pelo sensoriamento enviam a informação de consumo a cada 3segundos. A potência do rádio foi ajustada em -5dBm, que corresponde a uma correntede 13.9mA.

Page 93: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

74

5.3 TinyOS TerminalO TinyOS Terminal foi desenvolvido com o propósito de agregar as informações

provenientes da RSSF, mostrando os dados recebidos em tempo real. A Figura 5.4 ilustraum “screenshot” do software.

Figura 5.4: Software TinyOS Terminal

A primeira coluna (“Packet”) ilustra o número sequencial do pacote recebido, a se-gunda (“Payload”) corresponde aos dados recebidos e a terceira corresponde ao Cyclicredundancy check (CRC)1.

O painel inferior tem a finalidade de escolher a porta serial, selecionar parâmetros dacomunicação serial, modificar a forma com que os dados são disponibilizados (hexadeci-mal ou texto pleno) e uma opção de escrever ou não em um arquivo de “log”.

O código fonte desse do TinyOS Terminal está disponível no Apêndice III deste do-cumento.

5.4 Experimento - Nó IndividualA Figura 5.5 ilustra uma amostra dos primeiros 10 valores obtidos no experimento

prático:O gráfico ilustrado na Figura 5.6 ilustra a relação entre a Corrente e o tempo.O código fonte desse experimento prático está disponível no Apêndice I deste docu-

mento.

1Verificação de redundância cíclica. É um código detector de erros, um tipo de função hash que geraum valor expresso em poucos bits em função de um bloco maior de dados de forma a detectar erros detransmissão.

Page 94: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

75

Figura 5.5: Dados de apenas um nó Individual

Figura 5.6: Nó Individual - Gráfico. Relação entre a Corrente e o tempo

5.5 Experimento - Protocolo CollectionAs Figuras 5.7,5.8 e 5.9 ilustram uma amostra dos primeiros 10 valores obtidos no

experimento prático:

Figura 5.7: Protocolo Collection Dados do Nó 1

O Gráfico 5.10 ilustra a relação entre a potência e o tempo dos 3 nós através de 3séries.

O código fonte desse experimento pratico está disponível no Apêndice II deste docu-mento.

Page 95: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

76

Figura 5.8: Protocolo Collection Dados do Nó 2

Figura 5.9: Protocolo Collection Dados do Nó 3

Figura 5.10: Protocolo Collection Gráfico. Relação entre a potência e o tempo dos 3 nós

5.6 Experimento - Protocolo TymoAs Figuras 5.11,5.12 e 5.13 ilustram uma amostra dos primeiros 10 valores obtidos

no experimento prático:O Gráfico 5.14 ilustra a relação entre a potência e o tempo dos 3 nós através de 3

séries.O código fonte desse experimento pratico está disponível no Apêndice V deste docu-

mento.

Page 96: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

77

Figura 5.11: Protocolo Tymo Dados do Nó 1

Figura 5.12: Protocolo Tymo Dados do Nó 2

Figura 5.13: Protocolo Tymo Dados do Nó 3

Figura 5.14: Protocolo Tymo Gráfico. Relação entre a potência e o tempo dos 3 nós

Page 97: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

78

5.7 ConclusãoAnalisando o experimento da Seção 5.4, verificou-se que o consumo do rádio fica em

torno de 13.9mA, conforme o “datasheet” do CC2420[31] e o nível de potência escolhidade -5dBm. Este experimento foi realizado somente para verificação do consumo de umnó individual onde não há recepção mas sim transmissão de pacotes e também não foiimplementado um protocolo de roteamento.

Ao observar o consumo nos experimentos realizados com os protocolos de roteamentoatravés das Seções 5.5 e 5.6, notou-se um aumento considerável no consumo. Este au-mento do consumo se deve a três fatores:

1. O software embarcado instalado para descoberta e manutenção de rotas;

2. A recepção e transmissão de pacotes;

3. Transmissão e Recepção de pacotes de controle do protocolo de roteamento.

O protocolo Tymo[7, 19, 58] perdeu 10 pacotes no momento que o nó 3 foi ligado.Este fator é de bastante importância uma vez que, no momento que o nó começa a fazerparte da rede, há normalmente um período de latência para o estabelecimento das rotas.Este período depende da implementação do protocolo de roteamento e pode ser longo oucurto e também é intrínseco a diversos fatores tais como: distância, alcance, distribuiçãodos nós, densidade da rede e potência do rádio.

O protocolo Collection [20] apresentou boa estabilidade no consumo, transmissão erecepção de pacotes e manutenção das rotas. Este protocolo, de acordo com a TEP119[20],é baseado no módulo LinkEstimatorP[4, 40], o qual vincula a transmissão e recepçãodos pacotes através da qualidade do “link” dos nós vizinhos. Por isso que tanto o nó 2quanto o nó 3 apresentam um número de saltos menor no início do experimento e logodepois a rota mais coerente é estabelecida (Figuras 5.8 e 5.9).

Observa-se um consumo maior entre os nós 1 e 2 nos respectivos experimentos dasSeções 5.5 e 5.6. Este consumo adicional se deve à recepção, transmissão e interceptaçãodos pacotes que os referidos protocolos desempenham.

O protocolo Tymo, apesar da latência ocasionando a perda dos pacotes no início doexperimento, apresentou uma potência média menor e portanto minimizando o consumode energia do nodo de RSSF. Sob o ponto de vista de eficiência energética e levando emconsideração a simplicidade do experimento prático adotado, observou-se que o Tymo semostrou mais econômico no consumo de energia.

O código fonte desse experimento pratico está disponível nos Apêndice I,II e IV destedocumento.

Page 98: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Capítulo 6

Considerações Finais

6.1 ConclusãoO dispositivo de medição proposto neste documento atendeu aos requisitos para efe-

tuar medições do consumo de energia em RSSF. Estabilidade, simplicidade, baixo custoe fácil integração são algumas de suas características.

O esquema de sensoriamento de corrente possuem uma banda de 250Khz. Isto é muitomais do que os 40Khz citados por JIANG et al..

Utilizou-se um dispositivo eletrônico analógico para converter amostras de tensão ecobrir a faixa dinâmica típica dos motes.

O microcontrolador utilizado opera com um relógio 3 vezes mais rápido que o motealém de possuir um periférico integrado para medir frequências, o CCP. Isto facilitoubastante a captura do trem de pulsos fornecido pelo conversor V/F utilizado.

As ferramentas de “debugger” fornecidas pelo TinyOS trabalham em modo texto(console), não são nada intuitivas e sempre possuem caráter específico e limitado de cadaaplicação. O TinyOS terminal, com sua interface gráfica e intuitiva, é um projeto inédito,foi projetado com o propósito geral de agregar as informações provenientes da RSSFe comunicar-se com com a base-station. Através desse aplicativo é possível coletar osdados que chegam da rede e comunicar-se efetivamente com qualquer dispositivo quefaça parte da árvore de distribuição nodal da WSN. Este aplicativo ainda encontra-se emfase de desenvolvimento.

O mecanismo de medição do consumo foi desenvolvido com flexibilidade suficientepara ser extendido a outras plataformas tais como:

• Telefones celulares;

• PDA´s;

• “Laptops”;

• Outras plataformas de RSSF.

Os protocolos de roteamento analisados fazem parte da distribuição oficial do TinyOS[4]e são considerados hoje “estado do conhecimento”. A análise individual dos protocolosde roteamento foi desempenhada considerando o consumo de energia, descoberta e ma-nutenção das rotas e a latência. Isto possibilita uma escolha correta do protocolo deroteamento em função do tipo de aplicação para RSSF.

Page 99: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

80

Finalmente, este trabalho somou esforços no projeto de um “hardware” de mediçãocom a finalidade de aferir o consumo em WSN e avaliou conjuntamente os principaisprotocolos de roteamento existentes. Isto viabilizou uma contribuição tanto para a comu-nidade científica quanto para a ciência.

6.2 Trabalhos FuturosA placa de medição pode ser extendida a outras plataformas. Portanto, há uma la-

cuna a ser preenchida porque diferentes plataformas apresentam consumos de energiadivergentes. São dispositivos com características e componentes eletrônicos diferentes doMICAz. Também devem ser avaliados quanto ao consumo de energia e a aplicação deroteamento.

Segundo JIANG et al. e TRATHNIGG; WEISS, simuladores como o PowerTOSSIM[54],AEON[38] e AVRORA[59] possuem um modelo de estimativa de consumo limitado. Fa-tores importantes no consumo de um nodo são por eles negligenciados além das gene-ralizações com as diferentes plataformas. O hardware de medição desenvolvido nestetrabalho pode ser utilizado para aperfeiçoar esses modelos de simulações, tornando assimos seus resultados o mais próximo possível da realidade.

Novos protocolos de roteamento podem ser avaliados. O hardware de medição podeser utilizado para avaliações mais longas, criteriosas e eficientes.

Page 100: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

81

Referências

[1] AMERICA, K. Kokam 603870H. Último acesso em 23/04/2009, http://www.kokamamerica.com/ka/rc.aspx.

[2] ANALOG DEVICES, I. AD654- Datasheet. Último acesso em 29/05/2009,http://www.analog.com/static/imported-files/data_sheets/AD654.pdf.

[3] BARRETT, S. F.; PACK, D. Atmel AVR Microcontroller Primer: programmingand interfacing (synthesis lectures on digital circuits and systems). [S.l.]: Morgan &Claypool Publishers, 2002.

[4] BERKELEY, U. TinyOS Community Forum. [Online; acessado em 18/08/2009],http://www.tinyos.net/.

[5] BORGES, L.; CARVALHO, L.; CRUZ, D. Sistemas Operacionais para Redes deSensores. 2008.

[6] BREWER, E.; CULLER, D.; GAY, D.; LEVIS, P.; BEHREN, R. von; WELSH, M.nesC: a programming language for deeply networked systems. [Online; acessado em09/09/2009], http://nescc.sourceforge.net/.

[7] CHAKERES, I.; PERKINS, C. Dynamic MANET On-demand DYMO rou-ting. [Online; acessado em 11/10/2009], http://tools.ietf.org/html/draft-ietf-manet-dymo-04.

[8] COLORADO, U. of. MANTIS project Site. [Online; acessado em 10/10/2010],http://mantis.cs.colorado.edu/index.php/tiki-index.php.

[9] COMPANY, M. P. Molex Connectors, Interconnects and Cable Assemblies. [On-line; acessado em 12/01/2010], http://www.molex.com.

[10] COMPANY, P. I. Alkaline Battery Specification. [S.l.: s.n.], 2005. [Online; aces-sado em 03/09/2009].

[11] COMPUTER, C. Eagle Layout Editor. [S.l.: s.n.], 2009. [Online; acessado em19/12/2009].

[12] COMPUTER SCIENCE (SICS), S. I. of. The Contiki Operating System Site. [On-line; acessado em 10/10/2010], http://www.tinyos.net/.

[13] COMéRCIO, M. I. e. Multímetro Digital Modelo:et-1400. último acesso em01/02/2010, http://www.minipa.com.br/Produtos/DetailsProduct.aspx?id=184.

Page 101: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

82

[14] COMéRCIO, M. I. e. Osciloscópio Analógico Modelo:mo-1225. último acesso em01/02/2010, http://www.minipa.com.br/produtos/DetailsProduct.aspx?id=154.

[15] CORPORATION, A. 4-megabit 2.5-volt or 2.7-volt DataFlash. [S.l.: s.n.], 2008.[Online; acessado em 13/01/2010].

[16] CORPORATION, N. S. 3-Terminal Adjustable Regulator. último acessoem 01/02/2010, http://www.national.com/mpf/LM/LM317.html#Overview.

[17] CROSSBOW TECHNOLOGY, I. MTS/MDA Sensor Board Users Manual. Úl-timo acesso em 21/12/2009, http://www.xbow.com/Support/Support_pdf_files/MTS-MDA_Series_Users_Manual.pdf.

[18] DAWSON-HAGGERTY, S.; GNAWALI, O.; GAY, D.; LEVIS, P.; MUSALOIU-E., R.; KLUES, K.; REGEHR, J. TinyOS 2.1. [Online; acessado em 09/09/2009],http://docs.tinyos.net/index.php/Ipsn2009-tutorial.

[19] FERNANDES, N. C. Resumo: dynamic manet on-demand routing protocol -dymo.Programa de Engenharia Elétrica (PEE) - UFRJ, [S.l.], 2008. [Online; acessado em11/10/2009].

[20] FONSECA, R.; GNAWALI, O.; JAMIESON, K.; LEVIS, P. TEP119 - Collection.[Online; acessado em 01/10/2009], http://www.tinyos.net/tinyos-2.1.0/doc/html/tep119.html.

[21] GINATTO, A. L. Otimização do tempo de vida em redes de sensores sem fio uti-lizando algoritmo de energia e protocolo difusão direcionada. [S.l.]: Universidadede São Paulo, Escola de Engenharia de São Carlos, São Carlos, SP, 2008.

[22] GROUP, H. E. Electrical and Electronic Connectors - Hirose Electric. [Online;acessado em 09/09/2009], http://www.hirose.com/.

[23] IBRAHIM, D. Advanced PIC Microcontroller Projects in C - From USB toRTOS with the PIC18F Series. [S.l.]: Elsevier Ltd., 2008.

[24] INC., A. C. 8-bit AVR Microcontroller with 128K Bytes In-System Programma-ble Flash (Datasheet). [S.l.: s.n.], 2009. [Online; acessado em 03/09/2009].

[25] INC, C. T. MPR MIB Users Manual. [Online; acessado em 30/09/2009], http://www.xbow.com.

[26] INC., M. T. PIC18F2525/2620/4525/4620 Data Sheet. Último acesso em19/12/2009, http://ww1.microchip.com/downloads/en/DeviceDoc/39626e.pdf.

[27] INC., M. T. What is nanoWatt Technology? Último acesso em19/12/2009, http://ww1.microchip.com/downloads/en/Market_Communication/nanowatt1jan03.pdf.

[28] INCORPORATED, T. I. Getting Started with Current Sensing. [Online; acessadoem 16/11/2009], http://focus.ti.com/analog/docs/.

Page 102: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

83

[29] INCORPORATED, T. I. SmartRF Studio. último acesso em01/02/2010, http://focus.ti.com/docs/toolsw/folders/print/smartrftm-studio.html.

[30] INCORPORATED, T. I. SmartRF Protocol Packet Sniffer. último acessoem 01/02/2010, http://focus.ti.com/docs/toolsw/folders/print/packet-sniffer.html.

[31] INSTRUMENTS, T. 2.4 GHz IEEE 802.15.4 / ZigBee-ready RF Transceiver (Da-tasheet). [S.l.: s.n.], 2008. [Online; acessado em 03/09/2009].

[32] JIANG, X.; DUTTA, P.; CULLER, D.; STOICA, I. Micro Power Meter for EnergyMonitoring of Wireless Sensor Networks at Scale. The Sixth International Confe-rence on Information Processing in Sensor Networks (IPSN07) Track on SensorPlatforms, Tools, and Design Methods (SPOTS07), [S.l.], 2007.

[33] JúNIOR, A. P. Amplificadores Operacionais e Filtros Ativos - Teoria, Projetos,Aplicações e Laboratório. [S.l.]: Makron Books, 1996.

[34] KIM, S.; PAKZAD, S.; CULLER, D.; DEMMEL, J.; FENVES, G.; GLA-SER, S.; TURON, M. Structural Health Monitoring of the Golden GateBridge. Último acesso em 12/01/2010, http://www.eecs.berkeley.edu/~binetude/ggb/.

[35] KIM, S.; PAKZAD, S.; CULLER, D.; DEMMEL, J.; FENVES, G.; GLASER, S.;TURON, M. Health monitoring of civil infrastructures using wireless sensor networks.In: IPSN ’07: PROCEEDINGS OF THE 6TH INTERNATIONAL CONFERENCEON INFORMATION PROCESSING IN SENSOR NETWORKS, 2007, New York,NY, USA. Anais. . . ACM, 2007. p.254–263.

[36] KRAMER, M.; GERALDY, A. Energy Measurements for MicaZ Node. Universityof Kaiserslautern, Germany, [S.l.], 2006. Último acesso em 23/04/2009.

[37] LAB, H. S. N. Volcano Monitoring. Último acesso em 30/08/2009, http://fiji.eecs.harvard.edu/Volcano.

[38] LANDSIEDEL, O.; WEHRLE, K.; RIECHE, S.; GOETZ, S.; PETRAK, L. ProjetAEON. 4th GI/ITG KuVS Fachgespräch - Wireless Sensor Networks. ETH Zu-rich, [S.l.], 2005.

[39] LEES, J. M.; JOHNSON, J. B.; RUIZ, M.; TRONCOSO, L.; WELSH, M. Reventa-dor Volcano 2005: eruptive activity inferred from seismo-acoustic observation. 2007.

[40] LEVIS, P.; GAY, D. TinyOS Programming. 1.ed. [S.l.]: Cambridge UniversityPress, 2009.

[41] LI, Y.; THAI, M. T.; WU, W. Wireless Sensor Networks and Applications. [S.l.]:Springer Science+Business Media, LLC, 2008.

[42] LOUREIRO, A. A. F. Redes de Sensores Sem Fio. Último acesso em01/02/2010, http://www.ic.unicamp.br/~cmbm/desafios_SBC/loureiroredesensores.pdf.

Page 103: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

84

[43] LOUREIRO, A. A.; NOGUEIRA, J. M. S.; RUIZ, L. B.; FREITAS, R. A. de. Redesde Sensores Sem Fio. Último acesso em 31/08/2009, http://homepages.dcc.ufmg.br/~loureiro/cm/docs/sbrc03.pdf.

[44] LTD., F. T. D. I. FT2232C Dual USB UART/FIFO Integrated Circuit. [S.l.: s.n.],2005. [Online; acessado em 13/01/2010].

[45] MAXIM, D. S. 1-Cell to 2-Cell, Low-Noise, High-Efficiency, Step-Up DC-DCConverter. [S.l.: s.n.], 1998. [Online; acessado em 13/01/2010].

[46] MEHTA, A. Understand low-side vs. high-side current sensing. [On-line; acessado em 16/11/2009], http://www.analog-europe.com/howto/215801634.

[47] MORTON, J. AVR: an introductory course. [S.l.]: Newnes, 2002.

[48] PERKINS, C.; BELDING-ROYER, E.; DAS, S. Ad hoc On-Demand DistanceVector (AODV) Routing. 2003.

[49] PRODUCTS, M. I. High-Side Current-Sense Measurement: circuits and prin-ciples. [Online; acessado em 16/11/2009], http://pdfserv.maxim-ic.com/en/an/AN746.pdf.

[50] PRODUCTS, M. I. Low-Cost, UCSP/SOT23, Micropower, High-Side Current-Sense Amplifier with Voltage Output. [Online; acessado em 16/11/2009], http://datasheets.maxim-ic.com/en/ds/MAX4372-MAX4372T.pdf.

[51] REZENDE, J. F. de. Redes de Sensores sem Fio. Último acesso em 30/08/2009,http://www.gta.ufrj.br/~rezende/cursos/eel879/trabalhos/rssf1/.

[52] RUIZ, L. B.; CORREIA, L. H. A.; VIEIRA, L. F. M.; MACEDO, D. F. Arquitetu-ras para Redes de Sensores Sem Fio. [S.l.]: Departamento de Ciência da Computaçãoda UFMG, 2004.

[53] SEMICONDUCTORS., N. I2C-Bus: what’s that? [Online; acessado em09/09/2009], http://www.i2c-bus.org/.

[54] SHNAYDER, V.; HEMPSTEAD, M.; CHEN, B.; ALLEN, G. W.; WELSH, M. Si-mulating the Power Consumption of LargeScale Sensor Network Applications. úl-timo acesso em 20/04/2009, http://www.eecs.harvard.edu/~shnayder/papers/sensys04ptossim.pdf.

[55] SOHRABY, K.; MINOLI, D.; ZNATI, T. WIRELESS SENSOR NETWORKS:technology, protocols, and applications. [S.l.]: John Wiley and Sons, INC., Publication,2007.

[56] STMICROELECTRONICS. Very low drop voltage regulators with inhibit. Úl-timo acesso em 19/12/2009, http://www.st.com/stonline/products/literature/od/2573/le33ab.pdf.

[57] TECHNOLOGY, C. MICAz Datasheet. [Online; acessado em 02/09/2009].

Page 104: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

85

[58] THOUVENIN, R. Implementing and Evaluating the Dynamic Manet On-demand Protocol in Wireless Sensor Networks. 2007. Dissertação (Mestrado emCiência da Computação) — University of Aarhus, Dinamarca.

[59] TITZER, B. L.; LEE, D. K.; PALSBERG, J. Avrora: scalable sensor network si-mulation with precise timing. In: IPSN ’05: PROCEEDINGS OF THE 4TH IN-TERNATIONAL SYMPOSIUM ON INFORMATION PROCESSING IN SENSORNETWORKS, 2005, Piscataway, NJ, USA. Anais. . . IEEE Press, 2005. p.67.

[60] TOCCI, R. J. Digital systems: principles and applications. [S.l.]: Prentice Hall,1995.

[61] TRATHNIGG, T.; WEISS, R. A Runtime Energy Monitoring System for WirelessSensor Networks. In: INTERNATIONAL SYMPOSIUM ON WIRELESS PERVA-SIVE COMPUTING, 3., 2008, Santorini,Greece. Proceedings. . . IEEE, 2008. p.21–25.

[62] WERNER-ALLEN, G.; JOHNSON, J.; RUIZ, M.; LEES, J.; WELSH, M. Moni-toring Volcanic Eruptions with a Wireless Sensor Network. In: PROCEEDINGS OFTHE SECOND EUROPEAN WORKSHOP ON WIRELESS SENSOR NETWORKSEWSN 05, 2005. Anais. . . [S.l.: s.n.], 2005.

[63] WERNER-ALLEN, G.; LORINCZ, K.; JOHNSON, J.; LEES, J.; WELSH, M. Fide-lity and Yield in a Volcano Monitoring Sensor Network. In: FIDELITY AND YIELDIN A VOLCANO MONITORING SENSOR NETWORK OSDI 06, 2006. Anais. . .USENIX Association, 2006. p.381–396.

[64] WIKIPéDIA. Tacoma Narrows Bridge. Último acesso em 12/01/2010, http://pt.wikipedia.org/w/index.php?title=BibTeX&oldid=4879810.

Page 105: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Apêndice

I

Código fonte do Experimento - No Individual

Código 7 .1: Makefile1 # ##############################################2 # U n i v e r s i d a d e de Pernambuco − UPE3 # Depar t amen to de S i s t e m a s e Computacao − DSC4 # Programa de Academico em E n g e n h a r i a da Computacao5 # O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o6 # Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes7 # Aluno : F r e d e r i c o Cox8 # ##############################################9 # M a k e f i l e

10 # ##############################################11 # V a r i a v e i s de a m b i e n t e1213 COMPONENT=ShortTimeAppC1415 CFLAGS += −I$ ( TOSDIR ) / l i b / n e t / −I$ ( TOSDIR ) / l i b / n e t / c t p −I$ ( TOSDIR ) / l i b

/ n e t / 4 b i t l e161718 # ############################################19 # D e f i n i c o e s p a r a o r a d i o − Canal e P o t e n c i a20 # ############################################21 # PA_LEVEL [dBm] C u r r e n t Consumption [mA]22 # 31 0 1 7 . 423 # 27 −1 1 6 . 524 # 23 −3 1 5 . 225 # 19 −5 1 3 . 926 # 15 −7 1 2 . 527 # 11 −10 1 1 . 228 # 7 −15 9 . 929 # 3 −25 8 . 530 # ############################################31 PFLAGS += −DCC2420_DEF_RFPOWER=313233 # ############################################34 # IEEE 8 0 2 . 1 5 . 4 e s p e c i f i c a 16 c a n a i s35 # numerados de 11 a 2636 # ############################################37 PFLAGS += −DCC2420_DEF_CHANNEL=263839 # ############################################

Page 106: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

87

40 i f d e f APP_MAKERULES41 i n c l u d e $ (APP_MAKERULES)42 e l s e43 i n c l u d e $ (MAKERULES)44 e n d i f45 # ############################################

Código 7 .2: Global.h1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Departamento de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em Engenhar ia da Computacao6 ∗ O r i e n t a d o r : Pro f . Abe l Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : Pro f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de Energ ia em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /1718 # i f n d e f GLOBAL_H19 # d e f i n e GLOBAL_H2021 /∗22 ∗ Endereco do gateway , i d e n t i f i c a d o r23 ∗ de mensagem do r a d i o e I2C S l a v e24 ∗ /25 enum 26 RADIO_MSG_ID = 627 ;2829 /∗30 ∗ E s t r u t u r a da mensagem do r a d i o31 ∗ /32 t y p e d e f n x _ s t r u c t RadioMsg 33 n x _ u i n t 1 6 _ t c o n t a d o r ;34 RadioMsg_t ;3536 # e n d i f /∗ GLOBAL_H ∗ /

Código 7 .3: ShortTimeM.nc12 # i n c l u d e " G lo ba l . h "34 module ShortTimeM 5 uses 6 i n t e r f a c e Boot ;7 i n t e r f a c e Leds ;8 i n t e r f a c e Timer < TMi l l i > as F lashLed ;9 i n t e r f a c e P a c k e t ;

10 i n t e r f a c e AMSend as RadioTx ;

Page 107: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

88

11 i n t e r f a c e AMPacket ;12 i n t e r f a c e S p l i t C o n t r o l a s R a d i o C o n t r o l e ;13 i n t e r f a c e Rece ive as RadioRx ;14 15 16 implementat ion 17 message_ t p k t ;18 RadioMsg_t∗ r a d i o P o i n t e r ;19 u i n t 1 6 _ t c o n t a d o r = 0 ;2021 e v e n t void Boot . boo t e d ( ) 22 c a l l R a d i o C o n t r o l e . s t a r t ( ) ;23 2425 e v e n t void R a d i o C o n t r o l e . s t a r t D o n e ( e r r o r _ t e r r o r ) 26 i f ( e r r o r !=SUCCESS) 27 c a l l R a d i o C o n t r o l e . s t a r t ( ) ;28 e l s e 29 c a l l F la shLed . s t a r t P e r i o d i c ( 5 0 0 ) ;30 31 323334 e v e n t void R a d i o C o n t r o l e . s topDone ( e r r o r _ t e r r o r ) 3536 e v e n t void RadioTx . sendDone ( message_ t ∗msg , e r r o r _ t e r r o r ) 37 i f ( e r r o r ==SUCCESS) 38 c a l l Leds . led0On ( ) ;39 c a l l R a d i o C o n t r o l e . s t o p ( ) ;40 c a l l F la shLed . s t o p ( ) ;41 42 4344 e v e n t void FlashLed . f i r e d ( ) 45 r a d i o P o i n t e r = ( RadioMsg_t ∗ ) ( c a l l P a c k e t . g e t P a y l o a d (& pkt , NULL) ) ;46 r a d i o P o i n t e r −>c o n t a d o r = c o n t a d o r ;47 c a l l RadioTx . send (AM_BROADCAST_ADDR,& pkt , s i z e o f ( RadioMsg_t ) ) ;48 c o n t a d o r ++;49 / / c a l l Leds . l e d 2 T o g g l e ( ) ;50 5152 e v e n t message_ t ∗ RadioRx . r e c e i v e ( message_ t ∗msg , void ∗ pay load ,

u i n t 8 _ t tamanho ) 53 / / c a l l Leds . l e d 1 T o g g l e ( ) ;54 re turn msg ;55 56

Código 7 .4: ShortTimeAppC.nc12 # i n c l u d e " G lo ba l . h "34 c o n f i g u r a t i o n ShortTimeAppC 56 implementat ion 7 components MainC , ShortTimeM , LedsC , Act iveMessageC ;8 components new TimerMi l l iC ( ) a s F la shLed ;

Page 108: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

89

9 components new AMSenderC ( RADIO_MSG_ID ) ;10 components new AMReceiverC ( RADIO_MSG_ID ) ;1112 ShortTimeM . Boot−>MainC . Boot ;13 ShortTimeM . Leds−>LedsC ;1415 ShortTimeM . FlashLed−>FlashLed ;1617 /∗18 ∗ Wir ing do Radio19 ∗ /20 ShortTimeM . R a d i o C o n t r o l e−>Act iveMessageC ;21 ShortTimeM . Packe t−>AMSenderC ;22 ShortTimeM . RadioTx−>AMSenderC ;23 ShortTimeM . AMPacket−>AMSenderC ;24 ShortTimeM . RadioRx−>AMReceiverC ;2526

Page 109: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Apêndice

II

Código fonte do Experimento - Collection

Código 8 .1: Makefile1 #

#############################################################################

2 # U n i v e r s i d a d e de Pernambuco − UPE3 # Depar t amen to de S i s t e m a s e Computacao − DSC4 # Programa de Academico em E n g e n h a r i a da Computacao5 # O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o6 # Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes7 # Aluno : F r e d e r i c o Cox8 #

#############################################################################

9 # M a k e f i l e10 #

#############################################################################

11 #12 # $Author : Fred Cox $13 # $Rev : 70 $14 # $Date : 2008−12−19 1 6 : 2 0 : 5 1 −0200 ( Sex , 19 Dez 2008) $15 # $Id : T inyOS_Plug in_Makef i l e 70 2008−12−19 1 8 : 2 0 : 5 1 Z Fred Cox $16 #17 #

#############################################################################

18 # V a r i a v e i s de a m b i e n t e1920 COMPONENT=BaseAppC2122 CFLAGS += −I$ ( TOSDIR ) / l i b / n e t / −I$ ( TOSDIR ) / l i b / n e t / c t p −I$ ( TOSDIR ) / l i b

/ n e t / 4 b i t l e232425 # ############################################26 # D e f i n i c o e s p a r a o r a d i o − Canal e P o t e n c i a27 # ############################################28 # PA_LEVEL [dBm] C u r r e n t Consumption [mA]29 # 31 0 1 7 . 430 # 27 −1 1 6 . 531 # 23 −3 1 5 . 2

Page 110: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

91

32 # 19 −5 1 3 . 933 # 15 −7 1 2 . 534 # 11 −10 1 1 . 235 # 7 −15 9 . 936 # 3 −25 8 . 537 # ############################################38 PFLAGS += −DCC2420_DEF_RFPOWER=193940 # ############################################41 # IEEE 8 0 2 . 1 5 . 4 e s p e c i f i c a 16 c a n a i s42 # numerados de 11 a 2643 # ############################################44 PFLAGS += −DCC2420_DEF_CHANNEL=264546 # ############################################47 # I n c l u e a b i b l i o t e c a p r i n t f NOVA48 CFLAGS += −I$ ( TOSDIR ) / l i b / p r i n t f / 2 _0_249 # ############################################50 #Aumenta o p a y l o a d do p r i n t f51 # ############################################52 CFLAGS +=−DTOSH_DATA_LENGTH=805354 # ############################################55 # I n c l u e S u p o r t e a p l a c a MDA10056 CFLAGS += −I$ ( TOSDIR ) / s e n s o r b o a r d s / mda100 /57 CFLAGS += −I$ ( TOSDIR ) / s e n s o r b o a r d s / mda100 / cb58 # ############################################59 i f d e f APP_MAKERULES60 i n c l u d e $ (APP_MAKERULES)61 e l s e62 i n c l u d e $ (MAKERULES)63 e n d i f64 # ############################################

Código 8 .2: Global.h1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Departamento de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em Engenhar ia da Computacao6 ∗ O r i e n t a d o r : Pro f . Abe l Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : Pro f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de Energ ia em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /1718 # i f n d e f GLOBAL_H19 # d e f i n e GLOBAL_H2021 /∗22 ∗ E s t r u t u r a da mensagem do r a d i o

Page 111: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

92

23 ∗ /24 t y p e d e f n x _ s t r u c t RadioMsg 25 n x _ u i n t 1 6 _ t or igem ;26 n x _ u i n t 1 6 _ t p e r d a s ;27 n x _ u i n t 1 6 _ t s a l t o s ;28 n x _ u i n t 1 6 _ t temp ;29 n x _ u i n t 1 6 _ t f o t o ;30 n x _ u i n t 8 _ t p o t e n c i a [ 1 6 ] ;31 n x _ u i n t 1 6 _ t c o n t a d o r ;32 RadioMsg_t ;3334 # e n d i f /∗ GLOBAL_H ∗ /

Código 8 .3: BaseC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Departamento de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em Engenhar ia da Computacao6 ∗ O r i e n t a d o r : Pro f . Abe l Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : Pro f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de Energ ia em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /1718 # i n c l u d e " G lo ba l . h "19 # i n c l u d e " p r i n t f . h "2021 module BaseC22 uses 23 i n t e r f a c e Boot ;24 i n t e r f a c e Leds ;25 i n t e r f a c e S p l i t C o n t r o l a s P r i n t f C o n t r o l ;26 i n t e r f a c e P r i n t f F l u s h ;2728 i n t e r f a c e Timer < TMi l l i > as F lashLed ;2930 i n t e r f a c e S p l i t C o n t r o l a s R a d i o C o n t r o l ;31 i n t e r f a c e S t d C o n t r o l a s C o l l e c t i o n C o n t r o l ;32 i n t e r f a c e R o o t C o n t r o l ;33 i n t e r f a c e Rece ive ;34 i n t e r f a c e C o l l e c t i o n P a c k e t ;35 36 37 implementat ion 3839 unsigned char b u f f e r [ 1 6 ] ;40 message_ t s n d B u f f e r ;41 RadioMsg_t∗ r a d i o P o i n t e r ;4243 e v e n t void Boot . boo t e d ( )

Page 112: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

93

44 c a l l R a d i o C o n t r o l . s t a r t ( ) ;45 4647 e v e n t void R a d i o C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 48 i f ( e r r o r !=SUCCESS) 49 c a l l R a d i o C o n t r o l . s t a r t ( ) ;50 e l s e 51 c a l l C o l l e c t i o n C o n t r o l . s t a r t ( ) ;52 c a l l R o o t C o n t r o l . s e t R o o t ( ) ;53 c a l l F la shLed . s t a r t P e r i o d i c ( 5 0 0 ) ;54 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;55 56 575859 e v e n t message_ t ∗ Rece ive . r e c e i v e ( message_ t ∗msg , void ∗ pay load ,

u i n t 8 _ t l e n ) 60 RadioMsg_t∗ RadioMsg = ( RadioMsg_t ∗ ) p a y l o a d ;61 RadioMsg−> s a l t o s ++;62 memcpy ( b u f f e r ,&RadioMsg−>p o t e n c i a [ 2 ] , ( s i z e o f ( b u f f e r )−2) ) ;63 p r i n t f ( "%u;%u;%u;%u;%u;%u;% s \ r \ n " ,64 RadioMsg−>origem ,65 RadioMsg−> s a l t o s ,66 RadioMsg−>pe rdas ,67 RadioMsg−>temp ,68 RadioMsg−>f o t o ,69 RadioMsg−>c o n t a d o r ,70 b u f f e r71 ) ;72 c a l l P r i n t f F l u s h . f l u s h ( ) ;73 re turn msg ;74 75 e v e n t void R a d i o C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 767778 e v e n t void FlashLed . f i r e d ( ) 79 c a l l Leds . l e d 2 T o g g l e ( ) ;80 818283 e v e n t void P r i n t f C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 8485 8687 e v e n t void P r i n t f C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 88 i f ( e r r o r !=SUCCESS) 89 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;90 e l s e 91 p r i n t f ( " S e r v i c o s ok . . . \ r \ n " ) ;92 c a l l P r i n t f F l u s h . f l u s h ( ) ;93 94 9596 e v e n t void P r i n t f F l u s h . f l u shDone ( e r r o r _ t e r r o r ) 9798 99

Page 113: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

94

Código 8 .4: NodeAppC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Departamento de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em Engenhar ia da Computacao6 ∗ O r i e n t a d o r : Pro f . Abe l Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : Pro f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de Energ ia em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /1718 # i n c l u d e " G lo ba l . h "19 # i n c l u d e " p r i n t f . h "2021 c o n f i g u r a t i o n NodeAppC22 23 implementat ion 24 components MainC , ActiveMessageC , MicaBusC , LedsC , NodeC ;25 components C o l l e c t i o n C ;26 components new C o l l e c t i o n S e n d e r C ( RADIO_ID ) ;27 components new TimerMi l l iC ( ) a s I2CTimer ;28 components new TimerMi l l iC ( ) a s RxTimer ;29 components new TimerMi l l iC ( ) a s F la shLed ;30 components new Atm128I2CMasterC ( ) ;31 components new TempC ( ) ;32 components new PhotoC ( ) ;3334 NodeC . Boot−>MainC . Boot ;35 NodeC . Leds−>LedsC . Leds ;36 NodeC . FlashLed−>FlashLed ;3738 NodeC . I2CTimer−>I2CTimer ;39 NodeC . RxTimer−>RxTimer ;40 NodeC . TempSensor−>TempC ;41 NodeC . Fo toSenso r−>PhotoC ;4243 /∗44 ∗ I2C Wir ing45 ∗ /46 NodeC . Resource−>Atm128I2CMasterC ;47 NodeC . I2CPacke t−>Atm128I2CMasterC ;48 NodeC . wakeUpPIC−>MicaBusC .PW2;4950 /∗51 ∗ Wir ing do P r o t o c o l o C o l l e c t i o n52 ∗ /53 NodeC . R ad ioC on t ro l−>Act iveMessageC ;54 NodeC . C o l l e c t i o n C o n t r o l −>C o l l e c t i o n C ;55 NodeC . Send−>C o l l e c t i o n S e n d e r C ;56 NodeC . I n t e r c e p t −>C o l l e c t i o n C . I n t e r c e p t [ RADIO_ID ] ;57

Page 114: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

95

58

Código 8 .5: NodeC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Departamento de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em Engenhar ia da Computacao6 ∗ O r i e n t a d o r : Pro f . Abe l Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : Pro f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de Energ ia em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /1718 # i n c l u d e " G lo ba l . h "19 # i n c l u d e " p r i n t f . h "2021 module NodeC22 uses 23 i n t e r f a c e Boot ;24 i n t e r f a c e Leds ;2526 /∗27 ∗ Timers28 ∗ /29 i n t e r f a c e Timer < TMi l l i > as I2CTimer ;30 i n t e r f a c e Timer < TMi l l i > as RxTimer ;31 i n t e r f a c e Timer < TMi l l i > as F lashLed ;3233 /∗34 ∗ P r o t o c o l o I2C35 ∗ /36 i n t e r f a c e I2CPacke t <TI2CBasicAddr > ;37 i n t e r f a c e Resource ;3839 /∗40 ∗ I n t e r r u p c a o e x t e r n a INT0 do PIC41 ∗ /42 i n t e r f a c e Genera l IO as wakeUpPIC ;43 /∗44 ∗ S e n s o r e s45 ∗ /46 i n t e r f a c e Read < u i n t 1 6 _ t > as F o t o S e n s o r ;47 i n t e r f a c e Read < u i n t 1 6 _ t > as TempSensor ;4849 /∗50 ∗ I n t e r f a c e s do P r o t o c o l o C o l l e c t i o n51 ∗ /52 i n t e r f a c e S p l i t C o n t r o l a s R a d i o C o n t r o l ;53 i n t e r f a c e S t d C o n t r o l a s C o l l e c t i o n C o n t r o l ;54 i n t e r f a c e Send ;

Page 115: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

96

55 i n t e r f a c e I n t e r c e p t ;56 i n t e r f a c e C o l l e c t i o n P a c k e t ;57 58 59 implementat ion 6061 u i n t 8 _ t t x D a t a [ 8 ] ;62 u i n t 8 _ t rx Da t a [ 1 6 ] ;63 u i n t 1 6 _ t t empSensor = 0 ;64 u i n t 1 6 _ t f o t o S e n s o r = 0 ;65 message_ t s n d B u f f e r ;66 RadioMsg_t∗ r a d i o P o i n t e r ;67 u i n t 1 6 _ t c o n t a d o r = 0 ;68 u i n t 1 6 _ t p e r d a s = 0 ;6970 t a s k void s e n d P a c k e t ( ) ;71 s t a t i c vo id f a t a l _ p r o b l e m ( ) ;7273 e v e n t void Boot . boo t e d ( ) 74 c a l l R a d i o C o n t r o l . s t a r t ( ) ;75 76 e v e n t void R a d i o C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 77 i f ( e r r o r !=SUCCESS) 78 c a l l R a d i o C o n t r o l . s t a r t ( ) ;79 e l s e 80 i f ( c a l l C o l l e c t i o n C o n t r o l . s t a r t ( ) != SUCCESS) f a t a l _ p r o b l e m ( ) ;81 c a l l wakeUpPIC . makeOutput ( ) ;82 c a l l wakeUpPIC . c l r ( ) ;83 c a l l I2CTimer . s t a r t P e r i o d i c ( 3 0 0 0 ) ;84 c a l l TempSensor . r e a d ( ) ;85 c a l l F o t o S e n s o r . r e a d ( ) ;86 c a l l Send . maxPayloadLength ( ) ;87 88 899091 e v e n t void I2CTimer . f i r e d ( ) 92 c a l l TempSensor . r e a d ( ) ;93 c a l l F o t o S e n s o r . r e a d ( ) ;94 c a l l wakeUpPIC . s e t ( ) ;95 c a l l Resource . r e q u e s t ( ) ;96 c o n t a d o r ++;97 9899 e v e n t void Resource . g r a n t e d ( )

100 memcpy ( txData , "$C# " , s t r l e n ( "$C# " ) ) ;101 c a l l I2CPacke t . w r i t e ( I2C_START | I2C_STOP , SLAVE_ADDR, s i z e o f ( r xD a t a )

, &t x D a t a [ 0 ] ) ;102 103104 async e v e n t void I2CPacke t . readDone ( e r r o r _ t e r r o r , u i n t 1 6 _ t addr ,

u i n t 8 _ t l e n g t h , u i n t 8 _ t ∗ d a t a ) 105 i f ( e r r o r ==SUCCESS) 106 p o s t s e n d P a c k e t ( ) ;107 108 c a l l Resource . r e l e a s e ( ) ;109 c a l l wakeUpPIC . c l r ( ) ;110

Page 116: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

97

111112 async e v e n t void I2CPacke t . wr i t eDone ( e r r o r _ t e r r o r , u i n t 1 6 _ t addr ,

u i n t 8 _ t l e n g t h , u i n t 8 _ t ∗ d a t a ) 113 i f ( e r r o r ==SUCCESS) 114 c a l l RxTimer . s t a r t O n e S h o t ( 1 0 0 ) ;115 e l s e 116 c a l l Resource . r e l e a s e ( ) ;117 c a l l wakeUpPIC . c l r ( ) ;118 119 120121 t a s k void s e n d P a c k e t ( ) 122 u i n t 8 _ t i ;123 r a d i o P o i n t e r = ( RadioMsg_t ∗ ) ( c a l l Send . g e t P a y l o a d (& s n d B u f f e r ,

s i z e o f ( RadioMsg_t ) ) ) ;124 r a d i o P o i n t e r −>or igem = TOS_NODE_ID ;125 r a d i o P o i n t e r −> s a l t o s = 0 ;126 r a d i o P o i n t e r −>f o t o = f o t o S e n s o r ;127 r a d i o P o i n t e r −>temp = tempSensor ;128 r a d i o P o i n t e r −>p e r d a s = p e r d a s ;129 f o r ( i = 0 ; i < 1 6 ; i ++) 130 r a d i o P o i n t e r −>p o t e n c i a [ i ]= r x Da ta [ i ] ;131 132 r a d i o P o i n t e r −>c o n t a d o r = c o n t a d o r ;133 c a l l Send . send (& s n d B u f f e r , s i z e o f ( RadioMsg_t ) ) ;134 c a l l Leds . led2On ( ) ;135 c a l l F la shLed . s t a r t O n e S h o t ( 2 0 0 ) ;136 137138139140 e v e n t void R a d i o C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 141142 e v e n t boo l I n t e r c e p t . f o r w a r d ( message_ t ∗msg , void ∗ pay load , u i n t 8 _ t

l e n ) 143 RadioMsg_t∗ RadioFw = ( RadioMsg_t ∗ ) p a y l o a d ;144 RadioFw−> s a l t o s ++;145 re turn TRUE;146 147148 e v e n t void RxTimer . f i r e d ( ) 149 memset(& rx Da t a [ 0 ] , 0 x00 , s i z e o f ( r xD a t a ) ) ;150 c a l l I2CPacke t . r e a d ( I2C_START | I2C_STOP , SLAVE_ADDR, s i z e o f ( r xD a t a ) ,

&rx Da t a [ 0 ] ) ;151 152153 e v e n t void F o t o S e n s o r . readDone ( e r r o r _ t r e s u l t , u i n t 1 6 _ t v a l ) 154 i f ( r e s u l t ==SUCCESS) 155 f o t o S e n s o r = v a l ;156 157 158159 e v e n t void TempSensor . readDone ( e r r o r _ t r e s u l t , u i n t 1 6 _ t v a l ) 160 i f ( r e s u l t ==SUCCESS) 161 tempSensor = v a l ;162 163 164

Page 117: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

98

165 e v e n t void FlashLed . f i r e d ( ) 166 c a l l Leds . l e d 2 O f f ( ) ;167 168169 e v e n t void Send . sendDone ( message_ t ∗msg , e r r o r _ t e r r o r ) 170 / / Use LEDs t o r e p o r t v a r i o u s s t a t u s i s s u e s .171 s t a t i c vo id f a t a l _ p r o b l e m ( ) 172 c a l l Leds . led0On ( ) ;173 / / c a l l Leds . led1On ( ) ;174 / / c a l l Leds . led2On ( ) ;175 c a l l I2CTimer . s t o p ( ) ;176 177178

Page 118: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Apêndice

III

Código fonte do TinyOS Terminal

Código 9 .1: UnitPrincipal.pas1 u n i t U n i t P r i n c i p a l ;23 i n t e r f a c e45 uses6 Windows , Messages , S y s U t i l s , V a r i a n t s , C l a s s e s , Graph ics , C o n t r o l s ,

Forms ,7 Dia logs , n r c l a s s e s , nrcomm , S t d C t r l s , nrcommbox , E x t C t r l s , n r t e r m i n a l

,8 n r d a t a p r o c , Bu t tons , ComCtrls , nrsemaphore , jpeg , CPort , CPor tC t l ,9 OverbyteIcsEmulVT , OverbyteIcsTnEmulVT , O v e r b y t e I c s T n S c r i p t , HotLog ,

S h e l lA P I ;1011 type12 T F o r m P r i n c i p a l = c l a s s ( TForm )13 P a n e l : TPanel ;14 Labe l2 : TLabel ;15 Labe l1 : TLabel ;16 Bi tBtnOpen : TBi tBtn ;17 SpeedBut tonAbout : TSpeedBut ton ;18 B i t B t n C l e a r : TBi tBtn ;19 S t a t u s B a r : T S t a t u s B a r ;20 B i t B t n 1 : TBi tBtn ;21 ComPort : TComPort ;22 Pane lHeade r : TPanel ;23 Labe l4 : TLabel ;24 R i c h E d i t H e a d e r : TRichEd i t ;25 P a n e l P a y l o a d : TPanel ;26 Labe l3 : TLabel ;27 R i c h E d i t P a y l o a d : TRichEd i t ;28 PanelCRC : TPanel ;29 Labe l5 : TLabel ;30 RichEditCRC : TRichEd i t ;31 ComRadioGroup1 : TComRadioGroup ;32 ComRadioGroup2 : TComRadioGroup ;33 ComRadioGroup3 : TComRadioGroup ;34 ComboBoxBaud : TComComboBox ;35 ComComboBox2 : TComComboBox ;36 ComRadioGroup4 : TComRadioGroup ;37 CheckBoxHex : TCheckBox ;

Page 119: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

100

38 OpenDialog : TOpenDialog ;39 E d i t F i l e : TEd i t ;40 B u t t o n F i l e : TSpeedBut ton ;41 ImageTinyOS : TImage ;42 ImageDSC : TImage ;43 CheckBoxWriteToLog : TCheckBox ;44 f u n c t i o n SoNumeros ( Const Texto : S t r i n g ) : S t r i n g ;45 procedure B i t B t n 1 C l i c k ( Sender : TObjec t ) ;46 f u n c t i o n S t r i n g 2 H e x ( c o n s t B u f f e r : A n s i s t r i n g ) : s t r i n g ;47 f u n c t i o n ByteToHex ( I nBy te : b y t e ) : s h o r t s t r i n g ;48 f u n c t i o n HexToBin ( Hexadec imal : s t r i n g ) : s t r i n g ;49 procedure Bi tB tnOpenCl i ck ( Sender : TObjec t ) ;50 procedure ComPortRxChar ( Sender : TObjec t ; Count : I n t e g e r ) ;51 procedure P r i n t P a c k e t ( s t r : s t r i n g ) ;5253 procedure z e r a V a r i a v e i s ;54 procedure a t u a l i z a S t a t u s B a r ;55 procedure FormShow ( Sender : TObjec t ) ;5657 procedure AddColorText ( s z T e x t : S t r i n g ; c l C o l o r : TColor ; R i c h E d i t

: TRichEd i t ) ;58 f u n c t i o n HexToTColor ( s C o l o r : s t r i n g ) : TColor ;59 procedure B i t B t n C l e a r C l i c k ( Sender : TObjec t ) ;60 procedure B u t t o n F i l e C l i c k ( Sender : TObjec t ) ;61 procedure ImageDSCClick ( Sender : TObjec t ) ;62 procedure ImageTinyOSClick ( Sender : TObjec t ) ;63 f u n c t i o n I s I n t e g e r ( T e s t a S t r i n g : S t r i n g ) : b o o l e a n ;6465 p r i v a t e66 P r i v a t e d e c l a r a t i o n s 67 p u b l i c68 P u b l i c d e c l a r a t i o n s 69 end ;7071 var72 F o r m P r i n c i p a l : T F o r m P r i n c i p a l ;73 r c v S t a t e M a c h i n e : I n t e g e r ;74 b u f f e r I n p u t : A n s i S t r i n g ;75 P a c o t e s , rx , t x : I n t e g e r ;76 t o s _ d a t a _ l e n g t h : I n t e g e r ;77 hLog : THotLog ;7879 / / D e f i n i c a o da maquina de e s t a d o s80 c o n s t81 wa i tF ramingBy te = 0 ;82 r c v P a c k e t = 3 ;83848586 implementat ion8788 $R ∗ . dfm 899091 procedure T F o r m P r i n c i p a l . z e r a V a r i a v e i s ;92 begin93 P a c o t e s : = 0 ;94 rx : = 0 ;

Page 120: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

101

95 t x : = 0 ;96 r c v S t a t e M a c h i n e := wa i tF ramingBy te ;97 b u f f e r I n p u t := ’ ’ ;98 end ;99

100101 procedure T F o r m P r i n c i p a l . a t u a l i z a S t a t u s B a r ;102 begin103 with S t a t u s B a r . P a n e l s do104 begin105 i f ComPort . Connec ted then106 I t e m s [ 0 ] . Tex t := ’ Connec ted ’107 e l s e108 I t e m s [ 0 ] . Tex t := ’ D i s c o n n e c t e d ’ ;109110 I t e m s [ 1 ] . Tex t := ComboBoxBaud . Text + ’ bps ’ ;111 I t e m s [ 2 ] . Tex t := ’ P a c k e t s ’ + IntToStr ( P a c o t e s ) ;112 I t e m s [ 3 ] . Tex t := ’ P a c k e t Length ’ + i n t t o s t r ( t o s _ d a t a _ l e n g t h ) + ’

b y t e s ’ ;113 I t e m s [ 4 ] . Tex t := ’Rx ’ + i n t t o s t r ( rx ) ;114 I t e m s [ 5 ] . Tex t := ’Tx ’ + i n t t o s t r ( t x ) ;115 end ;116117 end ;118119120 procedure T F o r m P r i n c i p a l . B i t B t n 1 C l i c k ( Sender : TObjec t ) ;121 begin122123 A p p l i c a t i o n . T e r m i n a t e ;124 end ;125126 procedure T F o r m P r i n c i p a l . B i t B t n C l e a r C l i c k ( Sender : TObjec t ) ;127 begin128 R i c h E d i t H e a d e r . C l e a r ;129 R i c h E d i t P a y l o a d . C l e a r ;130 RichEditCRC . C l e a r ;131 z e r a V a r i a v e i s ( ) ;132 end ;133134 f u n c t i o n T F o r m P r i n c i p a l . SoNumeros ( Const Texto : S t r i n g ) : S t r i n g ;135 var136 I : i n t e g e r ;137 S : s t r i n g ;138 begin139 S := ’ ’ ;140 f o r I := 1 To Length ( Texto ) Do141 begin142 i f ( Texto [ I ] in [ ’ 0 ’ . . ’ 9 ’ ] ) then143 begin144 S := S + Copy ( Texto , I , 1 ) ;145 end ;146 end ;147 r e s u l t := S ;148 end ;149150151

Page 121: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

102

152153 f u n c t i o n T F o r m P r i n c i p a l . S t r i n g 2 H e x ( c o n s t B u f f e r : A n s i s t r i n g ) : s t r i n g ;154 var155 n : I n t e g e r ;156 begin157 R e s u l t := ’ ’ ;158 f o r n := 1 to Length ( B u f f e r ) do159 R e s u l t := UpperCase ( R e s u l t + IntToHex ( Ord ( B u f f e r [ n ] ) , 2 ) ) ;160 end ;161162163 procedure T F o r m P r i n c i p a l . B i tB tnOpenCl i ck ( Sender : TObjec t ) ;164 begin165 / / $ Id : U n i t P r i n c i p a l . pas 10 2008−12−19 1 7 : 2 8 : 2 0 Z Fred Cox $166 i f ComPort . Connec ted then167 begin168 BitBtnOpen . C a p t i o n := ’&Open ’ ;169 ComPort . Connec ted := f a l s e ;170 B u t t o n F i l e . Enab led := t r u e ;171 E d i t F i l e . Enab led := t r u e ;172 i f CheckBoxWriteToLog . Checked then hLog . Free ;173 CheckBoxWriteToLog . Enab led := t r u e ;174 end175 e l s e176 begin177 E d i t F i l e . Tex t := OpenDialog . FileName + formatdate t ime ( ’

ddmmyyyyhhnnss ’ , now ) + ’ . l o g ’ ;178 E d i t F i l e . Enab led := f a l s e ;179 i f CheckBoxWriteToLog . Checked then180 begin181 hLog := THotLog . C r e a t e ;182 hLog . h l W r i t e r . h l F i l e D e f . f i l eName := E d i t F i l e . Text ;183 hLog . S t a r t l o g g i n g ;184 hLog . add ( ’ TinyOS T e r m i n a l [ S t a r t i n g l o g g i n g ] − > now ’ ) ;185 hLog . add ( ’ OSVI ’ ) ;186 hLog . add ( ’ CPUI ’ ) ;187 hLog . add ( ’ Disk ’ ) ;188 hLog . add ( ’ Ram ’ ) ;189 hLog . add ( ’ Timers ’ ) ;190 CheckBoxWriteToLog . Enab led := f a l s e ;191 end ;192 Bi tBtnOpen . C a p t i o n := ’&Close ’ ;193 B u t t o n F i l e . Enab led := f a l s e ;194 r c v S t a t e M a c h i n e := wa i tF ramingBy te ;195 ComPort . Connec ted := t r u e ;196 end ;197 a t u a l i z a S t a t u s B a r ;198 end ;199200 procedure T F o r m P r i n c i p a l . B u t t o n F i l e C l i c k ( Sender : TObjec t ) ;201 begin202 i f OpenDialog . Execu te then203 begin204 E d i t F i l e . Tex t := OpenDialog . FileName ;205 end ;206 end ;207208 f u n c t i o n T F o r m P r i n c i p a l . ByteToHex ( InB y t e : b y t e ) : s h o r t s t r i n g ;

Page 122: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

103

209 c o n s t D i g i t s : array [ 0 . . 1 5 ] of c h a r = ’ 0123456789ABCDEF ’ ;210 begin211 r e s u l t := d i g i t s [ InB y t e shr 4]+ d i g i t s [ In By t e and $0F ] ;212 end ;213214215216 procedure T F o r m P r i n c i p a l . ComPortRxChar ( Sender : TObjec t ; Count : I n t e g e r )

;217 var218 i n p u t : A n s i S t r i n g ;219 i : I n t e g e r ;220 begin221 rx := rx +Count ;222 ComPort . ReadS t r ( i n p u t , Count ) ;223 f o r i := 0 to Count do224 begin225 case r c v S t a t e M a c h i n e of226 wa i tF ramingBy te :227 begin228 i f i n p u t [ i ]= ’~ ’ then229 begin230 b u f f e r I n p u t := i n p u t [ i ] ;231 r c v S t a t e M a c h i n e := r c v P a c k e t ;232 end ;233 end ;234 r c v P a c k e t :235 begin236 i f i n p u t [ i ]= ’~ ’ then237 begin238 P r i n t P a c k e t ( b u f f e r I n p u t + ’~ ’ ) ;239 Inc ( P a c o t e s ) ;240 r c v S t a t e M a c h i n e := wa i tF ramingBy te ;241 R i c h E d i t H e a d e r . Per fo rm (WM_VSCROLL, SB_BOTTOM, 0) ;242 R i c h E d i t P a y l o a d . Per fo rm (WM_VSCROLL, SB_BOTTOM, 0) ;243 RichEditCRC . Per fo rm (WM_VSCROLL, SB_BOTTOM, 0) ;244 end245 e l s e246 b u f f e r I n p u t := b u f f e r I n p u t + i n p u t [ i ] ;247248 end ;249 end ;250 end ;251 a t u a l i z a S t a t u s B a r ;252253 end ;254255256 procedure T F o r m P r i n c i p a l . FormShow ( Sender : TObjec t ) ;257 begin258 z e r a V a r i a v e i s ;259 a t u a l i z a S t a t u s B a r ;260 B i t B t n C l e a r . C l i c k ;261 E d i t F i l e . Tex t := G e t C u r r e n t D i r + ’ \ ’ + OpenDialog . FileName +

formatdate t ime ( ’ ddmmyyyyhhnnss ’ , now ) + ’ . l o g ’ ;262263264 end ;

Page 123: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

104

265266 procedure T F o r m P r i n c i p a l . P r i n t P a c k e t ( s t r : s t r i n g ) ;267 var268 i , j : i n t e g e r ;269 c r c 1 6 r c v : Word ;270 c r c 1 6 c a l c : Word ;271 index : i n t e g e r ;272 begin273274 / / A d i c i o n a o numero do p a c o t e275 AddColorText ( ’ [ ’ , c lWhi te , R i c h E d i t H e a d e r ) ;276 AddColorText ( Format ( ’ %.4d ’ , [ P a c o t e s ] ) , clRed , R i c h E d i t H e a d e r ) ;277 AddColorText ( ’ ] ’ , c lWhi te , R i c h E d i t H e a d e r ) ;278 R i c h E d i t H e a d e r . L i n e s . Add ( ’ ’ ) ;279 / / a d i c i o n a o pay load280 i : = 5 ;281 whi le ( ( ord ( s t r [ i ] ) =0) or ( ord ( s t r [ i ] ) =255) ) do Inc ( i ) ;282283 t o s _ d a t a _ l e n g t h := ord ( s t r [ i ] ) ;284285 Inc ( i ) ;286 whi le ( ord ( s t r [ i ] ) =0) do Inc ( i ) ;287 Inc ( i ) ;288289 i f CheckBoxHex . Checked then290 AddColorText ( S t r i n g 2 H e x ( copy ( s t r , i , t o s _ d a t a _ l e n g t h ) ) , HexToTColor ( ’

40E0D0 ’ ) , R i c h E d i t P a y l o a d )291 e l s e292 begin293 / / AddColorTex t ( copy ( s t r , i , t o s _ d a t a _ l e n g t h ) , HexToTColor ( ’ FFFF00 ’ ) ,

R i c h E d i t P a y l o a d ) ;294 / / A d i c i o n a o pay load c o l o r i d o295 f o r index := i to ( t o s _ d a t a _ l e n g t h − 1) do296 begin297 / / S w i t c h case para c o l o r i r o pay load298 case s t r [ index ] of299 chr ( 0 ) . . chr ( 3 1 ) : c o n t in u e ; / / AddColorTex t ( s t r [ i n d e x ] ,

HexToTColor ( ’FFFFCC ’ ) , R i c h E d i t P a y l o a d ) ;300 ’ : ’ . . ’@’ : AddColorText ( s t r [ index ] , HexToTColor ( ’CCFF66

’ ) , R i c h E d i t P a y l o a d ) ;301 ’ 0 ’ . . ’ 9 ’ : AddColorText ( s t r [ index ] , HexToTColor ( ’ FFFF99

’ ) , R i c h E d i t P a y l o a d ) ;302 ’ ’ . . ’ / ’ : AddColorText ( s t r [ index ] , HexToTColor ( ’ CC0033

’ ) , R i c h E d i t P a y l o a d ) ;303 ’ [ ’ . . ’ ] ’ : AddColorText ( s t r [ index ] , HexToTColor ( ’ 33FFCC

’ ) , R i c h E d i t P a y l o a d ) ;304 e l s e AddColorText ( s t r [ index ] , HexToTColor ( ’ FFFFFF

’ ) , R i c h E d i t P a y l o a d ) ;305 end ;306 end ;307 R i c h E d i t P a y l o a d . l i n e s . Add ( ’ ’ ) ;308 end ;309310311312 / / A d i c i o n a o CRC313 AddColorText ( ’ [ ’ , c lWhi te , RichEditCRC ) ;314 AddColorText ( S t r i n g 2 H e x ( copy ( s t r , ( l e n g t h ( s t r )−2) , 2 ) ) , HexToTColor ( ’ 90

Page 124: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

105

EE90 ’ ) , RichEditCRC ) ;315 AddColorText ( ’ ] ’ , c lWhi te , RichEditCRC ) ;316 RichEditCRC . L i n e s . Add ( ’ ’ ) ;317 i f CheckBoxWriteToLog . Checked then318 begin319 h log . Add ( ’ / LNumOff∗80∗ ’ ) ;320 h log . Add ( ’>> Recv P a c k e t Number : ’ + Format ( ’ %.4d ’ , [ P a c o t e s ] ) ) ;321 h log . Add ( ’ Date Time : 60@ ( now ) ’ ) ;322 h log . Add ( ’ Hexadec imal ∗ 2 5 . : ’ + S t r i n g 2 H e x ( copy ( s t r , i ,

t o s _ d a t a _ l e n g t h ) ) ) ;323 h log . Add ( ’Raw b y t e s ∗ 2 5 . : ’ + copy ( s t r , i , t o s _ d a t a _ l e n g t h ) ) ;324 end ;325326 end ;327328329 procedure T F o r m P r i n c i p a l . AddColorText ( s z T e x t : S t r i n g ; c l C o l o r : TColor

; R i c h E d i t : TRichEd i t ) ;330 begin331 / / S e t t h e s e l e c t e d t e x t c o l o r332 R i c h E d i t . S e l A t t r i b u t e s . Co lo r := c l C o l o r ;333 / / Add t h e t e x t334 R i c h E d i t . S e l T e x t := s z T e x t ;335 / / S e t t h e s e l e c t e d t e x t back t o t h e d e f a u l t336 / / R i c h E d i t . S e l A t t r i b u t e s . Color := clWindowTex t ;337 end ;338339340 f u n c t i o n T F o r m P r i n c i p a l . HexToBin ( Hexadec imal : s t r i n g ) : s t r i n g ;341 c o n s t342 BCD: array [ 0 . . 1 5 ] of s t r i n g =343 ( ’ 0000 ’ , ’ 0001 ’ , ’ 0010 ’ , ’ 0011 ’ , ’ 0100 ’ , ’ 0101 ’ , ’ 0110 ’ , ’ 0111 ’ ,344 ’ 1000 ’ , ’ 1001 ’ , ’ 1010 ’ , ’ 1011 ’ , ’ 1100 ’ , ’ 1101 ’ , ’ 1110 ’ , ’ 1111 ’ ) ;345 var346 i : i n t e g e r ;347 begin348 f o r i := Length ( Hexadec imal ) downto 1 do349 R e s u l t := BCD[ StrToInt ( ’ $ ’ + Hexadec imal [ i ] ) ] + R e s u l t ;350 end ;351352353 f u n c t i o n T F o r m P r i n c i p a l . HexToTColor ( s C o l o r : s t r i n g ) : TColor ;354 begin355 R e s u l t :=RGB(356 StrToInt ( ’ $ ’+Copy ( sColor , 1 , 2 ) ) ,357 StrToInt ( ’ $ ’+Copy ( sColor , 3 , 2 ) ) ,358 StrToInt ( ’ $ ’+Copy ( sColor , 5 , 2 ) )359 ) ;360 end ;361362363364365366 procedure T F o r m P r i n c i p a l . ImageDSCClick ( Sender : TObjec t ) ;367 begin368369 S h e l l E x e c u t e ( A p p l i c a t i o n . Handle ,

Page 125: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

106

370 PChar ( ’ open ’ ) ,371 PChar ( ’ h t t p : / / dsc . upe . b r / ’ ) ,372 PChar ( 0 ) ,373 n i l ,374 SW_NORMAL) ;375 end ;376377 procedure T F o r m P r i n c i p a l . ImageTinyOSClick ( Sender : TObjec t ) ;378 begin379 S h e l l E x e c u t e ( A p p l i c a t i o n . Handle ,380 PChar ( ’ open ’ ) ,381 PChar ( ’ h t t p : / / www. t i n y o s . n e t / ’ ) ,382 PChar ( 0 ) ,383 n i l ,384 SW_NORMAL) ;385 end ;386387388 f u n c t i o n T F o r m P r i n c i p a l . I s I n t e g e r ( T e s t a S t r i n g : S t r i n g ) : b o o l e a n ;389 begin390 t r y391 StrToInt ( T e s t a S t r i n g ) ;392 e xc ep t393 On E C o n v e r t E r r o r do r e s u l t := F a l s e ;394 e l s e395 r e s u l t := True ;396 end ;397 end ;398 end .

Page 126: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Apêndice

IV

Código fonte do Experimento - Tymo

Código 10 .1: Makefile1 ##############################################################################

2 # U n i v e r s i d a d e de Pernambuco − UPE3 # Depar t amen to de S i s t e m a s e Computacao − DSC4 # Programa de Academico em E n g e n h a r i a da Computacao5 # O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o6 # Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes7 # Aluno : F r e d e r i c o Cox8 ##############################################################################

9 # M a k e f i l e10 ##############################################################################

11 #12 # $Author : Fred Cox $13 # $Rev : 70 $14 # $Date : 2008−12−19 1 6 : 2 0 : 5 1 −0200 ( Sex , 19 Dez 2008) $15 # $Id : T inyOS_Plug in_Makef i l e 70 2008−12−19 1 8 : 2 0 : 5 1 Z Fred Cox $16 #17 ##############################################################################

18 # V a r i a v e i s de a m b i e n t e1920 COMPONENT=TymoBaseAppC212223 CFLAGS += −I$ ( TOSDIR ) / l i b / n e t \24 −I$ ( TOSDIR ) / l i b / n e t / tymo \25 −I$ ( TOSDIR ) / l i b / n e t / tymo / dymo \26 −I$ ( TOSDIR ) / l i b / n e t / tymo / mh \27 −I .2829 TFLAGS += −I ( TOSDIR ) / t y p e s303132 DOCDIR=html−doc3334 #############################################35 # D e f i n i c o e s p a r a o r a d i o − Canal e P o t e n c i a36 #############################################

Page 127: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

108

37 # PA_LEVEL [dBm] C u r r e n t Consumption [mA]38 # 31 0 1 7 . 439 # 27 −1 1 6 . 540 # 23 −3 1 5 . 241 # 19 −5 1 3 . 942 # 15 −7 1 2 . 543 # 11 −10 1 1 . 244 # 7 −15 9 . 945 # 3 −25 8 . 546 #############################################47 PFLAGS += −DCC2420_DEF_RFPOWER=194849 #############################################50 # IEEE 8 0 2 . 1 5 . 4 e s p e c i f i c a 16 c a n a i s51 # numerados de 11 a 2652 #############################################53 PFLAGS += −DCC2420_DEF_CHANNEL=265455 #############################################56 # I n c l u e a b i b l i o t e c a p r i n t f NOVA57 CFLAGS += −I$ ( TOSDIR ) / l i b / p r i n t f / 2 _0_258 #############################################59 #Aumenta o p a y l o a d do p r i n t f60 #############################################61 CFLAGS +=−DTOSH_DATA_LENGTH=1606263 #############################################64 # I n c l u e S u p o r t e a p l a c a MDA10065 CFLAGS += −I$ ( TOSDIR ) / s e n s o r b o a r d s / mda100 /66 CFLAGS += −I$ ( TOSDIR ) / s e n s o r b o a r d s / mda100 / cb67 #############################################68 i f d e f APP_MAKERULES69 i n c l u d e $ (APP_MAKERULES)70 e l s e71 i n c l u d e $ (MAKERULES)72 e n d i f73 #############################################

Código 10 .2: Global.h1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /1718 # i f n d e f GLOBAL_H

Page 128: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

109

19 # d e f i n e GLOBAL_H20 /∗21 ∗ Endereco do gateway ou e s t a c a o base22 ∗ /23 enum 24 DESTINO = 3625 ;2627 /∗28 ∗ E s t r u t u r a da mensagem do r a d i o29 ∗ /30 t y p e d e f n x _ s t r u c t RadioMsg 31 n x _ u i n t 1 6 _ t or igem ;32 n x _ u i n t 1 6 _ t pe rda s ;33 n x _ u i n t 1 6 _ t s a l t o s ;34 n x _ u i n t 1 6 _ t temp ;35 n x _ u i n t 1 6 _ t f o t o ;36 n x _ u i n t 8 _ t p o t e n c i a [ 1 6 ] ;37 n x _ u i n t 1 6 _ t c o n t a d o r ;38 RadioMsg_t ;3940 # e n d i f /∗ GLOBAL_H ∗ /

Código 10 .3: TymoBaseAppC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 c o n f i g u r a t i o n TymoBaseAppC 18 19 implementat ion 20 components MainC , LedsC , P r i n t f C , TymoBaseC , DymoNetworkC ;21 components new T i m e r M i l l i C ( ) as F lashT imer ;2223 TymoBaseC . Boot−>MainC . Boot ;24 TymoBaseC . P r i n t f C o n t r o l −>P r i n t f C . P r i n t f C o n t r o l ;25 TymoBaseC . P r i n t f F l u s h −>P r i n t f C . P r i n t f F l u s h ;26 TymoBaseC . FlashTimer−>FlashT imer ;27 TymoBaseC . Leds−>LedsC . Leds ;2829 /∗30 ∗ Wir ing do Tymo31 ∗ /32 TymoBaseC . Rad ioCon t ro l−>DymoNetworkC . S p l i t C o n t r o l ;33 TymoBaseC . MHPacket−>DymoNetworkC . MHPacket ;

Page 129: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

110

34 TymoBaseC . MHSend−>DymoNetworkC . MHSend [ 1 ] ;35 TymoBaseC . Rece i ve−>DymoNetworkC . R e c e i v e [ 1 ] ;36 TymoBaseC . I n t e r c e p t −>DymoNetworkC . I n t e r c e p t [ 1 ] ;3738

Código 10 .4: TymoBaseC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 # i n c l u d e " p r i n t f . h "18 # i n c l u d e " G lo ba l . h "19 # i n c l u d e " I2C . h "2021 /∗22 ∗ P r o t o c o l o de comunicacao I2C23 ∗24 ∗25 ∗ $C# −> S o l i c i t a Consumo26 ∗27 ∗28 ∗ /2930 module TymoBaseC 31 u s e s 32 i n t e r f a c e Boot ;33 i n t e r f a c e S p l i t C o n t r o l as P r i n t f C o n t r o l ;34 i n t e r f a c e P r i n t f F l u s h ;35 i n t e r f a c e Timer <T M i l l i > as F lashT imer ;36 i n t e r f a c e Leds ;3738 /∗39 ∗ I n t e r f a c e s n e c e s s a r i a s do Tymo40 ∗ /41 i n t e r f a c e S p l i t C o n t r o l as R a d i o C o n t r o l ;42 i n t e r f a c e AMPacket as MHPacket ;43 i n t e r f a c e AMSend as MHSend ;44 i n t e r f a c e R e c e i v e ;45 i n t e r f a c e I n t e r c e p t ;46 47 48 implementat ion 4950 boo l ledOn = TRUE;

Page 130: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

111

51 u n s i g n e d char b u f f e r [ 1 6 ] ;52 message_ t s n d B u f f e r ;53 RadioMsg_t ∗ r a d i o P o i n t e r ;5455 e v e n t v o i d Boot . b oo t ed ( ) 56 c a l l R a d i o C o n t r o l . s t a r t ( ) ;57 5859 e v e n t vo id R a d i o C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 60 i f ( e r r o r !=SUCCESS ) 61 c a l l R a d i o C o n t r o l . s t a r t ( ) ;62 e l s e 63 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;64 65 6667 e v e n t vo id P r i n t f C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 68 i f ( e r r o r !=SUCCESS ) 69 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;70 e l s e 71 c a l l Leds . led0On ( ) ;72 c a l l F lashT imer . s t a r t O n e S h o t ( 1 0 ) ;73 p r i n t f ( " S e r v i c o s i n i c i a l i z a d o s com s u c e s s o . . . " ) ;74 c a l l P r i n t f F l u s h . f l u s h ( ) ;75 76 7778 e v e n t vo id P r i n t f C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 79 e v e n t vo id P r i n t f F l u s h . f l u shDone ( e r r o r _ t e r r o r ) 8081 e v e n t vo id F l a s h T i m e r . f i r e d ( ) 82 i f ( ledOn ) 83 c a l l Leds . led0On ( ) ;84 c a l l F lashT imer . s t a r t O n e S h o t ( 1 0 ) ;85 e l s e 86 c a l l Leds . l e d 0 O f f ( ) ;87 c a l l F lashT imer . s t a r t O n e S h o t ( 1 0 0 0 ) ;88 89 ledOn = ledOn ^ TRUE;90 91929394 e v e n t vo id R a d i o C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 9596 e v e n t vo id MHSend . sendDone ( message_ t ∗msg , e r r o r _ t e r r o r ) 9798 e v e n t message_ t ∗ Rece ive . r e c e i v e ( message_ t ∗msg , vo id ∗ pay load ,

u i n t 8 _ t l e n ) 99 RadioMsg_t ∗ RadioMsg = ( RadioMsg_t ∗ ) pay load ;

100 i f ( c a l l MHPacket . d e s t i n a t i o n ( msg )==DESTINO ) 101 RadioMsg−>s a l t o s ++;102 memcpy ( b u f f e r ,& RadioMsg−>p o t e n c i a [ 2 ] , ( s i z e o f ( b u f f e r )−2) ) ;103 p r i n t f ("%u;%u;%u;%u;%u;%u;%s \ r \ n " ,104 RadioMsg−>origem ,105 RadioMsg−>s a l t o s ,106 RadioMsg−>perdas ,107 RadioMsg−>temp ,

Page 131: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

112

108 RadioMsg−>f o t o ,109 RadioMsg−>con tador ,110 b u f f e r111 ) ;112113 c a l l P r i n t f F l u s h . f l u s h ( ) ;114 115 r e t u r n msg ;116 117118 e v e n t boo l I n t e r c e p t . forward ( message_ t ∗msg , vo id ∗ pay load , u i n t 8 _ t

l e n ) 119 RadioMsg_t ∗ RadioFw = ( RadioMsg_t ∗ ) pay load ;120 RadioFw−>s a l t o s ++;121 r e t u r n TRUE;122 123124125

Código 10 .5: volumes-at45db.xml1 < v o l u m e _ t a b l e >2 <volume name="DYMODATA" s i z e =" 131072 " / >3 < / v o l u m e _ t a b l e >

Código 10 .6: TymoNodeAppC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 c o n f i g u r a t i o n TymoNodeAppC18 19 i m p l e m e n t a t i o n 20 components MainC , TymoNodeC , MicaBusC , DymoNetworkC , LedsC ;21 components new TimerMi l l iC ( ) a s I2CTimer ;22 components new TimerMi l l iC ( ) a s RxTimer ;23 components new TimerMi l l iC ( ) a s F lashLed ;24 components new Atm128I2CMasterC ( ) ;25 components new TempC ( ) ;26 components new PhotoC ( ) ;2728 TymoNodeC . Boot−>MainC . Boot ;29 TymoNodeC . Leds−>LedsC . Leds ;30 TymoNodeC . I2CTimer−>I2CTimer ;

Page 132: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

113

31 TymoNodeC . RxTimer−>RxTimer ;32 TymoNodeC . FlashLed−>FlashLed ;33 TymoNodeC . TempSensor−>TempC ;34 TymoNodeC . Fo toSenso r−>PhotoC ;3536 /∗37 ∗ I2C Wir ing38 ∗ /39 TymoNodeC . Resource−>Atm128I2CMasterC ;40 TymoNodeC . I2CPacke t−>Atm128I2CMasterC ;41 TymoNodeC . wakeUpPIC−>MicaBusC .PW2;424344 /∗45 ∗ Wiring do Tymo46 ∗ /47 TymoNodeC . Rad ioC on t ro l−>DymoNetworkC . S p l i t C o n t r o l ;48 TymoNodeC . MHPacket−>DymoNetworkC . MHPacket ;49 TymoNodeC . MHSend−>DymoNetworkC . MHSend [ 1 ] ;50 TymoNodeC . Receive−>DymoNetworkC . Rece ive [ 1 ] ;51 TymoNodeC . I n t e r c e p t −>DymoNetworkC . I n t e r c e p t [ 1 ] ;5253

Código 10 .7: TymoNodeC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 / / # i n c l u d e " p r i n t f . h "18 # i n c l u d e " Glo ba l . h "19 # i n c l u d e " I2C . h "2021 /∗22 ∗ P r o t o c o l o de comunicacao I2C23 ∗24 ∗25 ∗ $C# −> S o l i c i t a Consumo26 ∗27 ∗28 ∗ /2930 module TymoNodeC31 u s e s 32 i n t e r f a c e Boot ;

Page 133: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

114

33 i n t e r f a c e Leds ;3435 /∗36 ∗ Timers37 ∗ /38 i n t e r f a c e Timer< T M i l l i > as I2CTimer ;39 i n t e r f a c e Timer< T M i l l i > as RxTimer ;40 i n t e r f a c e Timer< T M i l l i > as F lashLed ;4142 /∗43 ∗ P r o t o c o l o I2C44 ∗ /45 i n t e r f a c e I2CPacke t <TI2CBasicAddr> ;46 i n t e r f a c e Resource ;4748 /∗49 ∗ I n t e r r u p c a o e x t e r n a INT0 do PIC50 ∗ /51 i n t e r f a c e Genera l IO as wakeUpPIC ;52 /∗53 ∗ S e n s o r e s54 ∗ /55 i n t e r f a c e Read< u i n t 1 6 _ t > as F o t o S e n s o r ;56 i n t e r f a c e Read< u i n t 1 6 _ t > as TempSensor ;5758 /∗59 ∗ I n t e r f a c e s n e c e s s a r i a s do Tymo60 ∗ /61 i n t e r f a c e S p l i t C o n t r o l a s R a d i o C o n t r o l ;62 i n t e r f a c e AMPacket a s MHPacket ;63 i n t e r f a c e AMSend as MHSend ;64 i n t e r f a c e Rece ive ;65 i n t e r f a c e I n t e r c e p t ;66 67 68 i m p l e m e n t a t i o n 6970 u i n t 8 _ t t x D a t a [ 8 ] ;71 u i n t 8 _ t rx Da t a [ 1 6 ] ;72 u i n t 1 6 _ t t empSensor = 0 ;73 u i n t 1 6 _ t f o t o S e n s o r = 0 ;74 message_ t s n d B u f f e r ;75 RadioMsg_t∗ r a d i o P o i n t e r ;76 u i n t 1 6 _ t c o n t a d o r = 0 ;77 u i n t 1 6 _ t p e r d a s = 0 ;7879 t a s k vo id s e n d P a c k e t ( ) ;8081 e v e n t vo id Boot . bo o t e d ( ) 82 c a l l R a d i o C o n t r o l . s t a r t ( ) ;83 8485 e v e n t vo id R a d i o C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 86 i f ( e r r o r !=SUCCESS) 87 c a l l R a d i o C o n t r o l . s t a r t ( ) ;88 e l s e 89 c a l l wakeUpPIC . makeOutput ( ) ;90 c a l l wakeUpPIC . c l r ( ) ;

Page 134: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

115

91 c a l l I2CTimer . s t a r t P e r i o d i c ( 3 0 0 0 ) ;92 c a l l TempSensor . r e a d ( ) ;93 c a l l F o t o S e n s o r . r e a d ( ) ;94 95 969798 e v e n t vo id I2CTimer . f i r e d ( ) 99 c a l l TempSensor . r e a d ( ) ;

100 c a l l F o t o S e n s o r . r e a d ( ) ;101 c a l l wakeUpPIC . s e t ( ) ;102 c a l l Resource . r e q u e s t ( ) ;103 c o n t a d o r ++;104 105106 e v e n t vo id Resource . g r a n t e d ( ) 107 memcpy ( txData , " $C# " , s t r l e n ( " $C# " ) ) ;108 c a l l I2CPacke t . w r i t e ( I2C_START | I2C_STOP , SLAVE_ADDR, s i z e o f ( r xD a t a )

, &t x D a t a [ 0 ] ) ;109 110111 async e v e n t vo id I2CPacke t . readDone ( e r r o r _ t e r r o r , u i n t 1 6 _ t addr ,

u i n t 8 _ t l e n g t h , u i n t 8 _ t ∗ d a t a ) 112 i f ( e r r o r ==SUCCESS) 113 p o s t s e n d P a c k e t ( ) ;114 115 c a l l Resource . r e l e a s e ( ) ;116 c a l l wakeUpPIC . c l r ( ) ;117 118119 async e v e n t vo id I2CPacke t . wr i t eDone ( e r r o r _ t e r r o r , u i n t 1 6 _ t addr ,

u i n t 8 _ t l e n g t h , u i n t 8 _ t ∗ d a t a ) 120 i f ( e r r o r ==SUCCESS) 121 c a l l RxTimer . s t a r t O n e S h o t ( 1 0 0 ) ;122 e l s e 123 c a l l Resource . r e l e a s e ( ) ;124 c a l l wakeUpPIC . c l r ( ) ;125 126127 128129130 t a s k vo id s e n d P a c k e t ( ) 131 u i n t 8 _ t i ;132 r a d i o P o i n t e r = ( RadioMsg_t ∗ ) c a l l MHSend . g e t P a y l o a d (& s n d B u f f e r ,

s i z e o f ( RadioMsg_t ) ) ;133 r a d i o P o i n t e r −>or igem = TOS_NODE_ID ;134 r a d i o P o i n t e r −> s a l t o s = 0 ;135 r a d i o P o i n t e r −>f o t o = f o t o S e n s o r ;136 r a d i o P o i n t e r −>temp = tempSensor ;137 r a d i o P o i n t e r −>p e r d a s = p e r d a s ;138 f o r ( i = 0 ; i < 1 6 ; i ++) 139 r a d i o P o i n t e r −> p o t e n c i a [ i ]= rx Da t a [ i ] ;140 141 r a d i o P o i n t e r −>c o n t a d o r = c o n t a d o r ;142 c a l l MHSend . send (DESTINO , &s n d B u f f e r , s i z e o f ( RadioMsg_t ) ) ;143 c a l l Leds . led2On ( ) ;144 c a l l F la shLed . s t a r t O n e S h o t ( 2 0 0 ) ;

Page 135: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

116

145 146147148 e v e n t vo id R a d i o C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 149150 e v e n t vo id MHSend . sendDone ( message_ t ∗msg , e r r o r _ t e r r o r ) 151 i f ( e r r o r ==SUCCESS) 152 p e r d a s = 0 ;153 e l s e 154 p e r d a s ++;155 156 157158 e v e n t message_ t ∗ Rece ive . r e c e i v e ( message_ t ∗msg , vo id ∗ pay load ,

u i n t 8 _ t l e n ) 159 r e t u r n msg ;160 161162 e v e n t boo l I n t e r c e p t . f o r w a r d ( message_ t ∗msg , vo id ∗ pay load , u i n t 8 _ t

l e n ) 163 RadioMsg_t∗ RadioFw = ( RadioMsg_t ∗ ) p a y l o a d ;164 RadioFw−> s a l t o s ++;165 r e t u r n TRUE;166 167168 e v e n t vo id RxTimer . f i r e d ( ) 169 memset(& rx Da t a [ 0 ] , 0 x00 , s i z e o f ( rx D a t a ) ) ;170 c a l l I2CPacke t . r e a d ( I2C_START | I2C_STOP , SLAVE_ADDR, s i z e o f ( r xD a t a ) ,

&rx Da t a [ 0 ] ) ;171 172173 e v e n t vo id F o t o S e n s o r . readDone ( e r r o r _ t r e s u l t , u i n t 1 6 _ t v a l ) 174 i f ( r e s u l t ==SUCCESS) 175 f o t o S e n s o r = v a l ;176 177 178179 e v e n t vo id TempSensor . readDone ( e r r o r _ t r e s u l t , u i n t 1 6 _ t v a l ) 180 i f ( r e s u l t ==SUCCESS) 181 tempSensor = v a l ;182 183 184185 e v e n t vo id F lashLed . f i r e d ( ) 186 c a l l Leds . l e d 2 O f f ( ) ;187 188

Page 136: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Apêndice

V

Código fonte da experiência prática - Collection

Código 11 .1: Global.h1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /1718 # i f n d e f GLOBAL_H19 # d e f i n e GLOBAL_H20 /∗21 ∗ D ef in e o c o l l e c t i o n _ i d22 ∗ /23 enum 24 TEMP_PHOTO_ID = 3725 ;26 /∗27 ∗ E s t r u t u r a da mensagem do r a d i o28 ∗ /29 t y p e d e f n x _ s t r u c t RadioMsg 30 n x _ u i n t 1 6 _ t o r i g e m _ i d ;31 n x _ u i n t 1 6 _ t s a l t o s ;32 n x _ u i n t 1 6 _ t r o t a [ 5 ] ;33 n x _ u i n t 1 6 _ t temp ;34 n x _ u i n t 1 6 _ t f o t o ;35 RadioMsg_t ;3637 # e n d i f /∗ GLOBAL_H ∗ /

Código 11 .2: ProducerInterceptAppC.nc

Page 137: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

118

1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 # i n c l u d e " Glo ba l . h "18 c o n f i g u r a t i o n P r o d u c e r I n t e r c e p t A p p C 19 i m p l e m e n t a t i o n 20 components MainC , LedsC , ActiveMessageC , P r o d u c e r I n t e r c e p t C ;21 components new TimerMi l l iC ( ) a s F l a s h T i m e r ;22 components new TimerMi l l iC ( ) a s P roduce rT imer ;23 components C o l l e c t i o n C ;24 components new C o l l e c t i o n S e n d e r C (TEMP_PHOTO_ID) ;25 components new PhotoC ( ) ;26 components new TempC ( ) ;27 /∗28 ∗ Wiring29 ∗ /30 P r o d u c e r I n t e r c e p t C . Boot−>MainC . Boot ;31 P r o d u c e r I n t e r c e p t C . Leds−>LedsC . Leds ;32 P r o d u c e r I n t e r c e p t C . Rad ioC on t ro l−>Act iveMessageC . S p l i t C o n t r o l ;33 P r o d u c e r I n t e r c e p t C . ProducerTimer−>Produce rT imer . Timer ;34 P r o d u c e r I n t e r c e p t C . F lashTimer−>F l a s h T i m e r . Timer ;35 P r o d u c e r I n t e r c e p t C . Fo toSenso r−>PhotoC . Read ;36 P r o d u c e r I n t e r c e p t C . TempSensor−>TempC . Read ;37 /∗38 ∗ Wiring do P r o t o c o l o C o l l e c t i o n39 ∗ /40 P r o d u c e r I n t e r c e p t C . C o l l e c t i o n C o n t r o l −>C o l l e c t i o n C . S t d C o n t r o l ;41 P r o d u c e r I n t e r c e p t C . Send−>C o l l e c t i o n S e n d e r C . Send ;42 P r o d u c e r I n t e r c e p t C . I n t e r c e p t −>C o l l e c t i o n C . I n t e r c e p t [TEMP_PHOTO_ID ] ;43

Código 11 .3: ProducerInterceptC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗

Page 138: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

119

12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 # i n c l u d e " Glo ba l . h "18 module P r o d u c e r I n t e r c e p t C 19 u s e s 20 i n t e r f a c e Boot ;21 i n t e r f a c e Leds ;22 i n t e r f a c e Timer< T M i l l i > as F l a s h T i m e r ;23 i n t e r f a c e Timer< T M i l l i > as P roduce rT imer ;24 /∗25 ∗ I n t e r f a c e s do P r o t o c o l o C o l l e c t i o n26 ∗ /27 i n t e r f a c e S p l i t C o n t r o l a s R a d i o C o n t r o l ;28 i n t e r f a c e S t d C o n t r o l a s C o l l e c t i o n C o n t r o l ;29 i n t e r f a c e Send ;30 i n t e r f a c e I n t e r c e p t ;31 /∗32 ∗ I n t e r f a c e s da p l a c a mda100cb33 ∗ /34 i n t e r f a c e Read< u i n t 1 6 _ t > as F o t o S e n s o r ;35 i n t e r f a c e Read< u i n t 1 6 _ t > as TempSensor ;36 37 38 i m p l e m e n t a t i o n 3940 u i n t 8 _ t s u b S t a t e = 0 ;41 boo l ledOn = TRUE;42 message_ t s n d B u f f e r ;43 RadioMsg_t∗ r a d i o P o i n t e r ;44 u i n t 1 6 _ t t e m p e r a t u r a = 0 ;45 u i n t 1 6 _ t f o t o = 0 ;4647 s t a t i c vo id u p d a t e R o u t e ( n x _ u i n t 1 6 _ t ∗ r o u t e ) ;4849 e v e n t vo id Boot . bo o t e d ( ) 50 c a l l R a d i o C o n t r o l . s t a r t ( ) ;51 c a l l TempSensor . r e a d ( ) ;52 c a l l F o t o S e n s o r . r e a d ( ) ;53 54 e v e n t vo id R a d i o C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 55 i f ( e r r o r !=SUCCESS) 56 c a l l R a d i o C o n t r o l . s t a r t ( ) ;57 e l s e 58 c a l l C o l l e c t i o n C o n t r o l . s t a r t ( ) ;59 c a l l P roduce rT imer . s t a r t P e r i o d i c ( 1 0 0 0 0 ) ;60 c a l l Leds . led0On ( ) ;61 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 0 ) ;62 63 6465 e v e n t vo id R a d i o C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 66 e v e n t vo id Send . sendDone ( message_ t ∗msg , e r r o r _ t e r r o r ) 6768 e v e n t vo id P roduce rT imer . f i r e d ( ) 69 s w i t c h ( s u b S t a t e )

Page 139: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

120

70 c a s e 2 :71 r a d i o P o i n t e r = ( RadioMsg_t ∗ ) ( c a l l Send . g e t P a y l o a d (& s n d B u f f e r ,

s i z e o f ( RadioMsg_t ) ) ) ;72 r a d i o P o i n t e r −>o r i g e m _ i d = TOS_NODE_ID ;73 r a d i o P o i n t e r −> s a l t o s = 0 ;74 r a d i o P o i n t e r −> r o t a [ 0 ] = TOS_NODE_ID ;75 r a d i o P o i n t e r −>temp = t e m p e r a t u r a ;76 r a d i o P o i n t e r −>f o t o = f o t o ;77 c a l l Send . send (& s n d B u f f e r , s i z e o f ( RadioMsg_t ) ) ;78 s u b S t a t e = 0 ;79 b r e a k ;80 c a s e 1 :81 c a l l F o t o S e n s o r . r e a d ( ) ;82 s u b S t a t e = 2 ;83 b r e a k ;84 d e f a u l t :85 c a l l TempSensor . r e a d ( ) ;86 s u b S t a t e = 1 ;87 b r e a k ;88 89 9091 e v e n t vo id F l a s h T i m e r . f i r e d ( ) 92 i f ( ledOn ) 93 c a l l Leds . led0On ( ) ;94 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 0 ) ;95 e l s e 96 c a l l Leds . l e d 0 O f f ( ) ;97 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 0 0 ) ;98 99 ledOn = ledOn ^ TRUE;

100 101102 e v e n t vo id F o t o S e n s o r . readDone ( e r r o r _ t r e s u l t , u i n t 1 6 _ t v a l ) 103 i f ( r e s u l t ==SUCCESS) 104 f o t o = v a l ;105 106 107108 e v e n t vo id TempSensor . readDone ( e r r o r _ t r e s u l t , u i n t 1 6 _ t v a l ) 109 i f ( r e s u l t ==SUCCESS) 110 t e m p e r a t u r a = v a l ;111 112 113 e v e n t boo l I n t e r c e p t . f o r w a r d ( message_ t ∗msg , vo id ∗ pay load , u i n t 8 _ t

l e n ) 114 RadioMsg_t∗ RadioFw = ( RadioMsg_t ∗ ) p a y l o a d ;115 RadioFw−> s a l t o s ++;116 u p d a t e R o u t e ( RadioFw−> r o t a ) ;117 r e t u r n TRUE;118 119120 s t a t i c vo id u p d a t e R o u t e ( n x _ u i n t 1 6 _ t ∗ r o u t e ) 121 u i n t 8 _ t i ;122 f o r ( i = 0 ; i < 5 ; i ++) 123 i f (∗ r o u t e ==0) 124 ∗ r o u t e = TOS_NODE_ID ;125 b r e a k ;

Page 140: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

121

126 127 r o u t e ++;128 129 130

Código 11 .4: ConsumerAppC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 # i n c l u d e " Glo ba l . h "18 # i n c l u d e " p r i n t f . h "19 c o n f i g u r a t i o n ConsumerAppC 20 i m p l e m e n t a t i o n 21 components MainC , LedsC , ActiveMessageC , ConsumerC , P r i n t f C ;22 components C o l l e c t i o n C ;23 /∗24 ∗ Wiring25 ∗ /26 ConsumerC . Boot−>MainC . Boot ;27 ConsumerC . Rad ioC on t ro l−>Act iveMessageC . S p l i t C o n t r o l ;28 ConsumerC . P r i n t f C o n t r o l −>P r i n t f C . P r i n t f C o n t r o l ;29 ConsumerC . P r i n t f F l u s h −>P r i n t f C . P r i n t f F l u s h ;30 /∗31 ∗ Wiring do P r o t o c o l o C o l l e c t i o n32 ∗ /33 ConsumerC . C o l l e c t i o n C o n t r o l −>C o l l e c t i o n C . S t d C o n t r o l ;34 ConsumerC . Roo tCon t ro l−>C o l l e c t i o n C . R o o t C o n t r o l ;35 ConsumerC . Receive−>C o l l e c t i o n C . Rece ive [TEMP_PHOTO_ID ] ;36

Código 11 .5: ConsumerC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗

Page 141: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

122

12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 # i n c l u d e " Glo ba l . h "18 # i n c l u d e " p r i n t f . h "19 module ConsumerC20 u s e s 21 i n t e r f a c e Boot ;22 i n t e r f a c e P r i n t f F l u s h ;23 i n t e r f a c e S p l i t C o n t r o l a s P r i n t f C o n t r o l ;24 /∗25 ∗ I n t e r f a c e s do P r o t o c o l o C o l l e c t i o n26 ∗ /27 i n t e r f a c e S p l i t C o n t r o l a s R a d i o C o n t r o l ;28 i n t e r f a c e S t d C o n t r o l a s C o l l e c t i o n C o n t r o l ;29 i n t e r f a c e R o o t C o n t r o l ;30 i n t e r f a c e Rece ive ;31 32 3334 i m p l e m e n t a t i o n 3536 s t a t i c vo id u p d a t e R o u t e ( n x _ u i n t 1 6 _ t ∗ r o u t e ) ;3738 e v e n t vo id Boot . bo o t e d ( ) 39 c a l l R a d i o C o n t r o l . s t a r t ( ) ;40 41 e v e n t vo id R a d i o C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 42 i f ( e r r o r !=SUCCESS) 43 c a l l R a d i o C o n t r o l . s t a r t ( ) ;44 e l s e 45 c a l l R o o t C o n t r o l . s e t R o o t ( ) ;46 c a l l C o l l e c t i o n C o n t r o l . s t a r t ( ) ;47 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;48 49 505152 e v e n t message_ t ∗ Rece ive . r e c e i v e ( message_ t ∗msg , vo id ∗ pay load ,

u i n t 8 _ t l e n ) 53 RadioMsg_t∗ RadioRx = ( RadioMsg_t∗ ) p a y l o a d ;54 RadioRx−> s a l t o s ++;55 u p d a t e R o u t e ( RadioRx−> r o t a ) ;56 p r i n t f ( " s r c [%d ] hops[%d ] r o u t e [%d ][%d ][%d ][%d ][%d ] temp [%04X] pho t [%04X

] " ,57 RadioRx−>or igem_id ,58 RadioRx−> s a l t o s ,59 RadioRx−> r o t a [ 0 ] , RadioRx−> r o t a [ 1 ] , RadioRx−> r o t a [ 2 ] , RadioRx−>

r o t a [ 3 ] , RadioRx−> r o t a [ 4 ] ,60 RadioRx−>temp ,61 RadioRx−>f o t o ) ;62 c a l l P r i n t f F l u s h . f l u s h ( ) ;63 r e t u r n msg ;64 65 e v e n t vo id R a d i o C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 66 e v e n t vo id P r i n t f F l u s h . f l u shDone ( e r r o r _ t e r r o r )

Page 142: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

123

67 e v e n t vo id P r i n t f C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 68 i f ( e r r o r !=SUCCESS) 69 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;70 71 72 e v e n t vo id P r i n t f C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 7374 s t a t i c vo id u p d a t e R o u t e ( n x _ u i n t 1 6 _ t ∗ r o u t e ) 75 u i n t 8 _ t i ;76 f o r ( i = 0 ; i < 5 ; i ++) 77 i f (∗ r o u t e ==0) 78 ∗ r o u t e = TOS_NODE_ID ;79 b r e a k ;80 81 r o u t e ++;82 83 84

Page 143: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

Apêndice

VI

Código fonte da experiência prática - Tymo

Código 12 .1: Makefile1 ##############################################################################

2 # U n i v e r s i d a d e de Pernambuco − UPE3 # Depar t amen to de S i s t e m a s e Computacao − DSC4 # Programa de Academico em E n g e n h a r i a da Computacao5 # O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o6 # Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes7 # Aluno : F r e d e r i c o Cox8 ##############################################################################

9 # M a k e f i l e10 ##############################################################################

11 #12 # $ A u t h o r : Fred Cox $13 # $ Rev: 70 $14 # $ D a t e : 2008−12−19 16 : 2 0 : 5 1 −0200 ( Sex , 19 Dez 2008) $15 # $ I d : T inyOS_Plug in_Makef i l e 70 2008−12−19 18 : 2 0 : 5 1 Z Fred Cox $16 #17 ##############################################################################

18 # V a r i a v e i s de a m b i e n t e1920 COMPONENT=GatewayAppC212223 CFLAGS += −I $ (TOSDIR ) / l i b / n e t \24 −I $ (TOSDIR ) / l i b / n e t / tymo \25 −I $ (TOSDIR ) / l i b / n e t / tymo / dymo \26 −I $ (TOSDIR ) / l i b / n e t / tymo / mh \27 −I .2829 TFLAGS += −I ( TOSDIR ) / t y p e s303132 DOCDIR=html−doc3334 #############################################35 # D e f i n i c o e s p a r a o r a d i o − Canal e P o t e n c i a36 #############################################

Page 144: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

125

37 # PA_LEVEL [dBm] C u r r e n t Consumption [mA]38 # 31 0 1 7 . 439 # 27 −1 1 6 . 540 # 23 −3 1 5 . 241 # 19 −5 1 3 . 942 # 15 −7 1 2 . 543 # 11 −10 1 1 . 244 # 7 −15 9 . 945 # 3 −25 8 . 546 #############################################47 PFLAGS += −DCC2420_DEF_RFPOWER=34849 #############################################50 # IEEE 8 0 2 . 1 5 . 4 e s p e c i f i c a 16 c a n a i s51 # numerados de 11 a 2652 #############################################53 PFLAGS += −DCC2420_DEF_CHANNEL=265455 #############################################56 # I n c l u e a b i b l i o t e c a p r i n t f NOVA57 CFLAGS += −I $ (TOSDIR ) / l i b / p r i n t f / 2 _0_258 #############################################59 #Aumenta o p a y l o a d do p r i n t f60 #############################################61 CFLAGS +=−DTOSH_DATA_LENGTH=1606263 #############################################64 # I n c l u e S u p o r t e a p l a c a MDA10065 CFLAGS += −I $ (TOSDIR ) / s e n s o r b o a r d s / mda100 /66 CFLAGS += −I $ (TOSDIR ) / s e n s o r b o a r d s / mda100 / cb67 #############################################68 i f d e f APP_MAKERULES69 i n c l u d e $ (APP_MAKERULES)70 e l s e71 i n c l u d e $ (MAKERULES)72 e n d i f73 #############################################

Código 12 .2: Global.h1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /1718 # i f n d e f GLOBAL_H

Page 145: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

126

19 # d e f i n e GLOBAL_H20 /∗21 ∗ Endereco do gateway ou e s t a c a o base22 ∗ /23 enum 24 DESTINO = 3625 ;262728 /∗29 ∗ E s t r u t u r a da mensagem do r a d i o30 ∗ /31 t y p e d e f n x _ s t r u c t RadioMsg 32 n x _ u i n t 1 6 _ t or igem ;33 n x _ u i n t 1 6 _ t p e r d a s ;34 n x _ u i n t 1 6 _ t s a l t o s ;35 n x _ u i n t 1 6 _ t temp ;36 n x _ u i n t 1 6 _ t f o t o ;37 n x _ u i n t 1 6 _ t t e n s a o ;38 n x _ u i n t 1 6 _ t c o r r e n t e ;39 n x _ u i n t 1 6 _ t c o n t a d o r ;40 RadioMsg_t ;41 # e n d i f /∗ GLOBAL_H ∗ /

Código 12 .3: GatewayAppC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 c o n f i g u r a t i o n GatewayAppC18 19 i m p l e m e n t a t i o n 20 components MainC , LedsC , P r i n t f C , GatewayC , DymoNetworkC ;21 components new TimerMi l l iC ( ) a s F l a s h T i m e r ;222324 GatewayC . Boot−>MainC . Boot ;25 GatewayC . P r i n t f C o n t r o l −>P r i n t f C . P r i n t f C o n t r o l ;26 GatewayC . P r i n t f F l u s h −>P r i n t f C . P r i n t f F l u s h ;27 GatewayC . F lashTimer−>F l a s h T i m e r ;28 GatewayC . Leds−>LedsC . Leds ;2930 /∗31 ∗ Wiring do Tymo32 ∗ /

Page 146: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

127

33 GatewayC . Rad ioC on t ro l−>DymoNetworkC . S p l i t C o n t r o l ;34 GatewayC . MHPacket−>DymoNetworkC . MHPacket ;35 GatewayC . MHSend−>DymoNetworkC . MHSend [ 1 ] ;36 GatewayC . Receive−>DymoNetworkC . Rece ive [ 1 ] ;37 GatewayC . I n t e r c e p t −>DymoNetworkC . I n t e r c e p t [ 1 ] ;3839

Código 12 .4: GatewayC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 # i n c l u d e " p r i n t f . h "18 # i n c l u d e " Glo ba l . h "19 # i n c l u d e " I2C . h "2021 /∗22 ∗ P r o t o c o l o de comunicacao I2C23 ∗24 ∗25 ∗ $C# −> S o l i c i t a Consumo26 ∗27 ∗28 ∗ /2930 module GatewayC31 u s e s 32 i n t e r f a c e Boot ;33 i n t e r f a c e S p l i t C o n t r o l a s P r i n t f C o n t r o l ;34 i n t e r f a c e P r i n t f F l u s h ;35 i n t e r f a c e Timer< T M i l l i > as F l a s h T i m e r ;36 i n t e r f a c e Leds ;3738 /∗39 ∗ I n t e r f a c e s n e c e s s a r i a s do Tymo40 ∗ /41 i n t e r f a c e S p l i t C o n t r o l a s R a d i o C o n t r o l ;42 i n t e r f a c e AMPacket a s MHPacket ;43 i n t e r f a c e AMSend as MHSend ;44 i n t e r f a c e Rece ive ;45 i n t e r f a c e I n t e r c e p t ;46 47 48 i m p l e m e n t a t i o n

Page 147: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

128

4950 boo l ledOn = TRUE;5152 message_ t s n d B u f f e r ;53 RadioMsg_t∗ r a d i o P o i n t e r ;5455 e v e n t vo id Boot . bo o t e d ( ) 56 c a l l R a d i o C o n t r o l . s t a r t ( ) ;57 5859 e v e n t vo id R a d i o C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 60 i f ( e r r o r !=SUCCESS) 61 c a l l R a d i o C o n t r o l . s t a r t ( ) ;62 e l s e 63 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;64 65 6667 e v e n t vo id P r i n t f C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 68 i f ( e r r o r !=SUCCESS) 69 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;70 e l s e 71 c a l l Leds . led0On ( ) ;72 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 ) ;73 p r i n t f ( " S e r v i c o s i n i c i a l i z a d o s com s u c e s s o . . . " ) ;74 c a l l P r i n t f F l u s h . f l u s h ( ) ;75 76 7778 e v e n t vo id P r i n t f C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 79 e v e n t vo id P r i n t f F l u s h . f l u shDone ( e r r o r _ t e r r o r ) 8081 e v e n t vo id F l a s h T i m e r . f i r e d ( ) 82 i f ( ledOn ) 83 c a l l Leds . led0On ( ) ;84 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 ) ;85 e l s e 86 c a l l Leds . l e d 0 O f f ( ) ;87 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 0 0 ) ;88 89 ledOn = ledOn ^ TRUE;90 91929394 e v e n t vo id R a d i o C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 9596 e v e n t vo id MHSend . sendDone ( message_ t ∗msg , e r r o r _ t e r r o r ) 9798 e v e n t message_ t ∗ Rece ive . r e c e i v e ( message_ t ∗msg , vo id ∗ pay load ,

u i n t 8 _ t l e n ) 99 RadioMsg_t∗ RadioMsg = ( RadioMsg_t ∗ ) p a y l o a d ;

100 i f ( c a l l MHPacket . d e s t i n a t i o n ( msg ) ==DESTINO) 101 RadioMsg−> s a l t o s ++;102 p r i n t f ( "%u;%u;%u;%u;%u;%u;%u;%u \ r \ n " ,103 RadioMsg−>origem ,104 RadioMsg−> s a l t o s ,105 RadioMsg−>pe rdas ,

Page 148: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

129

106 RadioMsg−>temp ,107 RadioMsg−>f o t o ,108 RadioMsg−>t e n s a o ,109 RadioMsg−>c o r r e n t e ,110 RadioMsg−>c o n t a d o r111 ) ;112 c a l l P r i n t f F l u s h . f l u s h ( ) ;113 114 r e t u r n msg ;115 116117 e v e n t boo l I n t e r c e p t . f o r w a r d ( message_ t ∗msg , vo id ∗ pay load , u i n t 8 _ t

l e n ) 118 RadioMsg_t∗ RadioFw = ( RadioMsg_t ∗ ) p a y l o a d ;119 RadioFw−> s a l t o s ++;120 r e t u r n TRUE;121 122123124

Código 12 .5: NoColetorAppC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 c o n f i g u r a t i o n NoColetorAppC 18 19 i m p l e m e n t a t i o n 20 components MainC , LedsC , P r i n t f C , NoColetorC , MicaBusC , DymoNetworkC ;21 components new TimerMi l l iC ( ) a s F l a s h T i m e r ;22 components new TimerMi l l iC ( ) a s I2CTimer ;23 components new TimerMi l l iC ( ) a s RxTimer ;24 components new Atm128I2CMasterC ( ) ;25 components new TempC ( ) ;26 components new PhotoC ( ) ;2728 NoColetorC . Boot−>MainC . Boot ;29 NoColetorC . P r i n t f C o n t r o l −>P r i n t f C . P r i n t f C o n t r o l ;30 NoColetorC . P r i n t f F l u s h −>P r i n t f C . P r i n t f F l u s h ;31 NoColetorC . I2CTimer−>I2CTimer ;32 NoColetorC . RxTimer−>RxTimer ;33 NoColetorC . F lashTimer−>F l a s h T i m e r ;34 NoColetorC . Leds−>LedsC . Leds ;35 NoColetorC . TempSensor−>TempC ;

Page 149: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

130

36 NoColetorC . Fo toSenso r−>PhotoC ;3738 /∗39 ∗ I2C Wir ing40 ∗ /41 NoColetorC . Resource−>Atm128I2CMasterC ;42 NoColetorC . I2CPacke t−>Atm128I2CMasterC ;43 NoColetorC . wakeUpPIC−>MicaBusC .PW2;444546 /∗47 ∗ Wiring do Tymo48 ∗ /49 NoColetorC . Rad ioC on t ro l−>DymoNetworkC . S p l i t C o n t r o l ;50 NoColetorC . MHPacket−>DymoNetworkC . MHPacket ;51 NoColetorC . MHSend−>DymoNetworkC . MHSend [ 1 ] ;52 NoColetorC . Receive−>DymoNetworkC . Rece ive [ 1 ] ;53 NoColetorC . I n t e r c e p t −>DymoNetworkC . I n t e r c e p t [ 1 ] ;5455

Código 12 .6: NoColetorC.nc1 /∗2 ∗ ===============================================3 ∗ U n i v e r s i d a d e de Pernambuco − UPE4 ∗ Depar tamen to de S i s t e m a s e Computacao − DSC5 ∗ Programa de Academico em E n g e n h a r i a da Computacao6 ∗ O r i e n t a d o r : P r o f . Abel Gu i lhe rmino da S i l v a F i l h o7 ∗ Co−o r i e n t a d o r : P r o f . Renato Mariz de Moraes8 ∗ Aluno : F r e d e r i c o Cox9 ∗ ===============================================

10 ∗11 ∗12 ∗ . : : A n a l i s e Nodal de E n e r g i a em : : .13 ∗ . : : Redes de S e n s o r e s sem Fio : : .14 ∗15 ∗16 ∗ /17 # i n c l u d e " p r i n t f . h "18 # i n c l u d e " Glo ba l . h "19 # i n c l u d e " I2C . h "2021 /∗22 ∗ P r o t o c o l o de comunicacao I2C23 ∗24 ∗25 ∗ $C# −> S o l i c i t a Consumo26 ∗27 ∗28 ∗ /2930 module NoColetorC 31 u s e s 32 i n t e r f a c e Boot ;33 i n t e r f a c e S p l i t C o n t r o l a s P r i n t f C o n t r o l ;34 i n t e r f a c e P r i n t f F l u s h ;35

Page 150: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

131

36 /∗37 ∗ Timers38 ∗ /39 i n t e r f a c e Timer< T M i l l i > as I2CTimer ;40 i n t e r f a c e Timer< T M i l l i > as RxTimer ;41 i n t e r f a c e Timer< T M i l l i > as F l a s h T i m e r ;4243 /∗44 ∗ P r o t o c o l o I2C45 ∗ /46 i n t e r f a c e I2CPacke t <TI2CBasicAddr> ;47 i n t e r f a c e Resource ;4849 /∗50 ∗ I n t e r r u p c a o e x t e r n a INT0 do PIC51 ∗ /52 i n t e r f a c e Genera l IO as wakeUpPIC ;53 i n t e r f a c e Leds ;5455 /∗56 ∗ S e n s o r e s57 ∗ /58 i n t e r f a c e Read< u i n t 1 6 _ t > as F o t o S e n s o r ;59 i n t e r f a c e Read< u i n t 1 6 _ t > as TempSensor ;6061 /∗62 ∗ I n t e r f a c e s n e c e s s a r i a s do Tymo63 ∗ /64 i n t e r f a c e S p l i t C o n t r o l a s R a d i o C o n t r o l ;65 i n t e r f a c e AMPacket a s MHPacket ;66 i n t e r f a c e AMSend as MHSend ;67 i n t e r f a c e Rece ive ;68 i n t e r f a c e I n t e r c e p t ;69 70 71 i m p l e m e n t a t i o n 7273 u i n t 8 _ t t x D a t a [ 8 ] ;74 u i n t 8 _ t rx Da t a [ 1 6 ] ;7576 boo l ledOn = TRUE;7778 u i n t 1 6 _ t t empSensor = 0 ;79 u i n t 1 6 _ t f o t o S e n s o r = 0 ;8081 message_ t s n d B u f f e r ;82 RadioMsg_t∗ r a d i o P o i n t e r ;8384 u i n t 1 6 _ t c o n t a d o r = 0 ;8586 u i n t 1 6 _ t p e r d a s = 0 ;8788 enum 89 SLAVE_ADDR = 0x6090 ;919293 t a s k vo id p r i n t R x ( ) ;

Page 151: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

132

94 t a s k vo id s e n d P a c k e t ( ) ;9596 e v e n t vo id Boot . bo o t e d ( ) 97 c a l l R a d i o C o n t r o l . s t a r t ( ) ;98 99

100 e v e n t vo id R a d i o C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 101 i f ( e r r o r !=SUCCESS) 102 c a l l R a d i o C o n t r o l . s t a r t ( ) ;103 e l s e 104 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;105 106 107108 e v e n t vo id P r i n t f C o n t r o l . s t a r t D o n e ( e r r o r _ t e r r o r ) 109 i f ( e r r o r !=SUCCESS) 110 c a l l P r i n t f C o n t r o l . s t a r t ( ) ;111 e l s e 112 c a l l wakeUpPIC . makeOutput ( ) ;113 c a l l wakeUpPIC . c l r ( ) ;114 c a l l Leds . led0On ( ) ;115 c a l l I2CTimer . s t a r t P e r i o d i c ( 1 0 0 0 0 ) ;116 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 ) ;117 c a l l TempSensor . r e a d ( ) ;118 c a l l F o t o S e n s o r . r e a d ( ) ;119 p r i n t f ( " S e r v i c o s i n i c i a l i z a d o s com s u c e s s o . . . " ) ;120 c a l l P r i n t f F l u s h . f l u s h ( ) ;121 122 123124 e v e n t vo id P r i n t f C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 125 e v e n t vo id P r i n t f F l u s h . f l u shDone ( e r r o r _ t e r r o r ) 126127 e v e n t vo id I2CTimer . f i r e d ( ) 128 c a l l TempSensor . r e a d ( ) ;129 c a l l F o t o S e n s o r . r e a d ( ) ;130 c a l l wakeUpPIC . s e t ( ) ;131 c a l l Resource . r e q u e s t ( ) ;132 c o n t a d o r ++;133 134135 e v e n t vo id Resource . g r a n t e d ( ) 136 c a l l Leds . led0On ( ) ;137 memcpy ( txData , " $C# " , s t r l e n ( " $C# " ) ) ;138 c a l l I2CPacke t . w r i t e ( I2C_START | I2C_STOP , SLAVE_ADDR, s i z e o f ( r xD a t a )

, &t x D a t a [ 0 ] ) ;139 p r i n t f ( " S o l i c i t a n d o I2C . . . " ) ;140 c a l l P r i n t f F l u s h . f l u s h ( ) ;141 142143 async e v e n t vo id I2CPacke t . readDone ( e r r o r _ t e r r o r , u i n t 1 6 _ t addr ,

u i n t 8 _ t l e n g t h , u i n t 8 _ t ∗ d a t a ) 144 i f ( e r r o r ==SUCCESS) 145 p o s t p r i n t R x ( ) ;146 p o s t s e n d P a c k e t ( ) ;147 148 c a l l Resource . r e l e a s e ( ) ;149 c a l l wakeUpPIC . c l r ( ) ;

Page 152: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

133

150 151152 async e v e n t vo id I2CPacke t . wr i t eDone ( e r r o r _ t e r r o r , u i n t 1 6 _ t addr ,

u i n t 8 _ t l e n g t h , u i n t 8 _ t ∗ d a t a ) 153 i f ( e r r o r ==SUCCESS) 154 c a l l RxTimer . s t a r t O n e S h o t ( 1 0 0 ) ;155 e l s e 156 c a l l Resource . r e l e a s e ( ) ;157 c a l l wakeUpPIC . c l r ( ) ;158 159160 161162163 t a s k vo id s e n d P a c k e t ( ) 164 r a d i o P o i n t e r = ( RadioMsg_t ∗ ) c a l l MHSend . g e t P a y l o a d (& s n d B u f f e r ,

s i z e o f ( RadioMsg_t ) ) ;165 r a d i o P o i n t e r −>or igem = TOS_NODE_ID ;166 r a d i o P o i n t e r −> s a l t o s = 0 ;167 r a d i o P o i n t e r −>f o t o = f o t o S e n s o r ;168 r a d i o P o i n t e r −>temp = tempSensor ;169 r a d i o P o i n t e r −>p e r d a s = p e r d a s ;170 r a d i o P o i n t e r −>t e n s a o = r x Da ta [ 2 ] ;171 r a d i o P o i n t e r −>t e n s a o = r a d i o P o i n t e r −>t e n s a o < <8;172 r a d i o P o i n t e r −> t e n s a o = r a d i o P o i n t e r −>t e n s a o | r x Da ta [ 3 ] ;173 r a d i o P o i n t e r −> c o r r e n t e = r x Da ta [ 4 ] ;174 r a d i o P o i n t e r −> c o r r e n t e = r a d i o P o i n t e r −> c o r r e n t e < <8;175 r a d i o P o i n t e r −> c o r r e n t e = r a d i o P o i n t e r −> c o r r e n t e | r x Da ta [ 5 ] ;176 r a d i o P o i n t e r −>c o n t a d o r = c o n t a d o r ;177 c a l l MHSend . send (DESTINO , &s n d B u f f e r , s i z e o f ( RadioMsg_t ) ) ;178 179180 t a s k vo id p r i n t R x ( ) 181 p r i n t f ( " RX: %02X %02X %02X %02X %02X %02X %02X\ r \ n " , r xD a t a [ 0 ] ,

r xD a t a [ 1 ] , r xD a t a [ 2 ] , r xD a ta [ 3 ] , r xD a ta [ 4 ] , r x Da ta [ 5 ] , r x Da ta [ 6 ] ) ;182 c a l l P r i n t f F l u s h . f l u s h ( ) ;183 184185 e v e n t vo id F l a s h T i m e r . f i r e d ( ) 186 i f ( ledOn ) 187 c a l l Leds . led0On ( ) ;188 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 ) ;189 e l s e 190 c a l l Leds . l e d 0 O f f ( ) ;191 c a l l F l a s h T i m e r . s t a r t O n e S h o t ( 1 0 0 0 ) ;192 193 ledOn = ledOn ^ TRUE;194 195196197198 e v e n t vo id R a d i o C o n t r o l . s topDone ( e r r o r _ t e r r o r ) 199200 201202 e v e n t vo id MHSend . sendDone ( message_ t ∗msg , e r r o r _ t e r r o r ) 203 i f ( e r r o r ==SUCCESS) 204 p e r d a s = 0 ;

Page 153: Análise Nodal de Consumo de Energia para Redes de Sensores sem Fio

134

205 e l s e 206 p e r d a s ++;207 208 209210 e v e n t message_ t ∗ Rece ive . r e c e i v e ( message_ t ∗msg , vo id ∗ pay load ,

u i n t 8 _ t l e n ) 211212 r e t u r n msg ;213 214215 e v e n t boo l I n t e r c e p t . f o r w a r d ( message_ t ∗msg , vo id ∗ pay load , u i n t 8 _ t

l e n ) 216 RadioMsg_t∗ RadioFw = ( RadioMsg_t ∗ ) p a y l o a d ;217 RadioFw−> s a l t o s ++;218 r e t u r n TRUE;219 220221 e v e n t vo id RxTimer . f i r e d ( ) 222 memset(& rx Da t a [ 0 ] , 0 x00 , s i z e o f ( rx D a t a ) ) ;223 c a l l I2CPacke t . r e a d ( I2C_START | I2C_STOP , SLAVE_ADDR, s i z e o f ( r xD a t a ) ,

&rx Da t a [ 0 ] ) ;224 225226 e v e n t vo id F o t o S e n s o r . readDone ( e r r o r _ t r e s u l t , u i n t 1 6 _ t v a l ) 227 i f ( r e s u l t ==SUCCESS) 228 f o t o S e n s o r = v a l ;229 230 231232 e v e n t vo id TempSensor . readDone ( e r r o r _ t r e s u l t , u i n t 1 6 _ t v a l ) 233 i f ( r e s u l t ==SUCCESS) 234 tempSensor = v a l ;235 236 237

Código 12 .7: volumes-at45db.xml1 < v o l u m e _ t a b l e >2 <volume name="DYMODATA" s i z e =" 131072 " / >3 < / v o l u m e _ t a b l e >