pontifÍcia universidade catÓlica do paranÁlaplima/ensino/tcc/concluidos/2013/...presente, ainda...

44
PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ESCOLA POLITÉCNICA CURSO DE ENGENHARIA DE COMPUTAÇÃO WELLINGTON RODRIGO MONTEIRO SENTINEL RELATÓRIO FINAL CURITIBA 2013

Upload: others

Post on 03-Feb-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ

    ESCOLA POLITÉCNICA

    CURSO DE ENGENHARIA DE COMPUTAÇÃO

    WELLINGTON RODRIGO MONTEIRO

    SENTINEL – RELATÓRIO FINAL

    CURITIBA

    2013

  • WELLINGTON RODRIGO MONTEIRO

    SENTINEL – RELATÓRIO FINAL

    Relatório Final do Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Engenharia de Computação da Pontifícia Universidade Católica do Paraná. Orientador: Prof. Dr. Julio Cesar Nievola.

    CURITIBA

    2013

  • RESUMO

    O Sentinel trata-se de uma rede de estações meteorológicas de baixo custo e robustas. Uma ou mais estações são capazes de enviar informações por radiofrequência ao longo do dia e da noite para uma central a qual processa esses dados e as mostra para o usuário. Além disso, ela pode armazenar localmente todos os dados ou ainda distribuir pela internet para diferentes serviços online para possibilitar a consulta em qualquer ponto do planeta. A central também possui um algoritmo de inteligência artificial o qual é capaz de prever as condições climáticas futuras baseando-se nos dados já coletados. Um exemplar de cada módulo do Sentinel foi desenvolvido e testado com sucesso.

    Palavras-chave: Sentinel. Meteorologia. Inteligência Artificial. Radiofrequência.

  • ABSTRACT

    Sentinel is a network of low-cost, robust weather stations. One or more stations are capable of sending data day and night to a central hub, which processes it and shows to the user. Furthermore, it is also capable to store locally the collected data or broadcast it through the internet to various online services, enabling queries from anywhere around the world. The hub also has an artificial intelligence algorithm in order to forecast the weather based on the data already collected by the Sentinel stations. One model of each Sentinel module was developed and tested successfully.

    Key-words: Sentinel. Meteorology. Aritificial Intelligence. Radiofrequency.

  • LISTA DE ILUSTRAÇÕES

    Figura 1 – Interação dos módulos do Sentinel .......................................................... 11

    Figura 2 – Diagrama do shield do módulo Estação ................................................... 13

    Figura 3 – Diagrama da placa do escudo de radiação solar ..................................... 14

    Figura 4 – DFD do módulo Estação .......................................................................... 15

    Figura 5 – Pseudocódigo da função setup ................................................................ 17

    Figura 6 – Pseudocódigo da função loop .................................................................. 17

    Figura 7 – Pseudocódigo da função calcularVelocidadeVento ................................. 17

    Figura 8 – Pseudocódigo da função calcularChuva .................................................. 18

    Figura 9 – Pseudocódigo da função obterCondicaoCeu ........................................... 18

    Figura 10 – DFD do módulo Hub ............................................................................... 19

    Figura 11 – Diagrama de atividades do módulo Aplicação ....................................... 21

    Figura 12 – Tela de seleção de porta serial do Sentinel ........................................... 23

    Figura 13 – Tela de log do Sentinel ........................................................................... 24

    Figura 14 – Tela de armazenamento do Sentinel ...................................................... 25

    Figura 15 – Tela de previsão do tempo do Sentinel .................................................. 26

    Figura 16 – Pseudocódigo da retropropagação ........................................................ 29

    Figura 17 – Teste de previsão do tempo .................... Erro! Indicador não definido.8

  • SUMÁRIO

    1 INTRODUÇÃO ............................................................................................... 8

    2 DETALHAMENTO DO PROJETO ............................................................... 10

    2.1 MÓDULO ESTAÇÃO .................................................................................... 11

    2.1.1 Hardware ..................................................................................................... 12

    2.1.2 Software ...................................................................................................... 14

    2.2 MÓDULO HUB ............................................................................................. 18

    2.3 MÓDULO APLICAÇÃO ................................................................................ 19

    2.3.1 DESENVOLVIMENTO E IMPLEMENTAÇÃO .............................................. 21

    2.3.2 SENTINEL.UI ............................................................................................... 22

    2.3.2.1 Tratamento de dados .................................................................................... 22

    2.3.2.2 Tela inicial ..................................................................................................... 22

    2.3.2.3 Tela principal ................................................................................................ 23

    2.3.3 SENTINEL.SERIAL ...................................................................................... 26

    2.3.4 SENTINEL.SENTINEL ................................................................................. 26

    2.3.5 SENTINEL.FORECAST ............................................................................... 28

    2.3.5.1 Funcionamento do algoritmo ........................................................................ 28

    2.3.5.2 Implementação da rede neural ..................................................................... 29

    2.4 HARDWARE UTILIZADO ............................................................................. 31

    2.5 LIMITAÇÕES ................................................................................................ 31

    3 TESTES E RESULTADOS ........................................................................... 33

    3.1 TESTES DE CAIXA BRANCA ...................................................................... 33

    3.1.1 Comunicação por radiofrequência entre estação e hub ......................... 33

    3.1.2 Leitura com sucesso de todos os sensores por 95% do dia .................. 33

    3.1.3 Receber e interpretar com sucesso 3 mensagens consecutivas

    enviadas por uma estação...................................................................................... 34

    3.1.4 Armazenar localmente os dados gerados por uma estação .................. 35

    3.1.5 Armazenar pela internet os dados gerados por uma estação ................ 35

    3.2 TESTES DE CAIXA PRETA ......................................................................... 36

    3.2.1 Funcionamento ininterrupto da estação por 24h ..................................... 36

    3.2.2 Funcionamento normal da estação durante chuva ................................. 36

    3.2.3 Assegurar o armazenamento de chaves utilizadas pelos serviços online

    mesmo após o fechamento do programa ............................................................. 37

  • 3.2.4 Prever uma condição de tempo em base dos dados fornecidos por uma

    estação ..................................................................................................................... 37

    4 CONCLUSÃO............................................................................................... 39

    REFERÊNCIAS ......................................................................................................... 40

    APÊNDICE A – PROJETO DA ESTAÇAO............................................................... 41

  • 8

    1 INTRODUÇÃO

    Enquanto que por um lado é de comum conhecimento de que a meteorologia

    possui um papel principal em vários setores da sociedade, por outro existem certas

    dificuldades ao acesso das suas informações em uma escala mais localizada. Ter o

    conhecimento das condições climáticas e das tendências das mesmas pode levar a

    prejuízos ou lucros que muitas vezes não podem ser quantificados. Uma geada que

    ocorre sem avisos pode arruinar plantações de vegetais e o cultivo de flores. Uma

    tempestade rápida pode destruir casas, inundar ruas e levar bens materiais e vidas.

    Assim, por mais que seja difícil mensurar a importância de se ter o

    conhecimento das condições meteorológicas, é certamente mais fácil reconhecer a

    dificuldade em se ter o domínio de tal informação. No Brasil os serviços

    meteorológicos – principalmente os estatais – fornecem grande parte dos dados para

    a população. Porém, tais informações são geralmente dadas em uma escala regional,

    variando de uma grande cidade a uma microrregião completa. Dessa forma, dados

    pertencentes a uma microescala – isto é, a um raio de 1km ou menos – são

    completamente ignorados apesar de poder haver grandes diferenças meteorológicas

    em um curto espaço de tempo em dois locais próximos. Em casos de automação

    residencial e predial ou até mesmo em certas fazendas de menor escala isto se torna

    um problema uma vez que não há um controle confiável do que ocorre naquela

    pequena região. Além do controle dos dados sobre o tempo no passado até o

    presente, ainda há a questão de se prever o tempo: é interessante saber o andamento

    do tempo no microclima aferido, porém mais interessante ainda é a previsão do tempo

    naquele local: nas próximas horas, o que poderia iria ocorrer?

    Vale salientar que atualmente existem de fato soluções voltadas para esses

    casos. Conhecidas como Personal Weather Stations (Estações Meteorológicas

    Pessoais – PWS) elas possuem um custo menor e disponibilizam variadas

    informações ao(s) usuário(s). Entretanto, elas são mais acessíveis no exterior,

    possuindo no Brasil um custo exorbitante pela importação e com um suporte limitado

    pelo fabricante, não sendo dessa forma tão vantajosas como poderiam ser.

    Assim sendo, tem-se alguns pontos que podem ser explorados. É possível ter

    uma estação meteorológica de baixo custo para funcionamento e manutenção no

    Brasil? É possível ter uma estação que seja fácil de transportar e que ao mesmo tempo

    seja resistente, sendo assim confiável ao mesmo tempo em que oferece um bom

  • 9

    custo-benefício para as condições econômicas de usuários domésticos e donos de

    fazendas de pequeno porte? Pode-se ter uma rede dessas estações que use diversos

    pontos de uma pequena região e se conecte a uma única central, a qual pode

    aproveitar um computador já existente, independente do seu desempenho ou algum

    outro computador de baixo custo, como um ARM?

    Considerando ainda o curso de Graduação em Engenharia de Computação, é

    possível ter um projeto final o qual possa efetivamente demonstrar vários dos

    conhecimentos obtidos ao longo dos seus anos? É ainda, é possível desafiar alguns

    dos problemas gerais de Engenharia e da Eletrônica – como, por exemplo, ter um

    produto que atenda às expectativas ao mesmo tempo em que busca ser de baixo

    custo e que possa estar exposto à ação do vento, do sol, da chuva, do frio e de

    quaisquer outras condições climáticas sem perder a sua robustez?

    Buscando portanto solucionar esses pontos levantados surgiu a ideia do

    Sentinel, composto por três módulos: o módulo Estação, o qual configura-se em uma

    estação meteorológica em pleno funcionamento; o módulo Hub, o qual é um receptor

    dos dados emitidos por uma ou mais estações e o módulo Aplicação, em execução

    em um computador com o módulo Hub conectado. Fruto do desenvolvimento deste

    projeto, foi entregue para avaliação um exemplar de cada módulo em funcionamento.

    Os detalhes sobre cada módulo incluindo o que eles contemplam ou não estão

    dispostos ao longo do documento, o qual é composto por 4 (sete) partes, a partir desta

    introdução do documento, que é a primeira parte. A segunda parte – Detalhamento do

    Projeto – detalha o que é o Sentinel e os módulos que o compõe; a terceira parte –

    Testes e Resultados – mostram quais foram os testes executados para a validação

    do projeto e quais foram os seus resultados obtidos. A quarta e última parte,

    Conclusão, finaliza a documentação descrevendo os resultados obtidos deste projeto,

    incluindo os desafios encontrados. Há ainda um apêndice com algumas imagens

    geradas por computação gráfica mostrando como seria uma estação meteorológica

    Sentinel.

  • 10

    2 DETALHAMENTO DO PROJETO

    O Sentinel é composto por três módulos principais, os quais serão abordados

    individualmente nas próximas páginas. Os módulos são os seguintes:

    a) Módulo Estação: A estação meteorológica. Contém diversos sensores,

    utilizados para avaliar as variadas condições climáticas naquele local. Também possui

    sua própria alimentação, um microcontrolador para gerenciar todos os sensores e um

    transceiver, utilizado para enviar todas as informações via radiofrequência ao hub.

    b) Módulo Hub: Um microcontrolador o qual possui um transceiver para receber

    as informações de uma ou mais estações que possam estar ligadas no momento. O

    microcontrolador verifica se as informações recebidas são de fato válidas (isto é,

    recebidas sem ruído e de uma estação legítima) e as repassa para o computador via

    transmissão serial.

    c) Módulo Aplicação: Uma aplicação sendo executada em um computador

    ligado ao hub. Esta aplicação interpreta os dados recebidos via serial e as mostra na

    tela para o usuário. Caso o usuário tenha interesse, são disponibilizadas informações

    de armazenamento local e envio pela internet desses mesmos dados para consulta

    posterior. Este módulo também possui um algoritmo de previsão do tempo.

    Na figura 1 pode-se visualizar o diagrama de blocos dos módulos e das

    interações entre eles.

  • 11

    Figura 1 – Interação dos módulos do Sentinel

    2.1 MÓDULO ESTAÇÃO

    A estação é composta por sensores e microcontrolador. Conforme as imagens

    disponíveis no Apêndice A, a estação possui uma haste central de tubulação de PVC

    de 40mm, a qual sustenta os sensores de direção do vento, velocidade do vento,

    chuva, caixa de circuitos, alimentação da estação e escudo de radiação solar. Possui

    Módulo Estação

    Sensor de temperatura

    Sensor de umidade

    Sensor de temperatura

    (IR)

    Sensor de velocidade do

    vento

    Sensor de direção do

    vento

    Sensor de pressão

    atmosférica

    Sensor de chuva

    Transceiver RF

    Alimentação (solar +

    baterias)

    Módulo Hub

    Transceiver RF

    Arduino

    Arduino

    Comunicação Serial

    Módulo Aplicação

    Listener Serial

    Previsão do Tempo

    Armazenamento local

    Armazenamento via internet

  • 12

    também uma base com quatro pernas com altura estimada de 1m, feita de tubulação

    de PVC de 100mm. A altura estimada da estação é entre 2,5m a 3m.

    Este módulo utiliza o microcontrolador Arduino em conjunto de duas placas:

    uma shield (placa montada sobre o microcontrolador, trabalhando em conjunto do

    mesmo) contendo todo o circuito de alimentação e interação dos e entre os módulos

    e uma segunda placa, conectada via cabo de rede (RJ45) para a conexão e

    alimentação dos sensores de temperatura, pressão atmosférica e umidade. Esta placa

    localiza-se junto dos outros componentes dentro do escudo de radiação solar, o qual

    possui como serventia proteger os sensores da incidência solar direta, a qual poderia

    alterar os valores dando assim leituras com erro para o usuário.

    2.1.1 Hardware

    Conforme explanado anteriormente, o módulo Estação possui duas placas.

    Ambas foram desenvolvidas utilizando o software Cadsoft EAGLE.

    Na figura 2, abaixo, encontra-se o diagrama do circuito do shield, montado em

    cima de um microcontrolador Arduino, encaixado sobre o mesmo. Este shield possui

    três conectores fêmea: dois RJ11, para serem conectados aos sensores de chuva e

    vento e um terceiro, RJ45, para a integração com a placa localizada dentro do escudo

    de radiação solar, a qual recebe todos os dados referente à umidade relativa, pressão

    atmosférica e temperatura. Possui também um jumper para forçar a reinicialização do

    módulo uma vez que o Arduino possui um overflow da contagem de milissegundos a

    qual o mesmo se encontra ligado a cada 50 dias aproximadamente [1]. Como o

    software do módulo faz uso dessa contagem, para evitar problemas de overflow a

    cada trinta dias o Arduino se auto-reinicializa por meio deste jumper, enviando um

    sinal ON por um dos seus pinos. Esta configuração é feita e prevista pelo código do

    módulo.

    Além disso, possui também o circuito de alimentação de todo o módulo a partir

    de pilhas recarregáveis e placas solares, pelo processo trickle, um processo lento,

    simples e seguro, que evita sobrecarga. Por ser um circuito simples, enquanto que

    por um lado evita o uso de muitos componentes, por outro não oferece uma forma de

    mensurar o nível de carga das pilhas em uso. O circuito para a conexão com o módulo

    de radiofrequência também está no shield. Vale lembrar que no módulo Hub o mesmo

  • 13

    shield é utilizado, com a diferença de que apenas o componente do transceiver de

    radiofrequência seria usado e soldado.

    Figura 2 – Diagrama do shield do módulo Estação

    Na figura 3 está o diagrama do circuito previsto para a placa a ser utilizada no

    escudo de radiação solar. O circuito inclui a alimentação necessária dos sensores de

    pressão atmosférica, temperatura e umidade, além de pinos para a conexão dos

    mesmos. Para a interface entre esta placa e o microcontrolador existe uma entrada

    fêmea RJ45 para que se conecte um cabo de rede comum entre os dois.

    O escudo conta – de forma independente a qualquer circuito – também com

    uma placa solar conectada diretamente a um cooler simples, de plástico. Este cooler

    fica dentro do escudo, na parte superior. Seu objetivo é movimentar o ar quente dentro

    do escudo durante momentos onde há incidência solar, mas de uma forma a não

    comprometer as medições – ou seja, do ar movimentado ser forte a ponto de ser

    observado pelos sensores, dando medições abaixo da realidade.

  • 14

    Figura 3 – Diagrama da placa do escudo de radiação solar

    2.1.2 Software

    Na figura 4, abaixo, encontra-se o diagrama de fluxo de dados do módulo

    Estação.

  • 15

    Figura 4 – DFD do módulo Estação

    O software a ser desenvolvido para o módulo Estação é feito única e

    exclusivamente no Arduino utilizando a linguagem de programação Wiring e o

    ambiente de programação do próprio microcontrolador. Obtendo os dados de cada

    um dos sensores, o microcontrolador irá interpretar os dados lidos quando necessário,

    conforme o seguinte:

    Condição do céu: comparação entre a temperatura do céu e a temperatura

    ambiente [3].

    Velocidade e direção do vento; chuva: os sensores mantêm um contador da

    quantidade de vezes que as pás completaram uma volta (velocidade do vento)

  • 16

    ou que houve uma descida/subida da gangorra coletora de chuva (chuva) ou

    da tensão associada ao indicador de direção do vento, a qual varia dependendo

    da direção a qual está a pá que se movimenta de acordo com a direção do

    vento.

    Após isso, uma string é criada com as informações obtidas e então são

    enviadas por radiofrequência por um transceiver RFM12B-S2. Como o processo

    ocorre em loop a cada 1200 segundos, as informações fornecidas para o módulo Hub

    são as seguintes:

    Média da velocidade do vento dos últimos vinte minutos

    Média da chuva dos últimos vinte minutos

    Direção do vento, temperatura, condição do céu, pressão atmosférica, umidade

    relativa do último segundo.

    A construção da string a ser enviada envolve a concatenação de todos os

    valores lidos e interpretados pela estação, separados por ponto-e-vírgula. Assim, o

    modelo a ser seguido é o seguinte:

    𝐼𝐷𝐸𝑠𝑡𝑎𝑐𝑎𝑜; 𝑆𝑖𝑛𝑎𝑙𝑇𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎; 𝑇𝑒𝑚𝑝𝑒𝑟𝑎𝑡𝑢𝑟𝑎; 𝑈𝑚𝑖𝑑𝑎𝑑𝑒; 𝑃𝑟𝑒𝑠𝑠𝑎𝑜; 𝑉𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑𝑒𝑉𝑒𝑛𝑡𝑜

    𝐷𝑖𝑟𝑒𝑐𝑎𝑜𝑉𝑒𝑛𝑡𝑜𝐸𝑚𝐺𝑟𝑎𝑢𝑠; 𝐶ℎ𝑢𝑣𝑎; 𝑃𝑜𝑟𝑐𝑒𝑛𝑡𝑎𝑔𝑒𝑚𝑁𝑢𝑣𝑒𝑛𝑠𝐶𝑒𝑢

    Um exemplo seria o seguinte:

    1;+; 23.45; 75.43; 92.14; 3.57; 180; 0; 80

    O funcionamento do software do módulo Estação, em forma de pseudocódigo,

    seria tal qual explanado pelas figuras 5 a 9, sendo que a função inicial é a setup, a

    qual configura o dispositivo inicialmente e então fica em execução sempre a função

    loop. Todas as funções cujo nome se iniciam com inicializar[...] e ler[...] tratam

    respectivamente da inicialização e leitura de diferentes tipos de sensores e a

    calibragem dos mesmos. São funções especificamente utilizadas para este fim e que

    podem envolver ajustes nos valores dos registradores dos sensores, por exemplo,

    sendo neste caso fornecidas pelos fabricantes. Por serem complexas e por não terem

    uma implementação própria elas não serão ilustradas nas figuras seguintes, dando

    maior atenção às funções feitas exclusivamente para a execução do projeto.

  • 17

    Figura 5 – Pseudocódigo da função setup

    Figura 6 – Pseudocódigo da função loop

    Figura 7 – Pseudocódigo da função calcularVelocidadeVento

    FUNÇÃO Setup:

    VARIÁVEIS:

    UNSIGNED LONG checkpointVelocidadeVentoEChuva

    INÍCIO

    EXECUTAR inicializarRF

    EXECUTAR inicializarSensorPressao

    EXECUTAR inicializarSensorVelocidadeVento

    EXECUTAR inicializarSensorDirecaoVento

    EXECUTAR inicializarSensorChuva

    EXECUTAR inicializarSensorTemperaturaIR

    checkpointVelocidadeVentoEChuva = checkpointVelocidadeVentoEChuva //se passaram 20 min da última

    vez em que foram enviados dados, obter dados mais recentes e enviá-los

    EXECUTAR calcularVelocidadeVento

    EXECUTAR calcularChuva

    checkpointVelocidadeVentoEChuva

  • 18

    Figura 8 – Pseudocódigo da função calcularChuva

    Figura 9 – Pseudocódigo da função obterCondicaoCeu

    2.2 MÓDULO HUB

    O módulo Hub é composto pelo mesmo shield do módulo Estação conforme

    explicado anteriormente (vide seção 3.1.1 e figura 2, acima), porém apenas utilizando

    o transceiver de radiofrequência, não tendo a necessidade de se soldar qualquer um

    dos outros componentes. O shield é montado sobre um outro microcontrolador

    Arduino, conectado e alimentado por um computador qualquer por uma porta USB. O

    hub lerá as informações provenientes das estações e as encaminhará para o

    computador por meio de um software programado para o Arduino.

    A topologia utilizada para o desenvolvimento do projeto é a estrela, por ser mais

    simples e por ter um tempo de implementação reduzido – tempo este que pode ser

    utilizado em outros aspectos e fases do projeto.

    FUNÇÃO calcularChuva:

    VARIÁVEIS:

    REAL contadorEmMilimetros

  • 19

    Como o módulo de radiofrequência (RFM12B-S2) possui tratamento de erros e

    ruído, o hub recebe apenas a string e a redireciona para o computador, uma vez que

    é o próprio módulo de radiofrequência que estaria fazendo o tratamento de erros.

    Na figura 10 pode-se ver de uma forma mais clara como é o funcionamento do

    software deste módulo.

    Figura 10 – DFD do módulo Hub

    2.3 MÓDULO APLICAÇÃO

    O módulo Aplicação é composto exclusivamente por software, em

    funcionamento em um computador com o módulo Hub conectado a si por uma porta

    USB. O software é multiplataforma, utilizando um sistema operacional Windows, Linux

    ou Mac OS. Esta aplicação tem como objetivo gerenciar todos os dados recebidos

    pela estação efetivamente – isto é, armazená-las ou publicá-las. Ao abrir a aplicação

    pela primeira vez, ela pede para que o usuário selecione a porta serial a qual o hub

    está conectado. Uma vez selecionada, ela estará escutando aquela porta

    ininterruptamente aguardando novas informações.

    Uma vez que uma nova entrada é recebida pela aplicação, ela mostra na tela

    as medições recebidas e armazena e/ou publica-as caso o usuário tenha optado por

    quaisquer uma das opções oferecidas. Ou seja, se o usuário escolheu armazenar em

    dois formatos de arquivos locais diferentes, logo que uma nova informação é recebida

    a aplicação irá adicioná-la aos formatos de arquivo que o usuário escolheu. Se ele

    optou também por publicar as informações em um serviço online (ThingSpeak, por

    exemplo), as informações também serão enviadas pela internet ao(s) serviço(s)

    escolhido(s) se há conexão de internet ativa e se as informações de autenticação

  • 20

    foram corretamente incluídas. Informações como ponto de orvalho também podem ser

    calculadas pela estação.

    Adicionalmente, a aplicação possui também um módulo voltado à inteligência

    artificial, podendo assim prever o tempo baseando-se nas informações fornecidas por

    uma estação. Dessa forma, após um determinado tempo coletando as informações

    para o algoritmo (um mês, por exemplo) e escolhendo a opção da previsão do tempo

    a aplicação determinará qual será a condição do tempo a curto prazo (a condição do

    céu, por exemplo).

    A aplicação possuirá suporte aos diferentes formatos de arquivo e serviços

    online:

    a) Arquivo de texto (.txt);

    b) Arquivo de dados tabelados (.csv);

    c) Arquivo de relação de atributos, utilizado pelo software de inteligência

    artificial Weka e pelo módulo de inteligência artificial do Sentinel (.arff);

    d) ThingSpeak (serviço online que oferece gráficos atualizados em tempo real);

    e) WUnderground (serviço online mundial de estações meteorológicas,

    oferecendo suporte a estações feitas por usuários domésticos).

    Na figura 11, abaixo, pode-se verificar o diagrama de atividades previsto para

    este módulo.

  • 21

    Figura 11 – Diagrama de atividades do módulo Aplicação

    2.3.1 DESENVOLVIMENTO E IMPLEMENTAÇÃO

    Este módulo é previsto para ter um funcionamento tal qual ilustrado pela figura

    11, acima. Além disso, um dos pontos a serem buscados é o baixo consumo de

    memória RAM e poder ser multiplataforma. Portanto, foram escolhidos para a

    implementação do módulo o Java com JavaFX, utilizando o Java Development Kit

    versão 8 com o JavaFX 8 em conjunto com o NetBeans IDE como ambiente de

    desenvolvimento.

    Quatro pacotes são previstos, sendo eles:

    Sentinel.ui: encarregado apenas da interface com o usuário;

    Sentinel.serial: encarregado pela interface entre o módulo Hub e o módulo

    Aplicação, recebendo os dados do módulo Hub;

    Sentinel.sentinel: encarregado por todas as funções de manuseio dos dados e

    armazenamento;

    Sentinel.forecast: encarregado apenas pela previsão do tempo.

  • 22

    2.3.2 SENTINEL.UI

    Este pacote cuida especificamente da interação entre o Sentinel e o usuário.

    Assim sendo, mostra ao usuário as opções que ele pode escolher/definir para o

    Sentinel e a partir das suas escolhas, interage com os outros pacotes. Além disso, o

    monitoramento da porta serial por novos dados é também tratado por este pacote.

    2.3.2.1 Tratamento de dados

    Caso algum dado tenha chegado do módulo Hub, o pacote Sentinel.ui receberá

    e tratará desse dado o transformando em uma string e levantando uma flag. O pacote

    Sentinel.ui terá uma thread rodando com um timer a fim de verificar constantemente

    se novos dados foram recebidos do módulo Hub. Caso tenha sido, um handler serial

    converterá essa string a qual foi recebida para um objeto da classe

    Sentinel.sentinel.WeatherData, a qual contém todas as informações a serem usadas

    ao longo do módulo, incluindo a data e hora. Após isso, todas as opções marcadas

    serão verificadas, armazenando nos tipos de dados escolhidos pelo usuário além de

    mostrar na tela e armazenar em um arquivo com extensão *.sff (Sentinel Forecast

    File), utilizado especificamente para a previsão do tempo. Esta operação sempre

    acontece toda vez que chegarem novos dados pela porta serial escolhida enquanto o

    programa estiver em execução.

    2.3.2.2 Tela inicial

    A tela inicial mostra apenas uma opção. O usuário pode escolher qual porta

    serial o Hub está conectado, sendo mostradas como alternativas apenas as portas

    seriais abertas no momento. Ao clicar em OK, o módulo Aplicação estabelecerá uma

    conexão com o módulo Hub e estará escutando esta porta ininterruptamente até o

    encerramento do programa, pelo botão Exit. Este botão de saída é sempre presente

    no programa.

    Nesta tela, a interação maior é com o pacote Sentinel.serial para a descoberta

    e conexão com as portas. Após se conectar com sucesso, a tela principal do Sentinel

    se abre. Caso haja algum erro, uma mensagem de erro aparecerá e depois o

    programa será encerrado. Na figura 12, abaixo, pode-se ver a tela inicial do módulo

    Aplicação.

  • 23

    Figura 12 – Tela de seleção de porta serial do Sentinel

    2.3.2.3 Tela principal

    A tela principal é composta por três abas, sendo a primeira para o registro em

    tela. Esta aba possui três partes, todas com as dimensões ajustáveis entre si. A

    primeira, Polling info for all stations, mostra em árvore todos os últimos dados

    recebidos de todas as estações. Assim, pode-se expandir ou reduzir a visualização

    de todas as estações que enviaram dados para o módulo Hub desde que o módulo

    Aplicação foi inicializado. A segunda, Last info received, mostra em maiores detalhes

    quais foram os dados recebidos por último (ou seja, os dados de apenas uma

    estação). A terceira, Log, mostra um registro de todas as informações que o módulo

    Aplicação fez, o que inclui:

    Recebimento de dados do módulo Hub;

    Mensagens de erro/sucesso de armazenamento local/via internet dos dados;

    Realização de previsão do tempo pelo módulo Aplicação.

    Na figura 13, abaixo, pode-se ver a primeira aba da tela principal.

  • 24

    Figura 13 – Tela de log do Sentinel

    A segunda aba cuida especificamente das opções e configurações de

    armazenamento. O usuário pode optar por uma ou mais opções de armazenamento

    de todos os dados que são recebidos no futuro e essas opções podem ser alteradas

    dinamicamente. Caso nenhuma opção tenha sido escolhida, os dados serão apenas

    mostrados na tela e armazenados em um arquivo *.sff para uso futuro para a previsão

    do tempo. Também possui seções para configurações de armazenamento online,

    como, por exemplo, a ID da estação e a chave de autenticação da estação para

    armazenar no serviço online ThingSpeak, requerido pelo mesmo. Na figura 14, abaixo,

    é possível visualizar como seria esta aba.

    Toda vez que um arquivo chega ocorre a leitura das opções marcadas,

    armazenando então nas opções escolhidas. O armazenamento é sempre individual

    por estação, e no caso dos arquivos de texto, divididos também de forma mensal.

  • 25

    Figura 14 – Tela de armazenamento do Sentinel

    Já a terceira aba é especializada apenas na parte de previsão do tempo. Como

    pode ser visto na figura 15, possui dois campos principais: escolhe-se primeiro qual

    será a estação da qual os dados serão obtidos para a previsão do tempo, e

    posteriormente mostra-se abaixo qual é a previsão do tempo após apertar o botão

    Start. Mensagens de erro serão exibidas caso não se tenha dados o suficiente ou haja

    algum erro na abertura/leitura do arquivo contendo os dados.

  • 26

    Figura 15 – Tela de previsão do tempo do Sentinel

    2.3.3 SENTINEL.SERIAL

    Este pacote cuida exclusivamente da conexão serial com o módulo Hub. Uma

    vez conectado com sucesso a uma porta, uma thread será aberta monitorando aquela

    porta ininterruptamente. Caso dados tenham sido enviados daquela porta – isto é,

    caso o Hub tenha enviado algum tipo de dado para o computador, significando desta

    forma que alguma estação enviou algum dado, uma flag será erguida – a qual é

    constantemente monitorada pelo pacote Sentinel.ui – e os dados serão colocados em

    uma string, a qual será capturada por este mesmo pacote. Toda a manipulação dos

    dados provenientes da porta serial e tratamento de erros desta porta é tratado

    especificamente por este pacote.

    2.3.4 SENTINEL.SENTINEL

    O pacote sentinel é o principal pacote do módulo Aplicação. Ele, em suma,

    cuida de todas as operações relacionadas com o manuseio dos dados e o seu

    armazenamento, além da conexão com os serviços na internet.

    Neste pacote localiza-se a classe WeatherData. Esta classe é primordial no

    módulo Aplicação uma vez que seus objetos correspondem a entradas de dados

    recebidos por uma estação – ou seja, toda vez que forem recebidos dados do módulo

  • 27

    Hub, a string com os mesmos serão convertidos para um objeto do tipo WeatherData,

    já realizando um processamento e análise de dados, incluindo a data e hora a qual os

    dados foram recebidos e incluindo dados como o ponto de neblina para aquela

    condição do tempo. Depois disso, as outras classes que cuidam do armazenamento

    ou conexão com serviços online serão chamadas dependendo das opções marcadas

    na tela da aplicação e executadas para assim armazenar os dados em diferentes

    locais, além da tela da aplicação.

    Esta classe possui os seguintes elementos:

    ID da estação;

    Temperatura;

    Umidade relativa do ar;

    Pressão atmosférica;

    Índice de chuva;

    Velocidade do vento;

    Direção do vento;

    Condição do céu;

    Ponto de neblina.

    Além disso, possui listas envolvendo os cabeçalhos com as descrições dos

    dados que são usados no armazenamento de dados nos diferentes tipos de arquivo e

    na tela. Adicionalmente à classe WeatherData, existem outras cinco classes, sendo

    elas:

    LocalDataManipulation: inclui métodos para a criação, abertura e inclusão de

    dados a arquivos locais (extensões .csv, .txt, .sff e .arff);

    StringManipulation: métodos para a conversão da string recebida do módulo

    Hub para um objeto da classe WeatherData.

    ThingSpeak: métodos para se conectar ao serviço ThingSpeak e enviar os

    dados recebidos de uma estação meteorológica (por meio de um objeto do tipo

    WeatherData) para o serviço, via HTTP POST.

    WUnderground: métodos para se conectar ao serviço Weather Underground

    (WUnderground) e enviar os dados recebidos de uma estação meteorológica

    (por meio de um objeto do tipo WeatherData) para o serviço, via HTTP POST

    configurado como Rapid Fire (para atualizações em tempo real).

  • 28

    2.3.5 SENTINEL.FORECAST

    Este pacote contém toda a lógica necessária para a previsão do tempo. A

    aproximação escolhida – sob sugestão do professor orientador – para a previsão do

    tempo é utilizando redes neurais MLP (multilayer perceptron, ou perceptron

    multicamadas) com algoritmo de retropropagação.

    O framework escolhido é o Encog. Dessa forma, as suas bibliotecas são

    integradas ao Sentinel. A rede é treinada e configurada externamente e depois os

    seus arquivos de configuração – já prontos – são passadas à rede dentro deste

    pacote. A taxa de erro utilizada é de 9% a princípio, valor o qual pode ser ajustado

    uma vez que bases de dados maiores são carregadas.

    2.3.5.1 Funcionamento do algoritmo

    Como o próprio nome diz, uma rede MLP é antes de mais nada, uma rede

    neural. Uma rede neural trata-se de um sistema computacional feito de um número de

    elementos de processamento interconectados e inspirados no funcionamento do

    cérebro dos mamíferos [4]. Cada elemento possui como saída uma função do cálculo

    das entradas, sendo que cada uma delas tem um peso acrescido de um valor.

    A rede MLP é uma estrutura disposta em camadas, sendo que cada camada

    recebe dados da camada imediatamente inferior e submetendo para a camada

    seguinte. Além disso, os elementos da mesma camada não são conectados entre si.

    O número de camadas é definido de acordo com a aplicação.

    Com o algoritmo de retropropagação, a entrada é apresentada e então

    propagada para frente pela rede, calculando as ativações para cada unidade de saída.

    Todas essas unidades de saída são comparadas com o valor desejado, resultando

    desta forma em um valor de erro. Finalmente, esses erros são processados pela rede

    e então são feitas alterações nos pesos de cada entrada.

    Na figura 16, abaixo, pode-se ver qual é o algoritmo utilizado para a

    retropropagação.

  • 29

    Figura 16 – Pseudocódigo da retropropagação

    2.3.5.2 Implementação da rede neural

    No Sentinel, conforme explanado anteriormente, toda a lógica relacionada à

    previsão do tempo adotará a rede neural MLP e será implementada completamente

    neste pacote utilizando o framework Encog. As configurações iniciais dependem dos

    dados fornecidos pelo Sentinel para que seja feito o treinamento da rede neural e sob

    a sugestão do professor orientador. Planeja-se inicialmente que o algoritmo seja

    capaz de prever as condições do tempo na faixa de algumas horas (entre cinco a dez

    horas no futuro), podendo ser alterada para mais ou para menos dependendo dos

    resultados fornecidos no treinamento, uma vez que o Sentinel entrar em

    funcionamento e os dados forem coletados.

    Planeja-se que a previsão do tempo rode em uma thread em separado do resto

    do Sentinel, interpretando um arquivo com extensão *.sff com um nome padrão

    fornecido pelo próprio Sentinel. Caso o algoritmo não encontre o arquivo ou não

    consiga abrí-lo, ele fará mais duas tentativas. Caso ainda não consiga, uma

    mensagem de erro será exibida e a thread será encerrada, mas não o programa – o

    que possibilita ao usuário tentar novamente a previsão do tempo.

    A previsão do tempo é rodada a cada vez que uma nova informação chega de

    uma estação, atualizando a previsão do tempo que é feita por estação. Assim sendo,

    para que se preveja o tempo para uma estação deve-se ter dados dela armazenados.

    Há pouca interação deste pacote com os outros, sendo elas:

    INÍCIO

    Escolher um pequeno valor positivo para o tamanho do passo ρ

    Assinalar pesos iniciais pequenos aleatoriamente selecionados para todas

    as células

    ENQUANTO as alterações dos pesos e no erro médio não forem suficientemente

    pequenas

    Escolher o próximo exemplo de treinamento E e sua saída correta C

    Fazer uma passagem da entrada para a saída através da rede

    Calcular as somas ponderadas Si

    Calcular as ativações ui = f(Si)

    Iniciando com as saídas, fazer uma passagem de cima pra baixo

    pelas células de saída e intermediárias

    Atualizar os pesos

    FIM-ENQUANTO

    FIM

  • 30

    Sentinel.ui: iniciar/parar a previsão do tempo, atualizando os dados na tela

    quando necessário;

    Sentinel.sentinel: os dados a serem verificados para a previsão do tempo

    teriam sido armazenados por este pacote.

  • 31

    2.4 HARDWARE UTILIZADO

    A lista de materiais utilizada para o Sentinel é a seguinte (a lista não inclui

    componentes estruturais):

    Módulo Estação

    o Microcontrolador: Arduino Pro (3.3V)

    o Transceiver RF: Hope RF RFM12B-S2

    o Sensor de temperatura: Maxim DS18B20

    o Sensor de umidade: Honeywell HIH-4030

    o Sensor de pressão: Bosch BMP085

    o Sensor de condição do céu: Melexis MLX90614

    o Sensores de chuva e vento: Argent Weather Sensor Assembly 80422

    o 3 diodos Schottky 1N5817

    o 1 capacitor 100nF

    o 1 resistor 4,7KΩ

    o 4 resistor 10KΩ

    o 2 batterias NiMH 2,4V @ 1,5Ah

    o 3 placas solares ~5V @ 100mAh

    o 1 cooler plástico

    Módulo Hub

    o Microcontrolador: Arduino Pro (3.3V)

    o Transceiver RF: Hope RF RFM12B-S2

    Módulo Aplicação

    o Sem hardware

    2.5 LIMITAÇÕES

    O Sentinel, enquanto visto como possível aplicação de fim comercial, foi

    limitado em determinados aspectos para a sua execução a nível conceitual. São eles:

    Módulo Estação

    o Autonomia: baterias e placas solares menores. A nível comercial,

    uma estação localizada em um lugar afastado necessitaria de uma

  • 32

    placa solar com uma área maior e uma bateria também maior e mais

    pesada.

    o Comunicação: o transceiver utilizado tem um alcance de 200m. Um

    modelo diferente precisaria ser utilizado caso fosse desejada uma

    distância maior. Além disso, a topologia utilizada é a estrela. Isto na

    prática significa que uma estação não pode enviar as suas

    informações a outra estação que estaria retransmitindo os dados até

    chegar ao hub.

    Módulo Aplicação

    o Previsão do tempo: uma base de dados maior seria necessária para

    oferecer resultados mais precisos. Em outras palavras, seria

    necessário coletar os dados por um prazo de tempo maior para que

    melhores resultados fossem fornecidos pela aplicação.

  • 33

    3 TESTES E RESULTADOS

    São necessários certos testes de modo a se assegurar de que o projeto

    funciona tal qual desejado – isto é, de acordo com o que ele foi projetado. Dessa

    forma, são apresentados abaixo os testes determinados para o Sentinel, divididos em

    duas partes, a saber:

    a) Testes de caixa branca, nos quais espera-se que o desenvolvedor do projeto

    os realize por necessitar um conhecimento do funcionamento interno do sistema (por

    exemplo: lógica de programação, funcionamento dos sensores, funcionamento dos

    protocolos de comunicação).

    b) Testes de caixa preta, nos quais podem ser testados pelo usuário final uma

    vez que não necessitam um conhecimento aprofundado do sistema.

    3.1 TESTES DE CAIXA BRANCA

    3.1.1 Comunicação por radiofrequência entre estação e hub

    Gênero: Hardware/Software

    Escopo: Estação Meteorológica; Hub

    O objetivo deste teste é verificar se a comunicação entre a estação e o hub

    funciona efetivamente. Isto significa que do ponto onde a estação está situada até o

    local do hub deve-se testar se das 10 primeiras strings a serem enviadas todas são

    recebidas com sucesso (por exemplo: se dados forem enviados a cada vinte minutos,

    então em duzentos minutos esperam-se dez strings). Deve-se lembrar que já existem

    em código mecanismos de prevenção de erros e ruídos. A distância entre estação e

    hub devem respeitar os limites previstos para o módulo de radiofrequência utilizado.

    O teste se dará por concluído com sucesso caso receba-se corretamente no hub as

    10 primeiras strings enviadas da estação meteorológica quando a mesma é ligada.

    Resultado: teste realizado com sucesso. A comunicação ocorreu sem

    problemas a uma distância superior a 20 metros com uma diferença de altura (a

    estação se localizava em um declive) e com paredes com móveis no caminho.

    3.1.2 Leitura com sucesso de todos os sensores por 95% do dia

    Gênero: Hardware

  • 34

    Escopo: Estação Meteorológica; Hub; Aplicação Sentinel

    O objetivo deste teste é verificar a confiabilidade dos sensores e circuito

    utilizados. Assim sendo, obtendo os dados de 24 horas de funcionamento da estação

    e analisando esses dados armazenados pelo hub em um arquivo local ou qualquer

    outra forma que mostre todos os dados obtidos neste período deve-se constatar que

    pelo menos 95% dos dados foram coletados com sucesso (erros seriam por exemplo

    uma medida de temperatura de exatos 0º C entre outras duas temperaturas na faixa

    de 20ºC em um intervalo de alguns minutos). Se isto ocorrer, considerar-se-á que o

    teste foi concluído com sucesso.

    Resultado: teste realizado com sucesso. Comparando os resultados medidos

    com as condições reais do ambiente foi possível verificar a congruência dos valores.

    Os valores do Simepar também ajudaram a confirmar os resultados. Porém,

    discrepâncias entre os valores obtidos pela estação e pelo Simepar são esperados

    uma vez que são localizados em pontos distintos da região.

    3.1.3 Receber e interpretar com sucesso 3 mensagens consecutivas enviadas

    por uma estação

    Gênero: Software

    Escopo: Aplicação Sentinel

    Neste teste, o objetivo é verificar se a aplicação consegue interpretar com

    sucesso três mensagens consecutivas enviadas por uma estação. Isto é, se uma

    estação envia mensagens a cada vinte minutos, então a aplicação deve interpretar

    em sessenta minutos três mensagens oriundas desta estação. Assim, estaria sendo

    testada a comunicação entre a estação e o hub por extensão, mas principalmente se

    a aplicação consegue compreender com sucesso o que significa de fato a mensagem

    enviada pelo hub até a aplicação. Portanto, o projeto passaria com sucesso por este

    teste caso a aplicação seja capaz de interpretar com sucesso três mensagens

    consecutivas enviadas por uma estação.

    Resultado: teste realizado com sucesso. O módulo Aplicação foi capaz de

    detectar as mensagens consecutivamente e mostrar os resultados obtidos da estação

    na tela.

  • 35

    3.1.4 Armazenar localmente os dados gerados por uma estação

    Gênero: Software

    Escopo: Aplicação Sentinel

    A finalidade deste teste é verificar se os algoritmos de armazenamento de

    dados recebidos pela estação funcionam conforme esperado. Dessa forma,

    escolhendo todas as opções de armazenamento local e aguardando alguns minutos

    (tempo suficiente para que algumas mensagens transmitidas pela(s) estação(ões)

    cheguem ao hub) deve-se verificar após o fechamento do programa se todos os dados

    foram armazenados corretamente em todos os formatos de arquivo escolhidos.

    Posteriormente, repetem-se as mesmas ações a fim de garantir que no fechamento

    do programa as novas informações não sobrescrevem as antigas, apenas sendo

    adicionadas ao final do arquivo. Caso isto de fato ocorra, o teste estaria concluído com

    sucesso.

    Resultado: teste realizado com sucesso. Selecionando as devidas opções a

    estação foi capaz de armazenar nos respectivos formatos de arquivo todas as

    entradas recebidas, formando listas com as entradas recebidas e organizadas de

    forma cronológica.

    3.1.5 Armazenar pela internet os dados gerados por uma estação

    Gênero: Software

    Escopo: Aplicação Sentinel

    O objetivo deste teste é verificar a comunicação da aplicação com diversos

    serviços online dos quais o Sentinel se conecta. Para tal, uma conexão com a internet

    é requerida com o computador no qual a aplicação está sendo executada. Informando

    todos os dados necessários para a conexão com os serviços online (exemplo: usuário

    e senha) e selecionando todos os serviços online disponíveis no Sentinel, deve-se

    aguardar alguns minutos para que algumas mensagens chegem da(s) estação(ões)

    para que a aplicação possa recebê-las e direcioná-las aos serviços online. Verificando

    esses serviços e confirmando que as informações foram transmitidas com sucesso

    para os mesmos constituem no sucesso deste teste.

  • 36

    Resultado: teste realizado com sucesso. Marcando as devidas opções na

    aplicação foi possível enviar para os serviços online as informações enviadas pela

    estação em tempo real.

    3.2 TESTES DE CAIXA PRETA

    3.2.1 Funcionamento ininterrupto da estação por 24h

    Gênero: Hardware

    Escopo: Estação Meteorológica

    Neste teste o objetivo é testar a autonomia do sistema de alimentação da

    estação meteorológica. O período de 24 horas significa que será testado tanto a placa

    solar (período diurno) como a bateria (período noturno). Caso a estação transmita

    dados (o que subentende-se que ela conseguiria se manter ligada) por este prazo, o

    teste estará concluído com sucesso.

    Resultado: teste realizado com sucesso. Porém, após este prazo a autonomia

    da estação foi diminuída, operando das 07h até às 20h em média pela placa solar

    utilizada, mesmo em dias nublados. Usando uma placa solar de maior capacidade

    resolveria o problema.

    3.2.2 Funcionamento normal da estação durante chuva

    Gênero: Hardware

    Escopo: Estação Meteorológica

    Neste teste o objetivo é testar problemas de infiltração e ruídos na transmissão

    por radiofrequência em caso de chuva. Pela complexidade da estação, deve-se testar

    se a chuva não causará nenhum problema tanto na transmissão de dados como

    também nos circuitos dentro da estação. Caso os dados sejam transmitidos sem

    problemas e se a estação não sofrer nenhum tipo de avaria o teste estará concluído

    com sucesso.

    Resultado: teste realizado com sucesso. Os dados recebidos não tiveram

    nenhuma interferência e o circuito manteve-se livre de infiltrações.

  • 37

    3.2.3 Assegurar o armazenamento de chaves utilizadas pelos serviços online

    mesmo após o fechamento do programa

    Gênero: Software

    Escopo: Aplicação Sentinel

    Neste teste tem-se a finalidade de verificar se as informações utilizadas pelos

    serviços online são armazenados com sucesso pela aplicação e recuperados

    automaticamente pela mesma quando a aplicação é reaberta, evitando assim que o

    usuário tenha que repetir várias vezes a mesma informação, poupando-lhe tempo. Ao

    digitar as informações necessárias para o serviço e clicando no botão destinado para

    adicioná-las as mesmas seriam transferidas para um arquivo texto destinado ao seu

    armazenamento. Assim, caso um dos serviços online estejam selecionados o Sentinel

    irá automaticamente buscar as informações de login e assim atualizará os serviços

    automaticamente e individualmente, uma vez que cada estação possui a sua própria

    autenticação em cada um dos serviços utilizados. Uma vez assegurado de que este

    método funciona, o projeto passará com sucesso por este teste.

    Resultado: teste realizado com sucesso. Marcando as opções de uso de

    serviços online e mesmo sem informar as chaves de acesso a esses serviços o

    programa foi capaz de encontrá-los e utilizá-los.

    3.2.4 Prever uma condição de tempo em base dos dados fornecidos por uma

    estação

    Gênero: Software

    Escopo: Aplicação Sentinel

    Este teste possui como objetivo testar o algoritmo de previsão do tempo. Para

    tal, é necessário acumular registros de uma estação por um tempo considerável (um

    ou dois meses, por exemplo). Após o treino do algoritmo com essas informações,

    deve-se averiguar após o tempo para o qual a informação foi prevista se ela de fato

    ocorreu (por exemplo: se foi prevista chuva para daqui a duas horas, daqui a duas

    horas deve-se conferir se estaria de fato chovendo ou não). Se a taxa de acerto deste

    teste for compatível com a taxa de acerto planejada para o algoritmo, o projeto passou

    com sucesso por este teste.

  • 38

    Resultado: teste realizado com sucesso. Porém, o volume de dados disponível

    para teste foi baixíssimo, correspondente a um pouco menos de 48h de operação.

    Dessa forma, a rede neural não foi capaz de ser treinada o suficiente para fornecer

    um resultado mais fiel. Na figura abaixo, todavia, é possível notar que apesar disso

    ele é capaz de verificar o comportamento de aumento e baixa da temperatura com o

    passar do tempo. Caso uma base de dados maior seja alimentada à rede neural é

    possível então obter resultados mais precisos.

    Figura 17 – Teste da previsão do tempo

    0

    5

    10

    15

    20

    25

    30

    35

    Temperatura

    Temperatura Previsão

  • 39

    4 CONCLUSÃO

    O Sentinel – antes de qualquer definição – é um projeto de conclusão do curso

    de Graduação em Engenharia de Computação o qual possui como objetivo colocar à

    prova e integrar vários dos conhecimentos obtidos durante todo o seu andamento.

    Além disso, também busca propor uma solução para um problema existente – o da

    aplicação da meteorologia em regiões menores com um custo baixo porém mantendo

    um bom padrão de confiabilidade.

    Todos os objetivos do projeto foram cumpridos com sucesso. A maior

    dificuldade foi a integração em uníssono dos diferentes módulos, principalmente a

    nível de hardware. O controle do tempo – outro fator importante uma vez que o projeto

    foi executado de forma individual – foi também crucial uma vez que as horas

    disponíveis eram poucas.

    Certas limitações foram tomadas uma vez que o Sentinel a este ponto é um

    produto conceitual e não comercial. A autonomia e o alcance, por exemplo, foram

    limitados para facilitar a execução das outras partes. A base de dados gerada – com

    a entrada de poucos dias – também foi outro fator limitante da rede neural a qual é

    encarregada da previsão do tempo. A pequena base de treinamento habilitou a

    previsão do comportamento da temperatura, para mais ou para menos. Porém, a

    previsão da temperatura em si seria possível ser detectada após um novo treinamento

    da mesma rede, porém com uma base maior.

    Assim sendo, o Sentinel foi aplicado para testes reais durante dias, exposto às

    intempéries vinte e quatro horas por dia em um terreno íngreme, provando a sua

    capacidade e a sua viabilidade como uma solução meteorológica barata e confiável.

  • 40

    REFERÊNCIAS

    [1] ARDUINO – REFERENCE. Millis. Disponível em: . Acesso em 9 jun. 2013.

    [2] PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ – PPGIA. Perceptron Multicamadas (MLP). Disponível em: . Acesso em 11 jun. 2013.

    [3] SAN JOSÉ STATE UNIVERSITY. Clouds, Cloudiness, Surface Temperature, the Greenhouse Effect and Global Climate Change. Disponível em: . Acesso em 10 jun. 2013.

    [4] UNIVERSITY OF WISCONSIN-MADISON – DEPARTMENT OF COMPUTER SCIENCES. A Basic Introduction To Neural Networks. Disponível em: . Acesso em 11 jun. 2013.

  • 41

    APÊNDICE A – PROJETO DA ESTAÇAO

    1) Indicador da posição do vento

    2) Anemômetro

    3) Medidor (sensor) de chuva

  • 42

    4) Caixa de circuitos e placa solar

    5) Escudo de radiação solar

    6) Suporte da caixa de circuitos/torre do sensor de condição do céu

  • 43