Simular uma rede de sensores (Mesh) com protocolo Lora no software CupCarbon (Envio de Temperaturas)

Daniel Daey
6 min readMar 29, 2019

--

Parte 1/2

A IoT (Internet das Coisas) surgiu como a nova geração da Internet que permitiu a telemóveis e a dispositivos comunicarem entre si via web.É agora possível controlar ou monitorizar remotamente qualquer objecto como um robô, medidor de Glicemia, temperatura ambiente, Co2 de um local remoto, casas, carros, etc.

CupCarbon 3.8 (fonte)

A implementação de vários nós de IoT é muito difícil, dispendiosa, demorada e pode ser impossível quando os nós têm de ser reprogramados frequentemente ou quando os nós são implantados em locais distantes, por exemplo, em diferentes cidades ou países.

Assim, o uso de software para simular a implementação, reconfiguração e monitorizar os algoritmos de comunicação dessas redes são muito práticos e úteis.

Uma plataforma chamada “CupCarbon” foi desenvolvida para este fim. Neste artigo, apresentaremos esta plataforma e a forma simples como pode ajudar a resolver problemas difíceis.

O simulador CupCarbon pode ajudar a projectar e implementar redes reais de forma eficiente e com menos esforço, tempo e dinheiro.

SenScript

SenScript é a linguagem script usada para programar nós de sensores no simulador CupCarbon. É intuitivo e próximo da linguagem natural de programação. Os nós também podem ser programado em Python para maior flexibilidade.

O seguinte script mostra um exemplo de um código SenScript.

1: atget id cid
2: loop
3: wait
4: read x
5: if($x < $cid)
6: mark 1
7: else
8: mark 0
9: end

O comando (atget id) da linha 1 permite atribuir à variável $cid o identificador do nó actual. O comando (loop) permite iniciar a secção do loop, onde todo o código seguinte será executado um número infinito de vezes.

O (wait) no linha 3, permitirá esperar por uma mensagem recebida. Esse comando bloqueia os seguinte (próximo código não será executado até que uma mensagem seja recebida.)

O comando (read) da linha 4 atribuirá a mensagem recebida no buffer à variável $x.

Na linha 5, testamos se a mensagem recebida (um identificador) é menor do que o valor do identificador actual $cid. Se for este o caso, linha 6 será executada, e o nó será marcado (mark 1), caso contrário, a linha 8 será executada, onde o sensor actual será desmarcado (mark 0).

SenScript está muito bem documentado num PDF que é distribuído no Website da plataforma de simulação. Pode fazer o download AQUI

CupCarbon

Uma versão gratuita do simulador CupCarbon está disponível online, o software foi desenvolvido em JAVA e não necessita de instalação. Basta descompactar o ficheiro ZIP para uma pasta à escolha e abrir o ficheiro “cupcarbon.jar”. Claro, para isso necessita de uma versão do JAVA instalada. Pode fazer o download dela AQUI

Figura 1 Interface

A Figura 1 mostra a interface gráfica. É ergonómica e concebida para ser utilizada de forma fácil e intuitiva. Pode escolher entre OSM (Open street Maps) ou google Maps se pretender simular em locais reais, ou utilizar um fundo uniforme.

Figura 2 Visualização 3D (fonte imagem)

A visualização 2D e 3D é muito importante para a implantação dos diferentes nós da rede. O 3D ajuda a fazer uma implantação precisa onde o ambiente e a elevação pode e deve ser tida em conta. Essa elevação gera propagação de rádio e interferências.
O ambiente 2D é útil para a simulação, depuração e validação.

A Figura 2 mostra um exemplo de uma cidade exibida na janela 3D do simulador CupCarbon (fonte).

O ambiente 3D do CupCarbon é composto de edifícios e vários objectos como nós de sensores. A elevação do solo também pode ser obtida utilizando um serviço externo, como a API do “Google Elevation”.

Arquitetura do “CupCarbon”

