Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • M meteorolog
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 5
    • Issues 5
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • EMM
  • meteorolog
  • Wiki
  • Home

Last edited by Nelso Jost Jun 01, 2017
Page history

Home

O projeto Meteorolog visa proporcionar:

  1. Um conjunto de ferramentas para coleta de dados meteorológicos usando a placa Arduino;
  2. Armazenamento remoto de dados públicos em um servidor da UFRGS, para análises futuras;
  • Site: dados.cta.if.ufrgs.br/emm
  • Repositório: meteorolog/cta-emm-web

Este repositório contém o código necessário para a execução da primeira etapa acima. Instruções de uso estão presentes nesta página.

ATENÇÃO! Este projeto ainda está sob constante desenvolvimento e pode apresentar bugs que devem ser reportados ao mantenedor do projeto!

Meteorolog v0.2.2

Esta documentação refere-se ao uso da versão seguinte: https://git.cta.if.ufrgs.br/meteorolog/meteorolog/tree/v0.2.2

Vídeo instrucional

https://youtu.be/r2bFYrXHvY0

Para desenvolvedores

Interessado em contribuir no código ou apenas entender como ele funciona? Confira nossa documentação oficial em:

http://arduino-meteorolog.readthedocs.org/en/latest/

Mantenedor

Bugs, dúvidas e feedbacks devem ser enviados para:

  • nelsojost@gmail.com

Conteúdo

  • Apresentação
  • Prototipagem
  • Utilização do software
    • 1. Obtenha o código
    • 2. Instale as dependências
    • 3. Instale o firmware
    • 4. Configure settings.ini
    • 5. Instale o logger
    • 6. Monitore os dados

Apresentação

A placa Arduino consiste em um projeto de hardware open-source: não apenas o código-fonte do firmware é divulgado, como também os esquemáticos da placa (que infelizmente ainda não incluem o design do microprocessador). Seu sucesso vem provavelmente da versatilidade que oferece na prototipagem (testes) de eletrônica digital.

Existem hoje no mercado diversos sensores de baixo custo que podem ser utilizados para aquisição de dados meteorológicos (temperatura, pressão, umidade relativa do ar) com um bom grau de confiança. Assim, tendo-se uma placa Arduino é possível implementar uma estação meteorológica básica, de baixo custo, plenamente capaz de oferecer dados climáticos comparáveis àqueles de estações profissionais.

Confira nas próximas seções a descrição dos sensores suportados nesse projeto, sugestões de montagem na placa e instalação/uso do software disponível neste repositório.

Sensores

LDR (Light Dependent Resistor) -- Luminosidade ambiente

