Você está na página 1de 0

UNIVAP – Universidade do Vale do Paraíba

FEAU – Faculdade de Engenharia Arquitetura e Urbanismo

Engenharia da Computação

Monitor de Enchentes

Aluno: Josemar de Mendonça Flausino

Orientador: Valdir Gil Pillat Orientador Externo: Leonardo Melo de Lima

Agradeço em primeiro lugar a Deus pela saúde, à família e amigos pelo apoio, aos orientadores pela disponibilidade, e todos os que de maneira direta ou indireta contribuíram para o desenvolvimento deste projeto.

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

INDICE

1.

INTRODUÇÃO

4

2.

MATERIAIS E MÉTODOS

5

2.1

HARDWARE

5

2.1.1

ARDUINO

5

2.1.1.1

ARDUINO UNO

6

2.1.2

SHIELDS

6

2.1.2.1

SHIELD ETHERNET W5100

6

2.1.3

SENSOR LA16M40 Icos

7

2.2

2.2.1

2.2.1

2.2.1.1

2.2.1.1.1 – JQUERY

SOFTWARE

JAVASCRIPT

2.2.1.2

PHP

8

MONITORAMENTO

8

APLICAÇÃO WEB DE NOTIFICAÇÕES

9

9

9

9

2.2.1.3

– MySQL

10

2.3

TÉCNICAS UTILIZADAS

11

2.3.1

– RESISTOR DE PULL-UP

11

2.3.2

DEBOUNCING

12

2.3.3

– INTERRUPÇÃO EXTERNA

13

2.3.4

DESIGN PATTERNS

13

2.3.4.1 –DATA ACCESS OBJECT – DAO

13

2.3.4.2 –MODEL, VIEW, CONTROLLER - MVC

15

2.4

– VISÃO GERAL DO SISTEMA

17

2.4.1

– MACRO-FLUXO DO PROCESSO

18

2.5

CÓDIGOS DO SISTEMA

20

2.5.1 – CÓDIGO APLICAÇÃO DE MONITORAMENTO

20

2.5.2 – APLICAÇÃO WEB DE NOTIFICAÇÕES

24

2.6

– ESQUEMA DE LIGAÇÃO

27

3.

RESULTADOS E DISCUSSÃO

28

3.1 EFETIVIDADE DA SOLUÇÃO

28

3.2 TWITTER x FACEBOOK

30

4.

CONCLUSÃO

32

Página 1

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

RESUMO

Os objetivos deste trabalho são enviar notificações a algum órgão competente sempre que houver qualquer elevação atípica do nível d’agua em algum ponto considerado de risco, enviar notificações para todas as pessoas que se cadastram no site ou seguem alguma rede social do projeto, alertando sobre áreas que já estejam alagadas, de maneira evitem transitar por essas áreas. Este trabalho utiliza uma solução hardware – software, onde através de um microcontrolador (Arduino) e um sensor, o nível d’agua é monitorado e então um “sinal” é enviado para um sistema web responsável por enviar notificações apenas a um determinado órgão competente ou publicar nas redes sociais e enviar as notificações para usuários cadastrados. A conexão entre o arduino e a internet é feita através de um shield ethernet modelo W5100. Como resultado deste trabalho foi obtido um aplicativo com uma solução barata, que pode ser adaptada e melhorada para outros fins, que isolada não é a solução para os problemas relativos a alagamentos, mas que em conjunto com outras ferramentas pode contribuir para a diminuição do número de perdas materiais ou não, ocasionadas pelas inundações. Palavras-Chave: Enchentes, Monitoramento, Arduino, Redes Sociais.

Página 2

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

ABSTRACT

The objectives of this work are to send notifications to any competent body whenever there is any unusual rise in water level at some point considered a risk , send notifications to all persons registered on the site , or follow some social networking project , alerting areas that are already flooded , so avoid transit through these areas . This work uses a hardware-software solution, where through a microcontroller ( Arduino ) and a sensor , the water level is monitored and then a signal is sent to a web system responsible for sending notifications only from a particular competent body or post on social networks and send notifications to registered users . The connection between the Arduino and the internet is via an ethernet shield model W5100 . As a result of this work has been obtained an application with an inexpensive solution that can be adapted and improved for other purposes , that alone isn't the solution to problems related to flooding , but in conjunction with other tools can contribute to the decrease materials or not losses caused by flooding. Keywords: Floods, Monitoring, Arduino, social networks.

Página 3

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

1. INTRODUÇÃO

Diversas regiões brasileiras sofrem com o problema de alagamentos, grandes centros metropolitanos (São Paulo), pequenas cidades no interior, litoral, regiões periféricas dos

grandes centros, enfim, muitos brasileiros já perderam seus bens, seus parentes, sua dignidade em eventos causados pelo período de chuvas. Segundo estudo realizado por (Haddad;Santos, 2013) apenas na cidade de São Paulo, as enchentes ao longo do ano de 2008 causaram um prejuízo estimado de R$ 762 milhões. O professor Eduardo Amaral Haddad ressalta que a falta de planejamento urbano é um agravante que potencializa os efeitos das inundações. “A situação é agravada pelas transformações que uma urbanização não planejada ou mal planejada ocasionou no uso da terra, com a ocupação e a impermeabilização das várzeas dos

[1]. Segundo a Pesquisa Nacional de Saneamento Básico de 2008, realizada pelo

IBGE, 51.2 % dos munícipios declararam sofrer inundações em sua área urbana nos últimos 5 anos, sendo que destes, 27.4% alegaram ter pontos de estrangulamento em seu sistema de drenagem enquanto os outros 23.8% não possuem pontos de estrangulamento em seu sistema de drenagem mas ainda sim sofreram inundações [2]. Este ambiente foi o grande fator motivador para o desenvolvimento deste projeto, proporcionar uma solução de rápida implementação e custo acessível, que pudesse auxiliar a tomada de decisões por parte dos órgãos competentes para auxiliar as pessoas mais carentes, objetivando minimizar ao máximo as perdas materiais e humanas decorrentes às inundações, bem como informar, através de mensagem de texto, e-mail, e redes sociais, sobre áreas metropolitanas que já estão alagadas a fim de evitar o transito por estas áreas.

rios [

]”

Página 4

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2. MATERIAIS E MÉTODOS

2.1 HARDWARE

2.1.1 ARDUINO

