Estrutura da Internet das Coisas¶
Uma característica essencial em IoT é a capacidade dos dispositivos se comunicar, direta ou indiretamente, com a Internet. Uma arquitetura típica para isto consiste na construção de uma rede de dispositivos IoT com uma unidade de controle como dispositivo central, sensores que coletam informação do meio ambiente, atuadores e módulos de comunicação. O dispositivo central, neste caso, é encarregado da comunicação com a Internet.
A unidade de controle, no contexto de internet das Coisas, são dispositivos que utilizam um microcontrolador, o qual é responsável por processar informações. Na oficina utilizamos a plataforma de hardware aberto Arduino, pois este contém uma vasta quantidade de exemplos disponíveis e possui uma comunidade ativa para suporte.
Os módulos de comunicação são responsáveis pela comunicação entre dispositivos da rede IoT. Alguns dos módulos avaliados foram os módulos WiFi, Bluetooth, nRF24l01 e ZigBee. Um fator importante na escolha do módulo é a existência de uma framework para dar suporte a implementação da rede. Considerando tais fatores, nesta implementação foi escolhido o módulo nRF24l01. Ele é um chip transceptor de baixo custo, projetado para aplicações sem fio, de baixa potencia e suportado por um framework compatível com Arduino, chamado de MySensors.
MySensors é uma API que possibilita a construção de uma rede de sensores de baixo custo. Além disso, essa API fornece ferramentas para gerenciar e analisar os dados dos sensores. A biblioteca facilita a implementação por possuir muitos exemplos e abstrair protocolos de comunicação entre os nós da rede.
Utilizando a biblioteca e as plataformas descritas, é possível configurar uma infraestrutura para a rede IoT, como ilustra a Figura 2. A rede implementada basicamente é constituída por três componentes: controlador, gateway e nós finais, que são nós sensores e atuadores. Os nós sensores e atuadores são responsáveis pela interação com o ambiente, seja pela coleta de informações por meio de sensores, emissão de sinais de alerta ou ativação de certos dispositivos por meio de atuadores, por exemplo o ar condicionado ou uma lâmpada.
Nó Gateway¶
O gateway atua na ligação entre o controlador e rede de rádios. Ele traduz as mensagens do rádio para um protocolo que pode ser entendido por um controlador.
Na biblioteca MySensors exitem tres implementações de Gateway, o Ethernet Gateway, SerialGateway e MQTTGateway. Nesse material vamos utilizar o SerialGateway pela facilidade de implementação e também pela compatibilidade com o controlador escolhido.
Nó Sensor¶
Este tipo de nó é responsavel pela leitura de dados do meio externo e realizar a comunicação com o arduino. Sensor de temperatura, umidade e luminosidade são alguns exemplos de sensores.
Nó Atuador¶
Nós atuadores são aqueles que realizam alguma ação no ambiente, um servo motor por exemplo é um nó atuador, podendo ser utilzado para abir uma janela na casa ou mover algum objeto.
Nó Repetidor¶
Esse nó só é necessário quando os nós sensores e gateway não conseguem se comunicar, devido à distancia em que estão localizados, por esse motivo não está representado na Figura 2. Esse nó tem como função repetir as dados para outros nós a fim de aumentar a distancia de comunicação entre os nós. Em muitas aplicações esse nó não esta presente.
Nó Controlador¶
O controlador é responsável pela comunicação com a Internet. Na Figura 2 podemos observar que o controlador está diretamente conectado ao gateway e à Internet. Diferentemente dos outros nós, este componente da rede necessita de maior poder de processamento e deve ser implementado em hardware mais robusto, como a Raspberry Pi, BeagleBone ou até mesmo um desktop.
O controlador pode realizar as seguintes funções:
- Enviar parâmetros de configuração para os sensores na rede de rádio (tempo e identificadores de sensores únicos);
- Acompanhar os dados mais recentes enviados pelos sensores e atuadores;
- Fornecer informações de status de volta para sensores e atuadores; por exemplo o estado atual (on / off / loadLevel) para uma luz;
- Fornecer controles de interface do usuário para atuadores;
- Executa horários predefinidos ou cenas; por exemplo. ao pôr do sol acender as luzes do jardim.