(Fonte da imagem: http://p.globalsources.com)

Trata-se de um resistor especial cuja resistência é afetada pela presença de luz. Ligando ele num pino analógico do Arduino, em série com um resistor comum (cerca de 2k2), é possível obter variações na voltagem do pino (entre 0 V e 5 V) conforme a intensidade de luz incidente: muita luz --> aumenta resistência --> diminui voltagem, e vice-versa.

DHT22 -- Temperatura e umidade relativa do ar

(Fonte da imagem: http://moretosprojects.blogspot.com.br)

A medida de temperatura é obtida através de um termistor, que combinada com a leitura de uma superfície capacitiva obtém-se também a medida de umidade relativa do ar. O funcionamento é controlado por um microchip, que opera em um pino digital da Arduino através do protocolo One Wire.

A leitura dos valores é facilitada com o uso da biblioteca DHT.h.

BMP085 -- Pressão e temperatura

(Fonte da imagem: http://www.hobbytronics.co.uk)

O funcionamento interno é controlado por um microchip onde a leitura é solicitada através de um barramento I2C. Essa é uma forma de comunicação digital que permite a conexão de vários componentes em um único barramento (utilizando os mesmos pinos do Arduino). Uma vantagem imediata é a possibilidade de detectar se o sensor está presente antes de solicitar uma leitura que produziria valores incorretos.

A leitura dos valores é facilitada com o uso da biblioteca Adafruit_BMP085.h.

Prototipagem

board-proto.svg

O esquema acima ilustra a montagem (em protoboard) dos sensores atualmente suportados pelo projeto Meteorolog. Os pinos utilizados devem coincidir com aqueles declarados no código-fonte (arquivo firmware/meteorolog/mysensors.cpp). Logo, caso faça uma montagem diferente, assegure-se de declarar adequadamente esses pinos no código-fonte.

OBS 1: Oficialmente encorajamos o uso do sensor DHT22 para medição de temperatura e umidade relativa do ar. No entanto, o código suporta o uso do DHT11 (modelo mais antigo) desde que seja feita a seguinte alteração no arquivo meteorolog/mysensors.cpp, linha 23:

#define DHTTYPE DHT11

OBS 2: É importante que o BMP085 (sensor de pressão) seja ligado na tensão 3.3 V para uma leitura correta.

Essa é uma excelente maneira de aprender eletrônica, mesmo para aqueles não familiarizados no assunto. Considerando o baixo custo dos sensores acima, juntamente com a versatilidade da Arduino, esperamos que qualquer pessoa seja capaz de montar essa estação meteorológica básica para então colaborar com a aquisição de dados na nossa rede pública.

Utilizando o software

O software desse repositório inclue:

  • Firmware para placas Arduino;
  • Data logger para coleta de dados e envio para o servidor;

OBS: Assumimos aqui o uso de um sistema operacional Linux baseado em Debian (ex: Mint, Ubuntu, Debian, etc). Ao digitar os comandos, não inclua o $ do início da linha.

1. Obtenha o código v0.2.2

  • Baixe o código da versão correta referente a este tutorial:

    • Download ZIP v0.2.2
  • Descompacte e entre dentro da pasta raiz, a qual possui um arquivo Makefile.

ATENÇÃO: Daqui em diante será assumido que você está dentro da pasta raiz para executar os comandos make (que utiliza o arquivo Makefile).

2. Instale as dependências

2.1 Dependências de sistema (requer senha de administrador)

Comando Descrição Debian Package
python3 Interpretador da linguagem Python, versão 3.x. python3
pip3 Instalador de bibliotecas (PyPI) do Python 3 python3-pip
virtualenv Criação de ambientes virtuais de Python python-virtualenv
supervisor Gerenciador de daemons supervisor

Usuários do Debian (e derivados) podem utilizar o gerenciador de pacotes apt-get para instalar as dependências como segue:

make install-deb-deps

OBS: Pode ser necessário reiniciar o terminal ou até mesmo a seção de usuário.

Usuários de outras distribuições deverão verificar a disponibilidade dessas ferramentas no seu gerenciador de pacotes (aptitude, yum, etc) e proceder a instalação antes de realizar os próximos passos. Em caso de dúvidas, entre em contato com o administrador do seu sistema.

2.2 Dependências locais (não requer senha de administrador)

make setup

O logger foi programado na linguagem Python e utiliza diversas bibliotecas de terceiros. O comando acima criará um ambiente virtual (na pasta .venv) contendo uma instalação isolada de Python e que possui as bibliotecas necessárias ao logger.

3. Instale o firmware

Dentro da pasta firmware/meteorolog está o código C++ do programa (firmware) que rodará na placa Arduino, responsável por efetuar a leitura dos sensores. Existem duas opções para efetuar sua instalação na placa:

  • 1ª Opção) Utilizar a IDE do Arduino:

    • Abra o arquivo firmware/meteorolog/meteorolog.ino;
    • Selecione o modelo correto da placa em "Tools" > "Board";
      • Por exemplo: Arduino Uno, ou Arduino Duemilanove, etc.
    • Selecione a porta USB na qual a placa está conectada em "Tools" > "Port";
      • Por exemplo, /dev/ttyACMx ou /dev/ttyUSBx (onde "x" é um número).
    • Clique no botão (-->) para compilar o código e enviá-lo para a placa.
  • 2ª Opção) Via linha de comando (executado na pasta raiz, que contém o Makefile):

    make firmware

    ATENÇÃO: Certifique-se de que a única placa conectada na USB é aquela em que você deseja instalar o firmware!

    OBS: Requer que a IDE do Arduino esteja instalada (idealmente, versão 1.0.x), assim como a ferramenta Ino Tool (instale com make install-ino).

3.1 Teste o firmware

Afim de verificar que o firmware está realmente instalado na placa Arduino e funcionando corretamente, recomendamos que você teste a leitura dos sensores (e configuração do relógio RTC, caso presente) de acordo com a wiki:

BoardCommands

4. Configure settings.ini

Presente na pasta raiz do projeto, o arquivo settings.ini contém todas as configurações necessárias para uso do logger (software para coleta de dados).

Revise pelo menos os seguintes intens:

Valor Descrição breve
server/BOARD_HASH Código de autenticação conforme seus dados em http://dados.cta.if.ufrgs.br/emm/board/manage/<board_id>
reading/SLEEP_MINUTES Tempo que logger aguardará para fazer outra leitura.

4.1 Teste o logger

Objetivando verificar se a configuração atual é válida, execute o logger em primeiro plano com:

make run

5. Instale o logger

make deploy

ATENÇÃO: A instalação pode levar alguns minutos. Alguns programas serão instalados no sistema (requer senha de administrador). Confira os detalhes na wiki prepare-venv.

Se tudo deu certo, a última menssagem recebida deverá ser algo como:

meteorologger                    RUNNING    pid 6242, uptime 0:00:02

O que significa que o logger está rodando, com sucesso, em background. Assim, você pode desligar a máquina, ou até mesmo desconectar a placa, que o logger continuará sendo executado.

Monitore a execução com:

make tail-log
  • Os dados coletados são validados e armazenados na pasta data/ (presente na raiz do projeto).
    • Valores inválidos são salvos como NaN, o que pode significar que ocorreu algum erro numérico na leitura ou que o sensor desta medição não está presente na placa.
  • Serão feitas tentativas de envio dos dados para o servidor. Código 200 significa sucesso.
    • Em caso de falha, os dados não enviados serão guardados na pasta data/outgoing para serem enviados em uma tentativa posterior.

Por fim, o logger pode ser desativado com:

make undeploy

6. Monitore os dados

  • Monitore a execução do logger em background com:
make tail-log
  • Toda vez que o daemon reinicia (por exemplo, ao reiniciar a máquina), um novo log de execução é criado na pasta logger/logs, contendo a time stamp do início da execução;

  • O comando acima monitora apenas o .log mais recente;

  • Monitore a coleta de dados (salvos na pasta arduino-meteorolog/data/) com:

make tail-data
  • Toda vez que o daemon reinicia (por exemplo, ao reiniciar a máquina), um novo arquivo datalog, contendo as leituras em formato CSV (ver settings.yaml), é criado;

  • O comando acima monitora apenas o datalog mais recente;

  • Monitore o progresso do datalog mais recente em um gráfico (requer Gnuplot) com:

make plot-data col=<C>

onde <C> deve ser o número da coluna que será plotada no eixo y.

Clone repository
  • BoardCommands
  • arduino ide
  • Home

Os conteúdos dos repositórios estão sob licenças livres e são responsabilidade dos próprios autores, não representando as opiniões e posicionamento da UFRGS ou do CTA.