Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
ESCOLA DE ENGENHARIA
TRABALHO DE CONCLUSO EM ENGENHARIA DE CONTROLE
E AUTOMAO
P ro j eto d e u m a Red e d e
C o m u n i c a o s e m F i o B as e ad a
n o Tra n s c e p to r n R F 2 4 L 0 1 +
Vo l tad a pa ra S i ste m as d e
A u to m a o P red i a l
ii Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
Sumrio
Sumrio
ii
Resumo
iv
Abstract
Lista de Figuras
vi
Lista de Tabelas
vii
viii
1 Introduo
1.1
Objetivo Geral
1.2
Objetivos Especficos
2 Reviso Bibliogrfica
2.1
Anlise do Desempenho do Transceptor nRF24L01+ em um Cenrio com
Mltiplas Transmisses
3
2.2
2.3
3.1
3.1.1
3.1.2
3.1.3
3.2
3.2.1
3.2.2
3.2.3
4 Camada de Enlace
6
6
6
7
8
8
9
10
11
4.1
11
4.2
Biblioteca RF24
12
4.3
Recepo de Dados
12
4.4
13
4.5
15
5 Camada de Rede
16
5.1
Definio de Cluster
16
5.2
16
5.3
19
5.3.1
5.3.2
5.3.3
5.3.4
19
20
20
21
iii
Estrutura da Mensagem
6.1.1
6.1.2
6.1.3
Cabealho
Variveis
Comandos
22
22
22
23
24
25
7.1
7.2
25
7.3
26
7.4
27
7.5
28
29
9 Referncias
30
10 Anexos
31
10.1
31
10.2
31
10.3
32
10.4
10.5
33
10.6
33
10.7
33
10.8
34
10.9
36
37
iv Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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
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
vi Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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
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
viii Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
2 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
1.2 Objetivos Especficos
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.
4 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
dentro de uma rede. Na Figura 3 encontra-se uma descrio breve sobre as sete camadas
do Modelo de Referncia OSI.
6 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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 ProMini 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.
8 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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)
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.
10 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
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:
12 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
13
14 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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 tentase 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.
16 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
17
18 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
19
20 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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
21
22 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
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.
24 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
25
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
26 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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.
27
28 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
29
30 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
9 Referncias
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
32 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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
}
33
34 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
for (uint8_t i=0; i<3; i++)//ZERA VARIVEIS DE 32-BITS
{
msg->acmd[i]=0;
msg->avar[i].UINT32=0;
}
}
35
36 Projeto de uma Rede de Comunicao sem Fio Baseada no Transceptor nRF24L01+ Voltada
para Sistemas de Automao Predial
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<64; i++)
{
if (bitRead(channels[MYCHANNEL/2],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.sourceID = MYID;//SE COLOCA COMO REMETENDE DA MSG RETRANSMITIDA
tx.sourceCH = MYCHANNEL;
bitWrite(tx.flags,RET,false); //DESATIVA FLAG DE RETRANSMISSO
msg = write_and_ack (3, 60, tx); //RETRANSMITE MSG PARA DEST FINAL
if ((msg.destID == MYID) & (msg.destCH==MYCHANNEL))//CASO RESPOSTA TENHA
CHEGADO
{
tx = msg;
tx.destID = dest_id;//DEFINE DESTINATARIO
tx.destCH = dest_ch;
bitWrite(tx.flags,ANSWER,true); //DESATIVA FLAG DE RETRANSMISSA
bool ok = write_ch(3, tx);//ENVIA RESPOSTA
}
radio.startListening();//RECEPTOR
}
}
}
37