Este tutorial faz parte de: Sensor digital de umidade relativa e temperatura HTU21D
Vídeos relacionados ao sensor digital de umidade relativa e temperatura HTU21D. Os links para outros vídeos estão abaixo deste artigo.
Lição 35-2: Usando o Sensor de Temperatura HTU21D - Código Personalizado
Neste tutorial, exploraremos como usar o sensor de temperatura HTU21D com Arduino para medir temperatura e umidade. O HTU21D é um sensor confiável e de baixo consumo de energia que se comunica via I2C, facilitando sua integração em seus projetos. Ao final desta aula, você terá um código funcional que lê temperatura em Celsius, Fahrenheit e Kelvin, além da umidade relativa.

Antes de mergulharmos nas conexões e no código, é essencial compreender os componentes envolvidos. O sensor HTU21D requer conexões mínimas: energia, terra e dois fios I2C para transferência de dados. Essa simplicidade o torna uma excelente escolha para várias aplicações, desde estações meteorológicas até dispositivos de casas inteligentes. Para um guia visual, consulte o vídeo no timestamp 03:45.
Hardware Explicado
O componente principal deste projeto é o sensor HTU21D, que mede temperatura e umidade. Este sensor pode operar com tensões de 1,5V a 3,6V, tornando-o versátil para diferentes aplicações. Ele fornece leituras de alta resolução, com medições de temperatura variando de -40°C a +125°C e leituras de umidade com uma resolução de 0,04%.
Além disso, o sensor utiliza comunicação I2C, que requer dois pinos: SDA (linha de dados) e SCL (linha de clock). Isso permite uma fácil integração com Arduino e outros microcontroladores sem a necessidade de fiações complexas. A biblioteca Adafruit simplifica a interação com o sensor, lidando com a recuperação de dados e protocolos de comunicação de forma integrada.
Detalhes da Ficha Técnica
| Fabricante | TE Connectivity |
|---|---|
| Número da peça | HTU21D-F |
| Tensão de lógica/IO | 1,5 - 3,6 V |
| Tensão de alimentação | 3,3 V |
| Consumo atual (em espera) | 0,02 µA (típ.) |
| Consumo atual (ativo) | 450 µA (típ.) |
| Faixa de temperatura | -40 a +125 °C |
| Faixa de umidade | 0 a 100 %UR |
| Resolução | 0,04 %UR; 0,01 °C |
| Pacote | DFN de 6 pinos |
- Garanta o fornecimento de energia correto para evitar danos ao sensor.
- Use resistores de pull-up nas linhas SDA e SCL se não estiverem integrados.
- Mantenha as conexões do sensor curtas para minimizar o ruído.
- Monitore a voltagem durante a operação para manter a estabilidade.
- Considere usar um capacitor para desacoplamento próximo aos pinos de alimentação.
Instruções de Fiação

