[Projeto] Estação meteorológica com Arduino - Parte 1
Autor: Lucas Rogério Masotti | Publicado: 2015-03-09T13:08:00-03:00





Recentemente tive a ideia de fazer uma pequena estação meteorológica utilizando Arduino, já que existem dezenas de sensores compatíveis com ele, com bibliotecas já prontas, bastando conectar o sensor e ler os dados.

O projeto será dividido em várias partes. Nesta primeira parte, vou explicar um pouco sobre os sensores utilizados, a conexão básica e o código necessário para ler os dados do sensor.

Para quem não conhece o Arduino, pode ler mais sobre ele aqui&nbsp;O que é um Arduino e o que pode ser feito com ele?





Componentes




Arduino (eu estou utilizando o Arduino Uno, mas você pode utilizar outro)
Protoboard
Sensor de temperatura e umidade DHT11
Sensor de temperatura, pressão e altitude BMP085
Display JHD 162A
Biblioteca de sensores da Adafruit
2x potenciômetros (para controle de brilho e luminosidade do display)
Resistor de 5k Ohm




DHT11






Sensor de umidade e temperatura barato, recebe de 3V a 5V e só precisa de uma entrada analógica para receber as informações.



Características técnicas:

Umidade: 20-80%, com precisão de 5%

Temperatura: 0-50ºC, com precisão de +-2ºC

Tempo de resposta: 2 segundos.&nbsp;

Mais informações da Adafruit: DHTxx Sensors


BMP085


BMP085



Sensor barométrico e de temperatura, também pode ser usado como altímetro. Recebe 3.3V (ATENÇÂO: se ligar aos 5V do Arduino irá queimar) e utiliza duas entradas análogicas do Arduino para transmitir as informações.



Pinos do sensor BMP085



Característiacs técnicas:

Pressão: 300-1100 hPa (9000m à -500m), resolução de 0.03hPa

Temperatura: -40ºC à +85ºC, precisão de +- 2ºC.

Mais informações da Adafruit:&nbsp;Bosch BMP085 Breakout Board



Display JHD 162A

Você pode usar qualquer display.

Um tutorial de como ligar o JDH 162A com o Arduino eu achei aqui:&nbsp;Projeto Arduino com display LCD.

Basicamente:


pino 1 do LCD ligado ao GND do arduino;
pino 2 do LCD ligado ao 5V do arduino;
pino 3 do LCD ligado ao pino central do primeiro potênciômetro (controle de contraste);
pino 4 do LCD ligado ao pino digital 9 do arduino;
pino 5 do LCD ligado ao GND do arduino;
pino 6 do LCD ligado ao pino digital 8 do arduino;
pino 11 do LCD ligado ao pino digital 5 do arduino;
pino 12 do LCD ligado ao pino digital 4 do arduino;
pino 13 do LCD ligado ao pino digital 3 do arduino;
pino 14 do LCD ligado ao pino digital 2 do arduino;
pino 15 do LCD ligado ao pino central do segundo potênciômetro (controle do brilho);
pino 16 do LCD ligado ao GND do arduino.




Biblioteca de sensores da Adafruit



Por fim, utilizaremos a biblioteca integrada de sensores da Adafruit:&nbsp;Adafruit Unified Sensor Driver.

Você pode ler mais sobre ela na página do GitHub, mas basicamente ela define um tipo sensors_event_t, e utiliza unidades padrão do S.I. Assim, é possível que futuramente você troque o sensor, sem precisar fazer grandes alterações no código.

Você precisará das seguintes bibliotecas:


Adafruit Unified Sensor Driver
DHT-sensor-library
Adafruit DHT Humidity &amp; Temperature Unified Sensor Library
Adafruit Unified BMP085/BMP180 Driver


Basta baixar a biblioteca compactada (.zip) e na IDE do Arduino: Sketch &gt; Import Library &gt; Add Library, selecionar o arquivo.zip da biblioteca.


Conetando tudo

Ligue o display conforme o esquema.

O sensor de umidade recebe 5V, GND e o pino analógico para a porta A1 do Arduino. O datasheet&nbsp;recomenda também conectar um resistor pull-up de 5K (alguns lugares recomendam um &nbsp;de 10K) entre o pino de dados e os 5V.

O sensor&nbsp;BMP085 recebe 3.3V (não conecte aos 5V do Arduino, use a saída 3.3V), GND, SDA conectado à porta A4 e SDL conectado à porta A5.


Código

O código do projeto está hospedado no GitHub.

Basicamente, ele recolhe as informações dos sensores e exibe no display LCD.

A temperatura estou usando do&nbsp;BMP085, pois é mais precisa.

Apesar de estrar exibindo também a altura, ela não está precisa pois faltam algumas configurações.

Estação Meteorológica com Arduino - GitHub