O Arduino é uma placa eletrônica de controle de I/O de código aberto, com base no micro controlador ATmega, é uma solução de código aberto, sendo assim qualquer pessoa pode baixar seu esquema elétrico e montar seu próprio Arduino. Inicialmente o Arduino foi desenvolvido para projetistas e artistas como plataforma de prototipação para cursos de design de interação, por ser uma solução de baixo custo e código aberto logo se tornou febre entre técnicos e profissionais de eletroeletrônica [3]. A Figura 2.1 apresenta alguns dos modelos de Arduino:

[3]. A Figura 2.1 apresenta alguns dos modelos de Arduino: Figura 2.1 – Versões da Plataforma

Figura 2.1 – Versões da Plataforma Arduino

Por ser uma solução hardware – software o Arduino se tornou uma poderosa ferramenta para desenvolver projetos acadêmicos e implementações pessoais/profissionais, pode-se dizer que o Arduino esta limitado pela criatividade do projetista.

Página 5

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.1.1.1 ARDUINO UNO

O Arduino UNO é uma versão simples, mais barata e indicada para pequenos projetos. Esta versão é baseada no micro controlador ATMega8U2 (até o release 2), possui 14 pinos digitais de I/O, 6 pinos analógicos, alimentado com 5 V. A Tabela 2.1 apresenta as principais características do Arduino UNO.

Microcontrolador

ATmega328

Tensão de funcionamento Tensão de entrada (recomendado) Tensão de entrada (limites) E / S digital Pinos Número de Pinos de entrada analógica Corrente DC por I / O Pin Corrente DC 3.3V para Pino Memória Flash

SRAM EEPROM Velocidade do Clock

5V

7-12V

6-20V

14 (dos quais 6 fornece uma saída PWM)

6

40 mA 50 mA 32 KB ( ATmega328 ), dos quais 0,5 KB utilizado pelo bootloader 2 KB ( ATmega328 ) 1 KB ( ATmega328 ) 16 MHz

Tabela 2.1 – Detalhamento Técnico Arduino UNO

2.1.2 SHIELDS

O Arduino já é por si só uma plataforma com muitos recursos, mas é possível estender suas funcionalidades, torná-lo mais poderoso, dinâmico e adaptável a diversas situações. Para isto são utilizados os Shields. Os Shields são placas com funções diversas que acopladas ao Arduino aumentam sua capacidade de realizar tarefas, existem muitos Shields, Bluetooth, X- Bee, Ethernet, GSM, Display LCD etc.

2.1.2.1 SHIELD ETHERNET W5100

No projeto foi utilizado um Shield Ethernet W5100. Este shield adiciona ao Arduino a capacidade de se conectar em uma rede Ethernet abrindo um amplo campo de desenvolvimento. Com este shield pode-se conectar o Arduino em uma rede local, na internet, possibilitando assim a integração com sistemas web. A Figura 2.2 apresenta o W5100.

Página 6

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

TRABALHO DE CONCLUSÃO DE CURSO SENSOR DE ENCHENTES Figura 2.2 – Shield Ethernet W5100 Ao acoplar

Figura 2.2 – Shield Ethernet W5100

Ao acoplar o W5100, os pinos 10, 11, 12, 13 do Arduino UNO se tornam inutilizáveis, pois estes pinos servem para interfacear o shield W5100 com o Arduino, desta maneira estes pinos não podem mais serem utilizados para outras finalidades. Isto faz com que o arduino uno passe a ter apenas 9 pinos digitais.

2.1.3 SENSOR LA16M40 Icos

Para o controle da elevação do nível da água o sensor utilizado é um LA16M40 da marca Icos, seu funcionamento é simples, sendo o acionamento do sensor dado apenas com o movimento do flutuador magnético que abre/fecha um contato elétrico, funcionando assim como uma espécie de chave liga/desliga acionada pela variação do nível da água. O sensor em questão é apresentado na Figura 2.3.

A Tabela 2.2 apresenta o detalhamento técnico do sensor LA16M40:

Característica

Especificação

Material:

POM - Poliacetal (porca em PA)

Pressão máxima de trabalho:

2bar

Temperatura de trabalho:

-10 a 100°C Branco

Cor:

Densidade mínima do líquido (SG):

0,76

Vedação:

Arruela NBR (borracha nitrílica)

Peso:

30g

Características elétricas:

NA/NF - SPST Contato On/Off 220Vac - 100Vdc 20W/VA - 50W/VA @20ms 2 x 0,5mm² x 40cm - Silicone 125°C

Saída:

Tensão máxima de comutação:

Potência máxima de comutação:

Cabo de ligação:

Grau de proteção:

IP66

Espessura máxima da parede do reservatório:

9mm

Raio mínimo para reservatório cilíndrico:

150mm

Tabela 2.2 – Detalhamento Técnico Sensor LA16M40 Icos

Página 7

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

TRABALHO DE CONCLUSÃO DE CURSO SENSOR DE ENCHENTES Figura 2.3 – Sensor de nível ICOS LA16M40

Figura 2.3 – Sensor de nível ICOS LA16M40

2.2 SOFTWARE

Do ponto de vista de Software, o desenvolvimento do PROJETO é dividido em duas partes:

- Monitoramento;

- Notificação Web.

2.2.1 MONITORAMENTO

A aplicação de monitoramento é o código embarcado no Arduino UNO. Todo este código foi desenvolvido utilizando a linguagem C, e escrito utilizando a “Integrated Development Environment”. (IDE, em português Ambiente de Desenvolvimento Integrado). Distribuída juntamente com o Arduino de forma gratuita. A IDE é apresentada na Figura 2.4.

de forma gratuita. A IDE é apresentada na Figura 2.4. Figura 2.4 – IDE de desenvolvimento

Figura 2.4 – IDE de desenvolvimento disponibilizada pelo projeto Arduino.

Página 8

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.2.1 APLICAÇÃO WEB DE NOTIFICAÇÕES

A aplicação web de notificação é a parte responsável por receber as informações enviadas

pelo Arduino através de requisições “Hypertext Transfer Protocol” - HTTP, em português

Protocolo de Transferência de Hipertexto, tratá-las e lançar as notificações, e retornar o ‘ok’

ou não para o Arduino. O desenvolvimento desta parte utilizou duas linguagens:

- JavaScript como “front-end (client-side)”, em português Lado Cliente;

- PHP como “back-end (server-side)”, em português Lado Servidor.

2.2.1.1 – JAVASCRIPT

