IA369Z - Reprodutibilidade em Pesquisa Computacional.

Douglas Vinicius Esteves

Consumo de energia para dispositivos de Internet das Coisas (IoT).

Dentro do conceito de pesquisas com reprodutibilidade, foi elaborado um formato de coletar informações para avaliações de consumo de energia que podem ser usados para diversas arquitetura de microcontroladores com módulos de comunicações sem fio, utilizado atualmente em desenvolvimento de dispositivos de Internet das Coisas. Durante esse processo utilizei apenas um módulo chamado ESP8266[1] versão 1.0 desenvolvido pela empresa ESpressif[2].

Durante essa pesquisa descrevo diversos recursos e plataformas utilizadas em diferentes etapas desde coleta de informações, comunicações e armazenamento dos dados coletados pelo dispositivo. Com preocupação de disponibilizar no formato mais aberto possível, para receber colaborações melhorias ou até mesmo substituições de software por outra ferramentas que podem ser de melhor aproveito para desempenho ou entendimento, cito como principal delas a utilização de uma plataforma de código aberto para coleta de informações de dispositivos e publicação de forma online, com gráficos dinâmica e informações abertos, capaz de exportar as informações em diferentes formatos de arquivos usei a plataforma Thingspeak.

Caso de uso escolhido foi um protótipo de Campainha instalado no Laboratório Hacker de Campinas, um espaço aberto ao público que funcionar de forma independente e colaborativa por pessoas que ajudam a manter o local com diversas opções de colaboração.

Workflow

/figures/workflow02.png

Na etapa de avaliação das informações utilizaremos apenas a área laranja do workflow, porém está totalmente aberto e com descrições para edições e desenvolvimento os arquivos citados nas etapas do workflow, utilizei apenas um protótipo mas ideia é que outros pesquisadores utilizem mais arquitetura com o mesmo formato de aplicação assim conseguiremos criar mais gráficos com comparações de diferentes arquiteturas em prototipação para desenvolvimento de dispositivos de Internet das Coisas.

Device "Dispositivo IoT"

Esse dispositivo é parte de um projeto de estudos no Hackerspace LHC situado em Campinas-SP, nomeado como Campainha IoT afim de estudos e testes com a arquitetura do módulo ESP8266 para acionar avisos sonoros dentro do Laboratório do Hackerspace de Campinas[3], utilizamos um modelo de circuito simples através de um acionamento via botão o hardware é alimentado por duas baterias AA ligado o dispositivo, seu programa aciona os recursos de módulos de comunicação Wifi conectando na rede local e acionando uma chamada ao equipamento na rede local, para execução de outra etapa do processo, após a confirmação da comunicação o dispositivo é desligado e só consegue ser ativado novamente através de um acionamento manual via botão.

Dispositivo utiliza de diversos recursos como:

Bateria, forma de alimentar o dispositivo. ESP8266, Um chip de baixo custo implementado a pilha de TCP/IP e com um microcontrolador fabricado pela empresa Chinesa Espressif systems. Switch : Interface Homem máquina, acionamento para ativação do device, caixa da Campainha e circuito para isolar o dispositivo contra água e proteger o dispositivo. Programa LUA : Programa com controle do device e execução de funções. Connection : Tratamento com a conexão do device com o gateway local para envio de informações para plataforma online e ativação de sinal no local.

Gateway "Ponte e Equipamento local de comunicação"

Equipamento usado para executar a comunicação e tratamentos de informações com os dispositivos locais, rodando um programa em Python chamado server.py que tem como principal atividade indexar dados coletados na plataforma Thingspeak. Atenção para configurar corretamente um IP ao equipamento onde consiga realizar a comunicação com a rede local.

Esse gateway pode ser usado para simular apenas como um equipamento local, rodando de preferência uma distribuição Linux Ubuntu, para outras distribuições podem ter problemas com bibliotecas, necessita também ter uma caixa de som para executar a saída de áudio para execução dos processos do programa servidor.py.

Thingspeak "Plataforma online com informações coletadas"

Plataforma Open Source[4] para análise da Internet das Coisas, contém recursos como registrar dados coletados por devices e através de telas e exibições de gráficos dinâmicos. Por ser uma plataforma de código aberto existem diversos recursos que podem ser usados por essa plataforma. Com possibilidade de exportar as informações coletadas através em formatos de arquivos JSON e CSV. Existe uma integração com a plataforma da MATLAB voltada para Internet das Coisas mas não estou usando esse recurso. Os dados são coletados e processados em nuvem, suas informações são registradas através de canais onde criadas em formas de perfis para acesso público ou fechadas de forma restritiva conforme sua necessidade. O Thingspeak disponibiliza formas de compartilhar essas informações que geralmente são usadas gráficos dinâmica para exibir os valores coletados por sensores[5]. Outro recurso diferenciado nesta dessa plataforma é a possibilidade de criar um mecanismo de retorno “talkback” para retornar comandos ou avisos ao sistema que podem conter alguns tratamentos específicos ajudando em possíveis alarmes, alertas ou tratamento de falhas. Neste experimento as informações registradas são data e hora de acionamento, número registrado e total de tensão das baterias do equipamento.

