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!