O Javascript é uma linguagem de programação interpretada, criada em 1995 pela Netscape,

após uma pequena contribuição por parte da comunidade Java e por fins comerciais passou a

se chamar JAVAscript, porém é comum o engano de achar que Java e Javascript são a mesma

linguagem. É hoje uma das linguagens mais utilizadas no desenvolvimento de front-ends [4].

2.2.1.1.1 – JQUERY

O JQuery é um framework em javascript cross-browser que possibilita a criação de interfaces

ricas, elaborada para simplificar os scripts que rodam do lado cliente. Ela possui como principais funcionalidades: [5]

- Resolução de incompatibilidade entre os navegadores;

- Redução de código;

- Reutilização do código através de plug-ins;

- Disponibilização de uma vasta quantidade de plug-ins de outros desenvolvedores;

- Trabalha com AJAX e DOM;

- Implementação segura de recursos do CSS1, CSS2 e CSS3.

2.2.1.2 – PHP

O PHP é uma linguagem de programação interpretada, utilizada na construção de scripts no

lado servidor de aplicações web, amplamente usada na criação de back-end por se tratar de uma linguagem, simples, leve e robusta. Surgiu em 1995 criado por Rasmus Lerdof para substituir uma série de scripts em Perl que ele usava no desenvolvimento de sua página pessoal, em 1997 recebeu o nome de PHP – “Hypertext Preprocessor”, em 2004 lançou a versão 5 , a versão mais atual é a 5.5.0, e ainda não se tem data prevista para o lançamento do PHP 6 [6]. As principais características do PHP são:

- Velocidade e Robustez;

- Estruturado e Suporte a Orientação a Objetos;

- Portabilidade (Escreve uma vez, rode em qualquer lugar);

- Tipagem Dinâmica;

- Sintaxe similar a C/C++;

- Open-source, em português Código aberto.

Página 9

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.2.1.3 – MySQL

O MySQL é um Sistema Gerenciador de Banco de Dados – SGBD. Atualmente é um dos

SGBDs mais utilizados no mundo, sendo utilizado por grandes empresas. Exemplo:

Facebook, Google, Adobe, Alcatel dentre outras. Sendo um SGBD, o MySQL possui algumas características de todo SGBD como:

- Garante que os dados armazenados serão consistentes;

- As operações sobre os dados poderão ser desfeitas caso ocorra algum problema

durante uma transação de dados;

- Segurança dos dados;

- Rotinas de “Back-Up” e restauração dos dados em caso de falha.

E também possui algumas características próprias que o fizeram alcançar o índice de uso

atual, como:

- Portabilidade, podendo ser instalado em diferentes plataformas;

- Compatibilidade, possui integração com as principais linguagens de programação;

- Excelente desempenho;

- Estabilidade;

- Facilidade no manuseio;

- “Open – Source” (Código Aberto);

- Suporta “Triggers”;

- Suporta controle transacional;

- Suporta Cursores, Funções e “Procedures”.

Atualmente o MySQL esta em sua versão 5.7 [7]

Página 10

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.3 – TÉCNICAS UTILIZADAS

Durante o processo de desenvolvimento do PROJETO algumas técnicas foram sendo implantadas para solucionar pequenos problemas e aumentar a produtividade.

2.3.1 – RESISTOR DE PULL-UP

Resistor de “Pull-up” é o nome dado ao resistor utilizado para evitar a flutuação em pinos configurados como “INPUT” (Entrada). Naturalmente todo pino configurado como “INPUT” encontra-se em um estado de alta impedância, algo em torno de 100 MΩ, isto faz com que a corrente necessária para que o estado lógico deste pino se altere seja muito pequena. Desta maneira qualquer “ruído” eletrônico capturado pelo pino ocasionará a flutuação de seu estado lógico. Na Figura 2.5 é apresentada a ligação do resistor para funcionar como “Pull-up”.

a ligação do resistor para funcionar como “ Pull-up” . Figura 2.5 – Configuração Resistor de

Figura 2.5 – Configuração Resistor de “Pull-up”

Quando o botão é pressionado, o estado lógico do pino de entrada vai para “LOW” (Baixo). O resistor R1 limita a corrente da fonte VCC, acrônimo de “Voltagem de Corrente Contínua”, a corrente passa pelo botão e vai direto para o “Graduated Neutral Density Filter” – GND, em português, Filtro Graduado de Densidade Neutra, também conhecido como “terra”.

Quando o botão não é pressionado, não há conexão entre o pino de entrada e o GND, sendo assim toda tensão está sobre o resistor, isto faz com que o estado lógico do pino de entrada vá para “HIGH” (ALTO).

Teoricamente o valor do resistor de “pull- up” deve ser um décimo que a impedância do pino de entrada, que em geral varia de 100KΩ e 1MΩ. Limitando a corrente para 1mA, basta utilizar a primeira lei de Ohm U = R x I. Transpondo as variáveis R = U x I, portanto:

R

= 5V x 0,001A

R

= 5kΩ

Página 11

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.3.2 – DEBOUNCING

Todo dispositivo que possui um contato mecânico, ao ser pressionado gera uma série de ruídos, conhecidos como spikes, que fazem com que ocorram oscilações no nível lógico de determinado pino, a Figura 2.6 representa essas oscilações.

pino, a Figura 2.6 representa essas oscilações. Figura 2.6 - Oscilações geradas no momento em que

Figura 2.6 - Oscilações geradas no momento em que o contato mecânico é acionado.

Durante o espaço de tempo em que ocorrem os spikes, qualquer leitura do valor do pino se tornaria imprecisa, e trabalhando com interrupções externas, torna o sistema instável, pois os spikes poderiam gerar a interrupção e provocar falsos resultados no que se espera fazer, no caso deste projeto, enviar falsas requisições para a aplicação web, responsável por gerar as notificações. O termo debouncing se refere às técnicas que são implementadas nos projetos com o objetivo de neutralizar os efeitos colaterais dos spikes, existem várias maneiras de se criar uma forma para garantir a estabilidade do nível lógico de um pino após o acionamento de um contato mecânico, seja através do uso de componentes eletrônicos, como por exemplo o uso de capacitores, ou através do tratamento via software. A maneira como o debouncing foi aplicado no projeto será demonstrada na seção de apresentação do código.

Página 12

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.3.3 – INTERRUPÇÃO EXTERNA

