Este tutorial es parte de: Sensor digital de humedad relativa y temperatura HTU21D
Vídeos relacionados con el sensor digital de humedad relativa y temperatura HTU21D. Encontrará enlaces a otros vídeos debajo de este artículo.
Lección 35-2: Uso del sensor de temperatura HTU21D - Código personalizado
En este tutorial, exploraremos cómo usar el sensor de temperatura HTU21D con Arduino para medir la temperatura y la humedad. El HTU21D es un sensor confiable y de bajo consumo que se comunica a través de I2C, lo que facilita su integración en tus proyectos. Al final de esta lección, tendrás un código funcional que lee la temperatura en Celsius, Fahrenheit y Kelvin, así como la humedad relativa.

Antes de sumergirnos en el cableado y el código, es esencial entender los componentes involucrados. El sensor HTU21D requiere conexiones mínimas: alimentación, tierra y dos cables I2C para la transferencia de datos. Esta simplicidad lo convierte en una excelente opción para diversas aplicaciones, desde estaciones meteorológicas hasta dispositivos para el hogar inteligente. Para una guía visual, consulta el video en la marca de tiempo :45.
Hardware Explicado
El componente principal de este proyecto es el sensor HTU21D, que mide la temperatura y la humedad. Este sensor puede operar con voltajes de 1.5V a 3.6V, lo que lo hace versátil para diferentes aplicaciones. Proporciona lecturas de alta resolución, con mediciones de temperatura que oscilan entre -40°C y +125°C y lecturas de humedad con una resolución de 0.04%.
Además, el sensor utiliza comunicación I2C, que requiere dos pines: SDA (línea de datos) y SCL (línea de reloj). Esto permite una integración fácil con Arduino y otros microcontroladores sin necesidad de cableado complejo. La biblioteca de Adafruit simplifica la interacción con el sensor, gestionando la recuperación de datos y los protocolos de comunicación sin problemas.
Detalles de la hoja de datos
| Fabricante | TE Connectivity |
|---|---|
| Número de parte | HTU21D-F |
| Voltaje de lógica/E/S | 1.5 - 3.6 V |
| Tensión de alimentación | 3.3 V |
| Consumo actual (en reposo) | 0.02 µA (típ.) |
| Consumo actual (activo) | 450 µA (típ.) |
| Rango de temperatura | -40 a +125 °C |
| Rango de humedad | 0 a 100 %HR |
| Resolución | 0.04 %HR; 0.01 °C |
| Paquete | DFN de 6 pines |
- Asegúrese de proporcionar la fuente de alimentación correcta para evitar daños en el sensor.
- Utiliza resistencias de pull-up en las líneas SDA y SCL si no están integradas.
- Mantenga las conexiones del sensor cortas para minimizar el ruido.
- Monitore la tensión durante el funcionamiento para mantener la estabilidad.
- Considere usar un condensador para desacoplar cerca de los pines de alimentación.
Instrucciones de cableado

Para cablear el sensor de temperatura HTU21D, comience conectando la alimentación y la tierra. Conecte el pin izquierdo del sensor a una fuente de 3.3V, asegurándose de que pueda manejar el voltaje requerido. El segundo pin, típicamente marcado en rojo, debe ir a tierra.
A continuación, conecta el pin SDA del sensor al pinA4en el Arduino, que sirve como la línea de datos para la comunicación I2C. Luego, conecta el pin SCL al pinA5, que actúa como la línea del reloj. Asegúrate de que estas conexiones estén seguras, ya que los cables sueltos pueden provocar lecturas intermitentes o fallos en la comunicación con el sensor.
Ejemplos de código y guía paso a paso
En el código, comenzamos incluyendo las bibliotecas necesarias e inicializando el sensor. La líneaAdafruit_HTU21DF htu = Adafruit_HTU21DF();crea una instancia de la clase sensor. En elsetup()función, comenzamos la comunicación serial y verificamos si el sensor está conectado correctamente.
void setup() {
Serial.begin(9600);
if (!htu.begin()) {
Serial.println("Couldn't find sensor!");
while (1);
}
}Este fragmento verifica si el sensor está funcionando correctamente. Si no, imprime un mensaje de error y detiene el programa. En elloop()función, leemos los valores de temperatura y humedad de forma continua.
void loop() {
Serial.print(getHTU('C'));
Serial.print("C");
Serial.print(getHTU('H'));
Serial.println("%");
delay(1000);
}Aquí, la funcióngetHTU()se llama con diferentes parámetros para recuperar la temperatura en Celsius y la humedad. El retraso asegura que las lecturas se tomen cada segundo, proporcionando una salida suave en el monitor serial. El código completo está disponible para referencia debajo del artículo.
Demostración / Qué Esperar
Una vez que todo esté cableado correctamente y el código haya sido cargado, deberías ver las lecturas de temperatura y humedad impresas en el monitor serie. La temperatura se mostrará en Celsius, seguida del porcentaje de humedad correspondiente. Si aplicas calor al sensor, deberías observar que la temperatura aumenta en consecuencia (en el video a las 10:15).
Tenga cuidado con los límites del sensor; si la temperatura excede los 125 °C, puede devolver una lectura incorrecta o mostrar cero. Asegúrese siempre de que sus conexiones estén seguras y de que el sensor esté alimentado correctamente para evitar problemas durante la operación.
Marcas de tiempo del video
- 00:00Introducción
- 03:45Cableando el sensor
- 05:30Revisión de código
- 10:15Demostración
- 12:00Conclusión
Este tutorial es parte de: Sensor digital de humedad relativa y temperatura HTU21D
- Lección 35-1: Uso del sensor de temperatura HTU21D
- Lección 35: Uso del sensor de temperatura HTU21D con Arduino
- Lección 36: Uso del sensor de temperatura HTU21D con un LCD Curso paso a paso de Arduino
- Uso de dos sensores de humedad y temperatura HTU21DF más con Arduino
- Mostrando la temperatura de un HTU21D en un LCD
- Mostrando la temperatura de un HTU21D como un gráfico de barras en un LCD
- Cómo usar el sensor de humedad y temperatura HTU21DF con Arduino (Código básico)
- Cómo utilizar el sensor de humedad y temperatura HTU21DF con 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");
}
Cosas que podrías necesitar
-
Amazonas
-
eBayCompra HTU21D en eBayebay.us
-
AliExpressCompra HTU21D o SHT21 en AliExpresss.click.aliexpress.com
Recursos y referencias
-
ExternoBiblioteca Adafruit HTU21D (GitHub)github.com
-
ExternoDiferencia entre HTU21DF y HTU21D (imagen)robojax.com
-
ExternoHTU21D Hoja de Datos (PDF)cdn-shop.adafruit.com
Archivos📁
Hoja de datos (pdf)
-
HTU21D_ficha_técnica_de_temperatura_y_humedad
HTU21D_temerature_humidity_datasheet.pdf0.96 MB