O CupCarbon é desenvolvido em Java. A sua arquitectura consiste em duas camadas:

A primeira camada diz respeito aos módulos utilizados para construir a simulação. A segunda camada diz respeito à própria simulação. A Figura 3 mostra os diferentes módulos do CupCarbon.

FIgura 3 Arquitectura CupCarbon (Fonte)

Quatro módulos principais podem ser distinguidos:

Agents Module: inclui dispositivos e eventos necessários para prototipagem de redes de sensores sem fio e para preparar e configurar o simulador.

Map Module: permite desenhar o módulo sem fios num mapa OSM ou Google Maps.

WiSen Simulator Module: permite simular redes de sensores sem fio.

Solver Module: integra um conjunto de algoritmos de otimização como roteamento, cobertura, etc.

Configuração da simulação

Uma vez iniciada a ferramenta CupCarbon e iniciado um novo projeto, é possível criar uma rede de sensores diretamente num mapa representado na janela principal do software. É possível criar rotas a serem atribuídas a telemóveis (ou a outros objetos móveis). Por uma questão de simplicidade, escolhemos a título de exemplo, uma rede composta por 7 nós (Node) e uma gateway (Sink). A escolha do tipo de rede no software é simples e permite utilizar pré configurações para 3 tipos. 802.15.4 (ZigBee), WiFi e LoRa. Sendo o raio de alcance alterado entre 100, 400 e 1000 metros respectivamente. A energia consumida na comunicação clássicas Tx/Rx em sleep ou deep sleep também é alterada com valores pré definidos. Mas todos os parâmetros são configuráveis manualmente.

Figura 3 Configuração da simulação

Nesta simulação todos os 8 nós estão a com o raio de alcance 1000m (teórico, com protocolo LoRa) definido na aplicação e não tivemos em conta neste simples exemplo os edifícios (simulação unicamente 2D).
Pode ler mais sobre protocolo “LoRa” AQUI.

Vamos simular uma Rede Mesh, onde alguns nós não estão ligados directamente à gateway (sink). Depois de colocar um node é possível replicar a configuração utilizando CTR+d

Figura 4 Adicionar Sink (Gateway) e Nodes com CTR+d

Assim que a rede é criada, os diferentes scripts de comunicação devem ser programados e atribuídos a cada sensor. Quando todos os nós tiverem um script de comunicação associado, a simulação pode começar. A próxima secção descreve os resultados da rede acima apresentados.

Programação em SenScript

Para a nossa rede Mesh vamos implementar em SenScript um algoritmo simples: Flooding

“Flooding is a simple computer network routing algorithm in which every incoming packet is sent through every outgoing link except the one it arrived on.” (Wikipedia)

Para simular o envio do valor da temperatura recolhida pelos sensores, é possível adicionar eventos “analógicos” gerados aleatoriamente num script. Esses eventos podem ser estáticos (recolher temperatura num único local fixo, como é o caso deste exemplo) ou móveis. É possível, por exemplo, simular um fogo que consome uma área florestal com uma determinada velocidade e trajecto.

Figura 5 Adicionar eventos analógicos

CONCLUSÃO da parte 1 (configuração)

O simulador, CupCarbon é útil para o desenho e estudo de redes de sensores wireless. Permite projectar redes usando o OpenStreetMap ou google maps como referencia espacial. As redes podem incluir sensores e outros elementos como objectos móveis, eventos naturais móveis ou estáticos (gás,temperatura, humidade, etc..) e até simular luz solar (dia/noite para cálculos na implementação de painel solar), etc.

A ferramenta apresentada pode executar vários tipos de simulações. O simulador permite analisar a utilização de sensores sem fio sob quase as mesmas condições dos sensores no mundo real.

Parte II

A segunda parte deste artigo será dedicada à programação dos nodes e sink numa rede mesh com um algoritmo simples (flooding) e à análise dos resultados obtidos

--

--