Uma interrupção externa é um evento que causa a pausa do processamento do programa corrente e começa a processar uma sub-rotina de interrupção, a Figura 2.7 ilustra uma interrupção externa.

a Figura 2.7 ilustra uma interrupção externa. Figura 2.7 – Interrupção Externa Como observado na

Figura 2.7 – Interrupção Externa

Como observado na Figura 2.7, o programa principal é executado até que algum evento externo interrompa esta execução, que é desviada para a rotina da interrupção, após o fim do processamento da rotina, o processamento é novamente desviado para exatamente o ponto em que o programa principal foi interrompido para dar continuidade.

2.3.4 – DESIGN PATTERNS

No desenvolvimento de software é comum se deparar com situações problemáticas pelas quais outros desenvolvedores já passaram, e como consequência a utilização de soluções muito semelhantes, para não dizer iguais, sendo assim nasceram os Padrões de Projeto, ou em inglês “Design Pattern”, que descreve a maneira de se resolver um dado problema no processo de desenvolvimento do software, não se trata do código final para resolver o problema e sim uma descrição de como resolver o problema, por ser um conceito, vão existir diversas implementações de um mesmo Pattern, e em diversas linguagens de programação [8]. No desenvolvimento da aplicação web de notificações, foram usados alguns “Design Patterns”. - DAO – Data Access Object ; - MVC – Model, View, Controller.

2.3.4.1 –DATA ACCESS OBJECT – DAO

Este Padrão de Projeto permite separar a aplicação das operações de persistência, “Create, Update e Delete” – CRUD (em português, Criar, Atualizar e Excluir), fazendo com que essas operações se tornem transparentes para o software. Este padrão de projeto diminui o acoplamento entre a aplicação e camada de persistência, pois cria uma camada de abstração entre elas. Em outras palavras o software não precisa saber como e onde a informação vai ser guardada, pois ele “conversa” apenas com a camada de DAO, e o DAO é responsável por acessar o banco de dados ou qualquer outra tecnologia que esta sendo usada para persistir as informações. Esse design Pattern aumenta a portabilidade da aplicação, uma vez existindo a camada DAO se houver a necessidade de migração de uma plataforma de persistência para

Página 13

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

outra, ex.: MySql para Oracle, PostGreSQL para SQLServer, ou ainda um database file – dbf em português arquivo de banco de dados, etc, não será preciso reescrever o código da aplicação basta apenas trocar a classe de DAO. A Figura 2.8 exemplifica a camada de DAO separando o código da aplicação das operações do banco de dados.

o código da aplicação das operações do banco de dados. Figura 2.8 – Representação Gráfica DAO

Figura 2.8 – Representação Gráfica DAO

Na Figura 2.8, é possível visualizar a camada da aplicação que faz chamadas à camada de DAO para salvar, atualizar, excluir, selecionar um registro, a partir deste ponto a aplicação desconhece como e onde o DAO irá executar cada comando, pois a responsabilidade desta etapa do processo é exclusivamente do DAO, portanto haverá uma implementação da camada de DAO para o MySQL, outra para Oracle, e assim para qualquer plataforma que estiver sendo usada para persistir as informações.

Página 14

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.3.4.2 –MODEL, VIEW, CONTROLLER - MVC

O Padrão de projeto MVC, divide uma aplicação em 3 partes.

- Modelo (Model);

- Apresentação (View);

- Controlador (Controller).

Delegando a cada uma dessas partes responsabilidades bem definidas tornando a aplicação menos acoplada, diminuindo os impactos de mudanças e manutenções futuras. O modelo MVC é representado conforme a Figura 2.9.

futuras. O modelo MVC é representado conforme a Figura 2.9. Figura 2.9 – Representação Gráfica MVC

Figura 2.9 – Representação Gráfica MVC

As vantagens do uso deste padrão de desenvolvimento são: [9]

- Reaproveitamento de código;

- Facilidade na manutenção e implementação de novos recursos;

- Delegação de responsabilidades;

- Código limpo e organizado.

A camada view: pode ser chamada de camada de apresentação, interface com usuário, pois é de responsabilidade desta camada, apresentar os dados vindos do banco de dados e tratados pelo Controller, a maneira como os dados serão apresentados é responsabilidade desta camada, um dado pode ser representado de diversas maneiras, com uma tabela, um grid, um diagrama, através da view o usuário também entra com os dados no sistema, no projeto esta camada foi desenvolvida com Html e JQuery, criando a interface para os usuários se cadastrarem no sistema através do site do projeto.

A camada Controller: é responsável pelo controle do fluxo de informação do sistema, é nesta camada que se decide “se”, “o que”, “como”, “quando”, “onde” alguma regra vai ser executada. Ou seja, o Controller faz a intermediação entre view e

Página 15

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

modelo, uma vez que as regras de negócios são implementadas na camada modelo e os dados gerados exibidos na camada view, o Controller executa as regras sobre um conjunto de dados, da maneira deve ser executada, e envia para a exibição na camada de visualização.

A camada Model: é responsável por manipular os dados de forma mais detalhada, criando então as regras do negócio, o modelo de negócio, regras que serão executadas pelo Controller. Também é no modelo que representa uma informação persistida, sendo ela vinda de um SGBD, de um arquivo texto, um xml etc. As classes que representam o modelo do sistema estão apresentadas através da Figura 2.20.

Página 16

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.4 – VISÃO GERAL DO SISTEMA

De modo geral o sistema funcionará como apresentado na Figura 2.10. O sensor ligado ao arduino monitora o nível d’agua. Uma vez acionado, o arduino se conecta a internet e envia uma requisição via protocolo HTTP até o servidor onde a aplicação web está hospedada. Após o processamento da requisição as notificações serão enviadas para Defesa Civil, para usuarios cadastrados e redes sociais.

enviadas para Defesa Civil, para usuarios cadastrados e redes sociais. Figura 2.10 – Visão Geral do

Figura 2.10 – Visão Geral do Sistema

Página 17

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.4.1 – MACRO-FLUXO DO PROCESSO

A Figura 2.11 apresenta o macro fluxo do processo correspondente ao código embarcado no arduino, que tem como responsabilidade verificar o status do sensor e disparar a requisição para a aplicação web de notificações.

a requisição para a aplicação web de notificações. Figura 2.11 – Fluxograma Software embarcado. De forma

Figura 2.11 – Fluxograma Software embarcado.

