Monitoramento Remoto da Qualidade da Água
Monitoramento Remoto da Qualidade da Água
Bragança
2019-2020
ii
Automatização do processo de
monitoramento da qualidade das
águas em cursos d’água
Bragança
2019-2020
iv
Dedicatória
Agradeço a todas as pessoas que me ajudaram a chegar até aqui, desde o primário até
o término do mestrado. É muito gratificante ter tido a oportunidade de realizar um
mestrado, e com certeza, isso só foi possível devido o esforço dos diversos professores que
tive durante a minha trajetória acadêmica.
Agradeço especialmente aos meus pais, Robson e Maria Aparecida, que sempre estive-
ram ao meu lado apoiando minhas decisões e dando todo suporte necessário. Agradeço a
minha namorada, Izabelly, que esteve ao meu lado a todo momento, mesmo a distância,
durante todo o tempo do projeto. Agradeço também a família que fiz em Portugal —
especialmente ao Márcio, Sérgio e Rafaela — que sempre me incentivaram. Agradeço aos
professores Luciano, Fernando e Getúlio por todo o apoio durante o projeto. Sempre aten-
ciosos e disponíveis, representaram uma das importantes bases de conhecimento durante
o curso. Agradeço aos meus amigos do curso de Engenharia da Computação (Brasil) e
de Sistemas de Informação (Portugal), por tornar mais agradável a convivência diária no
período acadêmico.
Agradeço a Secretaria de Relações Internacionais, por ter disponibilizado todo suporte
financeiro e acadêmico no Programa de mobilidade acadêmica e a todos os outros estudan-
tes intercambistas que ingresseram junto comigo nessa jornada e que sempre me apoiaram
e proporcionaram momentos inesquecíveis. Agradeço ao CEFET-MG pelo apoio finan-
ceiro e ao IPB pela calorosa receptividade. Também agradeço a Deus por ter abençoado
toda essa trajetória, permitindo que mesmo a milhares de quilometros de casa, e diversos
momentos díficeis como o da pandemia, permitiu que hoje eu esteja apresentando esse
trabalho e trabalhando em uma área que amo.
v
Resumo
vi
de informar remotamente).
A proposta inicial é de que a parte de hardware da solução seja composta por uma
placa de controle Arduino, um conjunto de sensores para a medição de parâmetros físico-
químicos da água e do ambiente a ser analisado, uma bateria para alimentar o sistema
e um módulo de comunicação via rede GSM. Já na parte de software, será desenvolvida
uma aplicação Android, que permita a visualização dos dados obtidos. O módulo de
comunicação deverá enviar os dados obtidos a uma base de dados, esta que além de
armazená-los, será encarregada de disponibilizá-los para a aplicação, permitindo que os
usuários realizem a análise dos valores obtidos.
vii
Abstract
Water is an essential asset for terrestrial ecosystems, as it directly interferes with the
formation and dynamics of soils and climate, and is responsible for maintaining the life
of humans and various other species on our planet. In this context, the control of the
quality of water resources becomes extremely important, especially after several studies
correlate the population increase, climatic variations and the expansion of agricultural
and industrial activities with the decrease of the availability and quality of drinking water
in worldwide.
Water quality control can be accomplished through several techniques, the most used
is conventional monitoring, which usually consists of three steps: collection of samples
at the analyzed site, storage and analysis, something generally performed in laboratory.
This process has certain disadvantages, such as the need to travel to the places for collect
samples (often distant and difficult to reach) and often the unfeasibility to obtain high data
sampling, necessary for the investigation of evolution time of the analyzed parameters.
This work has as main objective the development of a solution that involves low cost
devices, allied to the use of software, enabling the remote monitoring of water courses.
The low cost of the prototype will be able to encourage the expansion of the environmental
monitoring and its use, in environments that are already conventionally monitored, may
improve the sampling of water information, because it can be used for better management
the collection of samples in loco (To analyze parameters that the prototype is not able to
inform remotely).
The initial proposal is that the hardware part of the solution should be composed by
an Arduino control board, a set of sensors for the measurement of water and environment
viii
physicochemical parameters, a battery to power the system and a communication module
via GSM network. In the software part, an Android application will be developed, which
allows the visualization of the obtained data. The communication module should send
the obtained data to a database, which in addition to storing them, will be in charge of
making the data available for the application, allowing users to perform the analysis of
the values obtained.
ix
x
Conteúdo
1 Introdução 1
1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Contexto e Tecnologias/Ferramentas 5
2.1 A escassez de água e os impactos antrópicos . . . . . . . . . . . . . . . . . 5
2.2 Agências Reguladoras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3 Comparação dos tipos de monitoramento . . . . . . . . . . . . . . . . . . . 12
2.4 Parâmetros Físico-Químicos . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.1 pH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.2 Condutividade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.3 Oxigênio Dissolvido . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.4 Temperatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4.5 Turbidez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.5 Princípio de funcionamento dos componentes . . . . . . . . . . . . . . . . . 18
2.5.1 Sensor de pH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.2 Sensor de turbidez . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.3 Condutivímetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.4 Sonda de Oxigênio dissolvido . . . . . . . . . . . . . . . . . . . . . 23
2.5.5 Arduino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
xi
2.5.6 Redes sem fio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.5.7 Smartphones, Sistema Android e Tecnologias de desenvolvimento . 27
2.6 Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6.1 Sistema de irrigação com monitoramento remoto . . . . . . . . . . . 28
2.6.2 Estação automática para monitoramento de compostagem . . . . . 31
2.6.3 Análise automatizada de ambiente para aquicultura . . . . . . . . . 33
3 Abordagem/Análise/Modelação 35
3.1 Etapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Materiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1 Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.2 Sensor de pH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.2.3 Sensor de temperatura . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.4 Sensor de condutividade . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.5 Sensor de oxigênio dissolvido . . . . . . . . . . . . . . . . . . . . . . 41
3.2.6 Sensor de turbidez . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.2.7 Módulo para padronização da data/hora . . . . . . . . . . . . . . . 42
3.2.8 Alimentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2.9 Transmissão de dados . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3 Ferramentas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.1 Firebase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.3.2 Android Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.3.3 Flutter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4 Arquitetura e Desenvolvimento 47
4.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.1.1 Microntrontrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.1.2 Sensores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.1.3 Demais módulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.2 Base de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
xii
4.3 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.4 Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.4.1 FirstScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.4.2 NewUserScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.4.3 Homescreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.4.4 MapScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.4.5 StationsScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.4.6 AddStationScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
4.4.7 StationProfileScreen . . . . . . . . . . . . . . . . . . . . . . . . . . 83
4.4.8 FavoriteScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.4.9 AnalyseScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
4.4.10 ProfileScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5 Conclusões 89
xiii
Lista de Tabelas
xiv
Lista de Figuras
2.1 Mapa sobre as regiões que experimentam escassez de água pelo menos um
mês do ano. [11] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Impactos ambientais urbanos e suas consequências as nascentes. [16] . . . . 7
2.3 Dados sobre pontos de monitoramento contidos na bacia do Rio Doce. [19] 9
2.4 Limites físico-químicos definidos segundo a deliberação conjunta COPAM/CERH-
MG n01/2008. [6] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Exemplo da migração de íons da solução mais concentrada para a menos
concentrada. [26] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Eletrodo de Prata/Cloreto de Prata. [26] . . . . . . . . . . . . . . . . . . 20
2.7 Sensor de turbidez. [28] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8 Principio de funcionamento de um condutivímetro. [29] . . . . . . . . . . 22
2.9 Migração de íons em corrente contínua. [29] . . . . . . . . . . . . . . . . . 22
2.10 Comportamento de íons em uma corrente alternada. [29] . . . . . . . . . . 22
2.11 Imagem ilustrativa do interior da sonda galvânica utilizada para mensurar
o teor de Oxigênio Dissolvido. [30] . . . . . . . . . . . . . . . . . . . . . . 23
2.12 IDE Arduino. [32] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.13 Arduino Uno Rev3. [33] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.14 Protótipo montado para obtenção de dados e atuação no sistema. [42] . . 29
2.15 Software para o gerenciamento do equipamento. [42] . . . . . . . . . . . . 31
2.16 Protótipo montado para obtenção de dados e atuação no sistema. [43] . . 32
xv
2.17 Protótipo do sistema montado e sendo testado em um tanque com peixes.
[45] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
xvi
4.12 Ilustração sobre a forma de como a solução deve ser inserida na tampa da
sonda. [71] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.13 Gráfico com a relação do valor de tensão do ponto de saturação e a tem-
peratura. [71] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.14 Tabela contendo a relação entre o teor de oxigênio dissolvido e a tempera-
tura do meio. [71] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.15 Sequencia de comandos inseridos no monitor serial para verificar se o mó-
dulo de comunicação está funcionando corretamente. [75] . . . . . . . . . . 63
4.16 Diagrama geral da Base de Dados. [65] . . . . . . . . . . . . . . . . . . . . 65
4.17 Módulos da API. [65] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.18 Script Entity. [65] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.19 Script Controller. [65] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.20 Conexão com a base de dados. [65] . . . . . . . . . . . . . . . . . . . . . . 71
4.21 Script Service. [65] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.22 Diagrama geral da aplicação. [65] . . . . . . . . . . . . . . . . . . . . . . . 73
4.23 Primeira tela da aplicação. [65] . . . . . . . . . . . . . . . . . . . . . . . . 74
4.24 Tela para cadastro de um novo usuário. [65] . . . . . . . . . . . . . . . . . 75
4.25 Tela de exibição da situação das estações criadas/favoritadas pelo usuário.
[65] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.26 Tela de exibição das estações próximas ao usuário, através de um mapa. [65] 78
4.27 Tela de exibição da lista de todas as estações registradas. [65] . . . . . . . 79
4.28 Tela de exibição da lista de estações criadas pelo usuário. [65] . . . . . . . 80
4.29 Tela de adição de uma nova estação. [65] . . . . . . . . . . . . . . . . . . . 82
4.30 Tela de visualização geral da estação escolhida. [65] . . . . . . . . . . . . . 84
4.31 Tela de exibição das estações favoritadas pelo usuário. [65] . . . . . . . . . 85
4.32 Tela de análise dos dados registrados pela estação escolhida. [65] . . . . . . 87
4.33 Tela de exibição dos dados do usuário. [65] . . . . . . . . . . . . . . . . . . 88
xvii
xviii
Capítulo 1
Introdução
1
da população, principalmente nos grandes centros urbanos, algo que promove a utilização
cada vez maior dos recursos ambientais [3].
Dentre as tendências mais recentes de monitoramento dos ecossistemas aquáticos,
destaca-se o monitoramento remoto em tempo real [4]. Essa técnica reúne várias tec-
nologias, tais como: uso de sensores de alta qualidade para medidas físicas, químicas e
biológicas da água com medições climatológicas, armazenamento de dados e transmissão
destes por meio de telefonia celular (GPRS), via satélite ou por via de radiofrequência.
Devido o monitoramento remoto possibilitar um monitoramento intensivo, ou seja,
com obtenção de dados contínuos em intervalos reduzidos de tempo, ele se constitui como
uma ferramenta importante na gestão dos recursos hídricos. Além de proporcionar a iden-
tificação imediata de alterações bruscas na qualidade da água, o monitoramento remoto
também contribui com uma amostragem maior de dados, estes que, auxiliam diretamente
no estudo e na escolha de medidas de manejo e recuperação ambiental. Essas medidas
são fundamentais, já que visam garantir a integridade dos recursos naturais e consequen-
temente sua exploração sustentada, com o acréscimo de economia de recursos financeiros.
Porém o alto custo de implantação e manutenção são um dos maiores limitadores para
a implantação das unidades de monitoramento remoto em massa. Em 2015, por exemplo,
o governo do estado brasileiro da Bahia [5] investiu cerca de R$ 1.741.330,92 (Aprox.
$ 420.000) na aquisição de novas unidades de monitoramento remoto (UMR’s) - Uma
delas representada pela Figura 1.1 - em seis reservatórios contidos dentro do território do
estado. Esse valor certamente inviabiliza a compra desses equipamentos por boa parte dos
municípios, institutos governamentais, organizações não governamentais, empresas, entre
outros. Algo que acaba prejudicando o início da aplicação desse tipo de monitoramento
em diversos cursos d’água contidos em todo o país.
No entanto foi proposto estruturar um protótipo, com um custo menor que as UMR’s
analisadas, que seja capaz de enviar dados para a realização de um monitoramento remoto
da qualidade da água. De forma que seu menor custo possa incentivar a expansão da
rede de monitoramento ambiental (principalmente em córregos e nascentes) e que sua
capacidade de enviar dados remotos sobre o ambiente analisado, possa ser uma alternativa
2
Figura 1.1: Unidade de monitoramento remoto [5]
1.1 Motivação
Grande parte das nascentes, córregos e rios situados no Brasil não possuem um monitora-
mento intensivo, sendo que boa parte deles sequer é monitorado, algo que deixa esses locais
cada vez mais vulneráveis a degradação causada por atividades antrópicas. A motivação
deste trabalho é poder contribuir simultaneamente com o meio ambiente e a sociedade
que nele o vive, promovendo o desenvolvimento de uma solução que, caso implantada,
possibilite o monitoramento remoto em nascentes e córregos - estes que são os mais sus-
ceptíveis as atividades antrópicas - possuindo um custo e um porte menor que as UMR’s
utilizadas em reservatórios brasileiros, como a utilizada pelo INEMA [5] na Bahia.
1.2 Problema
Segundo informações fornecidas pelo site do IGAM - Instituto Mineiro de Gestão das
Águas [6], o estado brasileiro de Minas Gerais conta com 600 estações de amostragem
3
distribuídas nas bacias hidrográficas dos rios São Francisco, Grande, Doce, Paranaíba,
Paraíba do Sul, Mucuri, Jequitinhonha, Pardo, Buranhém, Itapemirim, Itabapoana, Ita-
nhém, Itaúnas, Jucuruçu, Peruípe, São Mateus e Piracicaba/Jáguari. Porém, na maior
parte dessas estações as campanhas de amostragem são trimestrais, com um total anual de
quatro campanhas, um intervalo relativamente grande para detecção de alterações bruscas
no meio onde a análise é realizada.
Outro fator importante é que, segundo relatórios sobre a qualidade das águas publica-
dos pelo IGAM [6], o colar metropolitano do Vale do Aço (composto por 24 municípios)
possui apenas estações de amostragem em áreas de rios (Rio Doce, Rio Piracicaba, Rio
Santa Bárbara, Rio da Prata, Rio Caratinga e Rio Sacramento). Ou seja, outros tipos de
corpos d’água, como nascentes ou córregos, não são abrangidos, algo que promove uma
possibilidade de menor entendimento dos processos ambientais que ocorrem nas diversas
nascentes e córregos que cortam essa extensa região.
1.3 Objetivo
O objetivo principal deste trabalho consiste em estruturar uma solução que na parte de
hardware, utilize uma placa de controle Arduino em conjunto com módulos e sensores,
possibilitando a obtenção de dados físico-químicos do curso d’água em que o mesmo estiver
localizado. Já na parte de software, será desenvolvida uma aplicação, que possibilite
que os dados obtidos possam ser analisados. No final do desenvolvimento, a solução
deverá fornecer aos usuários, de forma remota, os valores simulados de algumas variáveis
(Definidas pela ANA - Agência Nacional de Águas) [7] que interferem diretamente no
cálculo do índice de qualidade da água e que são capazes de demonstrar o teor de pureza da
água, como: pH, temperatura, turbidez e a condutividade do meio no qual o equipamento
estiver presente.
4
Capítulo 2
Contexto e Tecnologias/Ferramentas
Nas últimas décadas, o problema da escassez de água se agravou cada vez mais ano a
ano, ameaçando a saúde humana e a sobrevivência de diversas espécies [8] [9]. Conforme
mostrado pela Figura 2.1, grande parcela da população mundial, cerca de 40%, já foi
afetada pela escassez ou falta de água, seja por razões políticas, econômicas e/ou climáticas
[10] [11]. E, aproximadamente, 25% da população mundial já teve problemas de saúde ou
de higiene, devido à falta de acesso a água potável e saneamento básico. Alguns países
da África, Ásia e América Latina são os que mais sofrem por esse cenário [12].
Uma das principais causas para a poluição dos mananciais são as atividades antrópi-
cas, como agricultura, agropecuária, mineração, industrial e urbanização [1]. Dentre essas
atividades, destacam-se às atividades industriais que, principalmente nos países subde-
senvolvidos, geram elevadas quantidades de resíduos e efluentes que, muitas vezes, são
despejados diretamente em cursos naturais [12]. Nos últimos cinco anos, o estado de Mi-
nas Gerais presenciou dois, dos principais desastres ambientais provocados pelo homem
no Brasil. Os rompimentos das barragens de Fundão (Em Mariana) e do Córrego do Fei-
jão (Em Brumadinho), foram responsáveis pelo despejo de 51 milhões de metros cúbicos
de rejeitos [13] no meio ambiente, contaminando a maior parte da bacia hidrográfica do
5
Figura 2.1: Mapa sobre as regiões que experimentam escassez de água pelo menos um
mês do ano. [11]
Rio Doce - A maior da região sudeste do país [14], e uma parte significativa da bacia
hidrográfica do Rio Paraopeba [15].
Conforme demonstrado na figura 2.2, Fellipe [16] cita os impactos das atividades ur-
banas sobre as nascentes. Em seu trabalho, o autor demonstra como essa situação é
alarmante, já que as nascentes são facilmente degradas pelas atividades humanas mais
comuns em ambientes urbanos.
6
Figura 2.2: Impactos ambientais urbanos e suas consequências as nascentes. [16]
Para que os impactos humanos sobre o meio ambiente possam ser minimizados e fiscali-
zados foram criadas agências reguladoras. No âmbito federal brasileiro, existe a ANA -
Agência Nacional das Águas, autarquia vinculada ao Ministério do Meio Ambiente, que
é responsável pela implantação da Política Nacional de Recursos Hídricos. Dentre os
objetivos dessa agência está o propósito de criar as condições para a implantação das
orientações técnicas emanadas pela Lei das Águas (Lei 9.433, de 08 de janeiro de 2001)
7
[17], nas diferentes regiões do país.
Essa agência também regula o acesso e o uso dos recursos hídricos de domínio da União
- os que fazem fronteiras com outros países ou passam por mais de um estado, emite e
fiscaliza o cumprimento de normas - em especial as outorgas, além de ser responsável
por acompanhar a situação dos recursos hídricos do Brasil. A ANA também coordena a
Rede Hidrometeorológica Nacional que capta, com o apoio dos estados e outros parceiros,
informações como nível, vazão e sedimentos dos rios ou quantidade de chuvas. Essas
informações servem para planejar o uso da água e prevenir eventos críticos, como secas e
inundações [7].
No âmbito estadual de Minas Gerais, existe o IGAM - Instituto Mineiro de Gestão das
Águas, que é o responsável por planejar e promover ações direcionadas à preservação da
quantidade e da qualidade dos recursos hídricos de Minas Gerais. O gerenciamento é feito
com base nas diretrizes do Plano Estadual de Recursos Hídricos e dos Planos Diretores
de Recursos Hídricos, definidos pela ANA.
Além disso, o IGAM é responsável por implantar metodologias que orientam a con-
cessão de outorga de direito de uso da água, pelo monitoramento da qualidade das águas
superficiais e subterrâneas do Estado, por pesquisas, programas e projetos e por disseminar
informações consistentes sobre recursos hídricos, bem como pela consolidação de Comitês
de Bacias Hidrográficas – CBHs e Agências de Bacias (Decreto 47343, de 23/01/2018)
[18].
Conforme informado pelos relatórios de monitoramento [19], o monitoramento da qua-
lidade das águas na bacia hidrográfica do Rio Doce é realizado pelo IGAM, por meio
do Programa Águas de Minas, desde o ano de 1997. Este monitoramento contempla
atualmente 64 pontos de amostragem de água, onde são realizadas coletas e análises la-
boratoriais com periodicidade trimestral e avaliação de aproximadamente 50 parâmetros
físico-químicos e hidrobiológicos. A figura 2.3 mostra informações sobre alguns desses
pontos.
8
Figura 2.3: Dados sobre pontos de monitoramento contidos na bacia do Rio Doce. [19]
9
Para a avaliação da qualidade águas superficiais, o IGAM realiza medições em cima
dos seguintes parâmetros: condutividade elétrica, oxigênio dissolvido, pH, temperatura,
sólidos totais, sólidos dissolvidos totais, sólidos em suspensão totais, turbidez e arsênio
total, bem como os metais: alumínio dissolvido, ferro dissolvido, cobre dissolvido, cromo
total, cádmio total, chumbo total manganês total, mercúrio total e níquel total [19].
Além de definirem uma tabela (seguindo a deliberação conjunta COPAM/CERH-MG
n 01/2008) contendo os limites que cada parâmetro pode ter nas amostras analisadas
(Conforme a figura 2.4).
10
Figura 2.4: Limites físico-químicos definidos segundo a deliberação conjunta
COPAM/CERH-MG n01/2008. [6]
11
2.3 Comparação dos tipos de monitoramento
Glasgow et al. [21] apresenta uma comparação resumida das vantagens e desvantagens do
uso das diversas formas de monitoramento, como o monitoramento tradicional, sensoria-
mento remoto e o monitoramento remoto em tempo real. O monitoramento tradicional
compreende o modo de coleta em campo com barco, garrafa de van Dorn, disco de Secchi,
redes de zoo e fitoplâncton, dragas para coleta de sedimentos, sondas e outros equipamen-
tos necessários, dependendo do tipo de análise a ser realizada. Abaixo está uma resumo
feito por Pompêo et al. [4] sobre o levantamento realizado por Glasgow.
• Monitoramento tradicional:
– Vantagens:
∗ Desvantagens:
–
∗• Sensoriamento remoto:
– Vantagens:
12
∗ Desvantagens:
–
∗ Não há contato dos sensores com o corpo d’água (as medições são feitas à
distância).
– Vantagens:
∗ Possibilidade de alarmes;
∗ Desvantagens:
–
13
2.4 Parâmetros Físico-Químicos
2.4.1 pH
Conforme apresentado pelo manual de controle da qualidade da água para técnicos [20] o
potencial hidrogêniônico (pH) representa a intensidade das condições ácidas ou alcalinas
do meio líquido, por meio da medição da presença de íons hidrogênio (H + ). É calculado
em escala antilogarítmica, abrangendo a faixa de 0 a 14 (Valores inferiores a 7 represen-
tam condições ácidas e valores superiores a 7 representam condições básicas/alcalinas). O
valor do pH influi na distribuição das formas livre e ionizada de diversos compostos quí-
micos, além de contribuir para um maior ou menor grau de solubilidade das substâncias
e de definir o potencial de toxicidade de vários elementos. As alterações de pH podem ter
origem natural (dissolução de rochas, fotossíntese) ou antropogênica (despejos domésti-
cos e industriais). Para a adequada manutenção da vida aquática, o pH deve situar-se,
geralmente, na faixa de 6 a 9.
A acidificação das águas pode ser um fenômeno derivado da poluição atmosférica,
mediante complexação de gases poluentes com o vapor d’água, provocando o predomínio
de precipitações. A origem da acidez tanto pode ser natural (CO2 absorvido da atmos-
fera, ou resultante da decomposição de matéria orgânica, gerando presença de H2 S – gás
sulfídrico) como por atividades antrópicas (como despejos industriais, urbanos ou passa-
gem da água por minas abandonadas, por exemplo). A distribuição das formas de acidez
também é função do pH da água:
• pH < 4.5: Acidez por ácidos minerais fortes, geralmente resultantes de despejos indus-
triais.
14
ou alcalinas. Os principais constituintes da alcalinidade são os bicarbonatos (HCO3− ),
carbonatos (CO32+ ) e hidróxidos (OH − ). Outros ânions, como cloretos, nitratos e sulfatos,
não contribuem para a alcalinidade. Valores elevados de alcalinidade estão associados
a processos de decomposição da matéria orgânica e à alta taxa respiratória de micro-
organismos, com liberação e dissolução do gás carbônico (CO2 ) na água. A distribuição
entre as três formas de alcalinidade na água (bicarbonatos, carbonatos e hidróxidos) é
função do seu pH:
2.4.2 Condutividade
15
2.4.3 Oxigênio Dissolvido
16
naturalmente, mas são mais frequentemente causados pela poluição do escoamento de
fertilizantes ou águas residuais mal tratadas.
2.4.4 Temperatura
A temperatura é uma medida da energia interna de um sistema, que tem como objetivo
mensurar o quão quente ou frio um determinado objeto está. Uma das escalas mais usadas
é o grau Celsius (◦ C) [22]. Elevações da temperatura aumentam a taxa das reações físicas,
químicas e biológicas (na faixa usual de temperatura), diminuem a solubilidade (Como o
oxigênio dissolvido) e também aumentam a taxa de transferência de gases (O que pode
gerar mau cheiro, no caso da libertação de gases com odores desagradáveis) [24].
Variações de temperatura são parte do regime climático normal, onde corpos de água
naturais apresentam variações sazonais e diurnas, bem como estratificação vertical. A
temperatura superficial é influenciada por diversos fatores, tais como: latitude, altitude,
estação do ano, período do dia, vazão e profundidade. A elevação da temperatura em um
corpo d’água geralmente é provocada por despejos industriais (indústrias canavieiras, por
exemplo) e usinas termoelétricas [25].
2.4.5 Turbidez
A turbidez pode ser definida como uma medida do grau de fótons refletidos através das
particulas suspensas, essa medida é expressa por meio de unidades de turbidez (também
denominadas unidades nefelométricas). A turbidez dos corpos d’água é particularmente
alta em regiões com solos erosivos, onde a precipitação pluviométrica pode carrear par-
tículas de argila, silte, areia, fragmentos de rocha e óxidos metálicos do solo. Grande
parte das águas de rios brasileiros é naturalmente turva em decorrência das característi-
cas geológicas das bacias de drenagem, ocorrência de altos índices pluviométricos e uso de
práticas agrícolas, muitas vezes inadequadas. Ao contrário da cor, que é causada por subs-
tâncias dissolvidas, a turbidez é provocada por partículas em suspensão, sendo, portanto,
reduzida por sedimentação. Em lagos e represas, onde a velocidade de escoamento da
17
água é menor, a turbidez pode ser bastante baixa. Além da ocorrência de origem natural,
a turbidez da água pode, também, ser causada por lançamentos de esgotos domésticos ou
industriais [20].
2.5.1 Sensor de pH
O eletrodo de medição do pH, é composto por uma fina membrana de vidro sensível
ao pH selada na ponta de um tubo de vidro ou de plástico. Nessa membrana os íons de
H + vão se acumulando, formando uma diferença de concentração iônica entre a solução
da amostra e a solução de referência, de concentração constante. Essa diferença iônica
provoca a geração de uma tensão no eletrodo (Conforme mostrado pela Figura 2.5).
Quando o eletrodo de medição é imerso na solução contendo o analito, ele desenvolve
um potencial, que depende da atividade do analito. A maioria dos eletrodos de medição
empregados na potenciometria é seletiva em sua resposta. O eletrodo de referência é o
eletrodo em relação ao qual se mede o potencial do eletrodo de medição. O seu potencial é
conhecido, constante e completamente independente da composição da solução de analito.
O potencial de um eletrodo de referência deve ser independente das propriedades da
solução e, se possível, deve ser fisicamente isolado a partir da solução de interesse [27].
18
Figura 2.5: Exemplo da migração de íons da solução mais concentrada para a menos
concentrada. [26]
Um dos eletrodos mais utilizados é o de Prata/Cloreto de Prata (AgCl), que contém além
da membrana de vidro e do eletrólito, um fio de Prata (Ag), um fio de Prata/Cloreto de
Prata (Ag/AgCl) e a solução de KCl (Figura 2.6). Dentro do eletrodo ocorrem reações
de forma que ocorram apenas reações de equilíbrio, (conforme mostrado pelas equações 4
e 5) e assim a concentração de Cl− seja constante.
+ − *
Ag(s) + Cl(aq) ) AgCl(s) (Equação 4)
+ −
KCl( s) *
) Kaq + Claq (Equação 5)
19
Figura 2.6: Eletrodo de Prata/Cloreto de Prata. [26]
20
Figura 2.7: Sensor de turbidez. [28]
2.5.3 Condutivímetro
V = R I (Equação 6)
V
R= I (Equação 7)
1
R= R (Equação 8)
21
Figura 2.8: Principio de funcionamento de um condutivímetro. [29]
eletrodo carregado positivamente (ânodo) (Figura 2.9). Isso pode levar a um acúmulo de
íons perto das superfícies do eletrodo, fazendo com que se ocorra uma polarização que é
responsável por causar algumas reações químicas. Esta eletrólise afeta a composição da
solução e, portanto, também a condutividade.
22
2.5.4 Sonda de Oxigênio dissolvido
Conforme mostrado na figura 2.11, a sonda de oxigênio dissolvido inclui uma membrana
de polietileno, um cátodo (Ag) e um ânodo (Zn) imerso em um eletrólito. Para reduzir
o oxigênio sem um potencial externo aplicado, a diferença de potencial entre o ânodo e o
cátodo deve ser de pelo menos 0,5V. O cátodo aceita elétrons do ânodo por meio de um
circuito interno e os passa para as moléculas de oxigênio, dessa forma, o ânodo é oxidado
e o oxigênio é reduzido na superfície do cátodo [30].
Quando colocados em uma solução eletrolítica, o potencial entre metais diferentes faz
com que eles se autopolarizem, com os elétrons viajando internamente do ânodo para o
cátodo. As moléculas de oxigênio que se difundem através da membrana a uma taxa
constante são reduzidas no cátodo e uma voltagem é produzida. Se não houver moléculas
de oxigênio, o valor medido pela sonda será 0 mV. A medida que o oxigênio dissolvido
aumenta, a medição de saída da sonda também aumentará [31].
Figura 2.11: Imagem ilustrativa do interior da sonda galvânica utilizada para mensurar o
teor de Oxigênio Dissolvido. [30]
23
2.5.5 Arduino
As primeiras placas Arduino foram projetadas por Massimo Banzi e David Cuartielles,
nas quais Cuartielles ficou encarregado de desenvolver o software, baseado em Wiring,
junto à colaboração de Nicholas Zambetti. Já o hardware e sua manufatura foi elaborado
por Gianluca Martino. O projeto recebeu um grande apoio do Programa de Tecnologia
Interativa, da Faculdade de Artes Tisch, na Universidade de Nova Iorque, um dos fatores
que indicam que, diferentemente de outros projetos de prototipagem eletrônica, o Arduino
não era destinado à indústria ou ao especialista, mas sim a iniciantes ou pessoas com pouca
afinidade na área da eletrônica [32].
24
Figura 2.12: IDE Arduino. [32]
25
2.5.6 Redes sem fio
As redes sem fio são utilizadas como uma alternativa às redes com fio, considerando a
facilidade de instalação de uma infraestrutura, os custos elevados gerados pelo cabeamento
e as áreas a serem cobertas nem sempre possibilitarem a presença de cabos. Além disso,
as redes sem fio permitem que os usuários se locomovam permanecendo conectados, o que
difundiu os serviços de voz e dados, exemplificados pelas redes de celulares [34].
A evolução dos sistemas celulares está dividida em gerações. As redes da Primeira Ge-
ração (1G) são redes móveis analógicas ou semi-analógicas, que oferecem serviços básicos
para usuários e a ênfase está nos serviços de voz. A especificação da Segunda Geração
(2G), feita por grupos internacionais, se deu pela necessidade de um sistema de comuni-
cação móvel globalizado e a melhoria das condições da geração anterior. O destaque da
rede 2G está na compatibilidade e na transparência internacional, além da mudança de
protocolos de telefonia móvel analógica para digital.
26
e também proporciona maiores taxas de dados, permitindo a transmissão de 384 kbits/s
para sistemas móveis e 7 Megabits/s para sistemas estacionários. Para se fazer a transição
entre os sistemas 2G para o 3G é necessária a troca de equipamentos dos usuários e a
introdução de novos equipamentos de rede. Tais alterações dificultaram a mudança direta,
surgindo então os sistemas denominados 2,5G, tais como o General Packet Radio Service
(GPRS) [36].
Os smartphones são uma evolução dos telefones móveis, geralmente compostos por um
Sistema Operativo, acesso a internet, GPS e possibilidade de acesso a diversos aplicativos.
Em 2019, segundo [37] existiram mais de 3.2 bilhões de usuários de smartphone pelo
mundo. Se tornando o tipo de equipamento mais utilizado para acesso a informações,
devido sua mobilidade, baixo custo e intuitividade.
O principal Sistema Operativo utilizado atualmente é o Android, pertencente a Google,
e totalizando mais de 2.5 bilhões de dispositivos [38]. O Android teve seu desenvolvimento
iniciado em 2003 pela startup Android Inc e em 2005 foi adquirido pela Google, que foi o
responsável por gerir grande parte do desenvolvimento da plataforma.
O primeiro aparelho Android, o HTC Dream G1, foi lançado no dia 22 de outubro
de 2008. Ele possuía funcionalidades bastante avançadas para a época, como a janela de
notificações, a integração com Gmail e uma central de aplicativos, denominada ‘Android
Market’ [39]. Em 2011, o Android se torna o líder mundial no segmento de SO’s para
smartphones [40].
Já com relação aos aplicativos utilizados em smartphones, existem diversas tecnologias
para o desenvolvimento dos mesmos, e elas são geralmente categorizadas em: WebApp,
Nativa e Cross-platform.
As tecnologias WebApp, permitem que os smartphones acessem aplicações desenvol-
vidas para ambiente Web, estas que possuem código-fonte geralmente escrito em HTML,
27
CSS e JavaScript. Os WebApps são executados em um ambiente Web, de forma que em
boa parte dos casos é preciso ter conexão com a Internet para acesso [41].
Já as tecnologias Nativas criam o aplicativo para uma plataforma específica, fazendo
que a aplicação tenha uma compatibilidade maior com a plataforma na qual ela for desti-
nada. Isso permite que além dos recursos já existentes, ela também seja compatível com
os novos recursos disponibilizados na plataforma, algo que pode influenciar diretamente
no desempenho, pelo fato dos recursos serem utilizados de forma mais otimizada.
A tecnologia cross-platform é uma mistura dos principais pontos positivos das tec-
nologias citadas acima. Com ela é possível criar aplicativos para diferentes plataformas,
permitindo que o código-fonte seja reutilizável, e os recursos de cada plataforma sejam
usufruídos de forma otimizada. Para o desenvolvimento de aplicações com esse tipo de
tecnologia, geralmente são utilizados Frameworks. Um exemplo é o Flutter, uma ferra-
menta desenvolvida pela Google e que utiliza a linguagem Dart para o desenvolvimento
de aplicações compatíveis com os SO’s Android e iOS.
Correia et al. [42] desenvolveu um trabalho no qual foi apresentado uma solução em
monitoramento e controle automático de sistemas de irrigação. O trabalho envolveu tanto
o desenvolvimento de um software, para que o usuário conseguisse ter o acesso a variáveis
importantes nos processos e pudesse atuar (de forma remota) sobre o sistema, quanto o
de um equipamento que através de um microcontrolador Arduíno e um dispositivo HLK-
RM04, pudesse possibilitar a integração de informações, via comunicação WEB, entre o
equipamento e o software.
28
Para obter as informações necessárias para o monitoramento do local, foi necessário
utilizar três sensores: O sensor DHT11, responsável por informar a temperatura e a umi-
dade relativa do ar do meio, o sensor YL-83 que quantifica o volume de água proveniente
da chuva e o módulo RTC-DS1307 que sincroniza a data e o horário do sistema com a data
e o horário do servidor Web, para medições mais precisas em relação ao tempo. Também
para completar o trabalho e possibilitar o controle remoto do sistema de irrigação através
do usuário, foi utilizado como atuador uma válvula solenoide, que controlava a ejeção ou
não da água utilizada para a irrigação (Figura 2.14).
Figura 2.14: Protótipo montado para obtenção de dados e atuação no sistema. [42]
Após a obtenção dos dados através dos sensores, o equipamento pode atuar sobre
o sistema tanto de forma automática quanto de forma manual, controlado pelo usuário
através do software. Para que o funcionamento automático fosse utilizado, o sistema,
através de algoritmos, realizava um cálculo que, através de valores de referência definidos,
ejetava uma quantidade de água conforme as condições do ambiente. Caso a forma manual
fosse utilizada, o software mostrava ao usuário um conjunto de dados, como: temperatura,
umidade relativa do ar, intensidade da chuva naquele momento (fraca, moderada ou forte),
data e horário do sistema, volume de água ejetado durante a irrigação daquele dia, volume
de água acumulado da chuva (no modo automático) e o status de conexão do dispositivo
físico com a Internet. O software também permite o usuário tanto controlar a válvula
momentaneamente como pré-definir uma programação de irrigação (Conforme mostra a
29
Figura 2.15, que contem algumas das telas contidas no software).
30
Figura 2.15: Software para o gerenciamento do equipamento. [42]
Jordão [43] buscou desenvolver uma estação automática de baixo custo para o monitora-
mento da temperatura de compostagem. A estação desenvolvida tinha como objetivo ser
capaz de monitorar, dentre um intervalo específico, a temperatura do ar em dois pontos di-
ferentes em uma leira de compostagem, suportando condições de temperaturas superiores
a 70◦ C e utilizando equipamentos de baixo custo. A medição de temperatura no processo
de compostagem é fundamental, pois conforme afirma Epstein [44], esse parâmetro é um
dos principais indicadores da qualidade e segurança sanitária do composto.
Para mensurar os parâmetros, foi desenvolvido um CMS (Compost Monitoring Sys-
tem). Esse sistema (conforme demonstrado pela Figura 2.16) é composto por 4 unidades:
uma unidade de controle, uma unidade de contagem de tempo e armazenamento de dados,
uma unidade de medição e uma unidade de abastecimento.
Cada unidade é composta pelos seguintes componentes:
• Unidade de Controle:
31
Figura 2.16: Protótipo montado para obtenção de dados e atuação no sistema. [43]
• Unidade de medição:
– Três sensores de temperatura DS18B20 que possuíam uma taxa de amostragem má-
xima de 750 milissegundos (MAXIM INTEGRADED, 2015). Estes que foram ligados
a uma haste de metal, que permitiram a permanência de cada um em diferentes pro-
fundidades no interior da pilha de compostagem.
• Unidade de abastecimento:
32
dias e foi operado com todos os sensores sem interrupções ou geração de dados espúrios,
demonstrou a eficácia operacional do CMS em comparação com as opções convencionais.
A utilização do CMS reduziu o número de visitas do operador, visto que as visitas foram
limitadas à substituição da bateria e do cartão de memória da estação, além de permitir
o aumento da resolução espacial e temporal de medição da temperatura.
Dos Santos et al. [45], desenvolveu um trabalho para analisar, de forma automática, o
pH e a temperatura da água para aquicultura. Segundo Silveira et al. [46], a utilização
de tecnologias no processo de produção animal influencia diretamente na diminuição dos
custos de produção e no melhor aproveitamento das condições químicas, físicas e biológicas
do ambiente.
Conforme Braga et al. [47] descreve em seu trabalho, há diversos parâmetros físico-
químicos determinantes para a caracterização da qualidade da água. Dentre esses pa-
râmetros destacam-se, o pH (potencial hidrogeniônico) e a temperatura [48]. Conforme
descrevem Arana [49] e Moro et al. [50] valores de pH inferiores a 6,5 ou superiores a 8,5
causam problemas fisiológicos diversos, tanto no crescimento, na reprodução, bem como
são causas de mortalidade expressiva do plantel. Em seus trabalhos Arana [49] e Moro et
al. [50] também mostram que, temperaturas acima ou abaixo da faixa ideal podem inibir
o crescimento, além de favorecer a incidência de doenças.
Devido a esses fatos, foi estruturado um equipamento que através de um microcon-
trolador e de sensores, possibilitasse o registro e visualização instantânea dos valores de
pH e temperatura do meio analisado. Para que isso fosse possível, foi utilizada uma placa
com o microcontrolador Atmega2560, um sensor DS18B20 para aferir a temperatura, um
kit SEN0161 que contém um sensor de pH e um módulo para repassar as informações ao
microcontrolador, um módulo de cartão SD, para armazenamento de dados, uma fonte
de alimentação de e um visor de LCD, para proporcionar um melhor acompanhamento
das leituras aferidas pelo sistema. A montagem do sistema foi feita conforme mostrado
33
na figura 2.17.
Figura 2.17: Protótipo do sistema montado e sendo testado em um tanque com peixes.
[45]
34
Capítulo 3
Abordagem/Análise/Modelação
Para que a solução seja estruturada de forma que possa atender os objetivos propostos,
será realizada uma série de etapas. Elas variam desde a escolha de cada um dos compo-
nentes a serem utilizados em conjunto com simulações sobre como cada tipo de informação
obtida seria enviada para a aplicação, como também o processo de desenvolvimento da
aplicação e visualização dos dados na mesma.
3.1 Etapas
As etapas que já foram, ou serão realizadas para a elaboração do protótipo, são as seguin-
tes:
35
2. Definição da arquitetura dos componentes: Após os estudos iniciais dos componentes
utilizados, foi realizada a definição da arquitetura de conexão dos componentes, defi-
nindo assim a parte de hardware da solução. Para que a arquitetura fosse definida,
foram analisados tanto os manuais e guias de suporte de cada um dos componentes,
como também as soluções utilizadas em trabalhos relacionados com o tema. Essa etapa
é importante para que o processo de montagem siga um padrão, permitindo que esse
processo seja facilitado e menos susceptível a erros.
36
6. Testes da aplicação: Com a aplicação desenvolvida, foram realizados testes que verifi-
caram se os dados presentes no banco, foram obtidos de forma íntegra pela aplicação.
Dessa forma, garantiu-se a possibilidade de que os usuários, com a posse das infor-
mações registradas pelos sensores, possam realizar as análises da qualidade da água no
local analisado de forma remota, além de que sejam informados sobre qualquer alteração
brusca em algum parâmetro físico-químico ocorra.
3.2 Materiais
3.2.1 Microcontrolador
37
digitais, analógicas e seriais contidas na plataforma, algo necessário para receber os dados
provenientes dos sensores que compõem o protótipo.
3.2.2 Sensor de pH
Para mensurar o valor de pH do meio, foi utilizado o eletrodo de referência cloreto de pra-
ta/prata H-101. Ele é capaz de indicar a neutralidade, acidez ou até mesmo a alcalinidade
de uma solução líquida e transmite os dados obtidos via conector BNC. Para intermediar
a conexão entre o eletrodo e o Arduino é utilizado o modulo DFRobot pH meter v1.1, que
também possui um potenciômetro que permite ajustes na tensão fornecida ao eletrodo,
permitindo a calibração do mesmo. Esse conjunto deve ser alimentado por uma tensão
de 5V (Figura 3.2).
38
Ambos os componentes compõem o kit, que é destinado para medições a nível indus-
trial. Esse kit foi escolhido devido a sua durabilidade (cerca de 1 ano), sua precisão em
ambientes com condições adversas e sua membrana em anel, que dificulta o entupimento.
Todas essas características fazem com que o kit seja adequado para um monitoramento
remoto a longo prazo, algo que se alinha com os objetivos do trabalho.
Para medir a temperatura do meio aquoso foi utilizado o sensor DS18B20 (Figura 3.3).
Segundo sua documentação, esse sensor é a prova d’água, alcança a precisão de até 0.5◦
C e também proporciona leituras de até 12-bits através de sua comunicação com o micro-
controlador. Ele consegue ser operado com uma tensão de entrada entre 3 e 5,5V e possui
uma faixa de medição entre -55◦ C a +125◦ C.
Já para medir a temperatura externa do meio foi utilizado o sensor HTU-21d (Figura
3.4). Além de conseguir registrar dados sobre a temperatura, ele também é capaz de
registrar a umidade relativa do ar do meio externo. Ele opera com uma tensão de entrada
de 3,3V.
39
Figura 3.4: Sensor HTU-21d. [54]
Ambos os componentes foram escolhidos devido seu baixo custo, a existência de docu-
mentação e sua ampla utilização em projetos com objetivos semelhantes, algo que motiva
o seu uso.
Para mensurar o valor da condutividade do meio aquoso será utilizado o Kit DFRobot
Analog Eletric Conductivity Sensor V2 (K = 1) (Figura 3.5). Os principais componentes
do kit são um eletrodo para a medição da condutividade e um módulo para intermediar a
comunicação entre o eletrodo e o Arduino, além de possibilitar o ajuste da tensão fornecida
ao eletrodo, de forma a calibrar o mesmo.
O kit foi escolhido devido a sua escala de mensuração valores de condutividade, que
está entre 0 a 20 ms/cm, ser capaz de detectar o valor máximo recomendável de 1000
µ/cm. [20] Outro fator importante é a alimentação do kit, que deve ser entre 3 e 5 V.
40
3.2.5 Sensor de oxigênio dissolvido
Para medir o teor de oxigênio dissolvido do meio, será utilizado o kit DFRobot Ana-
log Dissolved Oxygen Sensor/Meter (Figura 3.6). Os principais componentes do kit são
uma sonda galvânica para mensurar o valor de oxigênio dissolvido e um módulo para
intermediar a comunicação entre o eletrodo e o Arduino.
O kit foi escolhido por possuir sonda uma sonda galvânica, que não necessita de ser
polarizada, e também por possuir uma solução de enchimento e a tampa de membrana
substituíveis, resultando em baixo custo de manutenção. Ele possui uma faixa de detecção
entre 0 e 20 mg/L, e pode ser alimentado com uma tensão de 3.3 a 5.5V [56].
Para medir a turbidez do meio, será utilizado o sensor SEN0189 (Figura 3.7). Ele é capaz
de detectar partículas suspensas na água medindo a transmitância da luz e a taxa de
espalhamento que variam com a quantidade de sólidos suspensos totais (TSS) na água.
O conjunto deve ser operado com uma tensão de 5V e em um ambiente com temperatura
41
entre 5 e 90◦ C. A motivação de sua escolha foi a possibilidade do mesmo poder ser utilizado
em rios e córregos.
Para obter precisão de data e hora no momento das medições pelos sensores, será utilizado
o módulo DS1307 (Figura 3.8). Ele possui uma bateria própria e fornece ao microcon-
trolador as informações de data e hora do sistema. O ajuste com o fuso e data padrão
deve ser realizado apenas durante a primeira utilização ou durante a troca de sua bateria.
Ele pode ser operado com uma tensão de entrada de 3,3V, além de ser compatível aos
formatos de hora e data utilizados mundialmente, sendo que o padrão pode ser alterado
pelo usuário em seu código de execução.
3.2.8 Alimentação
42
Figura 3.8: Módulo DS1307. [58]
43
3.2.9 Transmissão de dados
Para transmitir dados do Arduino a um endereço IP, foi utilizado o módulo SIM808
(Figura 3.10). Esse módulo utiliza o tipo de comunicação de dados via GPRS, aplicando
o protocolo TCP/IP, permitindo que o Arduino envie ou receba dados de um endereço
IP remoto. Ele opera com uma tensão de entrada entre 7 e 23V e é capaz de transmitir
dados na frequência de 850 a 1900 MHz, sendo assim compatível com a rede 2G GSM.
Outro fator determinante para a escolha desse módulo, foi a possibilidade do mesmo
enviar dados de localização através do GPS. Essa informação será importante tanto para
um melhor gerenciamento, caso a rede de monitoramento seja ampla, como também para
localizar o aparelho caso ele se desloque involuntariamente a partir do local de instação
inicial.
3.3 Ferramentas
3.3.1 Firebase
44
esteja completamente pronta para se integrar com a aplicação, restando ao desenvolvedor
definir as regras para salvamento dos dados [61].
A plataforma oferece os seguintes serviços para o desenvolvimento de aplicações:
• Firebase Analytics: Fornece uma visão aprofundada sobre o uso da aplicação pelos
usuários.
• Firebase Auth: Permite autenticar usuários usando apenas um id para o cliente, autenticando-
os com e-mail e senha a ser armazenada no Firebase e com integração a diversas plata-
formas (Facebook, Twiter, Google e Github).
• Realtime Database: Fornece o backend e um banco de dados que pode ser analisado
em tempo real. Através de uma API, este serviço permite sincronizar as informações e
armazená-las no Firebase.
45
em tempo real das aplicações em desenvolvimento, verificando se as mesmas podem ser
executadas correctamente e sem problemas. [62]
Esta ferramenta pode ser utilizada no Windows, Linux e Mac OS e devido a compa-
tibilidade com diversas linguagens e frameworks, como o Dart e o Flutter, a ferramenta
também possibilita o desenvolvimento de aplicações para a plataforma iOS.
3.3.3 Flutter
46
Capítulo 4
Arquitetura e Desenvolvimento
47
serão responsáveis por mensurar os dados físico-químicos do ambiente, passando-os para o
microntrolador arduino, que irá estruturar os dados obtidos em JSON, e enviá-los (através
do módulo GPRS) a base de dados a ser utilizada.
A base de dados irá receber os dados, armazená-los de forma estruturada e disponibiliza-
los a aplicação. Também ficará a cargo da base de dados a autenticação e o gerenciamento
tanto de usuários como de operações realizadas no banco.
Já a parte de Software permitirá que os usuários possam acessar e analisar os dados
obtidos pelos sensores. Além de poder cadastrar novos dispositivos, os usuários tam-
bém poderão pesquisar dados sobre os dispositivos cadastrados, favoritar dispositivos e
visualizar alertas, caso os parametros físico-químicos ultrapassem os valores pré-definidos.
4.1 Hardware
Para a seleção dos componentes de Hardware foram utilizados os seguintes critérios: es-
pecificações, a disponibilidade de documentação, o preço e a aplicação em outros traba-
lhos/práticas/projetos. No total foram utilizados dez componentes, de forma que cada
componente tivesse compatibilidade com o microcontrolador, e que o protótipo também
pudesse obter, salvar e enviar os dados.
Após a seleção dos componentes e o estudo da documentação dos mesmos, foi definida
a seguinte arquitetura para a parte de Hardware (Figura 4.2):
48
Figura 4.2: Diagrama geral da parte de Hardware. [65]
49
Com essa arquitetura, a parte de hardware da solução permite a obtenção dos seguintes
parâmetros físico-químicos: pH, Condutividade, teor de oxigênio dissolvido, temperatura
do meio e temperatura e umidade do ambiente externo. Além de enviar os dados através do
módulo de comunicação via GPS, também é possível salvar os dados obtidos localmente,
com a utilização de um modulo de armazenamento interno. O valor total de todos os
componentes utilizados foi de aproximadamente 2.500 reais (375 euros).
Além das conexões realizadas, conforme a arquitetura definida (Figura 4.2), alguns
dos componentes que fazem parte da solução só funcionam corretamente caso sejam exe-
cutados os procedimentos definidos na documentação.
4.1.1 Microntrontrolador
Arduino
50
Figura 4.3: Processo de configuração da Placa Arduino a ser utilizada, na ferramenta
Arduino IDE. [65]
51
Para desenvolver na ferramenta, o usuário deve utilizar a linguagem C ou C++. Para
auxiliar no processo inicial de desenvolvimento, a própria ferramenta disponibiliza uma
aba especifica com alguns exemplos (Figura 4.5). Após desenvolver o código, o usuário
deverá conectar o arduino no USB da máquina na qual está instalada a ferramenta e
aguardar até que todos os drivers serem instalados automaticamente. Depois dessa ins-
talação e do desenvolvimento do código, o usuário pode verificar se o código está correto
e envia-lo ao microprocessador presente no Arduino, para que o mesmo seja executado
(Figura 4.6).
52
Figura 4.6: Botões presentes na ferramenta Arduino IDE, para verificação, compilação e
execução do código no micontrolador do Arduino.
4.1.2 Sensores
Módulo sensor de pH
Conforme arquiteturado no diagrama de Hardware (Figura 4.2), o cabo ’Vcc’ deve ser
conectado a saída de 5V presente no Arduino e o cabo de transmissão de dados conectado
na entrada analógica A0. Quando o módulo receber energia, a placa do conector BNC
acenderá um led azul. Após esse primeiro processo o usuário deve utilizar o código
desenvolvido pela fabricante [66] e após isso iniciar o processo de calibração do eletrodo.
Para iniciar o processo de calibração é necessário se preparar três soluções, uma neutra
(cujo o pH é 7), uma ácida (cujo pH é 4) e uma básica (cujo pH é 9,18). Ao se inserir
o eletrodo na solução neutra e executar o código da fabricante, será exibido no monitor
serial o valor do pH com uma margem de erro embutida. Para corrigir essa margem,
o usuário deve definir (no campo ’offset’) o valor exato da diferença entre o pH real da
solução e o pH exibido pelo monitor serial do Arduino IDE.
Após esse teste o usuário deverá limpar o eletrodo e inseri-lo na solução ácida, a partir
do momento em que o pH exibido no monitor serial seja semelhante ao da solução, o
eletrodo ficará calibrado para a leitura de soluções ácidas. Para realizar a calibração do
53
eletrodo em soluções básicas, basta repetir o processo anterior de calibração, porém deverá
se limpar o eletrodo e utilizar a solução básica. A frequência de calibração, recomendada
pelo fabricante, deve ser de 6 meses, porém caso a qualidade da água no local onde será
situado o eletrodo seja ruim, é necessário que o mesmo seja calibrado com uma frequência
maior. Outro fator importante a ser considerado é o fato de que as medições do eletrodo
são realizadas em millivolts (mV), portanto o cálculo do pH é realizado seguindo os valores
da tabela abaixo (Figura 4.7).
Figura 4.7: Tabela a ser considerada na conversão da medição em millivolts (mV) em pH.
[66]
54
Módulo sensor de condutividade
55
Figura 4.8: Comando ’enter’ sendo inserido através do monitor serial. [69]
Figura 4.9: Comando ’cal’ sendo inserido através do monitor serial. [69]
56
Figura 4.10: Comando ’exit’ sendo inserido através do monitor serial. [69]
57
Módulo sensor de oxigênio dissolvido
Figura 4.12: Ilustração sobre a forma de como a solução deve ser inserida na tampa da
sonda. [71]
58
é utilizada em ambientes com temperatura variável.
Caso se deseje realizar o primeiro processo de calibração, é necessário manter a sonda
úmida ao ar, preparar um copo com água purificada e agitar essa água (com auxilio de
um agitador/batedor) por 10 minutos, de forma que o oxigênio dissolvido do meio fique
saturado. Após esse processo, deve-se parar de agitar a água e esperar que as bolhas
desapareçam, para que assim a sonda seja inserida no meio. Depois de colocar a sonda,
é necessário que se continue mexendo lentamente (evitando bolhas) e esperar até que a
tensão de saída esteja estável. Quando isso ocorrer, deve-se registrar a temperatura e
a tensão lida pela sonda e alterar as variaveis ’CAL1V’ e ’CAL1T’ presentes no código
definido pela fabricante.
Já para o segundo processo de calibração, é necessário preparar dois copos contendo
água purificada em temperaturas distintas, uma com temperatura abaixo dos 20 ◦ C e
outra com uma temperatura próxima aos 38 ◦ C (Não ultrapassar os 40 ◦ C, para não
danificar a sonda). O resto do procedimento é semelhante ao do primeiro processo, deve-
se agitar a água em cada um dos copos durante o mesmo periodo de tempo, esperar que
as bolhas desapareçam e só assim inserir a sonda no meio. Também nesse processo, depois
de se colocar a sonda, é necessário que continue mexendo-a lentamente (evitando bolhas)
e esperar até que a tensão de saída esteja estável. Quando isso ocorrer, deve-se registrar a
temperatura e a tensão lida pela sonda e alterar no código as variaveis ’CAL1V’ e ’CAL1T’,
caso o copo esteja com a água medindo 38◦ C, ou ’CAL2V’ e ’CAL2T’ caso o copo esteja
com a água medindo menos que 20 ◦ C. Após medir a voltagem do oxigênio dissolvido
saturado em duas temperaturas diferentes, é possível obter uma curva de compensação
de temperatura, visto que a correspondência entre a temperatura e o oxigênio dissolvido
saturado na pressão atmosférica padrão é conhecida (Figura 4.13 e 4.14).
59
Figura 4.13: Gráfico com a relação do valor de tensão do ponto de saturação e a tempe-
ratura. [71]
Figura 4.14: Tabela contendo a relação entre o teor de oxigênio dissolvido e a temperatura
do meio. [71]
60
4.1.3 Demais módulos
Módulo data/hora
Conforme arquiteturado no diagrama de Hardware (Figura 4.2), o cabo ’Vcc’ deve ser
conectado a saída de 5V presente no Arduino e os cabos de transmissão de dados, SCA e
SCL, conectados respectivamente nas entradas de comunicação 20 e 21. Após a conexão
ser realizada, deve-se executar o código definido pela fabricante [72] e alterar manualmente
os campos ’TIME YR’, ’TIME MTH’, ’TIME DATE’, ’TIME HR’, ’TIME MIN’, ’TIME
SEC’ para (respectivamente) o ano, mês, dia, hora, minutos e os segundos do momento
da conexão.
Para verificar se a bateria do dispositivo está funcionando da forma correta, deve se
desconectar a fonte de alimentação do arduino, esperar um intervalo de tempo, e após isso
reconectar a fonte de alimentação no Arduino. Caso a bateria do módulo esteja carregada,
os dados exibidos terão sido atualizados automaticamente, sendo desnecessário o reajuste
manual.
Conforme arquiteturado no diagrama de Hardware (Figura 4.2), o cabo ’Vcc’ deve ser
conectado a saída de 5V presente no Arduino e os cabos de transmissão de dados, MISO,
MOSI, SCK e SS, conectados respectivamente nas entradas digitais 50, 51, 52 e 53. Após a
conexão ser realizada, deve-se inserir no módulo um cartão de memória do tipo ’MicroSD’
e executar o código definido pela fabricante [73], que irá permitir que sejam realizados os
testes escrita e leitura de mensagens no cartão de memória inserido.
Conforme arquiteturado no diagrama de Hardware (Figura 4.2), o cabo ’Vcc’ deve ser
conectado a uma fonte externa com tensão superior a 7 V e inferior a 23 V (Recomenda-
se utilizar uma bateria Li-ion 7.4V 2200mAh) e os cabos de transmissão de dados, RX1
(porta 0), TX1 (porta 1) e o Switch de funcionamento do módulo (porta 12), devem ser
61
conectados respectivamente nas entradas de conexão 0, 1 e 12 do Arduino. Para que
o módulo seja capaz de se comunicar com a rede GPRS, é necessário inserir um chip
(SIM card) sem bloqueio de PIN e que tenha acesso a rede 2G/3G (Possível através do
pagamento do serviço a operadora telefônica escolhida), além de executar o código definido
pela fabricante [74].
Durante o processo de execução do código, deve se aguardar o registro do chip na rede,
e quando esse processo se finalizar, o LED indicador de rede piscará lentamente a cada
3 segundos. Durante a execução, o usuário deve estar atento em verificar o estado da
conexão do chip a rede, sendo necessário que ele escreva no código de execução ou insira
manualmente no monitor serial, alguns comandos que serão interpretados pelo módulo de
comunicação de dados (Figura 4.15).
O primeiro comando é o ’AT’, caso o retorno seja ’OK’, significa que o módulo está
ligado e a conexão ao arduíno está funcional. Já o comando ’AT + CSQ’ verifica a
intensidade (em dB) do sinal através da antena, para indicar que o chip está funcional e a
antena consegue captar a intensidade necessária de sinal para conexão, o valor retornado
necessita ser maior que 5. O comando ’AT + CREG?’ verifica se o dispositivo está
conectado na rede, caso o segundo digito retornado pelo módulo seja 1 ou 5 (1 significa
conexão em rede doméstica e 5 em rede roaming) é sinal de que o módulo está registrado
e conectado a rede. O comando ’AT + COPS =?’ retorna a lista de operadoras presentes
na rede e o comando ’AT + CBC’ retorna o percentual do total e a tensão real da bateria
(em mV) que está conectada ao módulo [75].
62
Figura 4.15: Sequencia de comandos inseridos no monitor serial para verificar se o módulo
de comunicação está funcionando corretamente. [75]
O principal papel da base de dados na solução é o de permitir que todos os dados obtidos
pela parte de hardware sejam salvos e disponibilizados para a parte de software, para
que o usuário possa visualizá-los. Primeiramente a base de dados receberá os dados das
estações encapsulados no formato ’JSON’. A estação (parte de hardware) mandará as
informações da segunte forma: Identificador da estação ’Id Device’, Data da mensagem
’Date’, senha da estação ’Password’, Identificador da variável ’n’ (Id Parameter), e valor
lido da variável ’n’ (Value). Para que esses dados sejam tratados e inseridos na base de
dados, foi criada uma API responsável pelo gerenciamento de dados da solução.
A partir da estrutura JSON recebida, a API realiza o seguinte tratamento: Primeira-
mente ela cria um novo registro na tabela ’Message’ (Figura 4.16) e insere os valores Id
Device, Date e o Message (Armazenará uma cópia de todo o conteúdo JSON recebido).
Após a inserção, a base de dados definirá um ID para o registro ’Message’ criado, e a API
irá utilizar esse valor para vincular aos registros da tabela ’Message Data’. Segundamente,
a API irá tratar separadamente cada valor retornado para cada uma das variáveis presen-
tes na mensagem. Sendo assim, ela irá inserir um registro na tabela ’Message Data’ com
o Id Message, definido no processo anterior, e também com a identificação do parâmetro
63
(Id Parameter ’n’) e seu respectivo valor (Value ’n’).
Para que esses dados sejam inseridos na base de dados, também é necessário que o
usuário crie seu registro, cadastre a estação, vincule as variáveis e defina a regra de análise
que será aplicada a mesma. Todo esse processo será realizado na aplicação desenvolvida
em Flutter. O processo de registro de conta e login de usuário utilizará a funcionalidade
’Auth’ do Firebase. Através desse processo, o usuário passará seu ’e-mail’ e ’senha’ na
tela ’NewUserScreen’ (Figura 4.24) e caso não exista nenhum outro registro vinculado ao
e-mail informado, a funcionalidade registrará a conta no Firebase e retornará a aplicação
um identificador único (Id) vinculado a conta do usuário.
Já para armazenar os outros campos informados pelo usuário na tela de cadastro, a
API irá criar um registro na tabela ’User’, inserindo um registro com o Id único (ID User)
retornado pelo Firebase, nome (NameUser), sobrenome (SurnameUser), E-mail (Mail),
data de aniversário (BirthDate), cidade (IdCity), senha (Password) e a data de registro
(DateRegister).
No processo de autenticação do usuário (Através da tela ’FirstScreen’ - Figura 4.23),
a funcionalidade Auth também será utilizada. Com os valores de ’e-mail’ e ’senha’ pre-
enchidos, a funcionalidade visualiza os registros de conta presentes no Firebase e retorna
o identificador único (UserId) do usuário, caso os dados estejam corretos.
Após o processo de autenticação ser realizado, o usuário tem a possibilidade de regis-
trar uma nova estação no sistema. Para isso ele deverá acessar a tela ’StationsScreen’ e
clicar no botão ’Insert Station’, que o redirecionará a tela ’AddStationsScreen’. Ao preen-
cher todos os dados requeridos nessa tela e pressionar o botão ’Insert’, a API irá inserir
um novo registro na tabela ’Device’, que conterá os valores: Nome do dispositivo (Na-
meDevice), coordenadas da localização (LocationCoordinate), cidade (IDCity), tabela de
regras a ser considerada (IdRulesTable), senha (Password), status do dispositivo (Status)
e a data de registro (DateRegister).
Através do registro do ’Device’ e o retorno do ID vinculado a ele, a API insere o registro
de cada uma das variáveis a serem vinculadas ao dispositivo na tabela ’DeviceParameters’.
Nesse registro, serão inseridos o identificador do dispositivo que será vinculado (IdDevice),
64
Figura 4.16: Diagrama geral da Base de Dados. [65]
65
o identificador da variável que será informada pelo dispositivo (IdParameter), o status
desse vinculo (Status) e a data de registro (DateRegister).
Caso o usuário deseje favoritar alguma das estações já registradas, ele deverá ir na tela
’StationProfileScreen’ e clicar no botão ’Favorite Station’. Após essa ação, a API irá criar
um novo registro na tabela ’UserFavoriteDevice’, que conterá o identificador do usuário
(IdUser), o identificador da estação (IdDevice) e a data de registro da ação (DateRegister).
Outra tabela importante é a denominada ’Parameter’, será nela que ficarão registradas
todas as variáveis possíveis de serem registradas pelas estações. Cada registro nessa
tabela, conterá um identificador próprio (IdParameter), um nome (NameParameter), um
símbolo de unidade (UnitSymbol) - por exemplo, em % no parâmetro ’umidade’ e um
valor mínimo e máximo possível - por exemplo, 0 e 14 no parâmetro ’pH’ (MinimumLimit
e MaximumLimit).
Para que sejam definidas as regras, nas quais uma faixa de valores das variáveis é
definida, é necessário criar os registros na tabela de regras (RulesTable). Cada registro
dessa tabela conterá um identificador único (IdRulesTable), um nome para a regra (Na-
meRulesTable), um apontamento para o país no qual ela é válida (IdCountry), o usuário
criador da regra (IdUserCreator), a data de registro (DateRegister) e a situação da regra
(Status).
Após o escopo geral da regra ser definido, é necessário cadastrar os intervalos limites
para cada uma das variáveis nas quais a regra cadastrada se aplica. Esse cadastro é feito
na tabela ’ParameterRangeRules’, que conterá diversos valores, como: Um identificador
próprio (IdParameterRange), o parâmetro (IdParameter) - no qual a regra se aplicará,
a tabela de regras (IdRulesTable) - na qual a regra está vinculada, e o valor mínimo e
máximo aceitável (MinimumLimitValue e MaximumLimitValue).
Caso o valor do parâmetro retornado pela estação (contido na tabela ’DeviceData’),
ultrapasse os valores máximos ou míminos, definidos pela tabela ’ParameterRangeRules’
e/ou ’Parameter’, um registro de alerta é criado e será mostrado aos usuários que seguem
a estação. Esse registro de alerta é feito dentro da tabela ’AlertParameterDevice’, e a cada
novo registro são inseridos dados como: Identificador do dispositivo (IdDevice) - no qual o
66
alerta será vinculado, Identificador do parâmetro (IdParameter) - que ultrapassou a faixa
de valores, o Identificador da mensagem (IdMessage) - no qual os valores ultrapassaram
os limites, o identificador da regra (IdParameterRange), o status do alerta (Status), a
mensagem de alerta (Message) e a data de registro (DateRegisterAlert).
Se o valor do parâmetro ultrapasse o limite definido na tabela ’ParameterRangeRules’,
a mensagem (Message) a ser registrada será ’Valor limite excedido’ (Limit Value Excee-
ded). Caso o valor ultrapasse o limite definido na tabela ’Parameter’, ou caso o valor do
parametro não seja retornado na mensagem, a mensagem (Message) a ser registrada será
’Problema no sensor’ (Sensor problem).
Já a tabela ’City’, ficará responsável por armazenar os registros de todas as cidades nas
quais os dispositivos e/ou usuários podem estar presentes. Para cada registro, existirá
um identificador único (IdCity), um nome (NameCity) e um estado/província/distrito
(IdStateProvince). A tabela ’StateProvince’ armazenará os registros de estado/provínci-
a/distrito, referentes a cada uma das cidades, onde cada registro dessa tabela possuirá um
identificador único (IdStateProvince), um nome (NameStateProvince) e um país vincu-
lado (IdCountry). E a tabela ’Country’, irá conter o relação dos paises, onde cada registro
possuirá um identificador único (IdCountry) e um nome (NameCountry).
4.3 API
67
relacional, utilizando-se um schema definido por módulos (Representando a orientação a
objetos), conforme mostrado na Figura 4.17. E na API, dentro de cada um desses módulos,
existem três tipos de scripts principais: Entity, Controller e Service.
68
Figura 4.18: Script Entity. [65]
69
O segundo script principal é o ’controller’, que realiza o primeiro tratamento dos co-
mandos direcionados pela parte de hardware ou de software a URL (Figura 4.19). Os
principais comandos que ela permite realizar são o ’GET’, ’POST’, ’PUT’ e o ’DELETE’.
Quando o método ’GET’ é instanciado, a API retorna a busca de todos os dados re-
ferentes a tabela acessada atraves da URL (Por exemplo, ’GET’ enviado para a URL
[Link] retorna todos os dados presentes na tabela ’stations’). O método
’POST’, faz com que a API crie um novo registro na tabela instanciada, conforme os dados
repassados pela parte de hardware ou software que enviaram esse comando. O método
’PUT’ realiza o update do registro vinculado ao ’id’ repassado ao se instanciar o método,
alterando os dados daquele registro na tabela. E o método ’DELETE’ é o responsável por
deletar o registro vinculado ao ’id’ repassado ao instanciar o método.
70
Todos esses comandos são repassados a base de dados (Repository) através do script
’service’, que executa de fato essas operações no banco e vincula os dados presentes na
base de dados, as variáveis presentes no módulo da API (Figura 4.21). Os dados de
conexão com a base de dados são setados no script ’[Link]’ (Figura 4.20).
71
Figura 4.21: Script Service. [65]
72
4.4 Software
Para permitir que os dados obtidos pelos sensores sejam visualizados de forma prática e
organizada, a aplicação foi subdividida em diversas telas. A figura 4.22 mostra o diagrama
geral da aplicação, interligando as diversas telas presentes na aplicação e demonstrando
o fluxo que o usuário pode realizar.
73
4.4.1 FirstScreen
Caso o usuário nunca tenha acessado a aplicação, a primeira tela que irá aparecer será a
’FirstScreen’ (Figura 4.23). Nessa tela o usuário pode realizar as seguintes ações: Iniciar
a sessão com dados cadastrados, recuperar uma senha e registrar uma conta na aplicação.
Caso o usuário já possua uma conta registrada e deseje acessar a aplicação, basta que
ele preencha os campos ’E-mail’ e ’Password’ com seus dados e clique no botão ’Log In’,
dessa forma os dados serão validados através do Firebase Auth, e caso estejam corretos o
usuário será redirecionado para a tela ’HomeScreen’. Se o usuário não lembrar da senha
cadastrada, basta ele clicar na opção ’Forgot account’ e preencher o seu e-mail, nessa
situação ele obterá por e-mail um link que permitirá a alteração da senha.
74
4.4.2 NewUserScreen
Mas se o usuário desejar criar uma conta, ele deverá selecionar a opção ’Create Account’
que irá redicioná-lo a tela ’NewUserScreen’ (Figura 4.24). Nessa tela ele deverá informar
os seguintes campos: Primeiro Nome (’First Name’), Sobrenome (’Surname’), E-mail (’E-
mail’), País (’Country’), Estado/Distrito/Província (’State/Province’), Cidade (’City’) e
Senha (’Password’ e ’Confirm Password’). Caso o usuário registre uma conta que não
possua nenhum e-mail já registrado e uma senha que atenda o número mínimo de seis
caracteres, a conta será criada e ele será direcionado a tela ’Homescreen’.
75
4.4.3 Homescreen
Nos casos onde o usuário já esteja logado no aplicativo, a primeira tela que aparecerá será
a ’HomeScreen’ (Figura 4.25). É obrigatório que o usuário já esteja logado para visualizar
essa tela, pois será nela que ele poderá ter informações gerais sobre suas estações (Criadas
e/ou favoritas). A primeira informação que essa tela permite mostrar ao usuário é a
quantidade de estações que estão funcionando com ou sem alerta.
Os alertas podem ser definidos tanto quando a estação perde a conexão com a rede,
quanto nos momentos em que algum dos parâmetros analisados pelos sensores ultrapassa
a faixa de valores pré definidos. Quando um novo alerta é gerado, o sistema gera uma
nova notificação que é exibida ao usuário na tela.
76
Figura 4.25: Tela de exibição da situação das estações criadas/favoritadas pelo usuário.
[65]
77
4.4.4 MapScreen
Através da tela ’MapScreen’ (Figura 4.26) o usuário pode visualizar as estações próximas
a ele pelo mapa. Cada estação ficará registrada conforme a coordenada GPS definida
na criação da estação, nessa coordenada ficará registrado o ponto que ficará vinculado
a estação. Para localizar as estações pelo mapa, é necessário que o usuário clique no
’drop box’ presente no campo ’Search station’, para que assim o ponto onde a estação
selecionada fique plotado no gráfico e através do mesmo, o usuário pode tanto verificar
mais informações sobre a estação, quanto fazer com que uma rota seja definida entre a
posição na qual ele se encontra e a estação escolhida.
Figura 4.26: Tela de exibição das estações próximas ao usuário, através de um mapa. [65]
78
4.4.5 StationsScreen
Outra forma que o usuário pode ter para localizar uma estação é acessando a tela ’Stati-
onsScreen’ (Figura 4.27), que retornará toda a lista de estações registradas na aplicação.
Essa lista pode ser filtrada através do nome, Id e localização da estação. Nessa tela o usuá-
rio também pode visualizar as estações criadas por ele, ao clicar no botão ’My Stations’
(Figura 4.28), ou também inserir novas estações, através do botão ’Insert Station’.
79
Figura 4.28: Tela de exibição da lista de estações criadas pelo usuário. [65]
80
4.4.6 AddStationScreen
81
Figura 4.29: Tela de adição de uma nova estação. [65]
82
4.4.7 StationProfileScreen
83
Figura 4.30: Tela de visualização geral da estação escolhida. [65]
84
4.4.8 FavoriteScreen
A tela ’FavoriteScreen’ mostra a lista de estações favoritadas pelo usuário. Por meio
dessa tela, o usuário consegue visualizar de forma simples todas as estações favoritadas
por ele, podendo acompanhar facilmente os dados obtidos por elas. Nessa tela, o usuário
conseguirá visualizar a lista de estações da mesma forma que na tela ’StationsScreen’, a di-
ferença estará na quantidade de estações retornadas - Serão exibidas apenas as favoritadas
(Figura 4.31).
Figura 4.31: Tela de exibição das estações favoritadas pelo usuário. [65]
85
4.4.9 AnalyseScreen
Já a tela ’AnalyseScreen’, mostrará as informações obtidas pela estação de uma forma mais
detalhada ao usuário. Primeiramente, ela exibirá um gráfico (’Chart’) que mostrará ao
usuário a evolução dos dados relacionados a cada uma das variáveis ao longo do tempo.
O usuário, por sua vez também poderá baixar a tabela com todos os dados em excel
(Atraves do ’View Complete Chart’), visualizar o gráfico em outra aplicação e por meio
desta, compartilhar os dados por e-mail (Figura 4.32).
Nessa tela, o usuário também poderá visualizar individualmente, os dados enviados
por cada mensagem submetida pela estação. Primeiramente, ele poderá visualizar os
dados gerais da mensagem, como ID, a data de envio (’Date’), e se algum dos parametros
contidos dentro daquela mensagem, ultrapassou ou não os limites definidos. Ao se clicar
em uma dessas mensagens, o usuário pode visualizar o valor retornado por cada uma das
variáveis (’Value’), o ID (’Variable ID’), o nome (’Name’) e a unidade (’Unity’). Caso
o valor da variável esteja dentro dos limites, será exibido um ’check’ na cor verde, caso
contrário, se exibirá um alerta, contendo a descrição do tipo de alerta vinculado ao valor
obtido.
86
Figura 4.32: Tela de análise dos dados registrados pela estação escolhida. [65]
87
4.4.10 ProfileScreen
A tela ’ProfileScreen’ possibilitará que o usuário possa visualizar informações sobre seu
próprio perfil, como ’ID’, data de criação ’User’, Nome ’User Name’, país ’Country’, ’E-
mail’, número total de estações criadas ’Created Stations’ e número de estações favoritadas
’Favorite Stations’. Através dessa tela o usuário, conseguirá alterar seus dados e também
realizar o logout da aplicação (Figura 4.33).
88
Capítulo 5
Conclusões
Em primeiro lugar quero dizer que considero cumpridos os objetivos que me havia plane-
jado para o projeto e, visto que além de ter estendido meus conhecimentos de programação,
o desenvolvimento desse projeto também aumentou minha habilidade de análise e tomada
de decisões, sendo esta a primeira vez que realizo o desenvolvimento completo de um pro-
jeto desse tamanho, incluindo o desenvolvimento de um aplicativo. Mesmo que nunca eu
tenha programado para o sistema operativo Android, nem utilizado o framework Flutter
e a plataforma Firebase, foram os conhecimentos prévios de Java que aprendi durante
meu curso de graduação em conjunto com a orientação dos meus orientadores, que me
auxiliaram a realizar a tarefa de desenvolver a aplicação.
Também cabe destacar que parte do êxito ao cumprir os objetivos do projeto foram
graças a utilização do arduino para a simulação da troca de dados via GPRS, e sua capaci-
dade de simulação. Visto que, devido a pandemia, não conseguimos obter os sensores para
realizar a leitura real, mas que com o estudo das documentações de cada um dos sensores,
conseguimos simular de forma mais próxima do real o envio de dados das variáveis para
a base de dados.
A respeito do uso do Firebase, me pareceu uma plataforma muito útil para aplicações
como a que desenvolvi, principalmente pelo fato do processo de autenticação ser simples e
robusto. Por mais que o projeto tenha utilizado em boa parte o armazenamento de dados
no sistema de gerenciamento MySQL devido o projeto ser estruturado de forma estrutural,
89
a aplicação não seria segura sem a utilização do Firebase. Espero ter a oportunidade de
poder voltar a utiliza-la no futuro em projetos profissionais.
Já a respeito das dificuldades encontradas durante o processo de desenvolvimento do
projeto, tenho que destacar a complexidade de ser ligar a parte de hardware e a parte
de software ao banco. Visto que na maior parte do projeto, tentei de forma equivocada,
utilizar a intermediação do envio de dados da aplicação através do protocolo MQTT e da
utilização de instâncias AWS para hospedar os dados. Apenas na parte final do projeto
que verificamos a inviabilidade dessa implementação e a ’facilidade’ dessa troca de dados
através do desenvolvimento de uma API em NestJS para a comunicação entre o MySQL
e a plataforma Heroku, que disponibilizou os dados em JSON para a leitura de dados da
aplicação.
Como possível extensão do projeto, recomendo que seja realizada a compra e monta-
gem dos sensores conforme a arquitetura definida nesse projeto, em conjunto com testes
em campo para agregar os dados reais obtidos com a base de dados e aplicação mó-
vel desenvolvida. Também acredito que o projeto teria um maior valor agregado, com
a aplicação de um análise com Inteligência Artificial, de forma que o próprio Software
possa analisar os dados obtidos, e através de um histórico de contaminações com motiva-
ções identificadas e dados antigos armazenados, classifique os tipos de contaminação que
possam estar afetando momentaneamente o ambiente analisado.
Com relação a viabilidade comercial da aplicação, penso que o software desenvolvido,
deve ser disponilizado de forma gratuita para os usuários. De forma, que idenpendente-
mente das condições financeiras dos usuários, eles possam auxiliar no acompanhamento,
análise e até mesmo cobrança dos orgãos públicos, com relação a possíveis contaminações
a serem identificadas pelas estações de hardware presentes nos ambientes aquáticos. O
custo maior, seria por parte dos responsáveis por comprar os componentes e montar a es-
tação para leitura de dados, visto que além do custo inicial dos sensores, microcontrolador
e estrutura, os implantadores devem se atentar com relação a alimentação e manutenção
dos componentes, além do plano de GPRS que deve ser pago para permitir o envio remoto
de dados.
90
O auge atual da utilização da tecnologia em tarefas do cotidiano (Principalmente
aplicações móveis) aumentou consideralvemente a demanda de programadores, analis-
tas e engenheiros. Em paralelo, ocorre também o crescimento da interferência do ser
humano no meio ambiente aliado a falta de fiscalização por parte dos orgãos públicos,
fazendo com que que novas soluções tecnológicas sejam desenvolvidas e aplicadas para
que possamos previnir a destruição lenta e irreversível do meio ambiente. Considero que
o desenvolvimento desse projeto, permitiu que eu aumentasse não só meus conhecimen-
tos de programação e arquitetura, como também, ver que com certa dedicação ainda é
possível se desenvolver ferramentas e projetos que possam auxiliar as pessoas a visuali-
zarem de forma simples e portátil, a situação atual dos ecossistemas aquáticos em sua
volta. Sem dúvida, recomendaria a outros estudantes e pesquisadores, a exploração e
desenvolvimento de propostas de pesquisa relacionadas a área ambiental, visto o impacto
dos mesmos a nossa geração atual e nas futuras.
91
Bibliografia
[6] IGAM, Qualidade das águas do Rio Doce após 3 anos do rompimento da Barragem
de Fundão. [Link]
AGUA/ENCARTE_Tres_ANOS.pdf, Abril de 2018.
[8] S. AHUJA, “Chapter One – Overview: Sustaining Water, the World’s Most Crucial
Resource”, Chemistry and Water, 2017.
92
[9] J. LIU, Y. WANG e et al, “A comprehensive analysis of blue water scarcity from the
production, consumption, and water transfer perspectives”, Ecological Indicators,
72, 2017.
[10] E. MARRIS, “’Water scarcity’ affects four billion people each year”, Nature News,
Fevereiro de 2016.
[11] M. MEKONNEN e A. HOEKSTRA, “Four billion people facing severe water scar-
city”, Journal Science Advances, 2016.
[17] BRASIL, “Lei n 9.433, de 8 de jan. de 1997. Institui a Política Nacional de Recursos
Hídricos, cria o Sistema Nacional de Gerenciamento de Recursos Hídricos, regula-
menta o inciso XIX do art. 21 da Constituição Federal, e altera o art. 1o da Lei no
93
8.001, de 13 de março de 1990, que modificou a Lei no 7.990, de 28 de dezembro de
1989.”, [Link] 1997.
[20] FUNASA, Manual de controle da qualidade da água para técnicos que trabalham em
ETAS, [Link]
quali_agua_tecnicos_trab_emetas.pdf, 2014.
[21] H. B. GLASGOW e et al, “Real-time remote monitoring for water quality: a review
of current applications, and advancements in sensor, telemetry, and computing tech-
nologies.”, Journal of Experimental Marine Biology and Ecology, p. 409-448, 2004.
94
[26] R. SOUSA, POTENCIOMETRIA. Departamento de Química – UFJF. Juiz de
Fora. [Link]
[Link], 2012.
[28] P. BERTOLETI, Medição de turbidez da água com o sensor SKU (MIC324). Ins-
tituto Newton Braga, 2019. [Link]
saude - e - meio - ambiente / 16379 - medicao - da - turbidez - da - agua - com - o -
sensor-sku-mic324, 2019.
95
[35] J. M. MENON, “Dimensionamento de tráfego de rede de dados para sistema celular
IXEV-DO”, Dissertação de Mestrado – Pontifícia Universidade Católica, Campinas,
2006.
[38] 2. VENTURE BEAT, Android passes 2.5 billion active devices, [Link]
com/2019/05/07/android- passes- 2- 5- billion- monthly- active- devices/,
2020.
96
[44] E. EPSTEIN, Industrial composting. Environmental engineering and facilities ma-
nagement. New York: Taylor and Francis Group, 2011. 388p, [Link]
10.1201/b10726, 2011.
[48] SEBRAE., “Manual como Iniciar Piscicultura com Espécies Regionais.”, Sebrae,
Brasília, pg. 46., 2013.
[51] M. L. 2019a, Arduino Mega 2560 R3 Atmel Mega16u2 + Cabo Usb. https : / /
produto . mercadolivre . com . br / MLB - 947337168 - arduino - mega - 2560 - r3 -
atmel-mega16u2-cabo-usb-_JM?quantity=1, 2019.
97
[53] 2. MERCADO LIVRE, Sensor De Temperatura - Ds18b20. https : / / produto .
mercadolivre . com . br / MLB - 1196865052 - sensor - de - temperatura - ds18b20 -
prova-dagua-arduino-pic-_JM?quantity=1, 2019.
[56] DFRobot, Gravity: Analog Dissolved Oxygen Sensor / Meter Kit For Arduino,
https : / / wiki . dfrobot . com / Gravity _ _Analog _ Dissolved _ Oxygen _ Sensor _
SKU_SEN0237, 2020.
[59] 2. MERCADO LIVRE, Cabo Adaptador Alimentação Arduino Bateria 9v. https://
[Link]/MLB-914121014-cabo-adaptador-alimentaco-
arduino-bateria-9v-_JM?quantity=1, 2019.
98
[62] C. SEGURA, DISEÑO Y DESARROLLO DE UN APLICATIVO MÓVIL EN LA
PLATAFORMA ANDROID STUDIO PARA LA EMPRESA ALLIED ELECTRO-
NICS SERVICE(SERVICIOS ELECTRÓNICOS ALIADOS) PERÚ. https : / /
[Link]/download/pdf/[Link], 2016.
[64] H. Raj, Fludex a redux based state managment library specialy build only for Flutter.
[Link] 2017.
[66] DFRobot, SEN0161 PH meter, https : / / wiki . dfrobot . com / PH _ meter _ SKU _
_SEN0161_, 2020.
[69] ——, DFR0300 Gravity Analog Electrical Conductivity Sensor Meter V2 K=1,
https : / / wiki . dfrobot . com / Gravity _ _Analog _ Electrical _ Conductivity _
Sensor___Meter_V2__K%3D1__SKU_DFR0300, 2020.
99
[73] ——, Micro SD(TF) module, https : / / wiki . dfrobot . com / MicroSD _ card _
module_for_Arduino__SKU_DFR0229_, 2020.
[75] L. M. Engireers, Send Receive SMS Call with SIM800L GSM Module Arduino,
[Link]
2020.
100