Tese nrf24L01

Embed Size (px)

DESCRIPTION

Aplicação nrf24L01

Citation preview

  • UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL

    ESCOLA DE ENGENHARIA

    TRABALHO DE CONCLUSO EM ENGENHARIA DE CONTROLE E AUTOMAO

    Projeto de uma Rede de Comunicao sem F io Baseada

    no Transceptor nRF24L01+ Voltada para S istemas de

    Automao Predia l

    Autor: Mateus Streit Giaretta

    Orientador: Carlos Eduardo Pereira

    Porto Alegre, julho de 14

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    ii

    Sumrio

    Sumrio ii

    Resumo iv

    Abstract v

    Lista de Figuras vi

    Lista de Tabelas vii

    Lista de Abreviaturas e Siglas viii

    1 Introduo 1

    1.1 Objetivo Geral 1

    1.2 Objetivos Especficos 2

    2 Reviso Bibliogrfica 3

    2.1 Anlise do Desempenho do Transceptor nRF24L01+ em um Cenrio com Mltiplas Transmisses 3

    2.2 Rede de Sensores Dividida em Clusters 4

    2.3 Introduo ao Modelo de Referncia OSI 4

    3 Descrio da Camada Fsica do Sistema Proposto 6

    3.1 Descrio dos Componentes 6

    3.1.1 Mdulo Integrado para o Componente nRF24L01+ 6 3.1.2 Microcontrolador Arduino Pro-Mini 6 3.1.3 Fontes de Alimentao 7

    3.2 Meio Fsico de Transmisso 8

    3.2.1 Taxa de Transmisso e Uso de Banda de Frequncia 8 3.2.2 Compartilhamento da Banda de Frequncia 9 3.2.3 Alcance de Transmisso 10

    4 Camada de Enlace 11

    4.1 Protocolo Enhanced Shockburst 11

    4.2 Biblioteca RF24 12

    4.3 Recepo de Dados 12

    4.4 Controle de Acesso ao Meio 13

    4.5 Mecanismo para Evitar Colises em Acesso ao Meio 15

    5 Camada de Rede 16

    5.1 Definio de Cluster 16

    5.2 Rede Dividida em Clusters 16

    5.3 Retransmisso de Mensagens entre Clusters 19

    5.3.1 Definio do Tamanho Mximo da Rede 19 5.3.2 Vetor de Alcance e Mapa de Rede 20 5.3.3 Mecanismo de Busca e Retransmisso 20 5.3.4 Construo e Atualizao do Mapa de rede 21

  • UFRGS Mateus Streit Giaretta iii

    6 Camada de Aplicao 22

    6.1 Estrutura da Mensagem 22

    6.1.1 Cabealho 22 6.1.2 Variveis 23 6.1.3 Comandos 24

    7 Resultados de Ensaios Realizados 25

    7.1 Ensaio de Comunicao Bidirecional entre Dois Componentes25

    7.2 Ensaio de Comunicao Interna ao Cluster 25

    7.3 Ensaio de Comunicao Entre Clusters 26

    7.4 Ensaio com o uso de Retransmisso de Mensagens 27

    7.5 Ensaio com o uso de componentes reais 28

    8 Concluses e Trabalhos Futuros 29

    9 Referncias 30

    10 Anexos 31

    10.1 Definies da Estrutura da Mensagem 31

    10.2 Funo que Escuta por Rudos no Canal 31

    10.3 Funo que Checa o Recebimento de Mensagens 32

    10.4 Funo que Escreve a Mensagem e Aguarda pela Resposta 32

    10.5 Funo que Escreve a Mensagem 33

    10.6 Funo que Escreve um Comando 33

    10.7 Funo que inicializa e Rotula Mensagem a ser Enviada 33

    10.8 Funo que Interpreta Mensagem Recebida 34

    10.9 Funo que Envia Mapa de Rede 36

    10.10 Funo que Mapeia Dispositivos ao Alcance 37

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    iv

    Resumo

    Este trabalho prope o desenvolvimento de uma estrutura de rede sem fio, composta por componentes de baixo custo, para aplicaes de automao. As estratgias desenvolvidas tm como objetivo otimizar as caractersticas da rede para atendimento dos requisitos das aplicaes alvo, em especial para a rea de automao residencial. Elas se baseiam no uso e na expanso das funcionalidades do rdio transceptor nRF24L01+, por meio da implementao de funes em um microcontrolador externo, definido como sendo um Arduino Pro-mini.

    Para evitar a ocorrncia de coliso entre mensagens determinada uma diviso hierrquica entre os ns da rede, com um mestre centralizando a comunicao com os demais dispositivos, tidos como escravos. Com o intuito de expandir o nmero de dispositivos e o alcance da rede, proposta uma estrutura de rede dividida em clusters e o uso de um mecanismo de roteamento. Adicionalmente, so definidas as interfaces de troca de dados entre os dispositivos, por meio de comandos de leitura e escrita de variveis compartilhadas. Ao final do trabalho so mostrados resultados de ensaios, que capacitam o sistema desenvolvido ao objetivo proposto de atuar em uma rede de automao residencial.

    Palavras Chave: transceptor nRF24L01+, hierarquia mestre-escravo, diviso em clusters, automao residencial

  • UFRGS Mateus Streit Giaretta v

    Abstract

    This project proposes the development of a framework for a wireless network, composed of low-cost components, for automation applications. The developed approaches are intended to optimize the network characteristics for home automation systems. The radio transceiver nRF24L01+ and an Arduino Pro-Mini were selected as target hardware and the required functions were developed in C.

    To avoid messages collision, a hierarchical network strategy was developed, following a master-slave pattern. In order to expand the number and range of the network devices, a cluster-based network division and a routing mechanism were proposed. In addition, to allow data exchange between devices a shared memory interface was defined. The developed ideas were experimentally validated and the obtained results are shown in the last part of this report.

    Keywords: nRF24L01 + transceiver, master-slave hierarchy, clustering division, home automation

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    vi

    Lista de F iguras

    Figura 1 Perda de Pacotes em Diferentes Cenrios de Rede - Traduzido pelo autor de figura em (Christ et al., 2011) ................................................................................................ 3

    Figura 2 - Diviso em clusters - Fonte: (Urdiain et al., 2012) ................................................ 4

    Figura 3 Camadas do modelo de Referncia OSI Fonte: (Redes da Organizao Profibus, 2004) ...................................................................................................................... 5

    Figura 4 Diagrama eltrico e placa do mdulo nRF24L01+ - Fonte: (Nordic, 2007) ......... 6

    Figura 5 Placa Arduino Pro-Mini Fonte: (Arduino, 2014) ................................................ 7

    Figura 6 Circuito Regulador de Tenso - Fonte: Autor ...................................................... 7

    Figura 7 Utilizao de banda de sistemas sem fio operando na banda ISM de 2,4 GHz Fonte: Traduo de figura contida em (Gerrior e Woodings, 2006) ..................................... 9

    Figura 8 Diagrama de tempo para transmisso de dados Fonte Autor ........................ 11

    Figura 9 - Formato do Pacote Fonte: (Nordic, 2007) ........................................................ 12

    Figura 10 Topologia da organizao hierrquica de mestre e escravo Fonte: Autor .... 14

    Figura 11 Diagrama de tempo para um ciclo de comunicao Fonte: Autor ................ 14

    Figura 12 Topologia de rede dividida em clusters Fonte: Autor ................................... 17

    Figura 13 Diagrama de tempo para comunicao entre clusters Fonte: Autor ............ 18

    Figura 14 Topologia de rede com mecanismo de retransmisso entre ns mestres Fonte: Autor ......................................................................................................................... 19

    Figura 15 Diagrama de tempo de uma mensagem retransmitida por um cluster intermedirio Fonte: Autor .............................................................................................. 21

    Figura 16 Estrutura da mensagem de dados Fonte: Autor ........................................... 22

    Figura 17 Campo FLAGS Fonte: Autor ........................................................................... 23

    Figura 18 Varivel comando Fonte: Autor ..................................................................... 24

    Figura 19 Exemplos de interpretao de comandos Fonte: Autor ................................ 24

    Figura 20 Medida de latncia para ensaio com mltiplos dispositivos Fonte: Autor ... 26

    Figura 21 Latncia em comunicao interna e externa ao cluster Fonte: Autor .......... 27

    Figura 22 Latncia de uma mensagem retransmitida entre clusters Fonte: Autor ...... 28

  • UFRGS Mateus Streit Giaretta vii

    Lista de Tabelas

    Tabela 1 Uso de Banda de Frequncia nRF24L01+ - Traduzido pelo autor a partir de tabela contida em (Nordic, 2007) .......................................................................................... 8

    Tabela 2 Tipos de Variveis a serem trocadas Fonte (Brooks, 1999) ............................ 24

    Tabela 3 Ensaio de Comunicao Bilateral Fonte Autor................................................ 25

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    viii

    Lista de Abreviaturas e Siglas

    SPI Interface Perifrica Serial

    OSI - Open Systems Interconnection

    ISO International Organization for Standardization

    PWM Modulao por Largura de Pulso

    GFSK - Gaussian Frequency Shift Keying

    ISM Industrial Scientific and Medical

    TX Transmissor

    RX Receptor

    ACK Pacote de Reconhecimento de Mensagem

    CRC Verificao Cclica de Redundncia

    FLAGS Bits de Configurao

    RETR Bit de Configurao de Retransmisso

    MAP Bit de Configurao de Mapeamento

    RESP Bit de Configurao de Resposta

    DATA - Bit de Configurao de Troca de Dados

    BOOL Varivel Booleana

    INT Varivel Inteira

    UINT Varivel Inteira sem Sinal

    FLOAT Varivel de Ponto Flutuante

    LEIT Leitura

    ESCR - Escrita

  • UFRGS Mateus Streit Giaretta 1

    1 Introduo

    Com uma presena j bem difundida em meios industriais, a automao tem sido uma rea que tem recebido uma ateno cada vez maior nas aplicaes residenciais. Segundo descrito em (Dias e Pizzolato, 2004) a automao predial e residencial, tambm chamada de domtica, a integrao dos servios e tecnologias, aplicados a residncias, flats, apartamentos, casas e pequenas construes, com o propsito de automatiz-los e obter uma melhora em relao segurana e proteo, conforto, comunicao e gerenciamento tcnico. Em seus diversos nveis de aplicao ela pode proporcionar o controle automtico e remoto de uma grande variedade de dispositivos. Apesar de usarem tcnicas e tecnologias semelhantes, a automao industrial necessita de um padro mais elevado de responsabilidade e confiabilidade dos seus componentes e da estrutura de rede em si, quando comparado com a residencial.

    Ainda de acordo com descrio contida em (Dias e Pizzolato, 2004), dentre os protocolos de comunicao sem fio utilizados na rea da automao residencial e predial para interconexo de dispositivos sensores, atuadores e controladores, destacam-se os protocolos ZigBee e Bluetooth. Apesar de serem tecnologias consolidadas, os seus custos de implantao ainda limitam a sua aplicao em uma maior escala. Nesse contexto, este projeto tem como objetivo propor uma soluo alternativa de baixo custo para o mesmo fim, com o uso do transceptor nrF24L01+ (Nordic, 2007). Este dispositivo funciona como um rdio transmissor e receptor que opera na banda de frequncia livre em nvel mundial ISM de 2,4GHz. Neste componente so implementadas as funes do protocolo de comunicao no padro Enhanced ShockBurst. Este protocolo aplica funes bsicas de comunicao para pequenas redes.

    Para fins de comparao, em pesquisa realizada no ms de maio de 2014 em um dos maiores sites de revenda online do mundo (Aliexpress, 2014), o custo de um lote de 10 peas com frete internacional de um mdulo nRF24L01+ tinha um custo aproximadamente 4,5 vezes menor do que o mdulo mais barato do protocolo Bluetooth e cerca de 7 vezes menor do que um mdulo ZigBee. Ambos os dispositivos citados no tm autonomia para trabalharem de maneira isolada, necessitando de um microcontrolador externo que comande suas aes. Tal fato d o respaldo necessrio para este trabalho, que pretende expandir as funcionalidades do transceptor nRF24L01+ atravs do uso de funes implementadas em um microcontrolador externo. Funes estas, otimizadas para o uso em um ambiente de automao residencial.

    O microcontrolador externo responsvel por configurar e comandar as aes do rdio, o que feito atravs de comandos pr-definidos enviados atravs de uma Interface Perifrica Serial (conhecida pela sigla em ingls SPI). Neste trabalho foi escolhido o uso de um microcontrolador da plataforma Arduino. Escolha feita devido ao seu uso abrangente e pela facilidade proporcionada na criao de prottipos.

    1.1 Objetivo Geral

    Este projeto prope o desenvolvimento de uma estrutura de rede de comunicao sem fio com base no radio transceptor nRF24L01+. Com o objetivo de investigar um conjunto de solues que melhor se adapte aos pontos fortes e limitaes dos componentes utilizados, ampliando suas funcionalidades por meio de funes implementadas em microcontrolador externo, de modo a melhor atender as necessidades de uma rede complexa de automao predial.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    2

    1.2 Objetivos Especficos

    O projeto deve priorizar o uso de hardware de baixo custo, de modo a proporcionar uma alternativa tecnolgica com um padro de custo benefcio maior ao que usado em aplicaes semelhantes.

    Ampliar as possibilidades de uso do transceptor nRF24L01+ de modo a se adaptar s necessidades de uma rede de automao residencial.

    Desenvolver novas topologias de rede, proporcionando mecanismos capazes de expandir e garantir de maneira plena a cobertura da rede nos diversos espaos de um ambiente predial.

    Rastrear possveis causas comuns de erros na comunicao e desenvolver estratgias para evitar as suas ocorrncias.

    Analisar a capacidade do sistema de atender aos requisitos de uma comunicao de tempo determinstico.

    Realizar ensaios capazes de caracterizar o desempenho de diferentes funes e estruturas da rede desenvolvidas.

  • UFRGS Mateus Streit Giaretta 3

    2 Reviso Bibliogrfica

    2.1 Anlise do Desempenho do Transceptor nRF24L01+ em um Cenrio com Mltiplas Transmisses

    Um estudo proposto em (Christ et al., 2011) analisa exaustivamente a eficincia de uma rede de comunicao constituda somente por rdio transmissores nRF24L01+. Neste estudo foram realizados ao todo 500 ensaios com diferentes configuraes de rede, onde componentes igualmente distribudos transmitiam 50000 pacotes de dados em cada experimento. Em um primeiro teste foi colocado somente um receptor entre 14 transmissores, porm com somente um transmissor operando por vez. Ao longo dos ensaios variou-se o tamanho e taxa de envio da mensagem. Neste teste foi detectado um pequeno aumento na taxa de perda de pacotes, medida que pacotes maiores eram enviados. Contudo a taxa mdia de perda de transmisso ficou na casa dos 0,5%.

    Nos demais testes, adicionou-se um nmero maior de componentes transmitindo simultaneamente. Do mesmo modo, o tamanho do pacote de dados foi alternado desde 15 at 35 bytes. A frequncia com que as mensagens eram transmitidas tambm foram alteradas no intervalor de 25 a 250 mensagens por segundo. Os resultados obtidos indicaram um aumento expressivo das perdas na transmisso, sendo que as perdas aumentam tanto com um aumento do tamanho dos pacotes, bem como com aumento da frequncia de envio das mensagens e do nmero de componentes na rede. Uma verso grfica dos resultados obtidos nestes experimentos pode ser vista na Figura 1.

    Figura 1 Perda de Pacotes em Diferentes Cenrios de Rede - Traduzido pelo autor de figura em (Christ et al., 2011)

    Este estudo mostra claramente a ineficincia do sistema, da maneira como ele originalmente proposto, para redes com um nmero maior de componentes e maiores taxas de transmisso. Portanto, mostra-se necessrio o uso de tcnicas mais avanadas na construo da rede a ser proposta, bem como estratgias de contingncia para as perdas de pacotes, de forma a tornar a rede mais robusta.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    4

    2.2 Rede de Sensores Dividida em Clusters

    O projeto de uma rede de sensores, com o objetivo de localizar vagas em um estacionamento descrito em (Urdiain et al., 2012), usando como base rdios nRF24L01+ acoplados a microcontroladores da plataforma Arduino. Neste estudo propem-se que uma rede complexa seja dividida em clusters de estruturas mais simples, onde cada cluster se comunica em uma frequncia distinta. Para isso, cada cluster possui um n mestre que coordena a comunicao interna de demais ns e envia os dados coletados para um n central. Um esboo da configurao proposta mostrado na Figura 2.

    Figura 2 - Diviso em clusters - Fonte: (Urdiain et al., 2012)

    O desenvolvimento da rede proposta em (Urdiain et al., 2012) baseado na biblioteca RF24 (Coliz, 2012), a qual implementa a interface entre o microcontrolador e o rdio transceptor por meio de funes definidas, sem a necessidade de acessar individualmente os registradores de configurao do nRF24L01+. A partir dessa ideia, foram desenvolvidas, atravs do microcontrolador Arduino, funes mais complexas para implementao da estrutura em clusters. O artigo detalha ensaios para validao experimental da proposta: (i) um teste de 90 minutos com 10 ns de comunicao em um mesmo cluster. Neste caso uma taxa de perda de transmisso de 71 % foi obtida; ii) um segundo ensaio de mesma durao, porm tendo os 10 ns divididos em dois clusters com 5 componentes cada. A diviso em clusters melhorou significativamente o desempenho da comunicao, fazendo a taxa de perdas cair para 41%. Apesar da reduo obtida, uma taxa muito alta de perda de pacotes continua presente na comunicao. Os autores relatam como uma possvel causa a dificuldade de sincronizao entre os dispositivos.

    2.3 Introduo ao Modelo de Referncia OSI

    Praticamente todas as redes em uso atualmente so baseadas de alguma forma no padro comumente conhecido como modelo OSI de Open Systems Interconnection . O modelo de referncia OSI, como descrito em (Day e Zimmermann, 1983), foi desenvolvido pela International Organization for Standardization (ISO), uma federao mundial de organismos nacionais de normalizao que representa cerca de 130 pases. O ncleo deste padro um conjunto de sete camadas que definem as diferentes etapas que os dados devem percorrer para transitar a partir de um dispositivo para outro atravs de uma rede. Esta diviso em camadas auxilia o entendimento do sistema e das tarefas

  • UFRGS Mateus Streit Giaretta 5

    dentro de uma rede. Na Figura 3 encontra-se uma descrio breve sobre as sete camadas do Modelo de Referncia OSI.

    Figura 3 Camadas do modelo de Referncia OSI Fonte: (Redes da Organizao Profibus, 2004)

    Este trabalho est estruturado em captulo de forma a apresentar suas funcionalidades separadas de acordo com a diviso em camadas do modelo OSI. A estrutura de rede na qual o transceptor nRF24L01+ originalmente projetado para operar inclui somente funes de camada fsica e de enlace. Neste trabalho ser feita uma anlise das caractersticas do meio fsico em que este sistema opera, uma expanso das funcionalidades de sua camada de enlace e a criao de funes de camada de rede e aplicao.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    6

    3 Descrio da Camada Fsica do Sistema Proposto

    Este captulo apresenta as caractersticas de camada fsica do sistema proposto. Este o nvel de hardware real. Ele define as caractersticas dos dispositivos usados e do meio em que eles atuam.

    3.1 Descrio dos Componentes

    3.1.1 Mdulo Integrado para o Componente nRF24L01+

    Mdulo usado como base para o desenvolvimento deste trabalho, consiste em um circuito integrado ativo nRF24L01+, produzido pela empresa Nordic Semiconductor (Nordic, 2007). Neste mesmo mdulo tambm so encapsulados uma antena, conectores e demais componentes passivos, tudo isso em uma placa com pouco mais de 3cm de comprimento. A Figura 4 mostra esquerda o diagrama eltrico deste circuito, e direita o esquemtico da placa englobando todos estes componentes.

    Figura 4 Diagrama eltrico e placa do mdulo nRF24L01+ - Fonte: (Nordic, 2007)

    A interface do transceptor com o microcontrolador externo se d por meio de comandos pr-definidos enviados atravs de um barramento. Associada a uma alimentao de at 3.3V, a interface do mdulo consiste dos seguintes pinos:

    Pino CE (utilizado para ativar o chip)

    Pinos CSN, SCK, MOSI e MISO (pinos padro da interface SPI)

    Pino IRQ (sinal que indica a ocorrncia de trs diferentes interrupes mascarveis)

    3.1.2 Microcontrolador Arduino Pro-Mini

    Este microcontrolador a verso mais minimalista entre todas as distribuies da plataforma Arduino. O modelo usado neste projeto, opera com um processador ATmega328, o mesmo usado pela verso mais conhecida da plataforma, o Arduino Uno. A placa possui 14 pinos digitais de entrada e sada (dos quais 6 podem ser usados como

  • UFRGS Mateus Streit Giaretta 7

    sadas PWM), 8 entradas analgicas e furos para montagem de pinos ou soldagem direta de componentes. Em pesquisa de preo realizada (Aliexpress, 2014), o custo de uma verso no oficial do microcontrolador Arduino Pro-Mini em um lote de 10 peas foi comparada com um mesmo lote de Arduinos Uno. Nesta averiguao, uma mesma verso no oficial da plataforma Uno encontrava-se por um custo 4 vezes mais elevado. Esta diferena se deve ao fato de o modelo Uno ser otimizado para prototipagem, j o Pro-Mini construdo em uma placa compacta, com enfoque em aplicaes diretas. Portanto, atendendo aos requisitos de reduo de custo do projeto, neste trabalho sero usados somente microcontroladores do modelo Arduino Pro-Mini, com processador Atmega 328. Na Figura 5 exibida uma representao deste microcontrolador.

    Figura 5 Placa Arduino Pro-Mini Fonte: (Arduino, 2014)

    3.1.3 Fontes de Alimentao

    O conjunto Microcontrolador mais transceptor necessita de uma fonte de alimentao especial. O mdulo nRF24L01+ deve ser alimentado com uma tenso entre 2.7V a 3.3V (Nordic, 2007), contudo seus pinos de comunicao com o microprocessador suportam at 5V, o tornando compatvel com a sada do microcontrolador usado. J a entrada de energia do Arduino deve ser entre a faixa de 5V a 12V. Associado a isso, foi observado em testes que o funcionamento do rdio est atrelado de maneira sensvel a sua alimentao. Desnveis na tenso de alimentao, tanto do rdio, quanto do microcontrolador, impediram frequentemente o seu correto funcionamento.

    Para tanto, foram desenvolvidas duas verses de fontes de alimentao. Uma delas usou uma fonte chaveada de 6V acoplada a um circuito regulador de tenso AMS1117 (Ams, 2014) de sada 3.3V. Para estabilizar a tenso foram usados um capacitor em paralelo sada de 6V e outro de 3.3 V. Os valores dos capacitores usados seguem o recomendado pelo fabricante. Este circuito no necessita de dispositivos extras de proteo, pois j possui um diodo interno com essa funo. Na Figura 6 mostrado o circuito regulador de tenso usado.

    Figura 6 Circuito Regulador de Tenso - Fonte: Autor

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    8

    Outro conjunto mais simples de fontes foi desenvolvido com o uso de quatro baterias de 1.6V. Nesta configurao, duas baterias em srie fornecem uma tenso de 3.2 V, enquanto as quatro ligadas em srie fornecem 6.4 V. Esta ligao fornece um consumo desigual de energia das baterias e no a melhor soluo, porm devido ao baixo consumo energtico dos componentes, aps muitas horas de uso nenhum dos conjuntos de bateria montados chegou a perder a sua carga completamente.

    3.2 Meio Fsico de Transmisso

    Como descrito em (Nordic, 2007), a camada fsica utilizada pelo nRF24L01+ transmite suas mensagens por meio de ondas de rdio com modulao em frequncia GFSK (sigla do ingls Gaussian Frequency Shift Keying). Este tipo de modulao codifica os dados como uma srie de alteraes de frequncia de uma onda moduladora. A forma dos impulsos da onda de rdio gerados usa uma banda espectral relativamente estreita e , portanto, apropriado para pequenas redes sem fio que compartilham o mesmo meio com outros dispositivos.

    3.2.1 Taxa de Transmisso e Uso de Banda de Frequncia

    Um parmetro importante da camada fsica a taxa de transmisso. No nRF24L01+, ela pode ser configurada para 250 Kbps, 1Mbps ou 2 Mbps (Nordic, 2007). Esta uma grande vantagem deste dispositivo quando comparado com similares, como o Zigbee cuja taxa mxima de 250 Kbps (Nanhao et al., 2008). Em aplicaes comuns de redes de automao residencial normalmente no se necessita de alta taxa de transmisso de dados, entretanto uma taxa elevada tambm significa que a mensagem transmitida levar menos tempo para atingir o seu destinatrio. Isso se traduz em uma menor probabilidade de coliso entre mensagens. Como ponto negativo, temos que, com uma mesma quantidade de energia empregada na transmisso, uma mensagem que trafega a uma taxa mais baixa tem uma maior capacidade de alcance do que a mesma mensagem a uma taxa mais alta.

    O rdio nRF24L01+ projetado para operar na banda ISM de frequncia livre de 2,4 GHz, utilizando at 128 diferentes canais de 1 MHz de largura de banda cada. A Tabela 1 mostra as principais caractersticas de uso de banda de frequncia deste dispositivo.

    Tabela 1 Uso de Banda de Frequncia nRF24L01+ - Traduzido pelo autor a partir de tabela contida em (Nordic, 2007)

    Neste contexto, desvio de frequncia a medida da quantidade pela qual a frequncia do sinal se difere da frequncia de sua onda moduladora. Apesar de a onda se desviar desta frequncia de maneira relativamente estreita, deve-se garantir um espao mnimo muito maior, para evitar que efeitos de um sinal possam interferir na

  • UFRGS Mateus Streit Giaretta 9

    comunicao de outros dispositivos na mesma rede. Para isso, foi definido pelo fabricante um intervalo mnimo para cada canal, que garanta a no sobreposio com os sinais de outros canais. Alm disto, de acordo com a Tabela 1, ao se aumentar a taxa de transmisso, aumenta-se tambm a largura de banda necessria.

    Neste projeto decidiu-se por fixar o uso de uma taxa de transmisso de 1Mbps em todos os testes e experimentos realizados. Esta deciso foi tomada pelo fato desta taxa combinar caratersticas favorveis de alcance, uso de banda de frequncia e velocidade de transmisso. Ao contrrio da indicao do fabricante, constatou-se que um canal tem sim a possibilidade de interferir na comunicao do canal vizinho. Isto foi constatado pelo recebimento esprio de pacotes por rdios modulados em um canal imediatamente depois do qual a comunicao estava sendo feita. Diante disso, decidiu-se por manter um espao de 1 MHz entre os canais usados para comunicao, buscando-se eliminar esta interferncia indesejada.

    3.2.2 Compartilhamento da Banda de Frequncia

    A banda ISM de frequncia livre de 2,4 GHz, por ser de fato livre, compartilhada com diversos outros componentes presentes no ambiente domstico, como roteadores Wi-Fi, dispositivos Bluetouth e telefones sem fio. Esta coexistncia de emissores dividindo o mesmo meio uma fonte intrnseca de interferncia e possvel falha em transmisses. A Figura 7 mostra a largura de banda ocupada pelos principais dispositivos presentes nesta faixa de frequncia.

    Figura 7 Utilizao de banda de sistemas sem fio operando na banda ISM de 2,4 GHz Fonte: Traduo de figura contida em (Gerrior e Woodings, 2006)

    possvel notar que as redes WI-FI ocupam um grande espectro de frequncia. Isto se deve ao seu algoritmo usado para evitar colises, que est sempre alternando sua frequncia de transmisso a procura de canais com menor interferncia. Essa abordagem de fazer uma leitura do nvel de energia no ar, caso o componente possua essa capacidade, citado por (Gerrior e Woodings, 2006) como uma alternativa para evitar colises em um meio compartilhado como este. Cada protocolo e dispositivo ao seu modo possui uma maneira diferente de lidar com esse problema. A estratgia desenvolvida neste trabalho para uma rede usando o transmissor nRF24L01+ ser abordada na seo 4.5.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    10

    3.2.3 Alcance de Transmisso

    O nRF2401+ classificado como um rdio de curto alcance de transmisso. Em (Nordic, 2007) especificado que ele possui alcance de at 100m em espao aberto, quando transmitindo a uma taxa de 250Kbps. Em diversos testes realizados em espaos fechados, a comunicao entre estes dispositivos ocorreu sem problemas de alcance quando em uma rede dentro de um mesmo ambiente aberto. Todavia, muitas vezes pode ser necessrio que esta comunicao necessite atingir um alcance maior e atravessar obstculos, como paredes e lajes, por exemplo. Neste caso, o seu alcance se limitou a uma mdia inferior a 10 metros, nos ensaios realizados. Este problema pode ser abordado em duas frentes. Uma delas aumentando a capacidade de transmisso e recepo do sinal fsico. Para isso existe um mdulo comercial deste mesmo dispositivo, que alm de aumentar a potncia do sinal transmitido, acompanhado de uma antena de tamanho maior e maior potncia de irradiao. A outra abordagem a de repassar a mensagem por meio de um roteamento entre os ns da rede, de modo a expandir o alcance de cada n atravs de seus dispositivos vizinhos da mesma rede. Esta ltima abordagem ser apresentada no Captulo 5.

  • UFRGS Mateus Streit Giaretta 11

    4 Camada de Enlace

    Esta camada aborda as ligaes entre os ns e mecanismos usados para acessar o meio fsico e mover dados sobre a rede. O transceptor nRF24L01+ possui encapsulado o hardware que implementa o protocolo de enlace Enhanced Shockburst, principal responsvel pelas funes de enlace do sistema. Neste capitulo tambm so apresentadas estratgias de acesso ao meio e de mitigao de erros.

    4.1 Protocolo Enhanced Shockburst

    O Enhanced Shockburst um protocolo de camada de enlace de propriedade da Nordic Semiconductor (Nordic, 2007). Ele realiza funes automticas de temporizao, montagem, reconhecimento e retransmisso de pacotes de dados entre dois dispositivos nRF24L01+. Todo este manuseio feito de maneira concorrente ao processamento do microcontrolador externo, sendo que este somente controla a comunicao por meio de comandos ao rdio, atravs da interface SPI. No Enhanced Shockburst a comunicao feita pela troca de pacotes entre dois transceptores, um deles atuando como receptor (RX) e o outro como transmissor (TX), de acordo com o que segue:

    A troca de dados comea pela transmisso de um pacote de dados a partir da TX para o RX. Aps a transmisso o TX ajustado automaticamente no modo de recepo para esperar pelo reconhecimento da transmisso em forma de um pacote ACK.

    Se o pacote for recebido de maneira vlida pelo RX, transmitido um pacote de confirmao (ACK) para o TX antes de se retornar ao modo de recepo. possvel anexar dados ao pacote ACK, porm estes j devem estar previamente armazenados antes do recebimento da comunicao.

    Se o TX no recebe a mensagem de ACK, imediatamente ele retransmite o pacote de dados original e espera novamente por uma confirmao do receptor. possvel configurar parmetros tais como o nmero mximo de retransmisses e o intervalo entre elas.

    Em uma comunicao bilateral, quando se deseja uma resposta imediata a uma requisio enviada, pode-se programar os rdios para inverterem seu papel aps o envio da mensagem. Neste caso, o receptor passa a atuar como transmissor, sendo que os mesmos mecanismos de transmisso continuam vlidos. A Figura 8 descreve esta comunicao. Este caso mostra a ocorrncia de 2 retransmisses no primeiro envio de mensagem, e outras 3 na transmisso da resposta.

    Figura 8 Diagrama de tempo para transmisso de dados Fonte Autor

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    12

    Apesar de acrescentarem uma maior confiabilidade para em uma comunicao entre dois dispositivos, o uso do pacote de reconhecimento ACK e de retransmisses acarreta em um aumento no nmero de mensagens transmitidas. Em um cenrio com mltiplos dispositivos compartilhando o mesmo canal, foi possvel perceber, nos ensaios realizados, que estas configuraes acabam por trazer um efeito negativo ao sistema, provocando um aumento expressivo na taxa de perda de pacotes.

    O protocolo Enhanced ShockBurst tambm responsvel por montar o pacote de dados a ser enviado em cada transmisso. A Figura 9 mostra o formato do pacote de dados definido por ele.

    Figura 9 - Formato do Pacote Fonte: (Nordic, 2007)

    O Preamble um byte previamente definido que serve para distinguir o incio da mensagem de rudos no canal. O prximo campo composto pelo endereo do destinatrio, que pode ter entre 3 e 5 bytes. O campo intitulado Packet Control Field contm o tamanho dos pacotes de dados e configuraes de reconhecimento de pacotes e retransmisso. Finalmente, no campo Payload, encontra-se a real mensagem a ser transmitida, que pode possuir um tamanho entre 0 32 bytes. Por ltimo encontra-se um campo para CRC (do ingls Cyclic Redundancy Checking ou Verificao de Redundncia Cclica), um mecanismo de deteco de erros.

    O protocolo Enhanced Shockburst concebido para uma topologia com at 7 dispositivos conectados em estrela. Esta configurao permite 2 cenrios, um deles com um nico receptor de diversos transmissores, e a outra com um transmissor e diversos receptores. Para o desenvolvimento de uma rede com uma topologia mais complexa e funes adicionais necessrio desenvolver um protocolo que expanda as funcionalidades do Enhanced ShockBurst. Isto ser feito por meio de funes implementadas no microcontrolador Arduino. Neste caso, no entanto, estas funes adicionais passaro a exigir mais processamento do microcontrolador, pois no sero processadas dentro nRF24L01+, como feito com as funes do Enhanced Shockburst.

    4.2 Biblioteca RF24

    A biblioteca RF24 (Coliz, 2012) um driver para o transceptor nRF24L01+ desenvolvida especificamente para a plataforma Arduino. Conforme (Urdiain et al., 2012) esta biblioteca responsvel por fornecer uma interface para as funes implementadas pelo hardware deste dispositivo, de camada fsica e principalmente de camada de enlace, incluindo o protocolo Enhanced Shockburst. Isso feito em um nvel de abstrao maior sem a necessidade de acessar diretamente os registradores do transceptor. Este software distribudo de maneira livre sob os termos da GNU Public License verso 2. As funes desenvolvidas neste projeto usam como base esta biblioteca.

    4.3 Recepo de Dados

    De acordo com o protocolo Enhanced ShockBurst, as mensagens recebidas so armazenadas de maneira automtica em um buffer de at 3 posies presente no

  • UFRGS Mateus Streit Giaretta 13

    transceptor. Desta maneira, o microprocessador externo no necessita ter o seu hardware 100 % disponvel para comunicao enquanto espera por uma mensagem. Porm, necessrio destinar um tempo especfico do ciclo de processamento de cada dispositivo para checar no rdio se alguma mensagem foi recebida. A desvantagem deste tipo de alternativa exigir um maior tempo de resposta para atender s solicitaes de outros componentes.

    Uma alternativa o uso do pino IRQ do mdulo nRF24L01+, um pino especfico que gera um pulso na ocorrncia de um evento relevante. A gerao deste pulso ocorre quando o rdio recebeu um pacote, transmitiu com sucesso um pacote ou houve falha na transmisso. Este pino do rdio foi ligado ento a um pino do processador com capacidade de acionar interrupes, de acordo com mudanas na sua entrada. No sistema proposto essa interrupo passou a ser usada somente para identificar a chegada de uma mensagem, pois j haviam funes implementadas para checar o sucesso ou no da transmisso de mensagens. Desta forma, o receptor est teoricamente sempre disponvel para receber novos pacotes e atender prontamente suas solicitaes, independente das instrues que o microprocessador esteja executando no momento.

    A ressalva desta segunda alternativa o fato de que na configurao padro da plataforma Arduino no permitida a ocorrncia de interrupes simultneas, ou seja, no pode haver uma segunda interrupo enquanto a funo de tratamento interrupo anterior esteja sendo executada. Esta configurao serve para limitar a ocorrncia de erros, porm limita o uso desta funo para aplicaes que no dependam de outras interrupes.

    4.4 Controle de Acesso ao Meio

    No protocolo Enhanced ShockBurst no h nenhuma funo que defina uma ordem de acesso ao meio. Os dispositivos teoricamente tm permisso de transmitir a qualquer momento uma mensagem, sem considerar o fato de que outros dispositivos podem estar transmitindo ao mesmo momento. Este cenrio no desejado, visto que ao se adicionar um nmero maior de ns na rede a tendncia de colises na transmisso pode aumentar consideravelmente, como apontado na seo 2.1.

    Para organizar a comunicao e prevenir que dois rdios transmitam ao mesmo tempo, foi criada uma relao do tipo mestre e escravo entre os dispositivos da rede. Neste cenrio, um n definindo como mestre, sendo responsvel por centralizar a troca de informaes com os demais componentes, tidos como escravos. Isto feito de forma a criar um escalonamento do tempo de ciclo de troca de dados, onde cada escravo se comunica exclusivamente com o mestre central e somente quando requisitado. Esta diviso hierrquica age de forma a evitar possveis colises de pacotes. Uma representao desta topologia mostrada na Figura 10.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    14

    Figura 10 Topologia da organizao hierrquica de mestre e escravo Fonte: Autor

    Define-se ciclo de comunicao, como um perodo constante destinado para que o mestre troque dados com todos os seus escravos e execute demais tarefas de processamento a ele destinadas. A cada ciclo de troca de dados, uma sequncia de passos pr-definida executada. Inicialmente todos os escravos so definidos como receptores e o mestre como transmissor. O mestre inicia a comunicao enviando uma mensagem para um dos escravos. Ao receber o reconhecimento do escravo de que a mensagem foi recebida com sucesso, o mestre passa para o estado de receptor e aguarda pela resposta do escravo, que por sua vez passa a ser um transmissor. O mecanismo de transmisso da resposta para o mestre idntico ao do sentido reverso, contendo confirmao de recebimento por parte do receptor e possveis retransmisses.

    Para se garantir um determinismo entre todas as trocas de dados preciso alocar uma quantidade de tempo fixa para a comunicao com cada componente. Caso ele no tenha recebido com sucesso a resposta do escravo neste perodo de tempo, uma nova tentativa s poder ser feita no prximo ciclo. Esta sequncia de operao repetida para todos os escravos de maneira sequencial at fechar o ciclo. Na Figura 11 vemos uma representao de um ciclo de comunicao. Nela pode-se perceber que o escravo 2 no responde a solicitao enviada pelo mestre, entretanto isto no interfere no determinismo da comunicao com os demais dispositivos.

    Figura 11 Diagrama de tempo para um ciclo de comunicao Fonte: Autor

    O tempo de ciclo mnimo de troca de dados imposto pelo sistema uma funo da quantidade de componentes da rede e de quanto tempo alocado para cada um deles, e depender da aplicao desenvolvida. Diversos fatores influenciam no tempo necessrio para a comunicao com cada escravo. preciso considerar o tempo mximo definido

  • UFRGS Mateus Streit Giaretta 15

    para que ocorram retransmisses, nos dois sentidos de comunicao, e tambm o tempo necessrio para que tanto o escravo como o mestre consigam processar as informaes trocadas.

    Do ponto de vista de comunicao, o controle feito inteiramente pelo n mestre. Cada escravo tem controle e acesso somente s suas variveis, servindo como terminal remoto de entrada de sensores e sada de atuadores. Entretanto, possvel implementar-se funes dentro dos escravos para interpretao de comandos, tratamentos e filtragem de dados de sensores, condicionamento de atuadores e inclusive sistemas de controle discreto e contnuo. Desta forma, apesar de o controle das informaes ser centralizado, o controle e a lgica do sistema de automao podem ser distribudos entre todos os componentes da rede. Isto benfico do ponto de vista de que os Arduinos usados possuem capacidade limitada de processamento, o que para aplicaes mais complexas inviabilizaria o uso de um processamento central. Outro ponto positivo desta abordagem a robustez e segurana do sistema, pois, caso haja uma falha no n mestre, os demais ns podem ter autonomia para levar o sistema para um estado de operao seguro.

    4.5 Mecanismo para Evitar Colises em Acesso ao Meio

    Mesmo que sejam desenvolvidas estratgias que evitem que dois ns da rede transmitam ao mesmo tempo, no possvel prever quando outro dispositivo externo esteja acessando o mesmo meio, como visto na seo 3.2. Diante disso o nRF24L01+ possui uma funcionalidade especfica, que retorna um bit informando se existe ou no algum sinal naquela faixa de frequncia com potncia maior que -64dBm (Nordic, 2007). Usando-se desta funcionalidade, foi desenvolvida uma funo que escuta o canal a ser acessado por um tempo pseudoaleatrio antes de efetuar qualquer transmisso. Foi definido experimentalmente, em diversos ensaios, um tempo de espera considerado suficiente que varia entre 100s e 1000s, podendo se estender at um limite de 4ms, caso encontre sinais sendo transmitidos no meio. Caso o tempo de espera ultrapasse os 4ms sem conseguir encontrar um espao no meio, a transmisso no efetuada e tenta-se novamente somente no prximo ciclo de troca de dados. Este tempo de espera aleatrio interfere no determinismo do sistema, porm para tempos de ciclo da grandeza de dcimos de segundo, o seu efeito de baixa relevncia.

    O tempo de espera determinado pelo gerador de nmeros randmicos padro das bibliotecas do Arduino. Porm os nmeros ditos como aleatrios, fornecidos por esta funo, na verdade possuem uma sequncia pr-definida. O que foi feito para diferenciar esta sequncia em cada dispositivo foi atrelar a inicializao desta gerao por meio da leitura de uma das entradas analgicas no utilizadas do microcontrolador. Desta forma, a sequncia de nmeros gerados est atrelada ao rudo presente na entrada. Este rudo pode ser aproximado como um rudo branco e desta forma, de fato aleatrio.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    16

    5 Camada de Rede

    A camada de rede define processos utilizados para encaminhar os dados atravs da rede e a estrutura e da utilizao de endereamento lgico. Uma rede de automao residencial demanda funes mais complexas de rede, como um maior nmero de elementos, diferentes topologias e melhores estratgias de fluxo de dados. Porm funes desta camada no se encontram originalmente definidas para o sistema proposto. neste ponto que se faz necessrio o desenvolvimento de um protocolo especfico para esta camada que atenda s necessidades mais complexas exigidas por uma rede de automao.

    5.1 Definio de Cluster

    Um cluster pode ser definido como a juno de dois ou mais componentes da rede em uma mesma estrutura de forma que, para os demais dispositivos da rede, ela se comporte como se fosse uma entidade nica. Neste trabalho, esta estrutura composta por um n mestre centralizado que comanda a comunicao entre seus diversos escravos, implementando a proposta apresentada em sees anteriores. Este cluster montado de forma que seus componentes compartilhem variveis e tarefas.

    Dentro desta hierarquia, o mestre do cluster responsvel por toda a interface de comunicao com os componentes externos da rede. Mesmo que algum dispositivo externo necessite de alguma informao presente em um dos escravos, essa requisio primeiramente direcionada para o mestre, que ento busca esta informao com o respectivo escravo e aps responde para o solicitante.

    5.2 Rede Dividida em Clusters

    Seguindo a estratgia apresentada por (Urdiain et al., 2012), vide seo 2.2, foi desenvolvida uma rede que divide uma rede mais complexa em clusters de tamanhos menores. Na proposta apresentada pelo artigo, a estrutura de rede era voltada para uma rede de sensores, onde h somente uma direo no fluxo de dados. Para comunicaes mais complexas porm, a mesma falha, pois implica na necessidade de um n central e em uma dificuldade para a transmisso de dados do n central para os mestres de cada cluster, pois este era definido exclusivamente como receptor.

    Neste trabalho foi desenvolvida uma abordagem diferente da proposta por (Urdiain et al., 2012), mas que aproveitasse suas principais caractersticas. Manteve-se a diviso da rede em clusters, com cada um destes operando internamente a uma frequncia distinta. Esta diviso permite que a comunicao interna de cada cluster no interfira na troca de dados dos demais. Entretanto, devido s caractersticas de curto alcance do rdio e necessidade de expandir a cobertura da rede para o maior espao possvel, optou-se por eliminar a existncia de um n central rede. Desta forma, a troca de informaes entre os clusters passa a ser direta e bidirecional entre os ns mestres. Como requisito para esta topologia, necessrio que cada mestre esteja ao alcance de todos os outros, ou pelo menos ao alcance dos mestres dos clusters com quem ele se comunica. Na Figura 12 mostrado um esboo desta nova configurao.

  • UFRGS Mateus Streit Giaretta 17

    Figura 12 Topologia de rede dividida em clusters Fonte: Autor

    Neste novo cenrio, a rede passa a ter uma topologia semelhante de uma rvore, aumentando o seu alcance e abrindo a possibilidade para o uso de um nmero muito maior de componentes. Isto possvel em funo da responsabilidade do controle da comunicao ser dividida entre diversos mestres, ao contrrio da topologia apresentada na seo anterior, onde um nico componente gerenciava a comunicao de todos os dispositivos. Esta nova configurao, contudo, necessita de ajustes no modo como os ns trocam informaes. (Urdiain et al., 2012) citaram problemas de sincronizao entre os clusters com o uso de microcontroladores Arduino de baixo custo. Portanto, a estratgia a ser empregada deve levar em considerao uma possvel falta de sincronia entre os ns mestres. Outro fator importante de que a comunicao entre os clusters no possui a mesma hierarquia mestre/escravo como feito na estrutura interna de cada cluster. Diante disso, necessrio prever que a troca de mensagens possa ser feita de maneira aleatria entre os mestres dos clusters.

    A soluo encontrada para atender as necessidades de troca de informaes entre clusters foi a adio de um segundo transceptor nRF24L01+ a cada n mestre. De modo que ambos os rdios compartilham o mesmo barramento SPI usado na comunicao com o microcontrolador. O rdio adicional atua somente como receptor aguardando exclusivamente as mensagens de outros mestres. Para evitar que as mensagens externas ao cluster interfiram na comunicao interna, foi designada uma segunda frequncia, diferente da usada internamente, para recepo de mensagens externas. Portanto, nesta configurao, cada cluster associado a dois canais de frequncia distintas.

    Em experimentos realizados, quando interrupes eram geradas para notificar o microcontrolador da chegada de novas mensagens, a adio de um segundo rdio aos ns mestres tornou o comportamento do sistema instvel, aumentando de maneira considervel os erros de transmisso. Esta situao pode gerar a ocorrncia de interrupes simultneas, que como explicado anteriormente, no permitida pela configurao padro do Arduino. Para evitar que este problema acontea, definiu-se que os ns mestre passariam a no usar mais deste recurso. Portanto, cada mestre deve escalonar um tempo do seu ciclo para a checagem e processamento de mensagens externas recebidas. No possvel prever, no entanto, quantas mensagens externas podem chegar dentro do intervalo de um ciclo de comunicao. Este valor varia

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    18

    dependendo da aplicao sendo executada. Em geral, a partir de consideraes feitas por ensaios realizados, o perodo do ciclo de comunicao nesta estrutura de rede deve ser de no mnimo trs vezes o tempo que inicialmente seria destinado para a comunicao somente com os escravos em uma topologia do tipo estrela.

    Com a troca aleatria de mensagens entre os clusters, o determinismo entre uma mensagem e outra passa a ficar limitado para a comunicao entre componentes de mesmo cluster. Este fator altera a maneira de estruturar a rede ao se desenvolver uma aplicao. Para comunicaes com clusters externos, deve-se prever que o mestre do cluster vizinho no esteja o sempre disponvel para responder solicitao enviada. Alm disso, dependendo da solicitao, talvez o mestre tenha que buscar a informao almejada dentro de um de seus escravos. A Figura 13 mostra um diagrama de tempo para uma comunicao bidirecional entre dois clusters diferentes, onde este tipo de situao acontece.

    Figura 13 Diagrama de tempo para comunicao entre clusters Fonte: Autor

    medida do possvel, deve-se dar preferncia para manter no mesmo cluster ns com sensores e atuadores destinados a uma mesma funo. Esta diviso dos clusters por funo facilita a implementao e aumenta o desempenho do sistema de automao, uma vez que diminui a necessidade de troca de mensagens com componentes externos. Como exemplo, pode-se citar um sistema de automao hipottico de uma sala com piscina trmica. A rede deste sistema poderia ser dividida em trs diferentes clusters, um para contar o nmero de pessoas que entram e saem do ambiente (com o uso de sensores de passagem presentes em cada entrada), o outro para controlar a temperatura da gua (com sensores de temperatura e atuadores para bombear e aquecer a gua) e um ltimo para fornecer uma interface remota com o usurio (com o uso de um painel de comandos e uma interface ethernet). Neste caso, dentro do cluster de controle de temperatura poderia ser implementado um sistema de controle de lao fechado determinstico. Enquanto isso o outro cluster operaria os sensores de passagem para informar o nmero de pessoas presente no ambiente. O que poderia ser usado para informar um usurio remoto ou para desativar o aquecimento quando ningum estivesse presente no ambiente. Dentre todas as informaes de sensores e atuadores, as nicas variveis trocadas entre os clusters se limitariam a temperatura da piscina, o nmero de pessoas da sala e a alguns poucos comandos espordicos vindos da interface com o usurio.

  • UFRGS Mateus Streit Giaretta 19

    5.3 Retransmisso de Mensagens entre Clusters

    A topologia apresentada na seo anterior prev como requisito que todos os mestres dos clusters com que se deseja comunicar estejam ao alcance de transmisso. Em ambientes prediais grandes, com diversos ambientes e obstculos fsicos entre o transmissor e o receptor, nem sempre isto pode ser garantido. Para ampliar esta capacidade de alcance, desenvolveu-se um mecanismo de retransmisso de mensagens entre os ns mestres.

    Existem diversas estratgias desenvolvidas para o roteamento de mensagens entre os ns de uma rede. Porm muitas delas requerem um uso de processamento e memria muito elevados para o padro limitado do microprocessador Arduino (que ainda precisa processar todas as outras funes de transmisso e recepo de mensagens). Alm disso, estratgias que forcem um pacote de mensagem a trafegar entre um nmero elevado de ns, tendem a necessitar de um tempo maior de espera, o que no desejvel de uma maneira geral para um bom desempenho da rede. Portanto, o roteamento de mensagens foi limitado a somente um componente intermedirio. Esta pequena alterao, aparentemente pouco significativa, incrementa consideravelmente o alcance total da rede e abrange ainda mais possibilidades de implementao de aplicaes. A Figura 14 mostra a configurao desta nova topologia de rede. O mecanismo desenvolvido para atender este objetivo baseia-se no mapeamento dos dispositivos alcanados por meio de um mapa de rede, que ser explicado a seguir. Antes disso, porm, necessrio prever qual ser a capacidade mxima do sistema.

    Figura 14 Topologia de rede com mecanismo de retransmisso entre ns mestres Fonte: Autor

    5.3.1 Definio do Tamanho Mximo da Rede

    Para determinar o espao necessrio pelo mapa de rede e o tamanho das mensagens de atualizao deste mapa preciso prever qual o conjunto mximo de clusters que o sistema ir comportar. Temos que cada cluster ocupa 2 canais de um total de 128, desta forma possvel haver at 64 diferentes clusters em uma rede. Levando em conta a possibilidade de interferncia de canais vizinhos, relatada na seo 3.2, optou-se por limitar o nmero mximo de clusters para 32. Esta alterao tambm permite um mapeamento de rede mais rpido e eficiente, com mensagens de atualizao menores e que ocupem menos da j limitada memria do microprocessador.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    20

    5.3.2 Vetor de Alcance e Mapa de Rede

    Para o entendimento do mecanismo usado para retransmitir as mensagens na rede, primeiramente se faz necessrio definir estes dois conceitos usados.

    Vetor de Alcance uma palavra de 32 bits, onde cada bit representa um dos 32 possveis clusters da rede. Cada n mestre da rede possui um vetor de alcance prprio, onde as posies binrias de valor 1 representam os clusters que esto dentro do alcance de transmisso deste dispositivo. Os bits de valor 0 significam clusters inativos ou fora de alcance. A linguagem de programao do Arduino permitiria a declarao de um vetor de variveis booleanas, contudo, como ele trabalha com um processador que somente capaz de executar instrues de 8 bits, cada posio deste vetor estaria de fato ocupando 8 bits de memria ao invs de 1 bit. Para otimizar o espao de memria ocupado, este vetor de fato armazenado como uma varivel inteira de 32 bits, onde estratgias de manipulao binria so realizadas quando se deseja acessar ou modificar algum bit especfico.

    O Mapa de rede o espao destinado para armazenar os vetores de alcance de todos os possveis 32 dispositivos da rede. Em termos lgicos, se trata de uma matriz binria de 32x32 bits. O mapa de rede de cada dispositivo mestre composto pelo vetor de alcance do prprio dispositivo e pelos vetores de alcance dos dispositivos por ele alcanados. Na representao da linguagem de programao do Arduino ele, definido como um vetor de 32 posies, cada uma com uma varivel inteira de 32 bits, totalizando 128 bytes de memria ocupados.

    5.3.3 Mecanismo de Busca e Retransmisso

    Quando surge a necessidade de se transmitir uma mensagem para um dispositivo de um cluster externo, primeiramente procurado no mapa de rede, dentro do vetor de alcance do prprio dispositivo, se aquele cluster est classificado como ativo e dentro do alcance. Caso o destinatrio esteja nesta lista, a mensagem enviada diretamente para ele. Para o caso contrrio, o n transmissor ir buscar pelo destinatrio da mensagem no vetor de alcance de algum dos ns com quem ele consegue se comunicar. Para o caso de algum dos bits da coluna especfica do destinatrio, na matriz do mapa de rede, possuir valor diferente de 0, a mensagem ser enviada para o dono do vetor de alcance no qual isto foi constatado, que dever retransmiti-la para o destinatrio final. Na mensagem enviada para o n intermedirio, dever haver um campo informando que ela deve ser retransmitida e outros contendo informaes sobre o canal e a identificao do destinatrio final. Informaes mais especficas sobre o formato da mensagem sero abordadas na seo 6.1. Se o cluster com o qual se deseja comunicar no estiver marcado como ativo em nenhuma das posies do mapa de rede, a mensagem no ser enviada e um erro de comunicao ser sinalizado.

    Neste tipo de comunicao, a mensagem circula por um nmero maior de ns da rede, sendo que nenhum deles necessariamente estar disponvel para responder solicitao de maneira imediata. Isto leva a um aumento no intervalo necessrio entre a transmisso da mensagem para o cluster intermedirio e a chegada da reposta quando comparado com os casos anteriores. Alm disso, a chance de ocorrncia de erros na transmisso mltipla da quantidade de ns por onde ela passa. A Figura 15 exemplifica com um diagrama de tempo uma situao onde o mestre do cluster A necessita de uma

  • UFRGS Mateus Streit Giaretta 21

    informao contida em um escravo do cluster C. Para isso o cluster B serve como intermedirio, retransmitindo a mensagem enviada por A.

    Figura 15 Diagrama de tempo de uma mensagem retransmitida por um cluster intermedirio Fonte: Autor

    5.3.4 Construo e Atualizao do Mapa de rede

    Para se fazer uso desta estrutura de retransmisso de mensagens, necessrio que os ns possuam um mapa de rede atualizado de todos os dispositivos que estejam aptos comunicao. Neste contexto, foi desenvolvido um mecanismo que atualiza as informaes inerentes da rede de maneira dinmica medida que dispositivos so adicionados. Ao ser inicializado, cada dispositivo mestre manda uma mensagem para todos os canais ondem possam existir clusters.

    A mensagem enviada para cada canal segue os mesmos passos de toda mensagem usual, porm com configuraes de nmero e intervalo entre retransmisses aumentadas de modo a vasculhar de uma maneira mais persistente todos os possveis canais da rede. Para os canais que responderem mensagem enviada, o seu bit correspondente no vetor de alcance atribudo o valor 1.

    Um canal tido como fora do alcance ou inativo se, ao final de todas as tentativas de retransmisso, nenhuma resposta for recebida do canal de destino. Isto vale tambm para o caso onde ao se executar o passo de escutar o canal de destino antes de transmitir, o canal permanea ocupado por um tempo de espera maior que o definido. Isto indica a presena de rudo elevado no canal, impedindo qualquer comunicao. Para estes casos o canal tido como no-alcanvel e marcado um 0 na sua respectiva posio do vetor de alcance.

    Aps checar todos os possveis canais da rede, o dispositivo possui uma relao completa de todos os clusters que ele pode alcanar, armazenada no seu vetor de alcance. A partir disso, ele envia o seu vetor para cada dispositivo encontrado, para que os demais dispositivos saibam quem est ao seu alcance. Em resposta a esta mensagem os demais dispositivos tambm enviam o seu prprio vetor de alcance. A unio destes vetores forma o mapa de rede.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    22

    6 Camada de Aplicao

    A camada de aplicao a interface mais direta da rede com o usurio. Neste trabalho, considera-se o usurio como sendo o projetista de um sistema de automao. Neste captulo sero abordadas funes e estratgias voltadas para definir o modo como o sistema de automao gerencia os dados trocados.

    6.1 Estrutura da Mensagem

    O protocolo da camada de Enhanced ShockBurst define o formato e a estrutura do pacote de dados a ser enviado, como mostrado na seo 4.1. Dentre todos os campos contidos dentro deste pacote, o mais importante refere-se mensagem de dados propriamente dita, nomeada pelo protocolo como Payload e delimitada pelo intervalo de tamanho de 1 a 32 bytes. O protocolo de enlace responsvel por fornecer o acesso deste pacote de dados no meio fsico a ser transmitido, entretanto em nenhum momento ele se preocupa com o tipo de dados contido nele. Neste trabalho, o formato destes dados e a maneira como eles so usados definido pela camada de aplicao. Onde ele moldado para atender s necessidades de um sistema genrico de automao predial e a estrutura de rede proposta.

    O espao de 32 bytes destinado ao pacote de dados foi dividido em diferentes campos. Na linguagem de programao do microcontrolador Arduino, isto se fez com a montagem de uma estrutura de dados composta por diferentes tipos de variveis, conhecida como Struct. As informaes contidas nas mensagens so divididas em um cabealho, variveis de 8 e 32 bits e comandos associados a cada varivel. Uma representao desta estrutura mostrada na Figura 16.

    Figura 16 Estrutura da mensagem de dados Fonte: Autor

    6.1.1 Cabealho

    Neste subespao esto contidas informaes sobre o destinatrio e o remetente da mensagem, alm de uma srie de bits de configurao denominados FLAGS, totalizando um tamanho fixo de 5 bytes. As informaes sobre o destinatrio e o remetente da mensagem so divididas em dois campos para cada, um deles definindo o canal associado ao cluster em que o dispositivo est presente, e o outro a identidade que ele possui dentro deste cluster. Estes dois campos juntos definem a identidade nica deste dispositivo dentro da rede. Apesar de o protocolo de enlace j apresentar estas informaes no pacote que envolve estes dados, esta redundncia necessria para identificar o destinatrio final da mensagem, quando ela passa por ns intermedirios. Alm disso, ela serve para evitar que rdios receptores acabem por ler e processar

  • UFRGS Mateus Streit Giaretta 23

    mensagens que no estavam destinadas para seu endereo, falha esta que foi constatada de maneira recorrente nos testes realizados.

    No espao FLAGS, mostrado na Figura 17, so definidas algumas informaes bsicas sobre a o tipo de mensagem que est sendo enviada. Elas so usadas para identificar de maneira rpida o motivo da mensagem e desta forma direcionar o tratamento dado a ela. O campo RETR indica que o receptor da mensagem no o destinatrio final da comunicao, devendo este repass-la ao destinatrio presente na prvia identificao. O bit RESP ativo quando o dispositivo que mandou a mensagem no est espera de uma resposta do destinatrio. Para o campo MAP, o valor 1 atribudo quando a mensagem enviada de atualizao do mapa de rede, neste caso o receptor sabe que o nico dado a ser trocado o do vetor de alcance. Por ltimo, o campo DATA indica troca de dados. Os demais bits do campo FLAGS encontram-se vazios e so destinados a futuras aplicaes.

    Figura 17 Campo FLAGS Fonte: Autor

    6.1.2 Variveis

    Em um sistema de automao residencial, diferentes tipos de informao so trocados entre seus componentes. Em sua maior parte pode-se considerar que sejam variveis de pequena dimenso, como status de atuadores/sensores, comandos de liga/desliga ou pequenos contadores. Porm, necessrio muitas vezes o envio de informaes maiores ou com uma maior preciso numrica, tal como algumas leituras de sensores ou o vetor de alcance, descrito na seo 5.3.2. Para tanto, foram definidas duas categorias diferentes de variveis a serem enviadas. Uma delas compreende variveis de 8-bits, sendo destinado um espao para que seis destas possam ser enviadas em uma mesma mensagem. A outra categoria est associada s variveis de tamanho maior, cada uma ocupando 32 bits, onde permitido o envio de trs variveis simultaneamente.

    Em cada categoria de tamanho, as variveis podem assumir trs diferentes formas, sendo que cada formato possui uma extenso numrica diferente. Esta flexibilidade de representao tem o propsito de atingir as necessidades das mais variadas aplicaes a serem desenvolvidas em um ambiente de automao. Esta implementao foi possvel devido a uma estrutura da linguagem de programao do Arduino chamada Union. Com o uso dela, possvel definir um tipo de varivel que possa assumir diferentes formas pr-definidas. A Tabela 2 mostra os diferentes tipos de variveis permitidos, bem como a extenso que elas podem atingir.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    24

    Tabela 2 Tipos de Variveis a serem trocadas Fonte (Brooks, 1999)

    6.1.3 Comandos

    Os comandos so campos de 8-bits de extenso, que esto associados a cada uma das variveis contidas na mensagem, totalizando 6 comandos para variveis de 8-bits e 3 comandos para as de 32 bits, como mostrado na Figura 16. A funo do comando orientar o receptor da mensagem sobre o que fazer com as variveis enviadas ou qual varivel est sendo requisitada. Na Figura 18 mostrado o formato base de cada uma destas estruturas.

    Figura 18 Varivel comando Fonte: Autor

    O primeiro campo de cada comando indica se a varivel associada a este est sendo enviada para o destinatrio (escrita), ou se est sendo feito uma requisio de leitura de alguma varivel. Neste ltimo caso, na resposta solicitao, a leitura requerida alocada no mesmo campo destinado varivel associada a este comando. Os prximos dois bits definem o tipo da varivel que est sendo enviada ou requisitada. Apesar de possurem a mesma estrutura de comando, os tipos associados s variveis de 8-bits se diferem das de 32-bits. Os 5 bits restantes representam um valor inteiro, que varia de 0 a 35, associado identificao da varivel. Esta identificao est associada a um conjunto de variveis compartilhadas pela rede. Para cada tipo, existe um vetor com 35 possibilidades distintas de variveis a serem compartilhadas por cada dispositivo. Estas variveis so de acesso global na rede e cabe a cada dispositivo definir quais das suas informaes so compartilhadas com os outros por meio delas. Na Figura 19 exemplificado a maneira com dois comandos distintos so interpretados.

    Figura 19 Exemplos de interpretao de comandos Fonte: Autor

  • UFRGS Mateus Streit Giaretta 25

    7 Resultados de Ensaios Realizados

    7.1 Ensaio de Comunicao Bidirecional entre Dois Componentes

    Neste experimento, dois componentes da rede foram dispostos de maneira a ficarem distanciados por aproximadamente 8 metros. As configuraes da rede incluam o uso de confirmao de recebimento de mensagens (ACK), e at trs possveis retransmisses em caso de falha. Estes dispositivos constituam um par mestre/escravo, onde o primeiro enviava uma mensagem e aguardava pelo recebimento da resposta vinda do escravo. Este ciclo de troca de mensagens foi repetido a cada 30 ms, onde a cada vez era medido o tempo que levava para a mensagem enviada ser respondida.

    Para medir a latncia entre transmisso e recepo, foi enviada uma mensagem contendo dois comandos. O primeiro era de escrita, de uma varivel de 32 bits contendo o tempo medido pelo transmissor pouco antes de enviar o pacote. Por sua vez, o segundo comando requisitava a leitura da mesma varvel de 32-bits que havia sido escrita pelo comando anterior. Com a chegada da reposta, o valor recebido era subtrado do tempo atual.

    Nesta configurao, foram testados trs diferentes cenrios. No primeiro, os dois componentes se comunicavam livremente sem interferncias. A funo que escuta por rudos no canal antes de transmitir, descrita na seo4.5, estava ativa. No segundo teste foi adicionado configurao prvia um terceiro elemento, cuja funo era gerar interferncia na rede. Este dispositivo foi programado para transmitir mensagens no mesmo canal, com um ciclo que variava randomicamente entre 10 e 30 ms. Em um ltimo experimento a interferncia foi mantida, mas desta vez a funo que escuta o canal foi desativada. Os resultados destes ensaios podem ser vistos na Tabela 3.

    Tabela 3 Ensaio de Comunicao Bilateral Fonte Autor

    Como pode ser visto, na primeira situao, a comunicao obteve uma taxa inexpressiva de erros. Para os casos onde foi adicionada a interferncia na rede, possvel analisar claramente o efeito da funo de escuta. Apesar de ter adicionado uma latncia maior para a rede, ela foi capaz de reduzir consideravelmente os efeitos da interferncia. A latncia do terceiro caso tambm aumentou, em comparao com o primeiro, devido ao maior nmero de retransmisses provocado pela interferncia.

    7.2 Ensaio de Comunicao Interna ao Cluster

    O objetivo deste ensaio analisar a comunicao entre um n mestre e quatro escravos dispostos em uma topologia do tipo estrela, distanciados em 4 metros do n central. A cada ciclo de comunicao, era enviada uma mensagem para cada n escravo, com um espaamento de 50 ms para cada uma. A configurao de confirmao de recepo de mensagens foi desativada, pois em experimentos foi detectado que, para

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    26

    comunicao com mltiplos dispositivos, esta configurao acabava por provocar um aumento expressivo na taxa de perda de pacotes.

    O mesmo mecanismo para medir a latncia da rede do ensaio anterior foi novamente utilizado, porm desta vez os resultados so apresentados de maneira grfica, como segue na Figura 20. Nestes grficos, os pontos de valor de latncia que cruzam a linha de 1,5 milissegundos (ms) significam perdas de pacote. A numerao dos escravos indica a ordem na qual a comunicao feita dentro do ciclo de transmisso.

    Figura 20 Medida de latncia para ensaio com mltiplos dispositivos Fonte: Autor

    Ao se analisar os resultados possvel acompanhar o efeito indesejado de outra configurao da rede, o uso de retransmisses. Nota-se uma perda de qualidade na comunicao dos ltimos escravos em relao aos primeiros. Isto se explica pela possvel ocorrncia de retransmisses esprias vindas das primeiras transmisses. O uso de retransmisses tambm afeta o determinismo do sistema.

    7.3 Ensaio de Comunicao Entre Clusters

    Neste ensaio, testado o comportamento da rede ao se efetuar uma comunicao com um cluster externo. Nele, um mestre de um cluster se comunica com seus trs escravos, com 30 ms de espao para cada comunicao, em seguida envia uma mensagem para um cluster externo e aguarda pela resposta. O tempo de ciclo total deste mestre composto por 90 ms de comunicao interna e outros 90 ms destinados a troca de mensagens externas, totalizando 180 ms. J o outro cluster, destina 80 ms para troca de dados interna e tambm 80 para externa, num total de 160 ms de ciclo. Neste ensaio a configurao que permite retransmisses em caso de falha foi desativada. Os grficos com a latncia de cada mensagem so vistos na Figura 21.

  • UFRGS Mateus Streit Giaretta 27

    Figura 21 Latncia em comunicao interna e externa ao cluster Fonte: Autor

    Ao analisar os resultados, notvel o aumento expressivo na latncia da mensagem trocada com o cluster externo. Isto se deve ao fato deste no estar sempre disponvel para responder s mensagens recebidas, devido s suas tarefas de comunicao interna. possvel notar tambm um leve padro de variao no tempo de espera das mensagens, isto se deve ao fato de ambos os mestres se comunicarem em um ciclo fixo, porm com tempos diferentes.

    Nos grficos da comunicao com os escravos, nota-se o efeito da desativao do uso de retransmisses. Esta nova configurao provocou uma leve piora da comunicao dos primeiros escravos, porm no visto mais a mesma discrepncia entre diferentes transmisses do mesmo ciclo, presente no ensaio anterior.

    7.4 Ensaio com o uso de Retransmisso de Mensagens

    Com este experimento, pretende-se analisar o modo como a rede se comporta com o uso de uma retransmisso de mensagem. Para isso, um n mestre envia uma mensagem para o mestre de um cluster intermedirio, requisitando que esta seja retransmitida para um terceiro destinatrio final. Para a resposta, a mensagem atravessa o mesmo caminho. Cada cluster possui um tempo destinado para comunicao interna e outro para externa, sendo estes tempos diferentes para cada um. O resultado do ensaio mostrado na Figura 22. Apesar do grfico mostrar apenas os 5 primeiros minutos, a extenso real do ensaio foi de 191 minutos. O objetivo deste tempo prolongado foi confirmar a robustez do sistema para transmisses prolongadas, o que de fato pde ser observado. No grfico mostrado nota-se uma variao ainda maior na latncia entre a mensagem enviada e a recebida.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    28

    Figura 22 Latncia de uma mensagem retransmitida entre clusters Fonte: Autor

    7.5 Ensaio com o uso de componentes reais

    Para testar o comportamento da rede em uma situao real, bem como a funcionalidade dos comandos de escrita e leitura de variveis, foi montada sobre a rede uma pequena aplicao de automao residencial. Esta aplicao era composta por trs diferentes ns escravos espalhados a uma distncia de aproximadamente 5 metros de um n mestre central. As mensagens eram trocadas com um tempo de ciclo de 300 ms.

    Um dos ns era responsvel pela leitura da temperatura e umidade do ambiente, provindas de um sensor DHT11, salvas em duas variveis globais de 8 bits. Outro n executava a leitura de um teclado numrico, armazenando a ltima tecla. O terceiro escravo possua acoplado um display LCD de 16x2 linhas, que mostrava alternadamente o valor da temperatura ou da umidade do ambiente, de acordo com uma varivel booleana enviada pelo n mestre. Este ltimo era encarregado de enviar comandos de leitura e escrita para todos os componentes e exportar os dados para um computador por meio de uma comunicao serial. O mestre tambm decidia o que seria mostrado no display LCD, de acordo com uma lgica baseada na ltima tecla lida pelo teclado numrico.

    O sistema aparentemente funcionou corretamente, porm notou-se uma perda significativa da taxa de sucesso de transmisso. Para o escravo com o sensor a taxa foi de 96,51%, para o n com teclado foi de 89,46% e para o display 80,03%. Este efeito explica-se pela interferncia de funes das bibliotecas necessrias para acionar cada um destes componentes. Como cada biblioteca desenvolvida separadamente e como todas elas compartilham um nmero limitado de recursos do processador, ao juntar-se vrias dessas bibliotecas em uma mesma aplicao quase impossvel prever os conflitos entre as funes de cada uma delas. Para tanto, recomenda-se o uso de um segundo microprocessador, acoplado por uma ligao serial ou de outro barramento, exclusivo para o acionamento e leitura de sensores ou atuadores.

  • UFRGS Mateus Streit Giaretta 29

    8 Concluses e Trabalhos Futuros

    Em um cenrio onde a automao residencial ainda vista como um artigo de luxo para muitos, devido ao seu alto custo, a proposta apresentada neste projeto mostra que o estado tecnolgico atual j permite o desenvolvimento de sistemas que utilizem dispositivos de baixo custo, mas que atendam aos requisitos das aplicaes. Neste contexto, o sistema proposto, apesar de suas limitaes em termos de complexidade de funes, mostrou-se capaz de atuar de forma a suprir diversas necessidades presentes no ambiente de automao residencial de pequena escala.

    A expanso das funcionalidades originais do transceptor nRF24L01+, permitiu o desenvolvimento de uma estrutura de rede mais complexa e adaptada a aplicaes de automao. O sistema mostrou-se flexvel de modo a acomodar troca de dados com tempo determinstico, e tambm aceitar mensagens vindas de maneira aleatria. A implementao de diferentes topologias permitiu a expanso da capacidade de alcance de sinal para diversos ambientes. Enquanto isso, a separao hierrquica dos ns em mestres e escravos e a criao de clusters, associada a estratgias de conteno de falhas, foram capazes de proporcionar resultados satisfatrios em termos de sucesso nas transmisses, quando comparados com estudos previamente realizados com o uso deste mesmo dispositivo.

    Apesar de ser baseado em um protocolo considerado no padro, o seu desenvolvimento em uma plataforma de compartilhamento de software livre, como a Arduino, permite uma interligao deste trabalho com demais projetos futuros. Os resultados obtidos neste trabalho mostram um sistema promissor. Porm, como projeto, ele ainda no se encontra totalmente pronto para um possvel uso comercial. O cdigo desenvolvido ainda necessitaria de um maior amadurecimento, em termos de uma busca por possveis erros e por uma maior eficincia de processamento e uso de memria. Funcionalidades tambm poderiam ser adicionadas, como o reconhecimento dinmico das mensagens recebidas, sem a necessidade de reservar um tempo para esperar pela resposta das requisies enviadas. Adicionalmente, o projeto ainda carece de um nmero maior de testes com o uso de componentes reais, de forma a otimizar suas funes para uma gama maior de aplicaes. Estas tarefas ficam destinadas a um possvel trabalho futuro.

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    30

    9 Referncias

    ALIEXPRESS. aliexpress.com 2014. Disponvel em: < http://www.aliexpress.com >. Acesso em: 27 de maio de 2014.

    AMS. Adjustable/Fixed Low Dropout Linear Regulator. 2014. Disponvel em: < http://www.ams-semitech.com/attachments/File/AMS1117_20120314.pdf >. Acesso em: 27 de maio de 2014.

    ARDUINO. Arduino Pro Mini. 2014. Disponvel em: < http://arduino.cc/en/Main/ArduinoBoardProMini >. Acesso em: 27 de maio de 2014.

    BROOKS, D. R. C Programming: The Essentials for Engineering and Scientists. Springer-Verlag New York, Inc., 1999. 496 ISBN 0387986324.

    CHRIST, P. et al. Performance analysis of the nRF24L01 ultra-low-power transceiver in a multi-transmitter and multi-receiver scenario. Sensors, 2011 IEEE, 2011, 28-31 Oct. 2011. p.1205-1208.

    COLIZ, J. Driver for nRF24L01(+) 2.4GHz Wireless Transceiver. 2012. Disponvel em: < http://maniacbug.github.io/RF24/ >. Acesso em: 21/05/2014.

    DAY, J. D.; ZIMMERMANN, H. The OSI reference model. Proceedings of the IEEE, v. 71, n. 12, p. 1334-1340, 1983. ISSN 0018-9219.

    DIAS, C. L. D. A.; PIZZOLATO, N. D. DOMTICA: Aplicabilidade e Sistemas de Automao Residencial. Vrtices, v. V. 6, n. 3, n. set/dez 2004, 2004. ISSN 1809-2667.

    GERRIOR, M.; WOODINGS, R. W. Avoiding Interference in the 2.4-GHz ISM Band. 2006. Disponvel em: < http://www.eetimes.com/document.asp?doc_id=1273359&page_number=1 >. Acesso em: 22/05/2014.

    NANHAO, Z. et al. High Data Rate Wireless Sensor Networks Research. 2008.

    NORDIC. nRF24L01 Product Specification. SEMICONDUCTOR, N.: 74 p. 2007.

    Redes da Organizao Profibus. Mecatrnica Atual 2004. Disponvel em: < http://www.mecatronicaatual.com.br/educacao/1156-redes-da-organizao-profibus >. Acesso em: em: 22/05/2014.

    URDIAIN, L. O. et al. Wireless Sensor Network Protocol for Smart Parking Application Experimental Study on the Arduino Platform. AMBIENT 2012: The Second International Conference on Ambient Computing, Applications, Services and Technologies. THINKMIND. Barcelona, Spain: 45 a 48 p. 2012.

  • UFRGS Mateus Streit Giaretta 31

    10 Anexos

    Nos seguintes anexos so apresentadas as principais funes de programao implementadas no microcontrolador Arduino durante o desenvolvimento deste trabalho.

    10.1 Definies da Estrutura da Mensagem

    //DEFINIO DE VALORES USADOS PARA CONFIGURAES #define TYPE1 32 #define TYPE2 64 #define TYPE3 96 #define READ false #define WRITE true //ENUMERAO DE FLAGS enum flag_enum{ MAP, ANSWER, RET,DATA }; typedef enum flag_enum flag_t; //DEFINIO DO TIPO DA VARIVEL DE 8-BITS DA MENSAGEM typedef union { bool BOOL; uint8_t UINT8; int8_t INT8; } data0_t; //DEFINIO DO TIPO DA VARIVEL DE 8-BITS DA MENSAGEM typedef union { int32_t INT32; uint32_t UINT32; float FLOAT; } data1_t; //4BYTES //ESTRUTURA DA MENSAGEM struct message_t { uint8_t sourceID; //INDENTIFICAO DO REMETENTE uint8_t destID; // IDENTIFICAO DO DESTINATRIO uint8_t sourceCH; //CANAL DO REMETENTE uint8_t destCH; //CANAL DO DESTINATRIO uint8_t flags;//FLAGS uint8_t dcmd[6]; //COMANDOS ASSOCIADOS S VARIVEIS DE 8-BITS data0_t dvar[6]; //VARIVEIS DE 8-BITS uint8_t acmd[3];//COMANDOS ASSOCIADOS S VARIVEIS DE 32-BITS data1_t avar[3];//VARIVEIS DE 32-BITS }; typedef struct message_t message_type; //DEFINIO DA VARIVEL DO TIPO MENSAGEM

    10.2 Funo que Escuta por Rudos no Canal

    bool listen(void) { radio.startListening(); //RADIO CONFIGURADO COMO RECEPTOR unsigned long started_listen = micros();//TEMPO INICIAL unsigned long time = started_listen; bool ok = false; bool air;

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    32

    unsigned long rand = random(100,800); //GERA UM VALOR ALEATRIO ENTRE 100 E 800 ms while (((micros () - time) < rand) | ((micros() - started_listen) < 4000))//EXECUTA CICLO DURANTE TEMPO GERADO OU TIMEOUT { air=radio.testCarrier();//ESCUTA O CANAL if (air)//CASO ENCONTRE ALGO { rand = random(100,800); //GERA OUTRO NMERO ALEATRIO time = micros (); //REINICIA A CONTAGEM ok = false; // } else ok = true; } radio.stopListening();//RDIO DEFINIDO COMO TRANSMISSOR return ok; //RETORNA ESTADO DO CANAL }

    10.3 Funo que Checa o Recebimento de Mensagens

    void check_radio() { if (radio.available())//CASO O RDIO TENHA RECEBIDO ALGUMA MENSAGEM { message_type rx;//DECLARAO DE VARIVEL DO TIPO MENSAGEM uint8_t siz = radio.getDynamicPayloadSize();//L O TAMANHO DA MENSAGEM RECEBIDA radio.read(&rx, siz);//L A MENSAGEM interpret_message (siz,rx);//INTERPRETA O CONTEDO DA MENSAGEM } }

    10.4 Funo que Escreve a Mensagem e Aguarda pela Resposta

    struct message_t write_and_ack (uint8_t siz , uint8_t time, struct message_t msg) { bool ok = write_ch(siz, msg); //ESCREVE MENSAGEM if(ok)//CASO TRANSMISSO TENHA SUCESSO { radio.setChannel(MYCHANNEL);//DEFINE NOVAMENTE O RDIO NO SEU CANAL radio.startListening();//RECEPTOR unsigned long started_waiting_at = millis(); bool timeout = false; while ( ! radio.available() && ! timeout )//ESPERA PELA RESPOSTA if (millis() - started_waiting_at > time ) timeout = true; if ( timeout ) Serial.print("FAIL"); else { uint8_t siz = radio.getDynamicPayloadSize(); radio.read( &msg, siz);//L MENSAGEM RECEBIDA } } radio.stopListening();//TRANSMISOR return msg;//RETORNA MENSAGEM RECEBIDA }

  • UFRGS Mateus Streit Giaretta 33

    10.5 Funo que Escreve a Mensagem

    bool write_ch(uint8_t siz, struct message_t msge) { bitWrite(msge.flags,DATA,true); //ATIVA FLAG DE TROCA DE DADOS radio.setChannel(msge.destCH); //DEFINE CANAL DE DESTINO radio.openWritingPipe(BASEADDRESS+msge.destID); //DEFINE ID DE DESTINO bool air = listen(); //ESCUTA CANAL ANTES DE TRANSMITIR if (!air)//CANAL SE CONDIES DE TRANSMISSO { radio.setChannel(MYCHANNEL); return false;//MENSAGEM NO ENVIADA } else { if (siz==0)//DEFINE TAMANHO DA MENSAGEM siz=11; else { if (siz==1) //MENSAGEM SOMENTE COM VAR DE 8-BITS siz=17; else siz=32; //MENSAGEM COMPLETA } radio.writeFast(&msge,siz);//ESCREVE MENSAGEM bool ok = radio.txStandBy(); return ok; } }

    10.6 Funo que Escreve um Comando

    uint8_t write_command(bool flow, uint8_t type, uint8_t tag) { uint8_t command=type; //TIPO DA VARIVEL - TYPE1-BOOL/FLOAT TYPE2-UINT8/UINT32 TYPE3-INT8/INT32 bitWrite(command,7,flow);//LEITURA OU ESCRITA command = command + tag;//TAG DA VARIVEL GLOBAL DO RECEPTOR return command; }

    10.7 Funo que inicializa e Rotula Mensagem a ser Enviada

    void lable_message(uint8_t mCH, uint8_t mID, uint8_t dCH, uint8_t dID, struct message_t *msg) { msg->sourceID=mID; msg->destID=dID; msg->sourceCH=mCH; msg->destCH=dCH; msg->flags=0; for (uint8_t i=0; idcmd[i]=0; msg->dvar[i].UINT8=0; }

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    34

    for (uint8_t i=0; iacmd[i]=0; msg->avar[i].UINT32=0; } }

    10.8 Funo que Interpreta Mensagem Recebida

    void interpret_message (uint8_t siz, struct message_t msg) { if ((msg.destID == MYID) & (msg.destCH==MYCHANNEL))//MSG PARA MIM? { message_type tx;//PREPARA MSG DE RESPOSTA lable_message(MYCHANNEL, MYID, msg.sourceCH, msg.sourceID, &tx); if (bitRead(msg.flags,DATA))//CASO MSG FOR DE TROCA DE DADOS { for (int8_t i=0; i> 5; if (type != 0) //CASO TIPO DA VAR FOR 0 O COMANDO CONSIDERADO VAZIO { uint8_t tag = msg.dcmd[i] & 15;//L TAG DA MSG if (bitRead(msg.dcmd[i],7)) // RECEBE VAR ENVIADAS { switch (type){ case(1): var_bool[tag]=msg.dvar[i].BOOL;//ACESSA VAR GLOBAL REQUERIDA break; case(2): var_uint8[tag]=msg.dvar[i].UINT8;//ACESSA VAR GLOBAL REQUERIDA break; case(3): var_int8[tag]=msg.dvar[i].INT8;//ACESSA VAR GLOBAL REQUERIDA break; default: break; } } else// RESPONDE VAR REQUERIDAS { switch (type){//ACESSA VAR GLOBAL REQUERIDA case(1): tx.dvar[i].BOOL=var_bool[tag]; break; case(2): tx.dvar[i].UINT8=var_uint8[tag]; break; case(3): tx.dvar[i].INT8=var_int8[tag]; break; default: break; } } } }

  • UFRGS Mateus Streit Giaretta 35

    if(siz>17) //TESTA SE H VARIVEIS OU COMANDOS DE 32 BITS NA MENSAGEM { for (int8_t i=0; i> 5; if (type != 0) { uint8_t tag = msg.acmd[i] & 15; if (bitRead(msg.acmd[i],7))// RESPONDE REQUISIO { switch (type){//RECEBE VAR ENVIADAS case(1): var_float[tag]=msg.avar[i].FLOAT; break; case(2): var_uint32[tag]=msg.avar[i].UINT32; break; case(3): var_int32[tag]=msg.avar[i].INT32; break; } } else { switch (type){//ENVIA VARIAVEIS REQUERIDAS case(1): tx.avar[i].FLOAT=var_float[tag]; break; case(2): tx.avar[i].UINT32=var_uint32[tag]; break; case(3): tx.avar[i].INT32=var_int32[tag]; break; default: Serial.print(" NOT TYPE "); Serial.print(type); break; } } } } } } bitWrite(tx.flags,ANSWER,true);//FLAG DE RESPOSTA bool ok = write_ch(3, tx); //ENVIA RESPOSTA radio.startListening(); //RECEPTOR if (bitRead(msg.flags,MAP))//CASO MSG SEJA DE ATUALIZAO DE MAPA DE ALCANVE { bool flag = bitRead(msg.flags,ANSWER); if(!(bitRead(msg.flags,ANSWER))) { message_type tx; lable_message(MYCHANNEL, MYID, msg.sourceCH, msg.sourceID, &tx); bitWrite(channels[MYCHANNEL/2],(msg.sourceCH)/2, true); //registra canal na lista de alcanaveis bitWrite(tx.avar[0].INT32, (msg.sourceCH)/2, true); //atualiza campo de mensagem

  • Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada para Sistemas de Automao Predial

    36

    tx.destCH = msg.sourceCH; //destination channel tx.destID = 0x00; //destination ID bitWrite(tx.flags,MAP,true); bitWrite(tx.flags,ANSWER,true); bool ok = write_ch(3, tx); channels[(msg.sourceCH)/2] = msg.avar[0].INT32;//ATUALIZA MAPA DE ALCANCE for (int i=0; i bitRead(msg.sourceCH,i)) { tx.destCH = i*2; // bool ok = write_ch(3, tx); } } //LIMPA FLAGS bitWrite(tx.flags,MAP,false); bitWrite(tx.flags,ANSWER,false); } } } else { if (bitRead(msg.flags,RET)) //CASO MENSAGEM SEJA PARA RETRANSMISSO { uint8_t dest_id = msg.sourceID;//SALVA DADOS DO REMETENTE uint8_t dest_ch = msg.sourceCH; message_t tx = msg; lable_message(0,0,0,0,&msg); //LIMPA VARIAVL DE RECEBIMENTO tx.sou