segunda-feira, 10 de julho de 2017

Redes de Sensores Sem Fio com Protocolo Radiuino Emulada no Arduino

Introdução

O Radiuino pode ser definido como um protocolo de comunicação para Redes de Sensores Sem Fio, que implementa um pacote de comunicação de 52 bytes. Ele é estruturado em uma pilha de protocolos com 5 camadas: Física, MAC, Rede, Transporte e Aplicação, esta estrutura é conceitualmente equivalente à pilha TCP/IP.

Existem duas bibliotecas para serem utilizadas no Arduino, a primeira é a biblioteca Radiuino, que apresenta os Firmwares de maneira transparente, permitindo ao usuário entender todo o processo de comunicação dos protocolos em cada camada. Isso permite que o usuário construa redes de comunicação sem fio customizadas para cada situação e ambiente, além de permitir aos estudantes alterar parâmetros diversos no ambiente e acompanhar o comportamento da rede, comparando os conhecimentos teóricos, com a prática.

A segunda biblioteca é o Radiuino4App, cujo objetivo é facilitar a utilização de aplicações em redes de sensores sem fio, para os usuários que não tem interesse em entender como a rede funciona, ou precisam de um ambiente de demonstração de conceito, por exemplo, onde a uma rede básica atende a demanda. Nessa biblioteca os Firmwares apresentam apenas configurações básica, ocultando o restante das opções. Nesse cenário, é criada automaticamente uma rede estrela, onde um computador envia um pacote de 52 bytes e o nó sensor devolve um pacote de 52 bytes. É possível colocar até 255 sensores nessa rede. Permitindo aos usuários focaram na aplicação sem se aprofundarem nas questões de rede.

O que é RSSI?

A sigla RSSI significa Received Signal Strength Indicator, se traduzirmos seria algo como a indicação de força/intensidade do sinal recebido, esse valor é muito importante para quem está olhando para a rede de sensores sem fio, pois a intensidade do sinal vai interferir diretamente na perda ou não de pacotes, o que dependendo do cenário e da aplicação, pode ser um problema a curto, médio ou longo prazo. A taxa de perda de pacotes - PER (Packet Error Rate) é o primeiro parâmetro que o responsável por uma rede de sensores sem fio irá consultar.

Objetivo

O objetivo é possuir uma rede de sensor sem fio emulada, utilizando o protocolo de comunicação Radiuino.

O Conceito de Repetidor

Quando possuímos necessidades como alcançar distâncias maiores, locais sem visada direta, ou mesmo criar uma extensão da rede, e não desejamos ou não temos condições de realizar a troca de equipamentos de rádio, podemos utilizar um repetidor. A base envia o sinal ao repetidor, que recebe e processa o sinal, e, em seguida, envia os pacotes ao seu destino final.

Porque Utilizar uma Rede Emulada?

Montar e calibrar uma rede de sensores sem fio real, realizar os testes e desmontá-la, a cada nova rodada de testes pode ser uma tarefa árdua. Para muitos assuntos que estudamos em redes de comunicação de dados como, por exemplo, técnicas de roteamento, softwares de monitoramento, e etc; Não é preciso montar uma rede real, uma rede emulada atende perfeitamente a fase de desenvolvimento e testes. Uma vez validado o cenário no ambiente emulado, partimos para os testes em ambiente real.

Material Necessário

O Ambiente Emulado

Como pode ser observado na figura 01, teremos uma base que se comunica com um repetidor, que repassa os dados para o sensor de destino, o número de sensores é definido no Script Python. Em cada sensor coletaremos os dados: Temperatura, Umidade e Luminosidade. Além da RSSI de UpLink e DownLink de cada enlace.
Figura 01
A figura 02 detalha o fluxo de dados em cada etapa do processo.
Figura 02
Exemplo de Coleta dos dados no terminal
Coleta de Dados no Terminal
Exemplo de Coleta dos dados na ferramenta de Gerencia de Redes Zabbix
Mapa da Rede de Sensores sem Fio Representada no Zabbix

Arquivos Fonte

Todos os arquivos, incluindo a parte do Zabbix, estão disponíveis aqui.

Agradecimentos


Queria agradecer ao meu Orientador Prof. Dr. Omar C. Branquinho por todo o conhecimento que vem compartilhando comigo desde a nossa primeira conversa, quando eu não entendia absolutamente nada de redes de sensores sem fio.
Ao meus amigos Eng. Raphael Montali da Assumpção e Eng. Guilherme Lopes por todas as dicas, conversas e troca de idéias, e nesse post específico ao Guilherme por ter revisado o conteúdo.
Não posso esquece também do meu amigo Douglas Esteves, que me ajudou a entrar no "universo das plaquinhas", como eu sempre brinco, aprendi muita coisa com ele, as dicas dele foram essenciais no começo dessa caminhada.
E finalmente, mas não menos importante, ao meu amigo Matheus Bernardes, meu oráculo do Python, eu copio código dos projetos dele, peço ajuda, etc. E ele sempre me ajuda com a maior boa vontade!