De forma macro a Figura 2.11 apresenta o fluxo do processo. Inicialmente o arduino aguarda até que um evento, acionamento do sensor, dispare uma interrupção. Sempre que houver a interrupção, o arduino irá validar este evento, para esta validação, após ocorrer à interrupção o arduino aguarda 1 segundo e efetua uma nova leitura no sensor, se o sensor não estiver fechado, o arduino aguarda até que outra interrupção ocorra, se o sensor realmente estiver fechado, ocorre à tentativa de conexão ao servidor web, se esta conexão falhar um alarme sonoro é disparado, se a conexão ocorrer com sucesso à requisição é disparada para a aplicação web. Quando o retorno do processamento web chegar novamente ao arduino, verifica-se o retorno é positivo, em caso de falha um alarme sonoro é disparado.

Página 18

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

A Figura 2.12 representa o macro fluxo do processo correspondente à aplicação de notificações, que tem como responsabilidade postar as notificações, enviar e-mails e mensagens de texto para os usuários cadastrados no sistema, e retornar para o arduino uma mensagem de sucesso ou falha.

e retornar para o arduino uma mensagem de sucesso ou falha. Figura 2.12 – Fluxograma Aplicação

Figura 2.12 – Fluxograma Aplicação web de notificações.

A Figura 2.12 representa o macro fluxo do processo do lado web, ou seja, assim que a

requisição vinda do arduino chega até a aplicação. Após a chegada da requisição é verificado

se ela é proveniente do arduino, após essa verificação os dados de localização do sensor são

recuperados através de consultas ao banco de dados. Com essas informações é criado o texto

da notificação e enviado aos destinatários correspondentes, ou o órgão competente a qual se

destina ou aos usuários cadastrados no sistema, dependendo do tipo de requisição que o

arduino enviou.

Página 19

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.5 – CÓDIGOS DO SISTEMA

Nesta seção os códigos desenvolvidos para a aplicação de monitoramento que ficará embarcado no arduino, e para a aplicação web de notificações serão apresentados com os respectivos comentários.

2.5.1 – CÓDIGO APLICAÇÃO DE MONITORAMENTO

Na Figura 2.13 é apresentado o início do código da aplicação de monitoramento.

- Linhas 1 e 2: inclusão das bibliotecas necessárias para o funcionamento do Shield Ethernet

W5100;

- Linha 5: declaração de um array de bytes que guarda o endereço físico do shield ethernet;

- Linha 6: declaração de um variável do tipo EthernetClient, tipo este definido na biblioteca Ethernet.h, que será responsável por se conectar com um servidor, realizar as requisições;

- Linha 7: declaração de um array de char que guarda a url de onde esta hospedada a aplicação web, poderia também ser usado o ip do hospedeiro;

- Linha 9: declaração de uma variável do tipo int que representa o pino onde estará ligado o

buzzer, para os casos em que ocorrer falha na publicação da mensagem no twitter, a atribuição do valor “5” nesta variável indica que o buzzer esta ligado no pino 5 do arduino;

- Linha 10: Definição de uma variável do tipo boolean, chamada “segue”, esta variável servirá

apenas de controle, para permitir que o arduino faça a requisição web, ou para que o arduino continue aguardando a interrupção.

ou para que o arduino continue aguardando a interrupção. Figura 2.13 – Código Aplicação de monitoramento

Figura 2.13 – Código Aplicação de monitoramento

A Figura 2.14 apresenta a função setup() do arduino, onde são inseridas as linhas responsáveis

pela inicialização do arduino. Todo código contido dentro desta função é processado apenas uma vez, no bootloader da placa, ou seja, apenas quando a mesma é energizada.

- Linha 12: Declaração da assinatura do método;

- Linha 13: Define a taxa de transmissão dados seriais em bits por segundo, só esta sendo utilizado para que seja possível enviar mensagens no console serial da IDE a fim de se identificar o que esta acontecendo no momento;

- Linha 14: Define o buzzer que esta no pino 5 como OUTPUT;

- Linha 15: Define a condição lógica inicial do buzzer, neste caso LOW, ou seja, na

inicialização o buzzer estará desligado;

- Linhas16 e 17: Definem a condição lógica inicial dos pinos onde estão localizados os

sensores de nível, no caso pinos 2 e 3. Por estar usando um resistor de pull-up para evitar a flutuação natural nos pinos de entrada, quando os sensores estão abertos o estado natural de

cada pino é HIGH, por este motivo a inicialização padrão dos pinos também é HIGH. Esta linha é apenas para certificar que o pino vá estar em nível alto ao inicializar o arduino.

Página 20

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

- Linha 19 e 20: Definição das interrupções externas, os 3 parâmetros significam:

- 0: Seleciona o pino no qual é possível trabalhar com interrupção:

- 0 no Arduino Uno indica o pino 2; - 1 no Arduino Uno indica o pino 3;

- doRequest: rotina de interrupção a ser chamada quando a interrupção ocorrer;

- FALLING: modo em que a interrupção é disparada, FALLING diz que a interrupção

será disparada sempre que os pinos 2 e 3, passarem do estado lógico alto (HIGH) para o estado lógico baixo (LOW);

- Linha 22: Inicialização do Shield Ethernet, caso ocorra uma falha ao inicializar o shield uma mensagem é exibida no console, como nesta linha só esta sendo passado como argumento para a função o mac definido anteriormente, a atribuição de ip ao shield se dará por DHCP;

- Linhas 26 e 27: Exibem no console o ip atribuído ao shield Ethernet;

- Linha 28: Aguarda 1 segundo, em seguida começa a verificação do sensor.

1 segundo, em seguida começa a verificação do sensor. Figura 2.14 – Inicializações do Arduino A

Figura 2.14 – Inicializações do Arduino

A função loop(), do arduino é executada durante todo o período em que o arduino esta ligado, dentro dela é que são colocadas as instruções do sistema, por ser um pouco extensa, será apresentada em vários pedaços para melhor visualização do código.

A Figura 2.15 mostra o início da função loop().

- Linha 32: A primeira instrução dentro da função loop, é a mais importante para o projeto,

pois como dito esta função, fica executando em loop infinito, então a responsabilidade desta linha é avaliar expressão “!segue”. Inicialmente a variável “segue” é false, enquanto for false, “!segue” retornará true, fazendo com que o processamento do arduino fique preso dentro deste “while”, Linha 33 à Linha 37, apenas exibem na tela os estados dos sensores de segundo em segundo;

