Código y vídeo de Arduino para el sensor de temperatura y humedad DHT22 con pantalla TM1637 y relé
En este tutorial exploraremos cómo usar un sensor de temperatura y humedad DHT22 junto con una pantalla TM1637 y un relé para controlar una carga de corriente alterna (CA), como un calentador o un ventilador. El objetivo es encender la carga cuando la temperatura alcance los 50 grados Celsius y apagarla cuando descienda por debajo de ese umbral. Esta configuración es ideal para mantener los niveles de temperatura deseados en un entorno controlado.

Para lograr esto, escribiremos un programa para Arduino que lea los datos de temperatura y humedad del sensor DHT22, muestre la temperatura en la pantalla TM1637 y controle el relé según las lecturas de temperatura. Para mayor claridad, puedes consultar el video (en el minuto 10:00).
Hardware explicado
Los componentes principales de este proyecto incluyen el sensor DHT22, la pantalla TM1637, el módulo de relés y una placa Arduino. El sensor DHT22 se encarga de medir la temperatura y la humedad, proporcionando una salida digital que la placa Arduino puede leer fácilmente. La pantalla TM1637 se utiliza para mostrar las lecturas de temperatura en un formato fácil de usar, mientras que el módulo de relés nos permite controlar de forma segura dispositivos de alto voltaje como calefactores y ventiladores.
El sensor DHT22 tiene tres pines: VCC (alimentación), GND (masa) y DATA (salida). La pantalla TM1637 utiliza cuatro pines para alimentación, masa, reloj y comunicación de datos. El módulo relé se conecta al Arduino y actúa como un interruptor para la carga de corriente alterna, asegurando una operación segura al controlar dispositivos que requieren mayor voltaje.
Detalles de la ficha técnica
| Fabricante | Adafruit |
|---|---|
| Número de pieza | DHT22 |
| Voltaje lógico/E/S | 3.3 V - 5.5 V |
| Tensión de alimentación | 3.3 V - 6 V |
| Corriente de salida (por canal) | 0.5 mA |
| Corriente de pico (por canal) | 2.5 mA |
| Guía de frecuencia PWM | No aplica |
| Umbrales lógicos de entrada | 0.3 V - 0.7 V |
| Caída de tensión / RDS(on)/ saturación | No aplica |
| Límites térmicos | -40 °C a 80 °C |
| Paquete | paquete de 3 pines |
| Notas / variantes | También conocido como AM2302 |
- Asegúrese de proporcionar una alimentación adecuada (3.3 V - 6 V) al DHT22.
- Use resistencias pull-up en la línea de datos si es necesario.
- Permita que las lecturas del sensor se estabilicen para obtener datos precisos.
- Verifique dos veces las conexiones de los pines para evitar errores de comunicación.
- Tenga cuidado con las cargas de CA; asegúrese de un aislamiento y medidas de seguridad adecuados.
- Instale un disipador de calor en el relé si controla cargas elevadas.
- Utilice técnicas de antirrebote si es necesario al leer los datos del sensor.
- Mantenga el sensor DHT22 protegido de la luz solar directa para obtener lecturas precisas.
Instrucciones de cableado

Para cablear los componentes, comience conectando el sensor DHT22. Conecte el pin VCC al pin de 5V del Arduino, el pin GND a tierra (GND) y el pin DATA al pin digital 9 del Arduino.
A continuación, cablee la pantalla TM1637. Conecte el pin VCC al pin de 5V del Arduino, el pin GND a tierra, el pin CLK (reloj) al pin digital 2 y el pin DIO (datos) al pin digital 3. Para el módulo de relé, conecte el pin VCC al pin de 5V, el pin GND a tierra y el pin de control (señal) al pin digital 7. Finalmente, asegúrese de que la carga de CA esté conectada de forma segura al módulo de relé siguiendo las indicaciones del fabricante.
Ejemplos de código y guía paso a paso
El siguiente código inicializa el sensor DHT22 y la pantalla TM1637. Configura los pines necesarios y se prepara para leer datos de temperatura.
#include
#define CLK 2
#define DIO 3
#define DHTPIN 9
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
pinMode(RELAY, OUTPUT);
dht.begin();
}
En este fragmento de código, incluimos las bibliotecas necesarias y definimos los pines para la pantalla TM1637 y el sensor DHT22. La función setup inicializa la comunicación serie y configura el pin del relé como salida.

La función loop obtiene la temperatura y controla el relé en función de la lectura de temperatura. Si la temperatura supera los 50 grados, se activa el relé.
void loop() {
delay(TEST_DELAY);
int temp = round(getTemp("c"));
display.showNumberDec(temp, false, 3, 1);
if(temp > 50) {
digitalWrite(RELAY, LOW);
} else {
digitalWrite(RELAY, HIGH);
}
}
Este fragmento de código muestra cómo leer la temperatura, mostrarla y controlar el relé. La temperatura se redondea y se muestra en el TM1637, y el relé se activa o desactiva según el umbral de temperatura.
Para una comprensión más completa, consulte el código completo incluido más abajo en el artículo.
Demostración / Qué esperar
Al ejecutar el programa, debería ver la temperatura mostrada en el TM1637. Cuando la temperatura supere los 50 grados Celsius, el relé se activará, encendiendo la carga de CA conectada. Por el contrario, cuando la temperatura baje por debajo de 50 grados, el relé se desactivará, apagando la carga. Tenga cuidado con la polaridad invertida y asegúrese de que las conexiones sean correctas para evitar daños en los componentes (en el video a las 12:30).
Marcas de tiempo del vídeo
- 00:00- Introducción
- 02:15- Explicación del cableado
- 05:00- Recorrido por el código
- 10:00- Demostración
- 12:30- Problemas comunes
Cosas que podrías necesitar
-
Amazonas4 Channel Relay module on Amazonamzn.to
-
AliExpressPurchase 5v 12v 1 2 4 6 8 channel channel relay moduls.click.aliexpress.com
Recursos y referencias
-
Externo
Archivos📁
Bibliotecas de Arduino (zip)
-
DHT22 PCB module red
application/zip0.01 MB
Archivo de Fritzing
-
Temperature Sensor DHT11
application/zip0.01 MB -
DHT22 Humidity and Temperature Sensor
application/zip0.01 MB -
DHT22 PCB module red
application/zip0.01 MB -
DHT22 module white
application/zip0.01 MB -
TM1637 Seven Segment module
application/zip0.01 MB -
DHT11 Humitidy and Temperature Sensor (3 pins)
application/zip0.20 MB
Manual del Usuario
-
DHT22 Temperature and Humidity sensor user's manual
application/pdf0.36 MB