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
- Instalação da IDE do Arduino
- Uma placa Arduino
- Python 2.7
- Código Arduino (.ino)
- Script Python (.py)
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 |
Figura 02 |
Coleta de Dados no Terminal |
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!