• Nenhum resultado encontrado

Sincronização temporal para dispositivos com conexão sem fio de baixo consumo de energia

N/A
N/A
Protected

Academic year: 2017

Share "Sincronização temporal para dispositivos com conexão sem fio de baixo consumo de energia"

Copied!
89
0
0

Texto

(1)

PROGRAMA DE P ´

OS-GRADUAC

¸ ˜

AO EM ENGENHARIA EL´

ETRICA

Fernando Biazi Nascimento

SINCRONIZAC

¸ ˜

AO TEMPORAL PARA DISPOSITIVOS COM

CONEX ˜

AO SEM FIO DE BAIXO CONSUMO DE ENERGIA

(2)

SINCRONIZAC¸ ˜AO TEMPORAL PARA DISPOSITIVOS COM CONEX ˜AO SEM FIO DE BAIXO CONSUMO DE ENERGIA

Disserta¸c˜ao apresentada ao Programa de P´os-Gradua¸c˜ao em Engenharia El´etrica da Universidade Presbiteriana Mackenzie como requisito parcial para obten¸c˜ao do t´ıtulo de Mestre em Engenharia El´etrica.

Orientador: Prof. Dr. Paulo Batista Lopes

(3)

N244s

Nascimento, Fernando Biazi

Sincronização temporal para dispositivos com conexão sem fio de baixo consumo de energia. / Fernando Biazi Nascimento – São Paulo, 2014.

87 f.: il.; 30 cm.

Dissertação (Programa de Pós-Graduação (Stricto Sensu) em Engenharia Elétrica) - Universidade Presbiteriana Mackenzie - São Paulo, 2014.

Orientador: Prof. Paulo Batista Lopes Bibliografia: f. 80-81.

1. Sincronização. 2. Dispositivo de baixa potência. 3. IEEE1588. 4. PTP. 5. IEC61588. 6. Sincronização de relógios. 7. Redes sem fio. I.Título.

(4)

SINCRONIZAC¸ ˜AO TEMPORAL PARA DISPOSITIVOS COM CONEX ˜AO SEM FIO DE BAIXO CONSUMO DE ENERGIA

Disserta¸c˜ao apresentada ao Programa de P´os-Gradua¸c˜ao em Engenharia El´etrica da Universidade Presbiteriana Mackenzie como requisito parcial para obten¸c˜ao do t´ıtulo de Mestre em Engenharia El´etrica.

Aprovado em 23 de outubro de 2014

Prof. Dr. Paulo Batista Lopes Orientador

Prof. Dr. Luis Geraldo Pedroso Meloni Universidade Estadual de Campinas

Prof. Dr. Paulo Alves Garcia Universidade Presbiteriana Mackenzie

(5)
(6)

Ao meu orientador, Prof. Dr. Paulo Batista Lopes, por toda a aten¸c˜ao, paciˆencia, empenho em auxiliar, hospitalidade em sua sala e, principalmente, por ser um bom amigo durante o desenvolvimento do trabalho.

Aos meus pais, F´abio T. S. Nascimento e Vilma B. Nascimento pela compre-ens˜ao e apoio sempre que poss´ıvel.

`

A Prof.a

Dr.a

Ivanilda Matile pelo grande incentivo inicial e encorajamento para que eu iniciasse o curso do qual este trabalho ´e resultado.

`

A Prof.a

Dr.a

Sandra Stump e `a Prof.a

Dr.a

Poliana Mustaro pelos conheci-mentos de t´ecnicas e diretrizes de pesquisa e de elabora¸c˜ao de trabalhos acadˆemicos.

`

A Texas Instruments IncorporatedR

pelos kits doados ao PPGEE, que foram utilizados para o desenvolvimento deste trabalho.

(7)

O presente trabalho consiste em uma implementa¸c˜ao de protocolo de distribui¸c˜ao de tempo baseado no PTP, definido na norma IEC 61588:2009/IEEE 1588-2008 a ser utilizado em dispositivos sem fio de baixo consumo de energia. A distribui¸c˜ao de tempo ´e importante para determinar a ordem de ocorrˆencia de eventos marcados em contagens distintas que podem ent˜ao ser relacionadas. E os problemas de falta de sincronia s˜ao evidentes em circunstˆancias que v˜ao de estudo de fatos hist´oricos at´e a verifica¸c˜ao de intrusos em equipamentos modernos conectados `a internet. O trabalho contou com desenvolvimento de um software completamente novo para o micro-controlador MSP430F2274TM

utilizando o controlador de rede CC2480TM

. A implementa¸c˜ao do protocolo considera um dos mecanismos apresentados pela norma e ficou muito pr´oxima, n˜ao atendendo-a plenamente principalmente por falta de recursos no dispositivo utilizado, mas manteve o comportamento previsto. Os dispositivos sincronizam os tempos entre eles e sintonizam suas contagens de tempo, de forma a reduzir, tanto quanto poss´ıvel, o ajuste de futuras sincroniza¸c˜oes.

(8)

The present work consists of an implementation of time distribution protocol based on PTP disclosed in the IEC 61588:2009 / IEEE 1588-2008 standard to be used in low-power wireless devices. The distribution of time is important to determine the order of occur-rence of events marked in distinct counts that can then be related. And the problems of lack of synchronicity are evident in circumstances ranging from the study of historical facts up to the investigation of intruders in modern equipments connected to the inter-net. The work included development of a completely new software for the microcontroller MSP430F2274TM

using the CC2480TM

network controller. The implementation of the pro-tocol considers one of the mechanisms described by the standard and remains very close to it, not fully conformant mainly because of lack of resources on the used device, but the expected behavior was kept. The devices synchronize the time between them and sintonize their time counting, in a way to reduce, as much as possible, the adjustments of further synchronizations.

(9)

1 Placa do kit ez430-RF2480, lado do micro-controlador MSP430F2274TM

. 27 2 Placa do kit ez430-RF2480, lado do CC2480TM

. . . 27

3 Diagrama de uso entre as unidades do SZS. . . 32

4 M´aquina de estados da unidade ADC. . . 33

5 M´aquina de estados da unidade button. . . 34

6 M´aquina de estados da unidade de interface com o CC2480TM . . . 34

7 M´aquina de estados da unidade de controle de led. . . 36

8 M´aquina de estados da unidade de rede. . . 37

9 M´aquina de estados da unidade SPI. . . 39

10 Janela do programa SZSM - Pacotes capturados. . . 41

11 Janela do programa SZSM - Leituras dos sensores. . . 42

12 Janela do programa SZSM - Registros de atrasos do canal e ajustes. . . 42

13 Troca de mensagens para medida de atraso nos mecanismos E2E (a), e P2P (b). . . 45

14 Algoritmo de decis˜ao de estado. . . 48

15 L´ogica do evento de decis˜ao de estado. . . 49

16 M´aquina de estados do protocolo. . . 50

17 Diagrama de uso entre as unidades do SZSPTP. . . 51

18 Fluxograma da fun¸c˜ao ptp process. . . 54

19 Fluxograma do tratamento de uma mensagem de an´uncio recebida. . . . 65

20 Arranjo para medi¸c˜ao e registro dos atrasos e ajustes dos rel´ogios dos dispositivos. . . 71

21 Atrasos e corre¸c˜oes no rel´ogio pelo tempo, 2 dispositivos. . . 72

22 Ocorrˆencias para atrasos do canal e corre¸c˜oes no rel´ogio, 2 dispositivos. . 72

23 Atrasos e corre¸c˜oes no rel´ogio pelo tempo, 3 dispositivos. . . 73

24 Ocorrˆencias para atrasos do canal e corre¸c˜oes no rel´ogio, 3 dispositivos. . 73

25 Atrasos e corre¸c˜oes nos rel´ogios pelo tempo, rel´ogio interno do dispositivo 3C36, 3 dispositivos. . . 75

(10)
(11)

1 Uso de mem´oria dos programas ZASA e SZS. . . 70 2 Dados estat´ısticos de atrasos do canal e ajustes dos rel´ogios. . . 74 3 Dados estat´ısticos de atrasos do canal e ajustes dos rel´ogios, tempo pelo

(12)

ADC —Analogic-digital converter - Conversor anal´ogico-digital.

API —Application Programming Interface - Interface de programa¸c˜ao de aplicativo. ANSI —American National Standards Institute - Instituto de Padr˜oes Nacionais

Ame-ricanos.

Big-endian — Modo de ordenamento em que elementos maiores ou de ´ındice maior s˜ao posicionados antes de elementos menores ou de ´ındice menor.

BIPM —Bureau International des Poids et Mesures - Escrit´orio internacional de pesos e medidas.

BMC — Best master clock - Melhor rel´ogio mestre.

BPL —Broadband over powerline - Banda larga sobre linha de energia.

Buffer — ´Area de armazenamento tempor´aria de armazenamento de dados que aguar-dam processamento.

Clock — Frequˆencia de opera¸c˜ao de um micro-processador ou micro-controlador. Datasheet — Documento que descreve caracter´ısticas de componentes eletrˆonicos. GPIO —General purpose input and output - Entrada e sa´ıda de uso geral.

GPS — Global positioning system - Sistema de posicionamento global. GPS time — Tempo utilizado no GPS.

Grace — Plataforma de configura¸c˜ao de micro-controladores do Code Composer StudioTM IDE.

IDE —Integrated Development Environment - Ambiente de desenvolvimento integrado. IEC —International Electrotechnical Commission.

IEEE —Institute of Electrical and Electronics Engineers, Inc. IETF —Internet Engineering Task Force.

Little-endian — Modo de ordenamento em que elementos menores ou de ´ındice menor s˜ao posicionados antes de elementos maiores ou de ´ındice maior.

LPM — Low power mode - baixo consumo de energia.

Micro-controlador — Micro-processador associado a perif´ericos agregados em um ´unico encapsulamento.

NTP —Network time protocol - Protocolo de tempo de rede.

PLC —Powerline communications - Comunica¸c˜oes em linha de energia. PTP —Precision time protocol - Protocolo de tempo preciso.

RTC — Real Time Clock - Rel´ogio de tempo real, componente ou dispositivo que pos-sui a fun¸c˜ao de manter um hor´ario, independentemente de outros componentes ou dispositivos.

S.I. — Syst`eme International d’Unit´es - Sistema internacional de Unidades. SPI —Serial Peripheral Interface - Interface serial de perif´ericos.

(13)

deste trabalho.