Assim que uma interrupção ocorrer a função doRequest é chamada, esta função inverte o valor da variável “segue” para true, ao fazer isto, a expressão “!segue” retornará false, saindo do while, permitindo ao arduino interpretar as instruções abaixo do while.

- Linha 39 e 41: Aqui se implementa uma variação das técnicas de debouncing, após sair do

while, faz com que o arduino aguarde 2 segundos antes de efetuar uma nova leitura aos sensores de nível, este tempo é para que qualquer oscilação nas portas lógicas tenham se estabilizado, em seguida se a avaliação da expressão condicional da linha 41 retornar true então a interrupção é válida portanto a requisição é disparada para a aplicação web, se não, significa que houve apenas uma oscilação do estado lógico do pino, ou devido aos spikes, ou

Página 21

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

qualquer outra ação do meio externo que fez com que uma interrupção inválida fosse gerada;

- Linha 45: Invoca a função connect() da biblioteca Ethernet.h através da variável “cliente”,

passando a url do servidor web, e o número da porta que se deseja conectar, caso neste ponto haja uma falha de conexão, o buzzer é acionado, pois uma vez sem conexão não será possível enviar notificações, assim sendo é acionado o alarme sonoro.

- Linha 47: Aguarda 1 segundo antes de iniciar a requisição HTTP;

- Linhas 49 e 56: Definem qual requisição será enviada para web, pois caso o sensor acionado

seja o de elevação atípica, apenas o órgão competente deve ser avisado, caso o sensor acionado seja o de alagamento, as notificações para usuários cadastrados devem ser enviadas alertando que determinada área esta alagada;

- Linhas 50 e 57: Inicio do cabeçalho da requisição, nesta linha passa-se à aplicação web o método que esta sendo utilizado, GET, a página requisitada “redirect.php”, e alguns parametros:

- sensor: indica o sensor que foi ativado;

- id_sensor: guarda a informação do id do sensor, visto que em cada região monitorada

haverá um sensor e cada sensor um número que irá identificar o mesmo na aplicação web.

- Linhas 51 e 58: Identificação de qual host esta sendo requisitado pelo arduino, pois num mesmo hospedeiro pode-se haver mais de um host, e a omissão desta cláusula no cabeçalho da requisição pode acarretar em um erro de BAD REQUEST;

- Linha 52 e 59: Identificação de quem esta realizando a requisição, no caso adotou-se colocar a mesma informação enviada pelo browser Mozilla Firefox, a omissão desta cláusula pode resultar também em um BAD REQUEST;

- Linhas 53 e 60: Envia uma linha em branco para a aplicação web para identificar o fim do cabeçalho da requisição.

web para identificar o fim do cabeçalho da requisição. Figura 2.15 - Função loop. Após requisição

Figura 2.15 - Função loop.

Após requisição enviada, o retorno da web começa a ser processado, a Figura 2.16 apresenta o inicio desta etapa.

- Linha 63: A função “available()” retorna a quantidade de byte do response da requisição,

caso seja igual à zero, significa que ainda não houve o retorno por parte da aplicação web;

- Linha 67: Declaração de uma variável do tipo String para receber a response da aplicação

Página 22

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

web;

- Linha 68: Enquanto houverem caracteres sendo recebidos, são concatenados na variável “minhaString”

recebidos, são concatenados na variável “minhaString” Figura 2.16 – Função loop – Recebendo resposta da web.

Figura 2.16 – Função loop – Recebendo resposta da web.

Após o arduino receber a resposta e guardar em uma string, começa a etapa de parse dessa string afim de identificar se o retorno foi positivo, esta etapa é demonstrada na Figura 2.17.

- Linhas 73 e 74: Extraem do response a mensagem enviada pela aplicação web que diz se houve sucesso ou não na publicação da mensagem no Twitter;

- Linha 76: se a variavel inicio for maior que “-1” significa que a mensagem de ok, “msgFP”, foi encontrada;

- Linha 77: se o texto encontrado for diferente de “msgFP”, significa que a mensagem

retornada pela aplicação web é “msgNP”, e a notificação não foi postada, disparando então o aviso sonoro;

- Linha 83: se a variável início for igual a “-1” significa que o texto que indica se houve sucesso ou não na publicação não foi encontrada, por segurança então o alarme sonoro é disparado;

- Linha 90: apenas verifica se a conexão ainda esta ativa, se não estiver encerra a conexão do cliente com o servidor;

- Linha 95: se houve falha na conexão do arduino com a aplicação web dispara o alarme

sonoro;

- Linha 99: inverte novamente o estado lógico da variável “segue”, fazendo-a voltar para

false, assim na próxima interação da função loop o processamento ficará preso novamente no while que faz a verificação desta variável, até que outra interrupção seja gerada;

- Linha 101: se as condições do debouncing não forem satisfeitas, apenas inverte o estado

lógico da variavel “segue” para true, assim na próxima interação da função loop o processamento ficará preso novamente no while que faz a verificação desta variável, até que outra interrupção seja gerada;

Página 23

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

TRABALHO DE CONCLUSÃO DE CURSO SENSOR DE ENCHENTES Figura 2.17 – Função loop – parse da

Figura 2.17 – Função loop – parse da resposta.

A Figura 2.18 apresenta a rotina de interrupção:

- Linha 107: Assinatura da função de interrupção, chamada sempre que houver uma

interrupção externa por falling; - Linha 108: Inverte o estado lógico da variável de controle “segue” para true.

lógico da variável de controle “segue” para true. Figura 2.18 – Função de interrupção doRequest(). 2.5.2

Figura 2.18 – Função de interrupção doRequest().

2.5.2 – APLICAÇÃO WEB DE NOTIFICAÇÕES

A aplicação web foi desenvolvida na linguagem PHP, utilizando alguns design Patterns como

dito anteriormente, o centro da aplicação é o Controller.php, este arquivo é responsável por receber as requisições do arduino e enviar ou as notificações que são apenas dos órgãos competentes, quando há elevação atípica do nível d’agua, ou as notificações para as pessoas cadastradas no site do projeto, além dos posts nas redes sociais, para os casos de notificações de áreas alagadas. Também é de responsabilidade do Controller.php o cadastro de pessoas no sistema. Seguindo o design Pattern DAO, implementou-se classes responsáveis por persistir o cadastro no sistema. Todas as classes DAO herdam de “PDOConnectionFactory” que é a classe responsável por fazer a conexão com o banco de dados. A Figura 2.19 apresenta o diagrama de classes DAO utilizadas na aplicação web. Ainda sobre a aplicação web o banco de dados responsável por armazenar os dados dos usuários cadastrados e da localização dos sensores é o MySQL, na Figura 2.22 é apresentado o Diagrama Entidade-Relacionamento do banco de dados da aplicação.

