Objetivo foi pesquisar melhor o conceito e importância de reprodutibilidade, criando um formato de coletar informações e avaliar o consumo de energia para diferentes arquiteturas de microcontroladores com módulos de comunicação sem fio para utilização em dispositivos focando em Internet das Coisas. Segue uma descrição do Ambiente e seus componentes.
Nesse projeto foi utilizados diferentes plataformas e tecnologias citadas em diferentes tipos de projetos ao longo do texto, grande parte citadas são usadas em comunidades de software livre, grupos educacionais, mostrando ferramentas e meios para aprender e construir projetos que vem trazendos bons resultados para todas comunidades inseridas nessas atividades.
Durante os estudos utizaremos apenas a área laranja do desenho, porém está aberta e descritos todas as etapas, dó código do dispositivo ao formato de leitura das informações coletadas na plataforma online. Utilizando um protótipo, em um formato que consiga reproduzir os mesmos formato de fluxo de comunicação, coletando dados para criar um modelo de comparação de consigo para diferentes arquiteturas utilizadas em protótipação de produtos para Internet of things.
Protótipo do hardware com breve descrição de funcionamento e recursos. Esse dispositivo é parte de um projeto de estudos no Hackerspace LHC cituado em Campinas-SP, nomeado como Campainha IoT afim de estudos e testes com a arquitetura do módulo ESP8266 para acionar avisos sonoros no laboratório do Hackerspace, utilizamos um modelo de circuito simples atraves de um acionamento via botão o hardware é alimentado por duas baterias e ligado o dispositivo, seu programa aciona os recursos conecta na rede local e aciona o faz a conexão de aviso, depois o dispositivo é desligado novamente esperando outra ativação.
Esse dispositivo é composto pelos seguintes itens.
Batery, forma de alimentar o dispositivo. ESP8266, Um chip de baixo custo implementado a plilha de TCP/IP e com um microcontrolador fabricado pela empresa Chinesa Espressif systems. Programa LUA : Programa com controle do device e exuçã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. Switch : Interface Homem máquina, acionamento para ativação do device.
Equipamento usado para executar a comunicação com os dispositivos locais e rodar programa para tratar as informações de solicitadas. Conforme o paper com os códigos fontes, o programa roda em Ambiente Python e o equipamento precisar ter um ip fixo para efetuar as comunicação e acesso a internet, para alimentar com informações um canal da plataforma Thingspeak que podem ser visualizado no seguinte dadhboard.
Esse gateway pode ser simulado apenas com um equipamento local, rodando de preferencia uma distribuição linux Ubuntu, para outras distribuições podem ter problemas com bibiliotecas, necessita também ter uma caixa de som para executar a saída de audio para execução dos processos do programa servidor.py.
Plataforma Open Source para análise da Internet das Coisas, contém recursos como registrar dados coletados por devices e através de telas e gráficos exibir informações de forma dinâmica. Por ser aberta existem diversos recursos que podem ser usado nessa ferramenta. Como exportar as informações coletadas através de arquivos JSON e CSV. Existe uma integração com a plataforma da MATLAB voltada para Internet das Coisas. Os dados são coletados e processados na 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 restrita conforme sua necessidade. Plataforma disponibiliza formas de compartilhar essas informações que geralmente são usadas gráficos dinâmica para exibir os valores coletados por sensores. Outro recurso diferenciado é forma de reação, sendo assim não apenas recebe informações, mas se uma condição for específica ou ultrapassar certo limite pode criar um mecanismo de acionamento de um retorno. (talback). Arquivo exportado no estudo que contêm informações coletado da campainha IoT. Tem informações como data de acionamento, numero registrado e total de carga contida nas baterias de alimentação do equipamento.
Os códigos fontes dispónivel no seguinte Notebook
Os dados dessa pesquisa, foram registrados através da plataforma thingspeak, que apresetou recursos interessantes para armezenar as informações coletadas atraves do dispositivo, consigo publicar em canais com perfil publico, com possibilidades de compartilhamento de links para fácil acesso na visualização dos dados. Essas informações são exibidas através de diferentes tipos de gráficos dinamicos. Outro recurso interessante da plataforma e facilidade de exportar essas informações coletadas para o formato csv, xml ou json.
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.
database2017.csv Dados de 2017 atualizado em junho.
database.csv Editei o arquivo apenas com informações geradas em 2017.
databaseoriginal.csv Arquivo orginal com informações desde de 2015.
O Arquivo é exportado pela plataforma thingspeak por um canal aberto e público para visualização. Gerando o arquivo conseguimos estudar melhor e também pode ser usado para gerar novos históricos de outras arquiteturas para comparações.
Resultados gerados de um módulo ESP8266 versão 1, programado na linguagem LUA.
São informado 3 tipos colunas de informações
In [2]:
import numpy as np
import csv
with open('../data/database2017.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
print ', '.join(row)
In [3]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
pd.__version__
Out[3]:
In [8]:
%matplotlib inline
Leitura dos cinco primeiros registros do arquivo.
In [9]:
import pandas as pd
from altair import Chart, X, Y, Axis, SortField
budget = pd.read_csv("../data/database2017.csv")
budget.head()
Out[9]:
In [10]:
## Últimos 10 Registros
In [11]:
budget_top_10 = budget.sort_values(by='created_at',ascending=False)[:10]
In [12]:
budget_top_10.plot(kind="bar", x=budget_top_10["created_at"],
title="Consumo de energia dispositivo",
legend=True)
Out[12]:
In [13]:
Chart(budget_top_10).mark_bar().encode(x='created_at', y='field1')
In [14]:
Chart(budget_top_10).mark_bar().encode(y='created_at', x='field1')
In [15]:
Chart(budget_top_10).mark_bar().encode(
x=X('field1'),
y=Y('created_at'),
color='entry_id')
In [16]:
Chart(budget_top_10).mark_bar().encode(
x=X('created_at:O',
axis=Axis(title='Project')),
y=Y('field1:Q',
axis=Axis(title='2014 Budget')),
color='entry_id')