SZSPTP — SZS com protocolo de distribui¸c˜ao de tempo baseado no PTP, definido no t´ıtulo 4.3 deste trabalho.

TAI — Temps atomique international - tempo atˆomico internacional.

TA(k) — Representa¸c˜ao do tempo de um rel´ogio atˆomico espec´ıfico, k ´e substitu´ıdo pela sigla da organiza¸c˜ao.

UTC — Coordinated universal time ou temps universel coordonn´e - Tempo universal coordenado. A sigla foi definida assim como compromisso entre a vers˜ao em inglˆes e a vers˜ao em francˆes.

(14)

1 INTRODUC¸ ˜AO . . . 14

1.1 JUSTIFICATIVA . . . 16

1.2 OBJETIVOS . . . 18

1.3 METODOLOGIA . . . 18

1.4 ESTRUTURA DO TRABALHO . . . 19

2 O TEMPO . . . 20

2.1 CONTAGEM DO TEMPO . . . 20

2.2 DISTRIBUIC¸ ˜AO DE TEMPO . . . 22

2.2.1 Referˆencias de tempo . . . 22

2.2.2 Norma IEC 61588:2009/IEEE 1588-2008 . . . 24

2.2.3 Outros Trabalhos Utilizando a Norma IEC 61588:2009/IEEE 1588-2008 . . . 25

3 DISPOSITIVO UTILIZADO: EZ430-RF2480 . . . 26

4 DESENVOLVIMENTO . . . 29

4.1 DESENVOLVIMENTO DO SOFTWARE DE REDE ZIGBEE . . . 30

4.1.1 Procedimentos do SZS . . . 30

4.1.2 Unidades do SZS . . . 31

4.1.2.1 Unidade principal (main) . . . 32

4.1.2.2 ADC . . . 32

4.1.2.3 Bot˜ao . . . 33

4.1.2.4 Interface com o CC2480TM . . . 34

4.1.2.5 Rel´ogio . . . 35

4.1.2.6 LED . . . 35

4.1.2.7 Rede . . . 36

4.1.2.8 Relat´orio . . . 38

4.1.2.9 SPI . . . 38

4.1.2.10 UART . . . 38

4.2 PROGRAMA DE MONITORAMENTO . . . 40

4.3 IMPLEMENTAC¸ ˜AO DO PROTOCOLO DE DISTRIBUIC¸ ˜AO DE TEMPO . . . 43

4.3.1 Escolha do mecanismo de determina¸c˜ao de atraso . . . 43

4.3.2 Estrutura dos dados e formato dos pacotes . . . 46

4.3.3 Procedimentos do SZSPTP . . . 47

4.3.4 Unidades do SZSPTP . . . 50

4.3.4.1 PTP . . . 52

4.3.4.2 Tipos PTP . . . 55

(15)

4.3.4.5 Conjuntos de dados PTP . . . 58

4.3.4.6 Rel´ogio PTP . . . 62

4.3.4.7 Mensagens PTP . . . 63

4.3.4.8 Utilidades PTP . . . 65

4.3.5 Problemas encontrados e solu¸c˜oes . . . 66

5 TESTES EXPERIMENTAIS E RESULTADOS . . . 69

5.1 COMPARAC¸ ˜AO ENTRE O ZASA E O SZS . . . 69

5.2 SINCRONIZAC¸ ˜AO E SINTONIZAC¸ ˜AO . . . 70

6 CONCLUS ˜AO . . . 78

6.1 PROPOSTAS PARA TRABALHOS FUTUROS . . . 79

REFERˆENCIAS BIBLIOGR ´AFICAS. . . 80

(16)

1 INTRODUC¸ ˜AO

O tempo ´e uma dimens˜ao, que se propaga em uma ´unica dire¸c˜ao, e sua medida com-pleta a medida de espa¸co para determinar posi¸c˜ao, seja de objetos, referˆencias ou qualquer outra utilidade.

A medida de tempo ´e t˜ao importante quanto a medida do espa¸co, pois o local pode ser alterado com o passar do tempo. Quando uma referˆencia de local ´e feita para um objeto ou evento, a referˆencia de tempo ´e necess´aria, exceto se o local permanece o mesmo independentemente do tempo. Muitas vezes o tempo est´a impl´ıcito na referˆencia, por exemplo o tempo presente ou tempo passado, mesmo que n˜ao definido com precis˜ao.

O registro de medidas de grandezas dinˆamicas ou eventos exige a informa¸c˜ao do mo-mento em que se realizam. Temperatura ao longo do dia, passagem de um maratonista pela linha de chegada, controle de acesso (f´ısico ou virtual - de inform´atica), eventos at-mosf´ericos, descontinuidades em um sistema de transmiss˜ao de energia el´etrica s˜ao exem-plos cuja informa¸c˜ao do momento ´e exigida, no caso de controle de acesso, o tempo se torna importante para seguran¸ca, tanto para registro quanto para definir e aplicar restri¸c˜oes.

Toda a medida deve ser feita com base em referˆencias, e com o tempo n˜ao ´e diferente. A contagem dos anos por exemplo se incrementa a cada ciclo de quatro esta¸c˜oes – Primavera, Ver˜ao, Outono e Inverno – e inicia-se em 1 no suposto primeiro ano de vida de Jesus Cristo. Para que a mudan¸ca na contagem coincida com a mudan¸ca de um dia para outro (meia noite), foi criado o ano bissexto1

.

A precis˜ao necess´aria do tempo depende de como este ´e empregado, por exemplo, uma pessoa que encontra outra deve fazˆe-lo com precis˜ao de minutos. A autentica¸c˜ao de opera¸c˜oes banc´arias com tokens baseados em tempo deve ser feita com precis˜ao de segun-dos2

e a medi¸c˜ao de tempo de carros de corrida ´e feita at´e mil´esimos de segundo. Outras aplica¸c˜oes podem exigir precis˜ao maior, como a necess´aria para realizar comunica¸c˜ao com modula¸c˜ao porSpread Spectrum, que depende da capacidade e robustez da comunica¸c˜ao. Dispositivos que medem o tempo s˜ao chamados rel´ogios, e n˜ao se referem apenas aos rel´ogios comuns de pulso ou de parede, mas tamb´em a dispositivos presentes em diversos equipamentos, uma parte de um dispositivo s´olido ou at´e mesmo firmware ou software.

Micro-processadores e micro-controladores possuem opera¸c˜ao baseada em sinais que se alternam entre dois valores. Esta mudan¸ca entre os valores permite a opera¸c˜ao de flip-flop’s que formam as estruturas utilizadas para o armazenamento e processamento dos dados. Um oscilador, interno ou externo, fornece a base de tempo para estas mudan¸cas de estado, que ocorrem a uma frequˆencia definida e relativamente est´avel. A referˆencia

1

O Ano bissexto possui 366 dias ao inv´es dos normais 365 e ocorre quando a contagem dos anos ´e divis´ıvel por 4, exceto quando tamb´em ´e divis´ıvel por 100, caso em que ´e um ano normal, por´em o ano sempre ´e bissexto quando ´e divis´ıvel por 400. Portanto, em cada per´ıodo de 400 anos, 97 s˜ao bissextos.

2

(17)

para se trabalhar com tais dispositivos ´e o n´umero de ciclos do oscilador que permite as mudan¸cas de estado ou o n´umero de ciclos de instru¸c˜ao. Normalmente cada ciclo de instru¸c˜ao equivale a algumas unidades de ciclos de oscilador. Os ciclos do oscilador podem ser convertidos para segundos pois h´a uma freq¨uˆencia definida e razoavelmente est´avel.

Cada ciclo de instru¸c˜ao pode ser uma ou mais unidades de ciclos de oscilador, por´em as instru¸c˜oes podem utilizar um n´umero vari´avel de ciclos de oscilador ou instru¸c˜ao, mesmo que elas perten¸cam a um mesmo dispositivo. Como exemplo, o ciclo de m´aquina do mi-crocontrolador AT89S8253 consiste de 12 ciclos de oscilador segundo a Atmel Corporation (2010) e cada instru¸c˜ao utiliza 12, 24 ou 48 ciclos de oscilador Atmel Corporation (2006). Ao encapsular mais componentes em um ´unico chip, reduz-se a complexidade dos projetos, que utilizam menos componentes a serem interligados, e o tamanho dos equipa-mentos, al´em do consumo de energia, que tamb´em pode ser reduzido.

Dispositivos compactos s˜ao cada vez mais utilizados, n˜ao somente nas aplica¸c˜oes atuais, mas a pr´opria quantidade de aplica¸c˜oes continua a crescer. Uma aplica¸c˜ao j´a estabelecida ´e a utiliza¸c˜ao como sensores. Sensores sem fio melhoram a versatilidade e a facilidade de instala¸c˜ao ao eliminar a necessidade de conex˜oes cabeadas, por´em h´a o problema da alimenta¸c˜ao de energia necess´aria ao funcionamento do dispositivo, para processamento de dados e comunica¸c˜ao.

