Hoje vamos mostrar como usar o Sensor de Temperatura e Umidade HDC1080 com Arduino Uno, uma excelente opção para o seu projeto de automação residencial ou estação meteorológica usando Arduino.
Por utilizar a interface I2C, é um sensor muito simples de conectar pois usa somente dois fios para comunicação com o microcontrolador.
O sensor de temperatura e umidade HDC1080
O HDC1080 (datasheet) é um sensor de temperatura e umidade de alta precisão com 14 bits de resolução, precisão de temperatura de 0,2 °C e de umidade 2%, realizando medições entre -40 e +125 °C. A comunicação é feita pela interface I2C, o que facilita bastante a conexão e utilização com os mais diversos tipos de placas e microcontroladores, já que a maioria conta com I2C nativo.
Você pode alimentar este módulo com tensões entre 2.7 e 5.5 VDC, e na placa temos também dois furos que podem ser utilizados para fixação.
Circuito HDC1080 com Arduino
Neste teste vamos usar o sensor de temperatura e umidade HDC1080 com Arduino Uno e um display LCD 16×2 I2C. Isso vai simplificar a conexão já que tanto o sensor como o display LCD vão usar o mesmo barramento para comunicação com o Arduino.
Na imagem acima, os mesmo pinos que estamos usando para ligar o sensor serão usados também para conexão com o display: pinos VCC (5V), GND, SDA (conectado ao pino A4 do Arduino) e SCL (pino A5).
Biblioteca e programa sensor HDC1080
Antes de mais nada vamos instalar as bibliotecas necessárias para que o programa funcione corretamente. A primeira é a biblioteca do display I2C, a LiquidCrystal I2C.
Instale à partir da IDE do Arduino, no menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas. Procure por “liquidcrystal_i2c” e clique em instalar, conforme a imagem abaixo:
Faça o mesmo com a biblioteca ClosedCube HDC1080, procurando por “hdc1080” no Gerenciador de Biblioteca:
Após a instalação, carregue o programa abaixo na IDE do Arduino:
//Programa: Sensor de temperatura e umidade HDC1080 com Arduino
//Autor: Arduino e Cia
#include <Wire.h>
#include <ClosedCube_HDC1080.h>
#include <LiquidCrystal_I2C.h>
ClosedCube_HDC1080 hdc1080;
//Inicializa o display no endereco 0x3B
//e define o numero de colunas e linhas do display
LiquidCrystal_I2C lcd(0x3B, 16, 2);
//Array que desenha o simbolo de grau
byte grau[8] = {B00110, B01001, B01001, B00110,
B00000, B00000, B00000, B00000,};
void setup()
{
Serial.begin(9600);
//Inicializa o HDC1080 no endereço 0x40
hdc1080.begin(0x40);
Serial.println("Sensor HDC1080 com Arduino");
//Inicializa o display LCD I2C
lcd.init();
lcd.backlight();
//Atribui a "1" o valor do array "grau", que desenha o simbolo de grau
lcd.createChar(1, grau);
//Mostra no display as informações iniciais
lcd.setCursor(0, 0);
lcd.print("Temp.: XX.XX C");
lcd.setCursor(0, 1);
lcd.print("Umid.: YY.YY %");
}
void loop()
{
//Le os valores de temperatura e umidade
float t = hdc1080.readTemperature();
float h = hdc1080.readHumidity();
//Mostra os valores no display
lcd.setCursor(7, 0);
lcd.print(t);
lcd.setCursor(13, 0);
lcd.write(1);
lcd.setCursor(7, 1);
lcd.print(h);
//Mostra os valores no Serial Monitor
Serial.print("Temperatura: ");
Serial.print(t);
Serial.print(" C, Umidade: ");
Serial.print(h);
Serial.println(" %");
delay(3000);
}
No programa acima, inicializamos o sensor HDC1080 com o endereço padrão 0x40 na linha 23. Depois disso a leitura dos dados de temperatura e umidade é feita nas linhas 44 e 45, respectivamente. Os valores são então mostrados tanto no display como no serial monitor:
Se quiser conhecer outros sensores de temperatura para o Arduino, clique aqui e confira posts sobre DHT11, DHT22, LM35 e DS18B20 aqui mesmo no Arduino e Cia!
