Semeando, Colhendo e Analisando Dados com IoT, Digital Twins e Grafana na AWS
Resumo
Este artigo tem por objetivo apresentar, em alto nível, uma visão de algumas ferramentas
utilizadas em Manufatura Avançada (Indústria 4.0) para coleta, análise e apresentação de dados de telemetria.
Para gerar os dados foi construído um carro protótipo em madeira MDF de onde, através de sensor, colhemos os dados de RPM (Rotação Por Minuto).
Os dados, em tempo real, foram enviados e armazenados em nuvem.
Para representar os dados em aspecto 3D foi modelada a estrutura do IFRS Restinga com seus blocos e níveis através do Blender .
Este modelo é utilizado dentro de um Gêmeo Digital para apresentar o estado em certo momento na linha do tempo.
Tomaremos como problema a parada inesperada de uma esteira industrial qualquer
que durante a manutenção foi constatado o superaquecimento de um motor elétrico que faz parte do sistema.
Uma das ferramentas da indústria 4.0 é a Manutenção Preditiva, ou seja, predizer o problema do motor
e antecipar a manutenção.
Conhecendo o comportamento do sistema funcionando em perfeitas condições e o comportamento do sistema momentos antes de uma
parada de manutenção podemos chegar a uma predição.
Palavras-chave: eletrônica, EDA, indústria 4.0, IoT, internet, conectividade, serviços, AWS.
Semeando e colhendo com IoT
Os dados coletados foram enviados por telemetria através de um
carro protótipo
em MDF equipado com:
sensor de efeito hall 3144
acoplado a uma das rodas,
a roda acionada por um
Motor DC 3-6V 200 RPM
e os dados obtidos foram enviados para a nuvem através da internet por um
módulo NoDemCU ESP32 .
As rodas foram produzidas em MDF com a ajuda do pessoal do iNovaLab Restinga
localizado no IFRS Restinga .
Enviando dados para nuvem
Os dados obtidos foram enviados através de um sistema embarcado no carro IoT que se:
conecta através de WiFi
, gera mensagens json contendo os dados
, envia os dados para nuvem através de um
tópico
do serviço AWS Iot Core onde o dispositivo IoT já encontra-se cadastrado.
O projeto do sistema embarcado você encontra
aqui.
Recebendo e armazenando os dados em nuvem - AWS Iot Core
Dentro do painel AWS IoT Core podemos ver uma lista de devices cadastrados.
Selecionando o device podemos ver todas as atividades que ele executa: início da conexão, fim da conexão, assinatura de tópico, etc.
O serviço IoT Core trabalha com o conceito de
tópicos.
Todo dispositivo envia para ou recebe de
um tópico. Optamos por enviar mensagens para tópico esp33/pub.
Selecionando o tópico é possível ver todas as mensagens que estão trafegando por ele.
Na imagem vemos as mensagens, em tempo real, que o device está enviando.
A partir do painel principal é possível listar as regras anteriormente cadastradas.
Nestas regras é possível filtrar mensagens e dar um destino configurável para cada uma delas.
Em nosso cenário configuramos que todas as mensagens do tópico esp33/pub deverão ser enviadas
para uma função
Lambda
que é responsável por incluir as mensagens enviadas pelo dispositivo em uma base de dados
NoSQL.
Recebendo e armazenando os dados em nuvem - AWS Lambda
A função Lambda recebe a mensagem e inclui na base de dados NoSQL. A linguagem utilizada foi python e nela
são necessárias todas as permissões para que consiga acessar os serviços necessários.
Mais a frente você verá que está função Lambda também tem o papel de responser às solicitações do Gêmeo Digital
com dados.
Mas isso podemos nos aprofundar um pouco mais em outro artigo.
Recebendo e armazenando os dados em nuvem - AWS NoSQL
Uma vez os dados estando armazenados é possível configurar o Digital Twin para
interagir com modelos 3D e configurar um painel no Grafana.
O plugin do Grafana para o AWS IoT TwinMaker suporta um tipo de pergunta baseada em histórico, alarme e valor de propriedade.
Quando a opção histórico for selecionada é necessário obrigatoriamente na resposta o atributo 'time'.
Pois o plugin do Grafana espera que os dados dentro da cena (Scene) se comportem como uma série temporal
Desenhando modelo 3D
Uma funcionalidade bastante utilizada é a interação entre um modelo 3D e os dados de um dispositivo IoT coletados.
Podemos dizer que um modelo 3D é uma coleção de objetos que possuem atributos como: cor, altura, largura, profundidade, arestas
, vértices, etc.
Em um Gêmeo Digital é possível relacionar um objeto do modelo a dados de um dispositivo
e com isso fazer o objeto reagir aos dados. Por exemplo, a porta de uma casa mudar de cor
quando os dados do dispositivo indicarem que ela está aberta.
Durante o estudo, com o auxílio do
Blender
, foi desenhado um modelo 3D da estrutura física do IFRS Restinga com seus blocos e divisões.
Observe o bloco 501 do iNovaLab na imagem. Você encontra o projeto Blender
aqui.
Para automatizar a criação do modelo foi utilizado o recurso de automação do Blender através de um
programa do Python .
Foi extraido do site do IFRS Restinga a estrutura dos blocos e colocada em um arquivo
json
que foi utilizado como entrada para o programa python para criar o modelo.
Após desenhar o modelo é necessário gerar o arquivo glb ( Graphics Library Transmission Format Binary) através do Blender.
Este arquivo
.glb
é necessário ao próximo assunto que é a criação do Gêmeo Digital.
Gêmeos Digitais - Criando com AWS IoT TwinMaker (modelo 3D)
Primeiro é preciso criar um workspace (áre de trabalho).
A interface basicamente vai pedir que informe um nome para o workspace e após irá cria-lo.
Tudo descrito daqui pra frente será criado dentro deste wokspace.
Não necessariamente nesta ordem, precisamos importar o arquivo .glb para o workspace criado através da interface do serviço.
O processo é igual a interface de um upload web qualquer, ou seja, você seleciona o arquivo em sua estação de trabalho local
e a interface faz o resto disponibilizando o .glb no workspace como um resource.
Com o resource disponível no workspace podemos adicionar uma cena.
A interface vai solicitar um nome e adicionar a cena no workspace como um Scene.
Dentro de Scene podemos finalmente adicionar o modelo 3D e o resultado final será este.
Cena.
Na lista ,a direita, é possível ver uma lista com itens representando os objetos do modelo 3D.
Selecionando um item da lista é possível ver o objeto selecionado ,a direita, da imagem realçado na cor verde.
Vista de baixo do modelo 3D, bloco 01 em 1o nível e salas do bloco 01 em 2o nível.
Gêmeos Digitais - Criando com AWS IoT TwinMaker (tipos, componentes e entidades)
Para conectar um modelo 3D aos dados de um dispositivo IoT precisamos de um
conector de dados .
Ele será responsável por responder as solicitações do Gêmeo Digital fornecendo valores dos atributos solicitados.
No tópico a solução que armazena os dados enviados pelo dispositivo IoT
tem também a responsabilidade de responser às solicitações do Gêmeo Digital.
Tipos de componentes
Todo componente é responsável por retornar um tipo de resposta.
É neste objeto que encontram-se informações(nome, tipo, etc) sobre todos os atributos que o Gêmeo Digital pode obter.
Pode ser feita uma analogia com o DDL de um banco de dados relacional.
Documentando os nomes, tipos, tamanhos, precisões das colunas de uma tabela, ou ainda,
os relacionamentos entre tabelas.
Pode ser feita uma analogia também com a interface de um objeto OOP.
Documentanto os nomes e tipos dos atributos, ou ainda,
os relacionamentos e cardinalidades entre objetos objeto.
É descrito através de um documento json.
Em 'propertyDefinitions' temos uma lista de atributos, em 'componentTypeId' temos o nome do tipo de componente.
Em 'arn' temos o nome da função Lambda que implementa o tipo de componente.
É esta a função Lambda que será executada quando uma solicitação for relizada pelo Gêmeo Digital.
Existe um framework com interface e mensagens a serem trocadas entre o conector de dados e o
Gêmeo Digital. Basicamente o Gêmeo Digital vai pedir um intervalo na linha do tempo (início, fim) e
uma lista com nomes de atributos que deverão ser retornados na resposta.
Componente
É a estrutura que vai ficar entre o modelo 3D e o conector de dados.
Conversando com o Gêmeo Digital informando que tipos de perguntas podem ser realizadas e ouvindo os questionamentos.
Conversando com o conector informando os questionamentos realizados pelo Gêmeo Digital e levando a resposta
do conector de dados de volta até o Gêmeo Digital. É este objeto que estará relacionado ao objeto do modelo 3D, ou seja,
representando: uma porta em uma casa, uma maçaneta em uma porta, uma esteira industrial em um sistema de chão de fábrica
, ou um motor que faz parte do mesmo sistema da esteira.
Entidades
É o conjunto de componentes. Pode ser: um objeto apenas (uma maçanete em uma porta), uma porta com todos os
seus objetos (maçaneta, fechadura, etc), um sistema de chão de fábrica com todos os seus objetos (esteira, motor, correia, etc).
Gêmeos Digitais - Criando com AWS IoT TwinMaker (câmera)
Uma das funcionalidades em ferramentas CAD são as câmeras. A posição das câmeras dão uma visão de perspectiva
de como o modelo 3D será visto a partir de um eixo de coordenadas x,y,z. O serviço AWS IoT TwinMaker possibilita a criação de
várias câmeras. Na pesquisa focamos o bloco 501 iNovaLab e já de início criamos uma câmera que dá uma visão em close
do bloco 501. É muito útil como atalho para a visão de determinado objeto do modelo 3D.
Gêmeos Digitais - Criando com AWS IoT TwinMaker (anotação)
Agora que temos uma noção de conector de dados , entidade e componente podemos falar da funcionalidade anotação.
Como primeira experiência do poder do Gêmeo Digital, é um objeto visual ancorado e posicionado próximo a um objeto do modelo 3D
que mostra o valor de um dado relacionado pela entidade. Durante o estudo posicionamos uma anotação próxima ao bloco 501 iNovaLab
para apresentar o valor de RPM do dispositivo. A interface basicamente solicita: a posição do objeto anotação (x,y,z), o nome da marcação,
e uma instrução (markDown) que ao ser avaliada retornará o valor do atributo da entidade.
Após a configuração da anotação é necessário configurar o binding que será utilizado para
conectar o objeto anotação ao valor do dado da entidade através do conector de dados. Como na configuração da anotação informamos
uma expressão 'Velocidade = ${501BindVelocidadeMotor}' é necessário configurar um binding
com mesmo nome '501BindVelocidadeMotor'. A interface basicamente pede: o nome da variavel utilizada no markDown (Binding name)
, o ID da entidade que possui o dado (Entity id), o componente da entidade que possui o dado (Component name)
e final o nome do atributo (Property name) onde o valor se encontra.
Para visualizar a anotação do Gêmeo Digital em ação é necessário configurar o Grafana que veremos mais adiante.
No Grafana existem um
plugins
para o AWS IoT TwinMaker que utilizam o workspace para mesclar o 3D e os dados.
Mas podemos adiantar uma imagem de como vai ficar.
Gêmeos Digitais - Criando com AWS IoT TwinMaker (regra) Gêmeos Digitais - Grafana