Com a populariza¸c˜ao do conceito de Internet das coisas (IoT - Internet of Things), um n´umero imenso de dispositivos tem sido agregado `a grande rede. Termostatos, ele-trodom´esticos, sensores biom´etricos, etc., tem incorporado interfaces e protocolos de co-munica¸c˜ao. Para possibilitar uma instala¸c˜ao conveniente e pr´atica, adota-se em muitos casos, uma implementa¸c˜ao em redes de sensores sem fios.

Dispositivos sem fio tˆem que limitar seu uso de energia, pois por n˜ao terem alimenta¸c˜ao por cabos, a disponibilidade de energia ´e baixa, proveniente de capta¸c˜ao de energia ou de baterias. Como consequˆencia, qualquer tarefa que exige consumo de energia deve ser executada somente se necess´ario.

Como exemplo de aplica¸c˜ao, em uma rede de distribui¸c˜ao de energia do tipo Smart Grid os dispositivos fazem o monitoramento e, quando um evento ocorre, devem regis-trar junto com as informa¸c˜oes do evento, o momento em que ocorreu. Desta forma os fenˆomenos podem ser melhor analisados.

Algumas medi¸c˜oes que podem estar presentes em redes Smart Grid s˜ao tens˜ao entre fases ou entre fase e terra, corrente em cada cabo, tens˜ao entre terminais de transfor-madores, temperatura em componentes da rede, incluindo transfortransfor-madores, sincrofasores, intensidade de harmˆonicos e sinais que podem ser transmitidos pela rede e luminosidade, para acionamento da ilumina¸c˜ao p´ublica, al´em do estado de funcionamento de equipa-mentos.

(18)

nor-malmente ´e 50 Hz a 60 Hz, mas com o estudo de harmˆonicos e transmiss˜ao de dados sobre linha de energia em tecnologias como PLC (Powerline Communications - Comu-nica¸c˜oes em linha de energia) ou BPL (Broadband over powerline - Banda larga sobre linha de energia), a exigˆencia torna-se maior, dependendo do que est´a sendo monitorado ou estudado.

A norma IEC 61588:2009/IEEE 1588-2008 (IEC, 2009), publica¸c˜ao pelo IEC ( Interna-tional Electrotechnical Commission – Comiss˜ao Eletrot´ecnica Internacional) da norma do IEEE (Institute of Electrical and Electronics Engineers – Instituto de engenheiros eletri-cistas e eletrˆonicos) normaliza o protocolo PTP (Precision Time Protocol - Protocolo de tempo preciso), que define m´etodos para distribui¸c˜ao de tempo entre dispositivos, consis-tindo em sincroniza¸c˜ao e sintoniza¸c˜ao. A norma permite alguma flexibilidade para ajustar seu emprego a sistemas espec´ıficos e pretende estabelecer regras para o ajuste de rel´ogios de dispositivos com a maior precis˜ao poss´ıvel no sistema dos quais fazem parte.

Este trabalho baseia-se nesta norma para implementar a distribui¸c˜ao de tempo em dispositivos sem fio de baixo consumo de energia com fun¸c˜oes de sensores e medir seu desempenho quanto `a precis˜ao e estabilidade de forma experimental, baseando-se nos ajustes realizados nos rel´ogios dos dispositivos com base no pr´oprio protocolo.

1.1 JUSTIFICATIVA

A medida de tempo ´e necess´aria para diversos fins, incluindo, mas n˜ao se limitando a seguran¸ca, ordenamento, reconstitui¸c˜ao de uma s´erie de eventos, determina¸c˜ao de causa e efeito/consequˆencia, sendo que diferentes aplica¸c˜oes exigem diferentes n´ıveis de precis˜ao. Em dispositivos de sensores sem fio de baixo consumo de energia, que armazenam as medi¸c˜oes antes de envi´a-las, a natureza das medidas ou de suas aplica¸c˜oes pode tornar im-portante o registro do tempo, portanto a distribui¸c˜ao de uma mesma referˆencia de tempo ´e necess´aria, entre todos os dispositivos da rede. O tempo em micro-controladores pode ser contado com precis˜ao suficiente (e necess´aria para a aplica¸c˜ao) para que o intervalo necess´ario para a transmiss˜ao da referˆencia entre dois dispositivos cause erro significante. Observando a aplica¸c˜ao de sensores sem fio em monitoramento de redes de distribui¸c˜ao de energia el´etrica Smart Grid, nota-se a necessidade da distribui¸c˜ao da referˆencia de tempo para relacionar as medidas em cada ponto de medi¸c˜ao, mesmo que sofram atrasos para serem enviadas ao local de armazenamento de dados. Esta poss´ıvel aplica¸c˜ao motivou a realiza¸c˜ao deste trabalho: implementar algoritmo de distribui¸c˜ao de tempo que possa ser utilizado em redes de sensores sem fio para monitoramento de Smart Grid.

(19)

inspe¸c˜ao visual por equipes de campo durante as ocorrˆencias, o que acontece na pr´atica atualmente.

A inspe¸c˜ao visual n˜ao pode ser substitu´ıda por medi¸c˜oes e continua sendo necess´aria, mas com informa¸c˜oes pr´evias se torna mais precisa, e h´a dados que n˜ao est˜ao presentes em uma inspe¸c˜ao visual.

Os sensores tamb´em auxiliariam na tomada de decis˜oes sobre as manobras para redis-tribui¸c˜ao de carga das redes de energia, em equipamentos operando com sobrecarga ou com folga, o que pode ocorrer apenas em hor´arios espec´ıficos.

Sensores com estampas de tempo sincronizadas podem ser ´uteis em casos de desliga-mento, apontando, por exemplo um comportamento anormal de um componente ou uma parte da rede que provoca o acionamento de um sistema de prote¸c˜ao ou uma falha.

Outra aplica¸c˜ao para a distribui¸c˜ao de referˆencia de tempo ´e a internet das coisas, na qual v´arios equipamentos s˜ao interligados por meio de uma redead hoc sem fio.

Em todas as aplica¸c˜oes, todavia, os sensores devem ter custo suficientemente acess´ıvel para que seu uso seja disseminado. Este requisito implica no emprego de micro-controladores com recursos racionados (quantidade limitada de mem´oria, frequˆencia de opera¸c˜ao n˜ao muito elevada, etc.).

No caso de medi¸c˜oes em Smart Grid, o uso de dispositivos de baixo consumo, que podem ser alimentados diretamente por energia captada ou por per´ıodos prolongados com armazenamento de pouca energia, n˜ao representar´a impacto significativo na rede.

O custo reduzido torna a implanta¸c˜ao de tais sensores com sincroniza¸c˜ao de rel´ogio vantajosa, em face da melhoria no aproveitamento dos equipamentos da rede, incluindo tanto a melhor utiliza¸c˜ao da capacidade dos equipamentos como melhoria da vida ´util, desde que a utiliza¸c˜ao se beneficie das medi¸c˜oes dos sensores.

Consequentemente, faz-se necess´aria uma investiga¸c˜ao sobre a implementa¸c˜ao de dis-tribui¸c˜ao de referˆencia temporal em redes de sensores sem fio, usando dispositivos com recursos escassos.

Os resultados tamb´em podem ser ´uteis para a utiliza¸c˜ao deste protocolo em dispositivos de outras naturezas, com conex˜oes por meio de cabo ou que n˜ao sejam de baixo consumo de energia.

A norma IEC 61588:2009/IEEE 1588-2008 define um protocolo para a distribui¸c˜ao de tempo, incluindo o registro da precis˜ao dispon´ıvel para cada dispositivo que atende `as suas especifica¸c˜oes, e foi definida de modo a permitir precis˜ao melhor que um nano-segundo dependendo dos equipamentos utilizados e meios de comunica¸c˜ao, mas n˜ao imp˜oe limite que dependa de precis˜ao.

(20)

1.2 OBJETIVOS

Este trabalho tem como objetivo prim´ario a implementa¸c˜ao de um protocolo de sin-croniza¸c˜ao de rel´ogios entre dispositivos interconectados por meio de redes sem fio e de baixo consumo de energia.

Embora o foco esteja em dispositivos com conex˜oes sem fio de baixo consumo de energia, como redes de sensores sem fio, tamb´em ´e objetivo que os algoritmos desenvolvidos possam ser reutilizados para outros tipos de dispositivos, mesmo que adapta¸c˜oes sejam necess´arias.

Documentar as dificuldades encontradas, principalmente relacionadas ao limite de mem´oria, com a solu¸c˜ao ou contorno do problema.

Reproduzir, tanto quanto poss´ıvel, o comportamento especificado na norma de re-ferˆencia para distribui¸c˜ao de tempo, considerando a escolha entre modos de opera¸c˜ao, que dependem das caracter´ısticas do dispositivo em utiliza¸c˜ao. A norma estabelece mo-dos de opera¸c˜ao distintos a serem escolhimo-dos para uso, desta forma, alguns momo-dos podem n˜ao ser utilizados e n˜ao h´a necessidade de implementa¸c˜ao para atingir o objetivo do trabalho.

Em contraste aos outros trabalhos listados, este trabalho prop˜oe a utiliza¸c˜ao de um hardware muito restrito em termos de mem´oria e processamento, e acess´ıvel, com a in-ten¸c˜ao de implementar o protocolo de distribui¸c˜ao de tempo com custo baixo, utilizando-se de poucos recursos, mas com uma aplica¸c˜ao funcional.

1.3 METODOLOGIA

Este trabalho baseia-se em uma pesquisa bibliogr´afica de artigos, normas t´ecnicas, livros, p´aginas de internet, datasheet’s de componentes e documenta¸c˜ao de programas, seguida de desenvolvimento do tema com implementa¸c˜ao de algoritmos e transcri¸c˜ao em c´odigo de programa¸c˜ao.

A linguagem de programa¸c˜ao escolhida para o dispositivo ´e C, pois oferece um boa inteligibilidade enquanto permite boa intera¸c˜ao com o hardware. Al´em disso ´e provavel-mente a linguagem mais aceita por compiladores para dispositivos l´ogico-program´aveis. Para programas de computador, a linguagem escolhida ´e Object Pascal, porque possui ferramenta que permite compila¸c˜ao em c´odigo real (n˜ao interpretado) para v´arias ar-quiteturas de sistemas operacionais ou mesmo de processadores com pouca ou nenhuma adapta¸c˜ao do c´odigo fonte.

(21)

1.4 ESTRUTURA DO TRABALHO

Este trabalho est´a organizado em 6 cap´ıtulos, s˜ao eles e seus respectivos objetivos:

1. Introdu¸c˜ao — Pretende mostrar ao leitor as caracter´ısticas do assunto ambientando-o ao tema, e passar quais s˜ao os conhecimentos necess´arios para entendimento do texto;

2. O Tempo— Descreve o tempo, defini¸c˜ao da escala de medi¸c˜ao, evolu¸c˜ao de modelos de contagem de tempo e registro cronol´ogicos, sistemas utilizados e distribui¸c˜ao de tempo;

3. Dispositivo Utilizado: eZ430-RF2480— Apresenta o dispositivo utilizado para implementa¸c˜ao e testes;

4. Desenvolvimento— Preparativos, implementa¸c˜ao de protocolo de distribui¸c˜ao de tempo, informa¸c˜oes, mensagens que s˜ao utilizadas e descri¸c˜ao dos algoritmos; 5. Testes Experimentais e Resultados — Programa¸c˜ao dos dispositivos, descri¸c˜ao

dos testes realizados e seus resultados;

(22)

2 O TEMPO

O tempo ´e a dimens˜ao pela qual se pode ordenar momentos. Diferentes eventos s˜ao ordenados de acordo com o momento que ocorrem. A diferen¸ca entre os momentos ´e chamada de intervalo de tempo. Um momento n˜ao possui dura¸c˜ao, ´e como um ponto na escala de tempo. O tempo difere de outras dimens˜oes por sua medida ter progress˜ao constante e somente em uma dire¸c˜ao..

A unidade de medida de tempo no S.I. (Sistema Internacional de Unidades) ´e o se-gundo. Conforme Observat´orio Nacional (2014) o segundo foi inicialmente definido como 1/86400 do movimento de rota¸c˜ao terrestre. Em 1954, para melhor precis˜ao, foi redefinido como 1/31.556.925,9747 do tempo de um movimento de transla¸c˜ao terrestre, especifica-mente o iniciado em 04/10/1900 `as 12:00, por´em, nem o movimento de rota¸c˜ao nem o de transla¸c˜ao possuem dura¸c˜oes constantes, ambos apresentam varia¸c˜oes em suas dura¸c˜oes. Desde 1967 o segundo ´e definido como um n´umero de ciclos de radia¸c˜ao de um is´otopo de ´atomo de c´esio: “O segundo ´e a dura¸c˜ao de 9.192.631.770 per´ıodos da radia¸c˜ao cor-respondente `a transi¸c˜ao entre dois n´ıveis hiperfinos do estado fundamental do ´atomo de c´esio 133.” (OBSERVAT ´ORIO NACIONAL, 2014).

2.1 CONTAGEM DO TEMPO

O calend´ario administrativo comum ´e o Gregoriano, assim chamado pois foi estabele-cido pelo papa Gregorius XIII em 1582. Este calend´ario ´e uma modifica¸c˜ao do calend´ario anterior, o calend´ario Juliano, de Julio Cesar (Gaius Julius Cæsar, 102-44 a.C.). Ambos s˜ao calend´arios solares, ou seja, baseiam-se no movimento do Sol (quando tomamos a Terra como referˆencia). Existem calend´arios solares, lunares, luno-solares e outros que n˜ao tem rela¸c˜ao com astronomia, eles existem para suprir a necessidade do homem de contar a passagem do tempo.

De acordo com Filho e Saraiva (2012), at´e o ano 46 a.C o calend´ario romano era luno-solar, cada ano tinha 354 dias e a cada trˆes anos era introduzido um mˆes a mais para completar a m´edia de 365,25 dias por ano, por´em a maneira de se introduzir o 13o

mˆes era irregular. Ent˜ao Julio Cesar orientado pelo astrˆonomo alexandrino Sos´ıgenes (90-? a.C.) introduziu o calend´ario Juliano. Foram adicionados 67 dias ao ent˜ao ano corrente para ajustar a ´epoca correta do ano `as esta¸c˜oes e definido que o primeiro dia do pr´oximo ano seria 1o