Código Fonte

Os códigos fontes estão disponíveis no seguinte Notebook

Data "Dados coletados"

Os dados dessa pesquisa, foram registrados através da plataforma thingspeak[6], exportei as informações e elas podem ser acessadas através do link fornecido, gerando novamente a base de informações, selecionei o formato CSV para trabalhar com importação junto com a ferramenta Jupyter notebook. estarei exibindo essas informações criando mais gráficos selecionando alguns informações do arquivo CSV. Informações divulgadas no diretório data podem ser alterada e usada para testes, também pode ser confirmada direto no canal do thingspeak original do projeto.

Arquivos no diretório data

Leitura de informações do arquivo CSV

São informado 3 tipos colunas de informações Data e Hora de ativação Registro de entrada Tensão da bateria[7]


In [5]:
import pandas as pd
import numpy as np
import csv
from altair import Chart, X, Y, Axis, SortField
import matplotlib.pyplot as plt
pd.__version__
%matplotlib inline

total = pd.read_csv("../data/database2017.csv")

total.shape


Out[5]:
(58, 3)

Leitura dos últimos 30 registros

Uma observação que ficamos alguns meses sem usar a campainha porque o gateway estava quebrado e devida a alteração na sala.

Sem registros do dia 04/02/2017 ao dia 09/06/2017.


In [27]:
total.tail()


Out[27]:
created_at entry_id field1
53 2017-06-10 20:03:10 UTC 433 3090
54 2017-06-10 21:38:51 UTC 434 3083
55 2017-06-10 21:39:12 UTC 435 3082
56 2017-06-12 00:58:24 UTC 436 3074
57 2017-06-12 00:59:28 UTC 437 3081

In [9]:
totallast30 = total.sort_values(by='created_at',ascending=False)[:30]

Faço a leitura dos últimos 30 registros no arquivo para mostrar em gráfico a evolução do consumo da bateria. Pode ser notado que fiquei alguns meses sem coletar informações da campainha por problema técnico com o gateway. Mesmo retornando o equipamento verifiquei que está bem baixo o consumo do dispositivo.

Sem registros do dia 04/02/2017 ao dia 09/06/2017.

Seleção dos últimos 30 registro no arquivo CSV.


In [10]:
totallast30.plot(kind="bar", x=totallast30["entry_id"],
                   title="Consumo de energia dispositivo",
                   legend=True)


Out[10]:
<matplotlib.axes._subplots.AxesSubplot at 0x7fe3d9a5b5d0>

entry_id : Número de registro

field1 : Tensão da bateria.


In [11]:
Chart(totallast30).mark_bar().encode(x="created_at", y="field1")



In [12]:
Chart(totallast30).mark_bar().encode(y='created_at', x='field1')



In [13]:
Chart(totallast30).mark_bar().encode(
    x=X('field1'),
    y=Y('created_at'),
    color='entry_id')



In [15]:
Chart(totallast30).mark_bar().encode(
    x=X('created_at:O',
        axis=Axis(title='Project')),
    y=Y('field1:Q',
        axis=Axis(title='2014 Budget')),
    color='entry_id')


Informações de leitura desse gráfico geradas no ano de 2017 .

Foram 58 registros de ativações e conexões com a rede local via o módulo de Wifi.

Tensão no início de ano : 3238 mV

Tensão no registro 58 : 3081 mV

Total de consumo : 157 mV

Método

Utilização da arquitetura do módulo ESP8266, armazenando informações na plataforma Thingspeak, utilizando jupyter notebook para ler arquivos exportados em formato CSV, gerando gráficos e centralizando todos os dados e informações na plataforma do Github.

Hardware testado[8].

Resultado

A Utilização dos recursos citados, podem ser utilizados os dados coletados e versão de software utilizadas para comparar partes das arquiteturas. Próxima etapa é gerar o experimento semelhante com outras arquitetura para gerar gráficos e criar comparações de consumo por utilização e durabilidade de marcas e tipos de baterias.

Reference

[1]ESP8266EX Datasheet

[2]Espressif

[3]LHC

[4]ThingSpeak

[5]Canal da Campainha IoT

[6]Gráfico de consumo

[7] Malvino, Edição revisada, Eletrônica volume 1. Página 3 Fontes de Tensão, MCGRAW-HILL 1987 Ano.

[8]Prototype device