Página 24

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

TRABALHO DE CONCLUSÃO DE CURSO SENSOR DE ENCHENTES Figura 2.19 – Diagrama de Classes DAO Além

Figura 2.19 – Diagrama de Classes DAO

Além das classes DAO, foram criadas 2 classes Modelo. Elas têm como objetivo representar um novo cadastro e os sensores das áreas que o usuário deseja receber as notificações. A Figura 2.20 mostra o diagrama das classes de modelo que foram criadas, foi preciso apenas duas classes de modelo.

foram criadas, foi preciso apenas duas classes de modelo. Figura 2.20 – Diagrama de classes Modelo

Figura 2.20 – Diagrama de classes Modelo

O motivo pelo qual o cadastro e seus respectivos sensores foram separados em tabelas diferentes no banco de dados e classes diferentes, é por conta das regras de normalização de dados de um banco de dados relacional, como existe uma relação de 1 para N, ou seja, um usuário pode escolher N sensores, é uma boa prática separar esses registros em tabelas diferentes e relacioná-los através de uma chave única e comum entre ambos.

Página 25

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

A fim de deixar o código mais claro, evitando a repetição de código, criou-se duas classes que encapsulam as funções de envio de e-mail e sms. A Figura 2.21 mostra o diagrama das classes chamadas de “utilitárias” foram criadas apenas para tornar a aplicação menos acoplada, e deixar o código mais limpo:

a aplicação menos acoplada, e deixar o código mais limpo: Figura 2.21 – Classes utilitárias. A

Figura 2.21 – Classes utilitárias.

A Figura 2.22 apresenta o diagrama entidade-relacionamento que representa graficamente as entidades (tabelas) criadas no banco de dados para a aplicação web, bem como seus atributos e a relação entre elas.

web, bem como seus atributos e a relação entre elas. Figura 2.22 Diagrama Entidade – Relacionamento

Figura 2.22 Diagrama Entidade – Relacionamento Aplicação Web de Notificações

Página 26

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

2.6 – ESQUEMA DE LIGAÇÃO

A Figura 2.23 mostra como foi feita a ligação dos componentes, por conta dos sensores da fabricante ICOS não fazerem parte da biblioteca de componentes do software Fritizing, o sensor de nível na Figura 2.22 foi substituído por um botão, que ao ser pressionado emula o acionamento do sensor de nível.

botão, que ao ser pressionado emula o acionamento do sensor de nível. Figura 2.23 – Esquema

Figura 2.23 – Esquema de ligação.

Página 27

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

3. RESULTADOS E DISCUSSÃO

3.1 EFETIVIDADE DA SOLUÇÃO

De fato a solução proposta seria eficaz? Traria realmente algum beneficio tanto para pessoas com maior poder aquisitivo quanto para as pessoas mais carentes? Para se chegar a algum resultado sobre estas questões é necessário analisar a solução dentro de cada contexto imaginado. Para as regiões mais periféricas com pessoas mais carentes, o projeto se propõe a monitorar qualquer elevação do nível d’agua que de alguma forma represente uma ameaça para esta parte da população, neste caso as notificações são enviadas somente para algum órgão público, bombeiros, defesa civil ou até mesmo uma comissão criada especificamente para tratar estes assuntos. Mediante a este alerta ficaria a cargo deste órgão a comunicação para a população da área, a mobilização de equipes de apoio, retirada prévia das pessoas do local, enfim qualquer atitude que o responsável julgue necessária. O ganho nesta situação seria a antecipação do evento com base na notificação de que o nível d’agua subiu de forma atípica, reduzindo então a latência entre o inicio do evento e o atendimento a estas pessoas, em resumo a palavra que define bem esta situação seria precaução. A efetividade da solução neste caso depende diretamente do envolvimento e comprometimento dos órgãos responsáveis com a população carente, mediante a uma eminência de alagamento. Como exemplo de que a informação prévia a partir do monitoramento, e que a antecipação de decisões podem salvar vidas e evitar prejuízos, temos a eficiente defesa civil Australiana que em 2011 foi tema de uma reportagem no site da revista “Veja”, onde dentre outras pontos, ressalta o baixo número de mortos devido às inundações, em 2 meses foram 32 mortes, um número muito inferior se comparado às 765 vítimas fatais nos 8 primeiros dias de chuvas fortes no inicio de 2011 no Rio de Janeiro [10].

Nas regiões centrais, que também sofrem com as inundações, encontra-se uma população com mais acesso à informação, e para este caso, além do envolvimento dos órgãos competentes, já citado anteriormente, existe a possibilidade das notificações sobre áreas alagadas serem enviadas através de redes sociais, sms, e-mails. Uma vez que cadastrado no sistema, a pessoa receberia os alertas de áreas que estão alagadas, o ganho nesta situação é a rapidez com que uma informação se espalha graças à internet, celular etc, fazendo com que essas áreas alagadas sejam evitadas pela população que esteja nas ruas, ou ainda as pessoas que estão em casa ou trabalho evitariam sair naquele exato momento. Neste caso outra questão deve ser analisada, “As pessoas veriam as notificações na internet, e a informação se propagaria com a velocidade esperada?”. Segundo o pesquisa (Ibope NetRatings, 2012) até 2012, 94,2 milhões de brasileiros já se conectavam na internet de alguma maneira, o que coloca o Brasil no 5º lugar dos países que mais acessam a internet, ainda de acordo com a pesquisa, entre 2007 e 2011 o percentual de brasileiros com acesso à internet subiu de 27% para 48%, ou seja, 21% em 4 anos. 31% acessam em Lan house, 27% na própria casa e confirmando o que foi dito antes, 25 % acessam a internet na casa de parentes e/ou amigos [11]. Outra pesquisa realizada pela (comScore, 2013) diz que, o brasileiro passou em média 27 horas/mês online em seus computadores, sendo 36% dessas horas foram gastas no Facebook, atualmente a maior e mais popular rede social, em dezembro de 2012 foram quase 44 milhões de visitantes únicos o número de pessoas que acessam sites através de dispositivos mobile chegou a 6% [12]. Segundo o Ibope em 2012 13%, 9,5 milhões, de brasileiros possuem um smartphone, percentual que até 2009 era de 7%, sendo que 53% aderiu á um plano pré-pago, ou seja, cada vez mais brasileiros adquirem aparelhos mobile com capacidade de conexão.

