19 dezembro 2018

Sensor de temperatura HDC1080 com Arduino

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.

Sensor de temperatura HDC1080 com Arduino e display LCD 16x2

Por utilizar a interface I2C, é um sensor muito simples de conectar pois usa somente dois fios para comunicação com o microcontrolador, como veremos logo abaixo.


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.

Sensor de temperatura e umidade HDC1080

Você pode alimentar este módulo com tensões entre 2.7 e 5.5 VDC, e na parte superior temos dois furos que podem ser utilizados para fixação da placa.

Circuito HDC1080 com Arduino


Neste teste vamos usar o sensor de temperatura e umidade HDC1080 com Arduino Uno e um display LCD 16x2 I2C, o que 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.

Circuito Arduino Uno e sensor HDC1080

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:

Instalação biblioteca LiquidCrystal  I2C Arduino
Faça o mesmo com a biblioteca ClosedCube HDC1080, procurando por "hdc1080" no Gerenciador de Biblioteca:

Instalação biblioteca HDC1080 Arduino


Após a instalação, carregue o programa abaixo na IDE do Arduino:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//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, e depois 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:

Sensor HDC1080 saída 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.

Nenhum comentário:

Postar um comentário