de Janeiro. Desta data em diante, deveriam haver 365 dias por ano por trˆes anos seguidos e um quarto ano de 366 dias, o ano bissexto. O S´etimo mˆes no novo calend´ario passou a se chamarJulius.

(23)

quantidade de dias de alguns meses foram alteradas e foram omissos os pr´oximos trˆes anos bissextos consecutivos. O oitavo mˆes passou a se chamarAugustus.

O abade romano Dionysius Exiguus (c.470-544) instituiu o sistema de numera¸c˜ao dos anos atual, d.C. (depois de Cristo), estimando que Cristo havia nascido 527 antes. O ano do nascimento de Jesus Cristo foi designado 1 d.C.

Conforme Filho e Saraiva (2012), em 12 de Mar¸co de 1582 o papa Gregorios XIII publicou, na Inter Gravissimas, um novo calend´ario, pois a ´epoca da P´ascoa estava distanciando-se do momento tradicional na esta¸c˜ao da primavera. Era um ajuste ao calend´ario Juliano. O dia 4 de outubro de 1582 foi seguido do dia 15 de outubro de 1582, e a partir desta data os anos m´ultiplos de 100 n˜ao s˜ao mais bissextos exceto se forem tamb´em m´ultiplo de 400.

O ano pelo calend´ario Gregoriano passou a ter em m´edia 365,2425 dias. O ano tropical (movimento do sol em rela¸c˜ao aos tr´opicos) possui aproximadamente 365.2422 dias. Deste modo, o calend´ario ainda carrega uma pequena diferen¸ca que acumula cerca de um dia de erro a cada 3300 anos, um n´umero exato na conta seria 3333 anos, mas os valores s˜ao aproximados.

Observa-se que cada mudan¸ca gera algum tipo de confus˜ao e/ou dificuldade. No caso da mudan¸ca para o calend´ario Juliano, o ano foi estendido, e no caso da mudan¸ca para o calend´ario Gregoriano, alguns dias foram suprimidos. Al´em da mudan¸ca do calend´ario para as pessoas contemporˆaneas `a mudan¸ca, historiadores devem tomar cuidado ao estu-dar acontecimentos de eventos e levar estas mudan¸cas em considera¸c˜ao.

O tempo verbal do par´agrafo anterior encontra-se no presente pois quem estuda docu-mentos hist´oricos do per´ıodo relevante encontrar´a a diferen¸ca nas datas em certos per´ıodos entre pa´ıses com calend´arios diferentes. Atualmente mesmo em pa´ıses com calend´ario ofi-cial diferente, o calend´ario Gregoriano ´e adotado como administrativo.

A transi¸c˜ao para o calend´ario Gregoriano em especial ´e muito problem´atica, pois encontrou resistˆencia por parte dos pa´ıses protestantes, muitos pa´ıses s´o aderiram a ele trˆes s´eculos depois. Em alguns pa´ıses a data, no per´ıodo de transi¸c˜ao, estar´a registrada diferente de outros. A Inglaterra, por exemplo, aderiu ao novo calend´ario dois s´eculos depois da publica¸c˜ao, existindo divergˆencias entre referˆencias em rela¸c˜ao `a data correta de ado¸c˜ao do calend´ario conforme Nørby (2000).

As corre¸c˜oes descritas foram realizadas para resolver dois aspectos na contagem dos anos: sintonia e sincronia. Sincronia trata da diferen¸ca entre duas medidas em um dado momento, e sintonia trata da taxa de mudan¸ca de duas medidas. Um erro de sintonia provoca um escorregamento (drift em inglˆes, algumas vezes chamado de skew), que causa erro de sincronia. O erro de sincronia aumenta linearmente com a taxa de escorregamento, isto ´e, se a taxa de escorregamento for constante.

(24)

tamb´em ser corrigido o per´ıodo dos incrementos na contagem (sintonia) para que a ela n˜ao “escorregasse” novamente.

Em micro-controladores, determinar a ordem de eventos em dispositivos distintos pode ser dif´ıcil quando n˜ao imposs´ıvel, devido aos mesmos problemas ocorridos com a contagem dos anos, por´em em escala de tempo menor.

2.2 DISTRIBUIC¸ ˜AO DE TEMPO

O exemplo citado na se¸c˜ao anterior ´e real, e ilustra, com os anos, a importˆancia de sincronia e sintonia. No caso deste trabalho, estuda-se o tempo em escalas de fra¸c˜oes de segundos.

Eventos que acontecem em ambiente de inform´atica, internet e eletrˆonica ocorrem em fra¸c˜oes de segundos e podem possuir v´arios registros de tempo observados por diversos dispositivos. Podem ser eventos que tem necessidade de verifica¸c˜ao de tempo ou que posteriormente devam ser auditados.

O registro correto do tempo neste caso faz parte da seguran¸ca. Em redes de sensores de medidas dinˆamicas, o registro do tempo ´e necess´ario quando as informa¸c˜oes s˜ao arma-zenadas. Mesmo em um sistema que mostre os dados em tempo real, pode interessar o momento da medida, que pode diferir um pouco do momento da leitura.

Ao definir sincronia e sintonia ´e necess´ario que exista pelo menos uma referˆencia. Dispositivos devem ser ajustados para reproduzir com a m´axima fidelidade poss´ıvel a referˆencia ou mesmo uma outra escala, mas levando-se em conta a referˆencia. Para o pleno uso da capacidade de cada dispositivo, sua respectiva referˆencia deve possuir uma precis˜ao igual ou superior ao mesmo.

2.2.1 Referˆencias de tempo

Algumas referˆencias de tempo importantes descritas por Observat´orio Nacional (2014) e IEC (2009) s˜ao:

• TAI — Tempo atˆomico internacional, ´e mantido pelo BIPM (Bureau International des Poids et Mesures - Escrit´orio internacional de pesos e medidas), que considera medi¸c˜oes de centenas de institutos e observat´orios localizados em mais de 40 pa´ıses espalhados pelo mundo. Estima-se que o erro do TAI seja menor que 100ns por ano.

(25)

• GPS time — O hor´ario do sistema GPS acompanha o UTC(USNO) m´odulo um segundo, mas desconsidera ajustes de leap second, o tempo foi sincronizado com o UTC em 1980 e desde ent˜ao a contagem ´e cont´ınua. A parte fracion´aria da diferen¸ca entre o GPS e o UTC foi sempre menor que 100 nano-segundos nos ´ultimos anos.

As referˆencias de tempo possuem representa¸c˜oes em dispositivos locais que sincronizam com dispositivos de n´ıvel superior. O site ntp.br mant´em v´arios servidores que podem servir de fonte de tempo para dispositivos conectados `a internet. Estes servidores s˜ao sincronizados e distribuem a hora certa para dispositivos que fazem esta solicita¸c˜ao. No site h´a guias para configura¸c˜ao de alguns sistemas operacionais e roteadores.

Em uma organiza¸c˜ao com muitos dispositivos conectados `a internet a melhor forma de manter um hor´ario consistente entre seus dispositivos ´e manter um servidor de tempo que sincroniza com o ntp.br ou outra fonte de tempo de confian¸ca e fazer os outros dispositi-vos sincronizarem com este servidor. Desta forma a consistˆencia dos hor´arios dentro da organiza¸c˜ao n˜ao fica sujeita a varia¸c˜oes de qualidade da conex˜ao com a internet, que cos-tuma ser resultado de muitos fatores e poderia causar erro entre hor´arios de dispositivos diferentes que sincronizassem, cada um, diretamente com servidores externos.

Diferentes aplica¸c˜oes exigem diferentes precis˜oes na sincronia e na sintonia, e a forma de distribuir o tempo pode degradar a medida do tempo conforme a propaga para outros dispositivos. Uma pessoa pode acertar um rel´ogio e conferir sua sincronia at´e a precis˜ao de segundos, mas seria muito improv´avel que pudesse acertar ou corrigir sincronia de cent´esimos de segundos.

