Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Trabalho de Graduação
Sistemas de Informação
contributing in a sustainable way to the planet, this paper presents the development
integrates IoT (Internet of Things) devices collecting data from the sensor connected
to the hydraulic network and publishing it on the internet. To achieve the proposed
objective, library explorations and methods used in the literature are used. The
prototype uses NodeMcu as hardware together with a water flow sensor and the
BLE- Bluetooth
GB- Gigabyte
TV- Televisão
2.3 Software.................................................................................................. 26
- Html 5...................................................................................................... 27
- Javascript ................................................................................................ 28
- MQTT ...................................................................................................... 29
Referências ...................................................................................................... 42
Apêndice A ....................................................................................................... 44
Capítulo 1- Introdução
Atualmente vivencia- se uma era em que a celeridade da evolução
tecnológica chega a assustar. Ao se comparar as últimas três décadas com os dias
atuais, grande parte da população ainda possui dificuldades para perceber a
dimensão desse enriquecimento tecnológico e o quão benéfico ele pode ser.
O grande responsável por essa evolução provavelmente foi o segmento
eletrônico, que concedeu a constante miniaturização dos dispositivos eletrônicos,
consequentemente áreas como a telecomunicação, automação, instrumentação
industrial e claro o desenvolvimento de sensores tem garantido que cada vez mais o
monitoramento de diferentes grandezas físicas e ofertar acessos a dados
simultaneamente por distintos públicos, oferecendo os mais diversos tipos de
analises e/ou processamento desses dados.
Inserir sensores e poder acompanhar os dados gerados por eles
remotamente é benéfico para diferentes setores da economia e afeta diretamente o
dia a dia de toda uma população.
O Brasil, por exemplo, começou a viver, a partir de 2014, os primeiros focos
principais do que pode ser a maior crise de água em sua história. Com um problema
de seca severa, bem como a gestão de recursos naturais, o país tem apresentado
baixos níveis em seus reservatórios em épocas do ano em que eles são geralmente
mais cheios. Essa ocorrência, de certa forma, representa uma grande contradição, já
que o Brasil é considerado a maior potência hídrica do planeta.
Para DINO (2017) apesar do problema relacionado a crise hídrica, parte da
população não tem consciência da importância da preservação do recurso, pois os
números também mostram que o país se destaca por causa do desperdício:
segundo o relatório do Ministério das Cidades, cerca de 41% de toda a água tratada
é desperdiçado.
open source o NodeMCU para fazer a conexão entre o sensor físico e a Internet
baseado no Arduino juntamente com MQTT (Message Queue Telemetry Transport)
que funcionará como protocolo para comunicação. Resumidamente, o trabalho
discorre da elaboração de um sistema onde será possível com um baixo custo
monitorar o consumo de água caseiro, empresarial ou industrial de forma remota,
garantindo acompanhamento do consumo, gasto financeiro ou até mesmo identificar
algum tipo de vazamento.
Originaria dos Estados Unidos, a internet surgiu no ano de 1969 com o intuito
de interligar alguns laboratórios de pesquisas militares, nos anos seguintes foi sendo
aprimorada, diversos progressos baseados em definições foram alcançados, como a
criação do protocolo TCP/IP que define o padrão de transmissão até os dias atuais.
Para Estevam Júnior (2018) A internet das coisas pode ser vista em diferentes
perspectivas como em nosso lar, por meio das casa inteligentes provendo
facilidades como comandos de voz para controle de iluminação, controle de acesso
por biometria, eletrodomésticos conectados a internet, medição de consumo de
energia e água, como também nas empresas e indústrias por meio de controle de
válvulas, monitoramento de temperaturas e até mesmo muitas das facilidades
existentes nas casas inteligentes podem sem usufruídas também nas empresas.
Ainda existe a perspectiva de cidades inteligentes auxiliando na gestão de trânsito,
conectividade do cidadão e controle de iluminação inteligente.
2.2 Hardware
2.2.1 Arduino
para cabo usb com a finalidade de transferência dos dados e alimentação da placa
além de poder receber uma alimentação externa com uma tensão entre 6v e 20v. Na
Figura 2.4 traz as especificações:
2.2.3 Raspberry Pi
Surgiu em 2006 quando Eben Upton, Rob Mullins, Jack Lang e Alan Mycroft
decidiram criar um computador pequeno e acessível para crianças no laboratório da
Universidade de Cambridge.
Para Eberman (2017, p. 34), “O Raspberry Pi logo se tornou famoso pelas
suas duas principais características: o tamanho (tem as dimensões de um cartão de
crédito) e seu baixo custo (US$ 35)”.
A placa originalmente conta com o sistema operacional Raspbian, que se
trata de uma variante da distribuição Debian do Linux, mas também podem ser
usados outros sistemas operacionais (EBERMAM et al., 2017).
A pequena placa possui diversas conexões comuns em computadores
responsáveis pela transmissão de áudio, vídeo e dados, as principais são: HDMI,
USB, Ethernet e GPIO. A porta HDMI é responsável pela transmissão de áudio e
vídeo de alta qualidade através de um único cabo seja para o monitor, TV ou outro
dispositivo de mídia. As portas USB, amplamente utilizadas em dispositivos de
informática e aparelhos eletrônicos, são o meio de conexão com os diversos
periféricos, que podem ser mouses, teclados, adaptador WI-FI, entre outros. Cabo
Ethernet utilizado para a comunicação com a rede e a internet. Os pinos GPIO
(General Purpose Input/Output) são usados para comunicação de outros dispositivos
externos, como controle de equipamentos de automação.
Memória 1GB LPDDR2 SDRAM 1GB LPDDR2 SDRAM 1GB, 2GB or 4GB
LPDDR4 SDRAM
Conexões 1x full size HDMI 1x full size HDMI 2x micro HDMI, 4k video
1x MIPI DSI display port 1x MIPI DSI display port 1x MIPI DSI display port
1x MIPI CSI camera port 1x MIPI CSI camera port 1x MIPI CSI camera port
4 pole stereo output and 4 pole stereo output and 4 pole stereo output and
composite vídeo port composite vídeo port composite vídeo port
24
Multimídia H.264, MPEG-4 decode H.264, MPEG-4 decode H.265 decode (4kp60)
(1080 30p), (1080 30p),
H264 decode (1080p60)
H.264 encode (1080 H.264 encode (1080
30p), 30p), H.264 encode
(1080p30)
OpenGL ES 1.1, 2.0 OpenGL ES 1.1, 2.0
graphics graphics OpenGL ES 1.1, 2.0, 3.0
graphics
2.2.2 NodeMcu
De acordo com Frizzarin (2019) o módulo NodeMcu foi criado com base no
módulo ESP8266, que inicialmente era utilizado como um módulo Wi-fi para o
Arduino, o NodeMcu incrementou o Esp8266 com a adição da comunicação USB-
serial para a conexão ao computador, o acréscimo de mais pinos GPIO (entrada e
saída), a inserção de um bootloader que é possível ser programado na linguagem
LUA e Arduino, tudo isso mantendo o tamanho reduzido.
A grande vantagem dessa placa é que ela pode ser programada como um
Arduino, bastando conectar ao computador via usb e carregar os programas com a
IDE do Arduino. A Figura 2.6 a seguir mostra a disposição dos pinos na placa
NodeMcu.
25
2.3 Software
2.3.1 Blynk App
O App Blynk pode ser usado tanto no Android como no IOS e possibilita ao
usuário criar aplicações personalizadas somente arrastando Widgets em sua
interface, esses Widgets incorporam funções ao projeto, como, botões para envio de
comandos ao hardware, painéis para exibição de valores recebidos do hardware,
como um sensor de temperatura por exemplo, gráficos entre outros.
- Html 5
páginas web. O termo hipertexto nada mais é do que texto/ informação que possui
marcações e hiperligações (links) para outros documentos”.
O Html é considerado uma linguagem de marcação e não de programação
porque não dispõe dos conceitos básicos que a linguagem de programação
proporciona que são: 1- variáveis; 2- estruturas de decisão; 3- estruturas de
repetição e 4- estrutura de dados (SCHEIDT, 2015).
O seu surgimento foi em 1993 e foi publicado por Tim Berners-Lee, após
algumas publicações o W3C (World Wide Web Consortium), consórcio responsável
em padronizar a World Wide Web, ficou responsável por publicar suas novas
versões, a última versão publicada foi a HTML5 em 2014 (SCHEIDT, 2015).
De acordo com Scheidt (2015) a nova versão do HTML trouxe melhorias
significativs com novas funcionalidades de codificação e melhor suporte a conteúdo
multimídias, acelerando o desenvolvimento e deixando o código mais leve e de fácil
entendimento.
- Javascript
- MQTT
Foi utilizado no projeto por meio da biblioteca Paho JavaScript – MQTT Client,
escolhida por ser considerada muito estável e usada em várias aplicações web
baseadas em MQTT, que significa, Message Queue Telemetry Transport.
No mundo da IoT a internet é fundamental, através dela é possível a
comunicação entre os dispositivos. O protocolo padrão utilizado na internet é o
TCP/IP, já na IoT o MQTT se tornou o padrão para a comunicação.
Criado e inicialmente desenvolvido na década de 90 pela IBM, sua função
inicial era conectar sensores em pipelines de petróleo com satélites. Na prática é um
protocolo de mensagem com comunicação assíncrona que utiliza um modelo de
publicação e assinatura, ideal para redes que não são confiáveis (YUAN, 2017).
Nesse padrão de publicação e assinatura, mais conhecido como
publisher/subscriber, de acordo com Basílio (2019?) a comunicação gira em torno de
dois elementos, o servidor, conhecido como o broker e os clientes, que podem ser
publishers ou subscribers. O broker recebe todas as informações tanto dos
publishers quanto dos subscribers e fica responsável redirecioná-las para o seu
destino, os publishers são os responsáveis por enviar as mensagens ao servidor, no
caso o Broker, que pode ser um dado de um sensor lido.O Broker recebe a
informação e dispara para os subscibers que assinaram aquele determinado tópico,
pois nesse modelo quando se deseja receber alguma informação é necessário se
subscrever ao determinado tópico requisitando o mesmo ao Broker.A figura 2.8
exemplifica o caminho percorrido pelas mensagens.
30
Yuan (2017) afirma que o MQTT é um protocolo de rede leve e flexível ideal para
a IoT e cita alguns pontos explicando por que usá-lo, entre eles está a possibilidade
de implementação em dispositivos limitados em processamento e a capacidade de
operar bem em redes com banda limitada e alta latência.
31
Foi realizada uma análise de SWOT neste projeto para identificar as forças,
fraquezas, oportunidades e ameaças, no intuito de auxiliar no desenvolvimento do
trabalho.
3.2 Protótipo
Possui 3 fios: Vermelho (5v), preto (GND), Amarelo (sinal de saída); a tensão
de funcionamento é de: DC 4.5v ~ 18v; a sua faixa de vazão varia de 1 a 60 litros
por minuto pode trabalha com no máximo 80º Celsius e 1.75 Mpa de pressão. Na
imagem 3.5 é possível observar o sensor de fluxo de água junto ao protótipo do
projeto.
36
A visualização dos dados obtidos é feita por meio do navegador web como
mostra a Figura 3.6.
38
Para o armazenamento dos dados está sendo usado o Firebase, que é uma
plataforma do google que oferece uma série de ferramentas para o desenvolvimento
de projetos, entre elas está o Realtime Database que promove uma sincronia de
valores de forma simples, rápida e eficiente através do javascript.
Com base nos testes realizados viu-se que realmente pode-se tornar o uso da
água mais eficiente utilizando as funcionalidades oferecidas pelo sistema de
monitoramento, devido a facilidade de acompanhar de qualquer lugar e de diversos
dispositivos como smartphones, tablets e computadores as informações disponíveis,
podendo identificar alguma atividade em que se consome mais água e tentar
diminuir o tempo dessa atividade por exemplo, ou até identificando algum vazamento
antes mesmo de receber uma conta com valor fora do normal da companhia de
saneamento.
Referências
BANZI, Massimo. GettingStartedWithArduino. Sebastopol: O’Reilly, 2008.
Eberman, E., Presente, G., Rios, R. O., & Pulini, I. C. (2017). Programação
para Leigos com Raspberry Pi. João Pessoa: Edifes.
OLIVEIRA, Euler. Conhecendo o Blynk. [S. l.], 14 nov. 2017. Disponível em:
http://blogmasterwalkershop.com.br/blynk/conhecendo-o-blynk/. Acesso em:
27 set. 2019.
SCHEIDT, Felippe Alex. Introdução ao Html 5. 1ª. ed. Foz do Iguaçu: Editora
Itacaiúnas, 2015. ISBN 978-85-68154-22-9. E-book.
Apêndice A
Código Fonte NodeMcu
#include <FirebaseArduino.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#define FIREBASE_AUTH
"YxS1eGZLnCHuzXkxJkzhq2yV6kaWVtcKuB5iCbgC"
void initSerial();
void initWiFi();
void initMQTT();
WiFiClient client;
void setup() {
initSerial();
initWiFi();
initMQTT();
InitInput();
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
Serial.print("number: ");
Serial.println(Firebase.getInt("total"));
contpulso = valor_recebido;
void loop() {
if (!mqtt.connected()) {
reconnectMQTT();
recconectWiFi();
mqtt.loop();
FazLeituraVazao();
int FazLeituraVazao(void) {
cont = contpulso;
46
Firebase.setInt("total", contpulso);
if (Firebase.failed()) {
Serial.println(Firebase.error());
int m3 = litros*0.001;
dtostrf(vazao, 2, 2, vazao_mqtt);
mqtt.publish("RT/sensor/vazao", vazao_mqtt);
dtostrf(litros, 2, 2, litros_mqtt);
mqtt.publish("RT/sensor/litros", litros_mqtt);
char m3_mqtt[4];
dtostrf(m3, 2, 2, m3_mqtt);
mqtt.publish("RT/sensor/m3", m3_mqtt);
}
47
void incpulso ()
contpulso++;
void initSerial() {
Serial.begin(115200);
void initWiFi() {
delay(10);
WiFi.begin(SSID, PASSWORD);
delay(100);
Serial.print(".");
Serial.println();
Serial.println(WiFi.localIP());
void initMQTT() {
mqtt.setServer(BROKER_MQTT, BROKER_PORT);
mqtt.setCallback(mqtt_callback);
void InitInput(void){
48
pinMode(D2, INPUT);
Serial.println("\n\nInicio\n\n");
void reconnectMQTT() {
while (!mqtt.connected()) {
if (mqtt.connect("RodoxTCC")) {
Serial.println("Conectado");
//mqtt.subscribe("RT/Sensor/#");
} else {
Serial.println("Falha ao Reconectar");
delay(2000);
void recconectWiFi() {
delay(100);
Serial.print(".");
}
49
var config = {
apiKey: "AIzaSyC8icSxWmIV4QGxSoS-eYEe0qmMDuUlcYk",
authDomain: "hidrometro-iot.firebaseapp.com",
databaseURL: "https://hidrometro-iot.firebaseio.com",
projectId: "hidrometro-iot",
storageBucket: "hidrometro-iot.appspot.com",
messagingSenderId: "69099937572"
};
firebase.initializeApp(config);
arrayMes[0] = "Janeiro";
arrayMes[1] = "Fevereiro";
arrayMes[2] = "Março";
arrayMes[3] = "Abril";
arrayMes[4] = "Maio";
arrayMes[5] = "Junho";
50
arrayMes[6] = "Julho";
arrayMes[7] = "Agosto";
arrayMes[8] = "Setembro";
arrayMes[9] = "Outubro";
arrayMes[10] = "Novembro";
arrayMes[11] = "Dezembro";
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
var options = {
onSuccess:onConnect,
onFailure:doFail,
// useSSL: true
client.connect(options);
51
function onConnect() {
console.log("onConnect");
client.subscribe(vazao_topic, options);
client.subscribe(litros_topic, options);
client.subscribe(m3_topic, options);
function doFail(e){
console.log(e);
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
console.log("onConnectionLost:"+responseObject.errorMessage);
var data = {
labels: [],
datasets: [
{
52
label: "Vazão",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: []
};
var option = {
showLines: true
};
data:data,
options:option
});
var data_tot = {
53
labels: [],
datasets: [
label: "Totalizador",
fillColor: "rgba(151,187,205,0.2)",
strokeColor: "rgba(151,187,205,1)",
pointColor: "rgba(151,187,205,1)",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "rgba(151,187,205,1)",
data: []
};
data:data_tot,
options:option
});
function onMessageArrived(message) {
console.log("onMessageArrived:"+message.payloadString);
console.log(message.destinationName, message.payloadString);
54
if (message.destinationName == vazao_topic){
vazao_heading.innerText = message.payloadString;
var c = contador++;
if (c > 6) {
contador = 0;
};
adddata(number, c);
litros_heading.innerText = message.payloadString;
if (c_tot > 6) {
contador_tot = 0;
};
adddata_tot(number_tot, c_tot);
m3_heading.innerText = message.payloadString;
55
var x = x_2.toFixed(2);
valor_heading.innerText = exibir;
document.getElementById("mes1").innerText = mes_string;
salva_consumo(message.payloadString);
myLineChart.data.datasets[0].data[cont] = valor;
myLineChart.update();
myLineChart_tot.data.datasets[0].data[cont_tot] = valor_tot;
myLineChart_tot.update();
56
function valor_conta(calcula_gasto) {
var excedente;
var conta_final;
return consumo_minimo;
return conta_final;
return conta_final;
return conta_final;
return conta_final;
function getMesExtenso(mes){
return this.arrayMes[mes];
function salva_consumo(consumo) {
salva_firebase(mes_extenso,consumo);
console.log("Salvo no Firebase..")
if (consumo == 3) {document.getElementById("alert1").innerText =
"Atenção! 30% do consumo mínimo atingido.";}
if (consumo == 5) {document.getElementById("alert1").innerText =
"Atenção! 50% do consumo mínimo atingido.";}
if (consumo == 7) {document.getElementById("alert1").innerText =
"Atenção! 70% do consumo mínimo atingido.";}
58
function daysInMonth(month,year) {
return dd.getDate();
firebase.database().ref('Mes/' + mes_consumo).set({
consumo_db: consumo_db
});
59
function consulta_firebase(mes_consulta) {
var consumo_rec;
ref.on('value',function(snapshot){
consumo_rec = snapshot.val().consumo_db;
})
if(consumo_rec == null){
return 0;
}else{
return consumo_rec;
}}