Página 28

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

Outro ponto que mostra a viabilidade da utilização das redes sociais para avisar sobre enchentes é, mesmo que a população não veja a informação, os órgãos públicos possuem acesso à internet o tempo todo, proporcionando mais agilidade no processo de comunicação do evento aos bombeiros, defesa civil, ou outro órgão responsável.

Recentemente o IBGE publicou dois gráficos elaborados a partir de dados até 2011 da PNAD (Pesquisa Nacional por Amostra de Domicílios) que mostram o percentual da população com internet e que possuem celular. A Figura 3.1 mostra o percentual de pessoas conectadas, e a Figura 3.2 o percentual de pessoas que possuem aparelho celular.

3.2 o percentual de pessoas que possuem aparelho celular. Figura 3.1 – Percentual da população com

Figura 3.1 – Percentual da população com acesso à internet. Fonte: [2].

Página 29

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

TRABALHO DE CONCLUSÃO DE CURSO SENSOR DE ENCHENTES Figura 3.2 – Percentual da população que possuem

Figura 3.2 – Percentual da população que possuem celulares. Fonte: [2].

3.2 TWITTER x FACEBOOK

Twitter e Facebook possuem integração total entre suas publicações, desta maneira as contas criadas para o projeto no Twitter e Facebook foram vinculadas. Assim quando uma publicação ocorre no Twitter automaticamente ela também é publicada na “timeline” do facebook, ampliando a rede de pessoas que receberão a informação.

Página 30

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

A Figura 3.3 mostra a página do AlertaEnchente no facebook

A Figura 3.3 mostra a página do AlertaEnchente no facebook Figura 3.3 – Fanpage do AlertaEnchente

Figura 3.3 – Fanpage do AlertaEnchente no Facebook.

A Figura 3.4 mostra a fanpage do AlertaEnchente no Twitter

A Figura 3.4 mostra a fanpage do AlertaEnchente no Twitter Figura 3.4 – Fanpage do AlertaEnchente

Figura 3.4 – Fanpage do AlertaEnchente no Twitter

Página 31

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

4. CONCLUSÃO Neste projeto foi demonstrado que é possível desenvolver soluções simples para problemas sérios, utilizando ferramentas que estão ao alcance de qualquer pessoa, sendo o maior trabalho juntar as diversas aplicações já existentes conseguindo uma solução nova e funcional. Demonstrou-se ainda que é possível diminuir o tempo entre a ocorrência de um evento e a chegada da informação até os órgãos competentes, a aplicação desenvolvida publica uma mensagem no twitter em questões de segundos, replica ao facebook quase que instantaneamente, envia e-mails em milésimos de segundo, isto é muito mais rápido que alguém tomar a decisão de ligar para algum órgão público. Com o comprometimento dos órgãos competentes poderia criar-se um novo processo que monitoraria estas notificações acelerando o atendimento à população vitimada, reduzindo consideravelmente o número de perdas sejam elas materiais ou até mesmo de vidas.

Página 32

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

TRABALHO DE CONCLUSÃO DE CURSO

SENSOR DE ENCHENTES

7. REFERÊNCIAS

[1] – HADDAD, E. A.; SANTOS, E.T.; Economic Impacts of Natural Disasters in Megacities: The Case of Floods in São Paulo, Brazil. FEA-USP Universidade de São Paulo (2013). Disponível em <

http://www.em.com.br/app/noticia/nacional/2013/03/15/interna_nacional,357555/pais-perde-

mais-de-r-700-mi-com-enchentes-em-sp.shtml>. Acesso em 01 out. 2013;

[2] – Instituto Brasileiro de Geografia e Estatística - IBGE, Pesquisa Nacional de Saneamento Básico (2008). Disponível em <

http://www.ibge.gov.br/home/estatistica/populacao/condicaodevida/pnsb2008/PNSB_2008.pd

f >. Acesso em 01 out. 2013;

[3] - ARDUINO. What Arduino can do?; Disponível em <http://www.arduino.cc>; Acesso em 18 ago. 2013;

[4] – JAVASCRIPT SOURCE. What is JavaScript? Is it the same as Java?; Disponível em <http://www.javascriptsource.com/faq/index.html>. Acesso em 18 ago. 2013;

[5] – jQUERY FOUNDATION; What is jQuery?; Disponível em <http://jquery.com/>. Acesso em 18 ago. 2013;

[6] – PHP DOCUMENTATION GROUP; In: O que é PHP? O que o PHP pode fazer?; 2013. Disponível em <http://www.php.net/manual/pt_BR/>. Acesso em 18 ago. 2013;

[7] – ORACLE FOUNDATION; Why MySQL? – 2013. Disponível em <http://www.mysql.com /why-mysql/ >.Acesso em 13 dez 2013;

[8] - GAMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J.; Design Patterns: Elements of Reusable Object-Oriented Software; In: What is a Design Pattern?; 1 Edition, Addison- Wesley Professional (1994) p. 12 -14;

[9] - GAMA, E.; HELM, R.; JOHNSON, R.; VLISSIDES, J.; Design Patterns: Elements of Reusable Object-Oriented Software; In: Design Patterns in Smalltalk MVC; 1 Edition, Addison-Wesley Professional (1994) p. 14 - 16;

[10] – DIAS, M.; Na Austrália, 32 mortos em dois meses de inundações; Revisa Veja; 2011; Disponível em <http://veja.abril.com.br/noticia/brasil/na-australia-32-mortos-em-dois-meses- de-inundacoes>. Acesso 01 out. 2013;

[11] – ANTONIOLI, L.; Estatísticas, dados e projeções atuais sobre a Internet no Brasil; 2012; Disponível em <http://tobeguarany.com/internet_no_brasil.php>. Acesso em 18 ago.

2013;

[12] – NASDAQ SCORE; 2013 Brazil Digital Future in Focus; São Paulo; Março 2013; Disponível em

<http://www.comscore.com/por/Insights/Events_and_Webinars/Webinar/2013/2013_Brazil_

Digital_Future_in_Focus>. Acesso em 01 out. 2013.

Página 33