Dois dispositivos eletrˆonicos podem sincronizar-se com uma boa precis˜ao se estiverem diretamente conectados por condutores el´etricos, mas nem sempre este ´e o caso. Dispo-sitivos distantes normalmente s˜ao conectados por interm´edio de interfaces e o canal de comunica¸c˜ao, que possuem limita¸c˜oes e interferem nos tempos transmitidos entre um e outro.

Com o objetivo de superar os problemas encontrados para se obter sincronia entre dispositivos, s˜ao definidos protocolos que detectam e/ou compensam os erros ocorridos ao se realizar a distribui¸c˜ao de tempo entre dispositivos. Alguns protocolos de distribui¸c˜ao de tempo s˜aodaytime protocol,time protocol, NTP e PTP, os dois ´ultimos conforme Mills et al. (2010) e IEC (2009), respectivamente. Os trˆes primeiros foram ou s˜ao muito utilizados em redes ethernet e na internet, e o mais conhecido deles ´e provavelmente o NTP, utilizado para sincronizar rel´ogios de computadores pela internet.

(26)

determinar o atraso real e realizar as corre¸c˜oes necess´arias.

No protocolo NTP o cliente pode trabalhar com v´arios servidores e estima o hor´ario m´edio entre eles e considera a m´edia como sendo o hor´ario correto mais prov´avel. No protocolo PTP cada cliente possui um ´unico servidor de referˆencia de tempo por vez, este pode mudar de acordo com protocolos que analisam periodicamente qual ´e o melhor servidor para obter o hor´ario, e a sincronia ´e feita, com a melhor precis˜ao poss´ıvel, para o tempo de servidor.

O PTP especifica, ainda, o ajuste da frequˆencia dos rel´ogios dos dispositivos que o implementam quando v´arias medidas podem ser comparadas e ´e detectada uma taxa de escorregamento, desta forma, al´em da sincronia, ´e poss´ıvel tamb´em fazer as sintonias dos rel´ogios dos dispositivos.

2.2.2 Norma IEC 61588:2009/IEEE 1588-2008

A norma IEC 61588 ´e a publica¸c˜ao da norma IEEE 1588, do IEEE pelo IEC. Esta norma define o PTP, que possibilita a sincroniza¸c˜ao precisa entre rel´ogios de dispositivos que possuam um canal de comunica¸c˜ao entre si. O comportamento padr˜ao permite a sincroniza¸c˜ao de dispositivos que ingressam em redes sem a necessidade de configura¸c˜ao manual (embora n˜ao seja exigˆencia) e o sincronismo de dispositivos de diferentes capaci-dades de precis˜ao com um rel´ogio de referˆencia prim´ario, chamado degrandmaster clock, adiante chamado de rel´ogio grande mestre da rede ou simplesmente grande mestre.

As normas do IEEE s˜ao estabelecidas como um consenso em processos de desenvolvi-mento aprovado pela ANSI (American National Standards Institute- Instituto Americano de Padr˜oes Nacionais), e o ´org˜ao conta com representantes volunt´arios de v´arios setores, pontos de vistas e interesses diferentes para obter o produto final, os volunt´arios n˜ao pre-cisam ser membros e n˜ao recebem compensa¸c˜ao. O IEEE n˜ao executa testes nem verifica as informa¸c˜oes presentes nas suas normas. Conforme a norma IEEE 1588-2008 foi subme-tida ao IEC para avalia¸c˜ao sob a parceria IEC/IEEE e depois de aprovada foi publicada sob o logo duplo IEC/IEEE, de acordo com as Diretivas ISO/IEC (IEC, 2009).

Esta norma pretende estabelecer um protocolo com m´etodos para sincronizar dispositi-vos com a m´ınima utiliza¸c˜ao poss´ıvel de recursos de dispositidispositi-vos e sistemas, para aplica¸c˜ao em dispositivos com recursos limitados e permitindo uma sincroniza¸c˜ao em um sistema inteiro com precis˜ao melhor do que 1ms

(27)

O protocolo resultante n˜ao depende do tipo do sistema de transmiss˜ao de dados nem da tecnologia ou protocolos de n´ıveis inferiores, pois as informa¸c˜oes podem ser encapsuladas em outros pacotes para a transmiss˜ao e depois desencapsuladas.

2.2.3 Outros Trabalhos Utilizando a Norma IEC 61588:2009/IEEE 1588-2008

O PTP foi utilizado por Luiz (2012) para sincronizar rel´ogios em medidores de energia utilizando o mecanismo E2E, mas utilizando um RTC em cada n´o. Tamb´em foi acrescen-tado um algoritmo de detec¸c˜ao de latˆencia na sua implementa¸c˜ao do protocolo, espec´ıfico para redes ZigBee. Esta implementa¸c˜ao envolve hardware adicional e consequentemente eleva o custo dos componentes.

Um aperfei¸coamento, para levar em considera¸c˜ao assimetrias nos atrasos dos cami-nhos de rede, ´e proposto por Lv, Lu e Ji (2010). Depois de uma sincroniza¸c˜ao normal, os autores prop˜oem uma segunda rodada de mensagens, similares `as primeiras, para detec-tar e corrigir assimetrias no tempo de propaga¸c˜ao das mensagens. A t´ecnica destina-se `a aplica¸c˜ao em redes m´oveis 3G, em que os dispositivos sincronizados possuem muitos recursos S˜ao feitas simula¸c˜oes, mas n˜ao h´a informa¸c˜oes de testes em dispositivos reais.

Uma ponte, para estender a distribui¸c˜ao de tempo entre redes ZigBee e Ethernet ´e implementada por Cho et al. (2010). A referˆencia de tempo pode estar na rede ZigBee ou na rede cabeada. Entretanto, para a execu¸c˜ao do algoritmo, os autores utilizam um processador RISC de 32 bits nos n´os da rede, com consequente aumento de custos.

Em Du, Lu e Ji (2011), ´e apresentada uma t´ecnica para compensar o efeito de dife-rentes ritmos de contagem de rel´ogios a serem sincronizados. Contudo, o algoritmo n˜ao ´e compat´ıvel com a especifica¸c˜ao da norma IEC 61588:2009/IEEE 1588-2008.

Um sistema h´ıbrido, implementado por Lixia et al. (2011), executa aquisi¸c˜ao de tempo por GPS e distribui¸c˜ao por PTP, para produzir medidas de sincrofasores em um sistema de distribui¸c˜ao de energia el´etrica. No entanto, a implementa¸c˜ao foi feita em laborat´orio com equipamentos experimentais. N˜ao h´a relat´orio das dificuldades de uma aplica¸c˜ao em redes sem fio.

Lee, Lee e Hong (2012) prop˜oem um algoritmo de sincroniza¸c˜ao aperfei¸coado para compensar o erro resultante do dinamismo da taxa de dados de sistemas de comunica¸c˜ao sem fio e assim melhorar a precis˜ao do tempo distribu´ıdo. S˜ao feitas simula¸c˜oes para verificar a melhoria na sincroniza¸c˜ao de tempo, mas o trabalho n˜ao apresenta testes com hardware real.

(28)

3 DISPOSITIVO UTILIZADO: EZ430-RF2480

Dispositivos sem fio possuem energia limitada para operar, proveniente de energia ar-mazenada ouenergy harvesting, que traduzindo literalmente significa colheita de energia, que define a pr´atica com exatid˜ao, por´em ´e mais comum encontrar a forma em inglˆes.

A norma IEEE 802.15.4 define um protocolo de comunica¸c˜ao sem fio para uso por dispositivos de baixo consumo de energia e baixo poder de processamento, a velocidade de comunica¸c˜ao ´e menor do que a da norma 802.11, j´a amplamente conhecida. Com o ob-jetivo de normalizar a compatibilidade entre dispositivos de diferentes fabricantes surgiu a ZigBee Alliance, em 2002. Conforme ZigBee Alliance ( c2014), a especifica¸c˜ao ZigBee aperfei¸coa a normal IEEE 802.15.4, e estabelece crit´erios para que dispositivos destina-dos ao mesmo tipo de aplica¸c˜ao possam se comunicar, mesmo que sejam de fabricantes diferentes, baseando-se em perfis para diferentes aplica¸c˜oes.

A especifica¸c˜ao ZigBee possui trˆes tipos de dispositivos: Coordenador, que ´e res-pons´avel por criar a rede, conectar n´os filhos e rotear os pacotes que chegam a ele para os destinos corretos; Roteador, que se conecta ao coordenador ou outro roteador, conecta n´os filhos e roteia os pacotes que chegam a ele, e Dispositivos Finais, que s´o se conecta como n´o filho do coordenador ou de um roteador. Conforme Texas Instruments Norway AS (2008), cada roteador ou o coordenador podem conectar at´e 20 dispositivos filhos, sendo que seis deles podem ser coordenadores. A profundidade m´axima de hierarquia ´e de seis dispositivos.

Existem conjuntos de demonstra¸c˜ao prontos, denominados pelos fabricantes como eva-luation kits em inglˆes, adiante chamados apenas de kits, de dispositivos com comunica¸c˜ao sem fio e baixo consumo de energia de alguns fabricantes, Johnson et al. (2009) faz uma compara¸c˜ao entre alguns desses kits. Incorretamente informa que o kit ez430-RF2480 n˜ao possui sensores soldados diretamente `a placa, mas h´a o sensor de intensidade luminosa, que n˜ao fica dentro dos chips, e ´e soldado `a placa.

Alguns fabricantes tamb´em possuem ou indicam IDE’s (Integrated Development En-vironment - Ambiente de desenvolvimento integrado) para desenvolver em seus kits, a

Freescale1

conta com oCodeWarrior para desenvolvimento em seus conjuntos, aTI2

pos-sui o Code Composer StudioTM IDE al´em de citar o IAR Embedded Workbench da IAR

Systems, e a Microchip3

, o MPLAB C.