Para conectar o sensor de temperatura HTU21D, comece ligando a energia e o aterramento. Conecte o pino esquerdo do sensor a uma fonte de 3,3V, garantindo que ela possa suportar a tensão exigida. O segundo pino, normalmente marcado em vermelho, deve ir para o aterro.
Em seguida, conecte o pino SDA do sensor ao pinoA4no Arduino, que serve como a linha de dados para comunicação I2C. Em seguida, conecte o pino SCL ao pinoA5, que atua como a linha de relógio. Certifique-se de que essas conexões estão seguras, pois fios soltos podem levar a leituras intermitentes ou falha na comunicação com o sensor.
Exemplos de Código e Passo a Passo
No texto, começamos incluindo as bibliotecas necessárias e inicializando o sensor. A linhaAdafruit_HTU21DF htu = Adafruit_HTU21DF();cria uma instância da classe sensor. Nasetup()função, iniciamos a comunicação serial e verificamos se o sensor está conectado corretamente.
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}Este trecho verifica se o sensor está funcionando corretamente. Se não estiver, ele imprime uma mensagem de erro e interrompe o programa. No aloop()função, lemos os valores de temperatura e umidade continuamente.
void loop() {
Serial.print(getHTU('C'));
Serial.print("C");
Serial.print(getHTU('H'));
Serial.println("%");
delay(1000);
}Aqui, a funçãogetHTU()é chamado com diferentes parâmetros para recuperar a temperatura em Celsius e a umidade. O atraso garante que as medições sejam feitas a cada segundo, proporcionando uma saída suave no monitor serial. O código completo está disponível para referência abaixo do artigo.
Demonstração / O que Esperar
Uma vez que tudo esteja ligado corretamente e o código esteja carregado, você deverá ver as leituras de temperatura e umidade impressas no monitor serial. A temperatura será exibida em Celsius, seguida pela porcentagem de umidade correspondente. Se você aplicar calor ao sensor, deverá observar a temperatura subir de acordo (no vídeo às 10:15).
Tenha cuidado com os limites do sensor; se a temperatura ultrapassar 125°C, pode retornar uma leitura incorreta ou exibir zero. Sempre garanta que suas conexões estejam seguras e que o sensor esteja alimentado corretamente para evitar problemas durante a operação.
Marcas de Tempo do Vídeo
- 00:00Introdução
- 03:45Fiação do Sensor
- 05:30Revisão do Código
- 10:15Demonstração
- 12:00Conclusão
Este tutorial é parte de: Sensor digital de umidade relativa e temperatura HTU21D
- Lição 35-1: Usando o Sensor de Temperatura HTU21D
- Lição 35: Usando o sensor de temperatura HTU21D com Arduino
- Aula 36: Usando o Sensor de Temperatura HTU21D com um LCD Arduino Curso Passo a Passo
- Usando mais dois sensores de umidade e temperatura HTU21DF com Arduino
- Exibindo a temperatura de um HTU21D em um LCD
- Exibindo a Temperatura de um HTU21D como um Gráfico de Barras em um LCD
- Como Usar o Sensor de Umidade e Temperatura HTU21DF com Arduino (Código Básico)
- Como Usar o Sensor de Umidade e Temperatura HTU21DF com Arduino (Código Personalizado)
/*
* Robojax Arduino Step-by-Step Course
* Part 4: Temperature Sensors
* Lesson 35: HTU21D Temperature Sensor Custom code
* Written/Updated by Ahmad Shamshiri on July 13, 2019
* in Ajax, Ontario, Canada
Please watch video instructions here https://youtu.be/LyA0yAKlf9E
This code is available at http://robojax.com/course1/?vid=lecture35
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
If you found this tutorial helpful, please support me so I can continue creating.
Make a donation using PayPal http://robojax.com/L/?id=64
* Code is available at http://robojax.com/learn/arduino
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/*
**************************************************
*
This is an example for the HTU21D-F Humidity & Temperature Sensor
Designed specifically to work with the HTU21D-F sensor from Adafruit
----> https://www.adafruit.com/products/1899
These displays use I2C to communicate; 2 pins are required to
interface
***************************************************
*/
#include <Wire.h>
#include "Adafruit_HTU21DF.h"
// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)
Adafruit_HTU21DF htu = Adafruit_HTU21DF();
void setup() {
//Get the code for the course: http://robojax.com/L/?id=339
Serial.begin(9600);
Serial.println("Robojax.com");
Serial.println("HTU21D-F test");
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}
void loop() {
//Get the code for the course: http://robojax.com/L/?id=339
Serial.print(getHTU('C'));
printDegree();
Serial.println("C");
Serial.print(getHTU('F'));
printDegree();
Serial.println("F");
Serial.print(getHTU('K'));
Serial.println("K");
Serial.println(" ");
Serial.print("Humidity:");
Serial.print(getHTU('H'));
Serial.println("%");
if(getHTU('C') <81)
{
//digitalWrite(5, LOW);
}
delay(1000);
}
/*
* @brief returns temperature or relative humidity
* @param "type" is character
* C = Celsius
* K = Kelvin
* F = Fahrenheit
* H = Humidity
* @return returns one of the values above
* Usage: to get Fahrenheit type: getHTU('F')
* to print it on serial monitor Serial.println(getHTU('F'));
* Written by Ahmad Shamshiri on July 13, 2019
* in Ajax, Ontario, Canada
* www.Robojax.com
*/
float getHTU(char type)
{
//Get the code for the course: http://robojax.com/L/?id=339
float value;
float temp = htu.readTemperature();
float rel_hum = htu.readHumidity();
if(type =='F')
{
value = temp *9/5 + 32;//convert to Fahrenheit
}else if(type =='K')
{
value = temp + 273.15;//convert to Kelvin
}else if(type =='H')
{
value = rel_hum;//return relative humidity
}else{
value = temp;// return Celsius
}
return value;
}//
/*
* @brief prints degree symbol on serial monitor
* @param none
* @return returns nothing
* Written by Ahmad Shamshiri on July 13, 2019
* for Robojax Tutorial Robojax.com
*/
void printDegree()
{
Serial.print("\xC2");
Serial.print("\xB0");
}
Coisas que você pode precisar
-
Amazonas
-
eBayCompre HTU21D no eBayebay.us
-
AliExpressCompre HTU21D ou SHT21 no AliExpresss.click.aliexpress.com
Recursos e referências
-
ExternoBiblioteca Adafruit HTU21D (GitHub)github.com
-
ExternoDiferença entre HTU21DF e HTU21D (imagem)robojax.com
-
ExternoFolha de dados HTU21D (PDF)cdn-shop.adafruit.com
Arquivos📁
Folha de dados (pdf)
-
HTU21D_folha_de_dados_de_temperatura_e_umidade
HTU21D_temerature_humidity_datasheet.pdf0.96 MB