Para este trabalho o kit utilizado ´e o ez430-RF2480. Ele possui trˆestarget boards (pla-cas alvo, adiante denominadas apenas pla(pla-cas), um m´odulo de comunica¸c˜ao, alimenta¸c˜ao e programa¸c˜ao que se conecta a um computador via porta USB, e dois suportes para um par de pilhas cada (pilhas inclusas no kit). As placas, com superf´ıcie de aproximadamente 2cm

1

Freescale Semiconductor, Inc. hhttp://www.freescale.com/i. 2

Texas Instruments IncorporatedR

. hhttp://www.ti.com/i. 3

(29)

x 3cm possuem o micro-controlador MSP430F2274TM

que ser´a o dispositivo programado, sensor de luminosidade, bot˜ao de press˜ao, chip para comunica¸c˜ao sem fio CC2480TM

, um conector que se sobressai cerca de 3mm longitudinalmente ao eixo maior e componentes externos necess´arios ao funcionamento. Cada placa pode ser ligada ao m´odulo de co-munica¸c˜ao/programa¸c˜ao ou a um suporte de pilhas. Tanto o MSP430F2274TM

como o CC2480TM

possuem sensores internos de temperatura e tens˜ao de alimenta¸c˜ao.

Fotografias de uma das placas est˜ao na ilustra¸c˜ao 1, que mostra o lado do micro-controlador MSP430F2274TM

e na ilustra¸c˜ao 2, que mostra o lado do CC2480TM

.

Ilustra¸c˜ao 1: Placa do kit ez430-RF2480, lado do micro-controlador MSP430F2274TM .

Ilustra¸c˜ao 2: Placa do kit ez430-RF2480, lado do CC2480TM .

O micro-controlador MSP430F2274TM

(30)

de portas de uso geral. A conex˜ao entre o MSP430F2274TM

e o CC2480TM

´e feita por SPI (Serial Peripheral Interface - Interface serial de perif´ericos), um tipo de comunica¸c˜ao s´ıncrona em que mais de dois dispositivos podem ser conectados utilizando o mesmo canal, sendo um deles o mestre, que controla a comunica¸c˜ao.

Cada placa j´a ´e pr´e-programada com o programa ZASA (ZigBee Accelerator Sample Application), que exibe o status da rede por meio dos LED’s (Light Emmiting Diode -Diodo emissor de luz) e junto com o softwareeZ430-RF2480 Sensor Monitor, exibe uma rede de sensores de temperatura e tens˜ao de alimenta¸c˜ao medidas em cada placa.

Para funcionamento dos dispositivos com o software do computador, a placa ligada ao m´odulo de comunica¸c˜ao com USB deve ser a primeira a ser ligada, ela ser´a o coordenador, depois que ela estabelece a rede, as outras placas podem ser ligadas, elas podem assumir condi¸c˜ao de roteador ou dispositivo final.

Na tela do computador, depois de conectado o programa, as placas conectadas `a rede sem fio s˜ao exibidas. Cada placa tem uma representa¸c˜ao na tela do computador como um c´ırculo, sendo o coordenador rotulado com o texto “SINK” e as outras placas, roteadores e dispositivos finais, com as medidas de temperatura e tens˜ao de alimenta¸c˜ao. Cada dispositivo envia suas medi¸c˜oes em intervalos de 2 segundos.

Tanto o programa eZ430-RF2480 Sensor Monitor quanto o programa ZASA podem ser obtidos por meio do site da TI, na p´agina espec´ıfica do kit4

, sob o subt´ıtulo Software, verificado em 17/12/2013.

Os arquivos de c´odigo fonte do eZ430-RF2480 Sensor Monitor s˜ao instalados junto ao programa, e para compil´a-lo deve-se utilizar o Microsoft Visual Studio C++ Express Edition5

com o Qt6

.

O programa ZASA pode ser baixado para estudo mas isto n˜ao ´e requisito para simples verifica¸c˜ao do funcionamento da rede ZigBee, uma vez que as placas j´a o possuem em sua programa¸c˜ao. A instala¸c˜ao cont´em os arquivos de c´odigo fonte al´em do programa compilado gravado em um arquivo .HEX, formato que pode ser diretamente gravado no micro-controlador com a utiliza¸c˜ao do m´odulo USB e um programa no computador. O c´odigo fonte deve ser compilado no IAR Embedded Workbench.

4

hhttp://www.ti.com/tool/ez430-rf2480i 5

Ambiente de desenvolvimento para a linguagem de programa¸c˜ao C++ da Microsoft. 6

(31)

4 DESENVOLVIMENTO

O Desenvolvimento iniciou-se com o estudo do c´odigo fonte do ZASA e sua compila¸c˜ao no IAR Embedded Workbench. Por´em, na vers˜ao de uso sem custo para estudos, h´a limite de tamanho do arquivo bin´ario compilado, que era atingido mesmo sem modifica¸c˜ao alguma no programa. A IDE serviria apenas para verificar a sintaxe de c´odigo. O c´odigo foi, ent˜ao, portado para oCode Composer StudioTM IDE, com modifica¸c˜oes recomendadas

por Azbell (2009).

Depois da adapta¸c˜ao de trˆes arquivos e a defini¸c˜ao de vari´aveis globais configuradas para serem passadas diretamente ao compilador no lugar do arquivo .cfg que era utilizado no IAR Embedded Workbench, o ZASA pˆode ser compilado sem problemas, apesar de as altera¸c˜oes nos arquivos n˜ao serem ´obvias por estarem relacionadas com utiliza¸c˜ao de rotinas espec´ıficas da IDE utilizada.

Para modifica¸c˜ao e compila¸c˜ao do eZ430-RF2480 Sensor Monitor foram instalados o

Microsoft Visual Studio C++ Express Edition vers˜ao 2008 e o Qt vers˜ao 4.7.2. O pr´oprio Qt ´e compilado durante a instala¸c˜ao.

Por´em, tanto o ZASA como oeZ430-RF2480 Sensor Monitor apresentam c´odigo fonte de dif´ıcil compreens˜ao, seja por ter uma cadeia profunda e complexa de chamadas ou por simples falta de documenta¸c˜ao, tornando muito dif´ıcil a altera¸c˜ao dos dados que s˜ao enviados e exibidos no computador. Raz˜ao pela qual decidiu-se criar outros softwares para o micro-controlador e para o computador.

O novo software do micro-controlador tem a fun¸c˜ao de estabelecer e controlar a rede e enviar os dados para o computador, e o do computador, exibir os dados e poder enviar comandos para o dispositivo diretamente conectado.

O objetivo de criar os softwares, que tem funcionalidades parecidas `as dos j´a existentes ´e facilitar modifica¸c˜oes nos mesmos para alterar suas funcionalidades. Al´em disso, o novo software torna tamb´em mais f´acil a compreens˜ao das fun¸c˜oes do micro-controlador e maneiras de implementar comunica¸c˜ao com outros dispositivos.

Parte deste objetivo ´e atingido separando-se os arquivos de c´odigo fonte por fun¸c˜ao que executam, no lugar de agregar todas as fun¸c˜oes em um ´unico arquivo. Os arquivos podem ser adaptados para uso em outros softwares com outras fun¸c˜oes e at´e mesmo em outros tipos de dispositivos ou plataformas, se tomados os devidos cuidados ao adapt´a-los. O software do micro-controlador foi desenvolvido em linguagem C, utilizando o Code Composer StudioTM IDE com o Grace. O Grace ´e uma plataforma de configura¸c˜ao dos

dispositivos, ele configura o dispositivo na inicializa¸c˜ao e cria ganchos (hooks) para as interrup¸c˜oes. O depurador desta IDE funciona apenas no Windows,Microsoft WindowsR

, desta forma este sistema foi utilizado at´e que o firmware do MSP430 estivesse pronto.

(32)

La-zarus1

. Esta IDE permite a compila¸c˜ao do mesmo c´odigo em sistemas operacionais di-ferentes. `As vezes s˜ao necess´arias adapta¸c˜oes mas, mesmo assim, o c´odigo ´e port´avel, removendo a exigˆencia de um certo sistema operacional para o uso da aplica¸c˜ao.

Ilustrando a portabilidade do software de computador, o sistema operacional utilizado no in´ıcio do desenvolvimento foi o Microsoft WindowsR

, por´em, posteriormente, o de-senvolvimento continuou em hardware da AppleR

com sistema operacional Mac OS XR , copiando o c´odigo fonte e prosseguindo com o desenvolvimento. Os testes em laborat´orio foram feitos utilizando o Mac OS XR

.

Os programas e c´odigos-fonte citados podem ser obtidos de Nascimento (2014).

4.1 DESENVOLVIMENTO DO SOFTWARE DE REDE ZIGBEE

O novo software se denomina “Simplified ZigBee Sensor”, abreviado como SZS, por formar uma rede de sensores em rede ZigBee com c´odigo mais simples objetivando a f´acil compreens˜ao do mesmo, e propriedades e fun¸c˜oes externas que ele utiliza.

A configura¸c˜ao do dispositivo envolve algumas tarefas que podem ser feitas automati-camente com o uso do Grace, como a configura¸c˜ao das freq¨uˆencias de opera¸c˜ao (clocks -h´a o clock de alta frequˆencia e o clock de baixa freq¨uˆencia), configura¸c˜oes dos contadores e watch-dog, das portas de comunica¸c˜ao, fun¸c˜oes dos pinos das portas GPIO (General purpose input and output - entrada e sa´ıda de uso geral), entre outras configura¸c˜oes.

4.1.1 Procedimentos do SZS

As tarefas executadas pelo SZS s˜ao o estabelecimento da rede, leitura de sensores e envio de relat´orios ao dispositivo configurado para recebˆe-los.

Quando um dispositivo ´e ligado, ele faz, durante cinco segundos, uma busca por redes compat´ıveis j´a criadas. Se nenhuma rede ´e encontrada, faz nova busca de cinco segun-dos, se novamente nenhuma rede ´e encontrada ele cria uma rede e ´e considerado o n´o coordenador. No caso de encontrar uma rede, ele faz tentativa de ingresso como roteador. Depois de ligado, o dispositivo pode ser configurado como dispositivo final ou rotea-dor (neste caso, far´a a mesma busca descrita no par´agrafo anterior) pelo bot˜ao ou pela interface serial.

Periodicamente os sensores s˜ao lidos e seus valores gravados em mem´oria com estampas de tempo. Se o dispositivo estiver configurado para receber os relat´orios da rede, os seus pr´oprios relat´orios s˜ao gerados e enviados `a interface serial, do contr´ario, se houver na rede dispositivo configurado para receber os relat´orios, ele ´e gerado e enviado ao dispositivo.

1

(33)

Se nenhuma das condi¸c˜oes for atendida nenhum relat´orio ´e enviado. Para determina¸c˜ao da topologia, um pacote “heartbeat”2

(cuja tradu¸c˜ao literal ´e bati-mento card´ıaco) ´e enviado em modobroadcast, contendo a lista de dispositivos conhecidos e seus ´ındices na lista, assim ´e poss´ıvel que cada dispositivo possua informa¸c˜ao n˜ao so-mente do endere¸co dos vizinho e ´ındices em sua lista, mas tamb´em de seu pr´oprio ´ındice nos dispositivos vizinhos, que n˜ao necessariamente ´e igual em cada dispositivo.

Paralelamente, e funcionando como a tarefa de maior prioridade de processamento, h´a um rel´ogio de software, a partir do qual s˜ao geradas as estampas de tempo.

Outras tarefas s˜ao o tratamento de mensagens recebidas pela interface serial, o moni-toramento do bot˜ao e tratamento de pressionamentos e uma sa´ıda de indica¸c˜ao de status por meio de LED’s.

4.1.2 Unidades do SZS

O software foi dividido em v´arias unidades, cada uma possuindo uma tarefa espec´ıfica (interface de comandos, driver ou outras) ou agrupamento de tarefas para uma determi-nada fun¸c˜ao. Com algumas exce¸c˜oes citadas adiante, cada unidade possui uma rotina de inicializa¸c˜ao e uma rotina de processamento que deve ser chamada periodicamente. A pr´opria rotina de processamento, ao ser executada, retorna o tempo para o seu pr´oximo agendamento em ms.

Tendo em vista que uma rotina que utilize mais tempo em sua execu¸c˜ao atrasa a execu¸c˜ao das pr´oximas, cada rotina deve utilizar somente o tempo necess´ario. Mesmo assim, a execu¸c˜ao de rotinas cr´ıticas em termos de periodicidade ´e separada.

As unidades s˜ao:

• Principal — Controla a execu¸c˜ao das outras unidades;

• ADC — Obt´em os valores dos sensores conectados ao conversor ADC;

• Bot˜ao — Executa a¸c˜oes de acordo com pressionamentos do bot˜ao;

• Interface com o CC2480TM

— Envia e recebe comandos do CC2480TM

;

• Rel´ogio — Mant´em um rel´ogio de software;

• LED — Controla os LED’s da placa;

• Rede — Controla a comunica¸c˜ao com a rede;

• Relat´orio — Cria os relat´orios para serem enviados por rede ou interface serial;

• SPI — Driver para a interface SPI;

• UART — Driver para a interface serial.

O diagrama de uso entre as unidades implementadas, que em linguagem C s˜ao

cha-2

(34)

mados de “includes”, est´a representado na ilustra¸c˜ao 3.

Principal

ADC

Botão

Interface CC2480

Relógio LED

Rede Relatório

SPI

UART

Ilustra¸c˜ao 3: Diagrama de uso entre as unidades do SZS.

As se¸c˜oes a seguir apresentam informa¸c˜oes sobre estas unidades.

4.1.2.1 Unidade principal (main)

Esta unidade controla a execu¸c˜ao de todas as outras unidades. ´E nela que s˜ao fei-tas as chamadas de inicializa¸c˜ao e chamadas peri´odicas `as rotinas de processamento das unidades.

Para separar a execu¸c˜ao de rotinas normais de rotinas de tempo cr´ıtico, o agendamento ´e verificado para todas as rotinas de processamento normais com chamadas peri´odicas e de-pois o micro-controlador ´e colocado em LPM (Low power mode - modo de baixo consumo de energia). Quando o processador sai deste estado, a agenda ´e verificada novamente, em um processamento c´ıclico.

O LPM ´e interrompido de acordo com interrup¸c˜oes do timer A. A interrup¸c˜ao tamb´em executa rotinas de tempo cr´ıtico. Neste programa a ´unica rotina de tempo cr´ıtico ´e o avan¸co do rel´ogio. A cada interrup¸c˜ao do timer, a rotina de incremento de tempo do rel´ogio (denominada tick) ´e chamada, neste programa a cada 250µs, e verifica-se se o micro-controlador deve sair do LPM, o que deve ocorrer a cada 1ms.

4.1.2.2 ADC

A unidade ADC ´e formada dos arquivos adc.c e adc.h, a rotina de processamento desta unidade ´e a adc process(). A unidade realiza as medi¸c˜oes dos sensores ligados ao conversor anal´ogico-digital: Luminosidade, temperatura e tens˜ao de alimenta¸c˜ao, sendo os dois ´ultimos sensores internos do micro-controlador. O diagrama de blocos da ilustra¸c˜ao 4 exibe a m´aquina de estados da unidade.

(35)

determi-ADC_IDLE

ADC_CHARGING_T adc_proccess()

ADC_READING_T adc_proccess()

ADC_CHARGING_V adc_proccess()

ADC_READING_V adc_proccess()

ADC_CHARGING_L adc_proccess()

ADC_READING_L adc_proccess()

adc_proccess()

Ilustra¸c˜ao 4: M´aquina de estados da unidade ADC.

nar quais ser˜ao as a¸c˜oes executadas, quanto tempo deve ser o intervalo para o pr´oximo agendamento e definir o pr´oximo estado.

O ADC trabalha com interrup¸c˜oes. Quando a interrup¸c˜ao ´e recebida, o valores de medi¸c˜ao e estampa de tempo s˜ao gravados nas vari´aveis corretas de acordo com o estado atual. Valores gravados emflags3

indicam quando a medi¸c˜ao foi conclu´ıda de modo que a adc process() pode passar a m´aquina de estados `a etapa seguinte.

4.1.2.3 Bot˜ao

A unidade de controle do bot˜ao chama-se button, os arquivos s˜ao but.c e but.h, a ro-tina de processamento ´e a but process(). A unidade conta o n´umero de pressionamentos do bot˜ao a partir de um primeiro durante 3,2 segundos, passado este tempo, o valor ´e armazenado para que na pr´oxima chamada da rotina de processamento a a¸c˜ao adequada seja executada: quatro pressionamentos causam a reinicializar˜ao da placa, dois pressio-namentos a configuram para roteador e um pressionamento a configura para dispositivo final. A m´aquina de estados representada na ilustra¸c˜ao 5 foi criada para evitar pulos do bot˜ao, que poderiam resultar em uma contagem incorreta de v´arios pressionamentos seguidos.

Mesmo com o controle para evitar pulos, mal contato no bot˜ao pode fazer com que a

3

(36)

BUT_IDLE

BUT_PRESSED but_proccess()

BUT_DEBOUNCE but_proccess()

but_proccess()

Ilustra¸c˜ao 5: M´aquina de estados da unidade button.

contagem fique incorreta. Nota-se que a fun¸c˜ao que muda o estado para BUT S PRESSED ´e a BUT ISR(), o tratamento de interrup¸c˜ao do bot˜ao. Desta forma a but process() n˜ao lˆe o estado do bot˜ao diretamente.

4.1.2.4 Interface com o CC2480TM

Esta unidade ´e destinada `a comunica¸c˜ao com o transceptor CC2480TM

, seus arquivos s˜ao o cc2480ai.c e cc2480ai.h. A m´aquina de estados da ilustra¸c˜ao 6 ´e utilizada para a tomada de decis˜ao de a¸c˜oes em rela¸c˜ao ao CC2480TM

.

CCAI_S_INIT

CCAI_S_POWERUPHOLD ccai_proccess()

CCAI_S_POWERUPWAIT ccai_proccess()

CCAI_S_DORESET ccai_reset()

CCAI_S_RESETHOLD ccai_proccess()

CCAI_S_RESETWAIT ccai_proccess()

CCAI_S_RUNNING ccai_p_sys_reset_ind() Any state

ccai_fullReset()

ccai_reset()

(37)

Ao contr´ario das maquinas de estado anteriores, n˜ao h´a um ciclo, mas sim um objetivo de atingir o estado final, que deve ser mantido durante o normal funcionamento da placa. Esta unidade n˜ao se confunde com a unidade rede adiante, o objetico neste ponto ´e a transferˆencia de mensagens com o CC2480TM

, e n˜ao a configura¸c˜ao da rede.

A implementa¸c˜ao desta unidade n˜ao ´e completa. Embora possua todas as fun¸c˜oes necess´arias a todas as mensagens com o CC2480TM

, somente as fun¸c˜oes pertencentes `as interfaces necess´arias ao programa s˜ao utilizadas. As interfaces utilizadas s˜ao destinadas exatamente a tornar mais simples a implementa¸c˜ao. Est˜ao implementadas as interfaces de sistema (SYS Interface), de configura¸c˜ao (Configuration interface) e de API (Applicatoin Programming Interface - Interface de programa¸c˜ao de aplicativo) Simples (Simple API interface). As interfaces cujas fun¸c˜oes n˜ao s˜ao implementadas s˜ao a interface AF (AF interface) e a interface ZDO (ZDO interface).

4.1.2.5 Rel´ogio

A unidade rel´ogio, chamada de clock, cont´em os arquivos clock.c e clock.h, e n˜ao possui uma m´aquina de estados nem rotina de procedimento, mas possui a rotina cr´ıtica clock tick(). Esta unidade tem como fun¸c˜ao manter um contador que funciona como um rel´ogio que pode ser ajustado, tanto para sincronia como para sintonia. A sincronia ´e feita ajustando o valor do tempo atual, enquanto que a sintonia ´e feita ajustando-se o tamanho do passo do rel´ogio.

A fun¸c˜ao clock tick() deve ser chamada em intervalos rigorosamente regulares para que o rel´ogio seja confi´avel. Se o rel´ogio estiver sob ajuste, a fun¸c˜ao marca como pendente e retorna normalmente, e a rotina que definiu a situa¸c˜ao de ajuste far´a a chamada a clock tick() quando chegar ao final. Para o bom funcionamento, o rel´ogio n˜ao pode ficar na situa¸c˜ao de ajuste durante um tempo maior do que o per´ıodo entre chamadas `a clock tick().

O formato armazenado e de leitura ´e uma estampa de tempo com duas vari´aveis, uma para segundos, com 48 bits significativos, e outra para nanossegundos, com 32 bits. A vari´avel de segundos, embora s´o utilize 48 bits, ocuparia 64 bits internamente no micro-controlador e sua mem´oria se utilizado como um ´unico n´umero, j´a que n˜ao h´a dispon´ıvel um tipo inteiro de 48 bits, ela foi dividida em duas partes, uma de 32 bits de menor signi-ficˆancia e outra de 16 bits, de maior signisigni-ficˆancia. O tratamento fica mais complexo, mas a economia de mem´oria ´e suficientemente expressiva: 16 bits para cada valor armazenado.

4.1.2.6 LED

(38)

indica inicializa¸c˜ao ou opera¸c˜ao normal. Os controles de cada led s˜ao diferentes entre si.

LED_S_IDLE

LED_S_RUNNING led_proccess()

Ilustra¸c˜ao 7: M´aquina de estados da unidade de controle de led.

O led verde possui duas fun¸c˜oes que controlam um contador de solicita¸c˜oes para lig´a-lo, uma fun¸c˜ao incrementa o contador e outra o decrementa, o valor do contador n˜ao fica menor que zero e nem maior que 15. Ao atualizar o contador se o valor final deste ´e diferente de zero, o led ´e aceso (ligado), do contr´ario, ´e apagado (desligado).

O led vermelho conta com uma fun¸c˜ao de configura¸c˜ao, ela determina uma quantidade de vezes que o led pisca e um intervalo depois do qual se repete o procedimento de piscar. O led pisca a uma freq¨uˆencia de 5 Hz, ficando aceso durante 5ms e apagado durante 195ms.

O tempo que o led fica apagado ap´os estar aceso ´e contado antes do tempo determinado no intervalo configurado, por exemplo: a configura¸c˜ao inicial ´e piscar o led 5 vezes, que leva um segundo considerando os 5 ciclos completos aceso/apagado, e um intervalo de 500ms depois de ter piscado, resultando em um per´ıodo total de 1,5s.

Se a quantidade de vezes a piscar ´e configurada como zero, o led fica desligado e uma vez por segundo a unidade verifica se houve mudan¸ca na configura¸c˜ao. Se o intervalo ´e configurado como zero, o led pisca continuamente, desde que a quantidade de vezes tenha sido configurada para um n´umero diferente de zero.

Notar que os tempos do led n˜ao s˜ao controlados com base na unidade clock, mas sim do oscilador interno do micro-controlador, assim sendo, os tempos configurados para o led podem n˜ao estar de acordo com a contagem do tempo do rel´ogio.

4.1.2.7 Rede

A unidade de rede (network) possui os arquivos nwk.c e nwk.h, realiza as tarefas do dispositivo como cliente da rede ZigBee e e ´e uma das mais complexas so SZS. A partir da m´aquina de estados representada na ilustra¸c˜ao 8 nota-se que v´arias fun¸c˜oes podem ser chamadas em qualquer estado e definir um estado espec´ıfico, e a fun¸c˜ao nwk wakeUp tem mais de uma op¸c˜ao de estado de destino.

V´arias das fun¸c˜oes que executam mudan¸cas de estados dependem de comunica¸c˜ao com o CC2480TM

, que ´e o dispositivo a ser configurado para criar ou ingressar em uma rede ZigBee. Esta unidade configura o CC2480TM

(39)

NWK_S_INIT

NWK_S_SETDEVICETYPE nwk_setDeviceType()

NWK_S_SUSPENDED

NWK_S_CONFIGURE nwk_wakeUp()

NWK_S_START nwk_wakeUp()

NWK_S_RESETWAIT nwk_configureWriteRsp()

nwk_resetResume()

NWK_S_REGISTER

nwk_configureWriteRsp()

nwk_registerRsp()

NWK_S_STARTWAIT nwk_startRsp()

NWK_S_POSTSTARTCONFIGURE nwk_startConfirm()

NWK_S_GETINFO

nwk_configureWriteRsp()

NWK_S_RUNNING

nwk_getDeviceInfoRsp() Any state

nwk_init()

nwk_suspend()

nwk_setDeviceType()

nwk_wakeUp() nwk_resetResume()

nwk_wakeUp()

Ilustra¸c˜ao 8: M´aquina de estados da unidade de rede.

m´aquina de estados destina-se principalmente a registrar a etapa anterior ao ingresso em uma rede. O estado final, NWK S RUNNING indica o funcionamento normal com a rede configurada. Estando a rede configurada, as transmiss˜oes de dados na rede passam por esta unidade, que adiciona os cabe¸calhos corretos quando enviando dados e verifica os cabe¸calhos em uma recep¸c˜ao de dados para encaminhar o pacote `a fun¸c˜ao que deve trat´a-lo.

Esta unidade mant´em uma lista de vizinhos conhecidos. Seu principal uso ´e o envio de mensagens unicast. A lista ´e constantemente atualizada por meio de uma mensagem

(40)

4.1.2.8 Relat´orio

Esta unidade, que possui os arquivos rep.c e rep.h n˜ao possui m´aquina de estados. ´

E a unidade mais simples do SZS, sua fun¸c˜ao ´e gerar relat´orios e envi´a-los para outros dispositivos ou a porta serial.

A primeira tarefa ´e enviar um texto para a porta serial durante a inicializa¸c˜ao, um banner de identifica¸c˜ao. A rotina deve ser chamada ap´os a inicializa¸c˜ao desta unidade e da UART, mas ´e independente da rotina de processamento. Esta rotina em especial tem atrasos de tempo para esperar a libera¸c˜ao do buffer da porta serial para continuar enviando os textos at´e o final. Assim sendo, n˜ao ´e adequada para uso normal no meio do programa, pois pode tomar muito tempo impedindo o funcionamento correto de outras unidades.

Quando o dispositivo ´e configurado para receber as mensagens da rede, o relat´orio ´e enviado diretamente para a porta serial. Do contr´ario, se h´a outro dispositivo configurado para recebˆe-las, o relat´orio ´e enviado a ele. Se n˜ao h´a dispositivo configurado para receber as mensagens de relat´orio, ele n˜ao ´e gerado.

4.1.2.9 SPI

A unidade SPI ´e respons´avel pelo canal de comunica¸c˜ao com o CC2480TM

. Sua m´aquina de estados, representada na ilustra¸c˜ao 9, controla o estado atual do canal de comunica¸c˜ao. Um ´unico buffer ´e utilizado tanto para envio quanto para recep¸c˜ao de dados. Ao enviar ou receber uma mensagem, a informa¸c˜ao anterior do buffer ´e perdida.

De acordo com os parˆametros da comunica¸c˜ao SPI, o MSP430F2274TM

´e configurado como dispositivo mestre (master) e o CC2480TM

como escravo (slave). A comunica¸c˜ao ´e sempre s´ıncrona no n´ıvel de envio de dados, o dispositivo mestre deve enviar um byte para receber um byte do dispositivo escravo. Quando nenhum dado vai ser transmitido mas o dispositivo deve receber dados, s˜ao enviados zeros.

No n´ıvel de mensagens, ´e poss´ıvel o envio de mensagens s´ıncronas e ass´ıncronas, isto ´e, mensagens que exigem resposta imediata numa mesma transa¸c˜ao ou que n˜ao exigem, respectivamente. As mensagens ass´ıncronas podem ser enviadas em ambos os sentidos, mas as mensagens s´ıncronas s˜ao sempre iniciadas apenas pelo MSP430F2274TM

, que ´e o dispositivo mestre.

4.1.2.10 UART

(41)

SPI_INIT SPI_IDLE spi_init() SPI_AREQ_START spi_reqEnd() SPI_SREQ_START spi_reqEnd() SPI_POLL_START SPI_SRDYISR() SPI_AREQ_SENDING SPI_SRDYISR() SPI_AREQ_SENT spi_snd() SPI_SRDYISR() SPI_SREQ_SENDING SPI_SRDYISR() SPI_SREQ_SENT spi_snd() SPI_SREQ_RECEIVING_START SPI_SRDYISR() SPI_SREQ_RECEIVING spi_snd() SPI_SREQ_RECEIVING_OVER spi_snd() SPI_SREQ_RECEIVED spi_snd() spi_snd() spi_snd() SPI_POLL_RECEIVING_START SPI_SRDYISR() SPI_POLL_RECEIVING spi_snd() SPI_POLL_RECEIVING_OVER spi_snd() SPI_POOL_RECEIVED spi_snd() spi_snd() spi_snd() Any state spi_init()

Ilustra¸c˜ao 9: M´aquina de estados da unidade SPI.

N˜ao h´a m´aquina de estados, o envio e recep¸c˜ao funcionam continuamente, de forma independente, utilizando um buffer para envio de informa¸c˜oes e outro para recep¸c˜ao.

Os dados podem alimentar os buffers independentemente do processamento dos mes-mos, a ´unica exigˆencia ´e ter espa¸co suficiente no buffer sendo utilizado para o armaze-namento dos novos dados. Os dados gravados no buffer n˜ao s˜ao eliminados at´e serem processados, exceto se a rotina de inicializa¸c˜ao for chamada. Desta forma, os dados po-dem ser gravados nos buffers a uma taxa t˜ao r´apida quanto permitida pela configura¸c˜ao da interface.

Os tamanhos dos buffers s˜ao 128 bytes para envio e 18 bytes para recep¸c˜ao. Estes tamanhos incluem os bytes de cabe¸calho e de rodap´e. Os tamanhos dos buffers podem ser ajustados conforme a necessidade da aplica¸c˜ao e o limite ´e 256 bytes para cada um ou o limite de mem´oria RAM dispon´ıvel.

Imagem

Table I shows the differences of the programs ZASA and SZS.
Fig. 1. SZSM, timing measurements
Fig. 3. Delays to the master and clock adjusts on the network with two devices.

Referências

Documentos relacionados

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

No sentido de reverter tal situação, a realização deste trabalho elaborado na disciplina de Prática enquanto Componente Curricular V (PeCC V), buscou proporcionar as

Os casos não previstos neste regulamento serão resolvidos em primeira instância pela coorde- nação do Prêmio Morena de Criação Publicitária e, em segunda instância, pelo

• Não há inflação de alimentos, há inflação, causada por choques cambiais, auxílio emergencial, problemas fiscais e má gestão de estoques públicos;. • O Brasil precisa

v) por conseguinte, desenvolveu-se uma aproximação semi-paramétrica decompondo o problema de estimação em três partes: (1) a transformação das vazões anuais em cada lo-

autoincriminação”, designadamente através da indicação de exemplos paradigmáticos. Sem prejuízo da relevância da matéria – traduzida, desde logo, no número e

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

Silva e Márquez Romero, no prelo), seleccionei apenas os contextos com datas provenientes de amostras recolhidas no interior de fossos (dado que frequentemente não há garantia