Los sistemas de control de humedad y temperatura son bastante comunes en las industrias. Estos factores ambientales requieren una supervisión constante para mantener la confiabilidad y eficiencia de los dispositivos industriales. Los sistemas de monitoreo utilizados en las industrias generalmente están conectados donde la unidad de sensor y el sistema de monitoreo del sensor se conectan a través de un cable. Los sistemas de monitoreo de humedad y temperatura se pueden realizar de forma inalámbrica utilizando 434 módulos de RF. Con la conectividad inalámbrica, los sistemas de sensores y monitoreo se pueden instalar por separado y los equipos industriales se pueden supervisar de forma remota. Además, también se ahorra el coste de una extensa instalación de cables.
Los módulos RF 434 tienen un alcance operativo de 50 a 60 metros y se pueden ampliar a 300-350 metros utilizando una antena y aumentando la potencia de transmisión. Por lo tanto, los módulos de RF conectados a la antena se pueden instalar fácilmente en cualquier lugar y pueden realizar una comunicación de datos inalámbrica con un alcance impresionante. (Incluso un enrutador Wi-Fi tiene un alcance limitado a 150 pies en interiores y 300 pies en exteriores).
Este proyecto utiliza un sensor de humedad y temperatura DHT11 y está construido en el Arduino Pro Mini. Los módulos de RF interactúan directamente con las placas Arduino para una implementación inalámbrica. Las lecturas del sensor se muestran en una pantalla LCD de 16X2.
Componentes necesarios
| Sr. No. | Componentes necesarios | Cantidad |
|---|---|---|
| 1. | Módulo de recepción de RF (434 MHz) | 1 |
| dos | Módulo de transmisión RF (434 Mhz) | 1 |
| 3 | Arduino para mini | dos |
| 4 | DHT11 | 1 |
| 5 | LCD | 1 |
| 6 | Batería – 9V | dos |
| 7 | tablero de prueba | dos |
| 8 | Cables de conexión |

Fig. 1: Diagrama de bloques del monitor inalámbrico de temperatura y humedad basado en Arduino
Conexiones de circuito
Hay dos circuitos en el proyecto: a) circuito del sensor de temperatura y humedad yb) circuito de visualización de lectura del sensor. En el circuito del sensor, el pin de datos (pin 2) del sensor DHT11 está conectado al pin analógico A2 del Arduino Pro Mini. Los pines VCC (Pin 1) y Tierra (Pin 4) están conectados a VCC y tierra respectivamente. Un transmisor de RF interactúa con la placa Arduino con su pin de entrada en serie (pin 2) conectado al pin 12 de la placa Arduino. Se conecta una antena al pin 4 del transmisor para ampliar el alcance.
En el circuito de visualización, se conecta un receptor de RF a otro Arduino Pro Mini con el pin de salida en serie (pin 2) del receptor conectado al pin 11 del Arduino. Se conecta una antena al pin 8 del receptor para ampliar el alcance. Se conecta una pantalla LCD a la placa Arduino para mostrar lecturas de temperatura y humedad. La pantalla LCD 16X2 se conecta a la placa Arduino conectando sus pines de datos a los pines 7 a 4 de la placa Arduino. Los pines RS y E de la pantalla LCD están conectados a los pines 3 y 2 del Arduino Pro Mini, respectivamente. El pin LCD RW está conectado a tierra.

Fig. 2: Tabla que enumera las conexiones del circuito entre Character LCD y Arduino Uno
La biblioteca de códigos estándar para interconectar Arduino UNO y Arduino Pro Mini se utiliza en el proyecto para programar la pantalla LCD con la placa.
Cómo funciona el circuito
El sensor de temperatura y humedad DHT11 es un sensor digital con un termistor y un sensor de humedad capacitivo incorporados. Transmite una lectura de temperatura y humedad en tiempo real cada 2 segundos. El sensor funciona con una fuente de alimentación de 3,5 a 5,5 V y puede leer lecturas de temperatura entre 0 °C y 50 °C y humedad relativa entre 20 % y 95 %.

Fig. 3: Prototipo de monitor inalámbrico de humedad y temperatura
El sensor no se puede conectar directamente a un pin digital en la placa, ya que opera con el protocolo de 1 cable que debe implementarse en el firmware. Primero, el pin de datos se configura para la entrada y se le envía una señal de inicio. La señal de inicio comprende un BAJO durante 18 milisegundos seguido de un ALTO durante 20 a 40 microsegundos seguido de un BAJO nuevamente durante 80 microsegundos y un ALTO durante 80 microsegundos.
Después de enviar la señal de inicio, el pin se configura para salida digital y se bloquean los datos de 40 bits que consisten en la lectura de temperatura y humedad. De los datos de 5 bytes, los primeros dos bytes son la parte entera y decimal de la lectura de humedad relativa respectivamente, el tercer y cuarto bytes son la parte entera y decimal de la lectura de temperatura, y el último es el byte de suma de comprobación. Al conectar el DHT11 con Arduino, ya está disponible una biblioteca de códigos y los datos del sensor se pueden leer mediante la función read11 de la clase DHT.

Fig. 4: Imagen que muestra el Arduino utilizado en el monitor inalámbrico de humedad y temperatura.
En el circuito del sensor, Arduino obtiene primero las lecturas de temperatura y humedad relativa y su representación de caracteres se almacena en matrices separadas. El búfer de caracteres se transmite en serie a RF utilizando la biblioteca VirtualWire de Arduino. Consulte el código del programa Arduino en el lado del transmisor para saber cómo Arduino obtiene el valor del sensor y lo almacena en matrices para la transmisión de RF.
En el circuito de visualización, el receptor de RF detecta la representación de caracteres de las lecturas del sensor y la pasa en serie a la placa Arduino del lado del receptor. El código de programa en la placa Arduino del lado del receptor lee el búfer de caracteres y lo convierte a formato de número entero para mostrarlo en la pantalla LCD. Las funciones estándar de la biblioteca LCD se utilizan para mostrar lecturas en la pantalla LCD. Consulte el código Arduino en el lado del receptor para ver cómo se leen los valores del sensor en el búfer y se convierten a un formato adecuado para mostrarlos en la pantalla LCD.
guía de programación
En el lado del transmisor Arduino, primero, el código del programa importa las bibliotecas estándar necesarias. Se requiere la biblioteca VirtualWire para conectarse al módulo de RF y la biblioteca DHT para interconectar el sensor DHT11. Se crea una instancia de un objeto "DHT". Las variables globales ledPin y Sensor1Pin se declaran y asignan al pin 13 donde está conectado el LED indicador de progreso de transmisión y al pin A2 donde está conectado el pin de datos del sensor de temperatura y humedad DHT11 respectivamente. Se declara una variable Sensor1Data para almacenar la lectura del sensor, y las matrices de tipo de caracteres Sensor1CharMsg y Sensor1CharMsg1 se declaran para almacenar una representación decimal de la lectura de humedad relativa y temperatura.
#incluirSe llama a una función de configuración donde el pin del indicador LED se configura en salida mientras que el pin conectado al sensor se configura en modo de entrada usando la función pinMode. La velocidad en baudios de Arduino se establece en 9600 bits por segundo utilizando la función serial.begin. Los mensajes iniciales se envían al búfer mediante la función Serial.Println. La velocidad en baudios para la salida en serie se establece en 2000 bits por segundo utilizando la función vw_setup de la biblioteca VirtualWire.
Se llama a una función de bucle donde la lectura del sensor DHT11 se lee usando la función read11 en el objeto DHT y la representación del carácter base decimal de la lectura de humedad se almacena en la matriz Sensor1CharMsg y la representación del carácter base decimal de la lectura de temperatura se almacena en el Matriz Sensor1CharMsg1.
Las lecturas del sensor se emiten en serie como texto ASCII legible por humanos mediante las funciones Serial.print y Serial.println.
El LED indicador de progreso de la transmisión se enciende pasando un ALTO al pin 13. El mensaje de caracteres que contiene la lectura de temperatura y humedad se envía en serie usando la función vw_send y vw_wait_tx se usa para bloquear la transmisión hasta que haya un nuevo mensaje disponible para su transmisión. El LED en el pin 13 se apaga pasando un nivel BAJO para indicar la transmisión exitosa del mensaje.
Esto finaliza el código Arduino en el lado del transmisor.
En el lado del receptor Arduino, el código del programa primero importa las bibliotecas estándar requeridas. LiquidCrystal.h se importa para interactuar con la pantalla LCD y la biblioteca VirtualWire se importa para leer la entrada en serie del receptor de RF. Los pines 2 a 7 están asignados a la pantalla LCD del objeto de cristal líquido.
El pin 13 donde está conectado el LED indicador de progreso de la transmisión se asigna a la variable ledpin y dos variables: “Sensor1Data” y “Sensor2Data” para capturar la lectura de DHT11 en formato entero y las matrices “Sensor1CharMsg1” y “Sensor1CharMsg2” para almacenar la representación de caracteres de las lecturas. declarado. También se declaran las contravariables “i” y “j”.
Se llama a una función de configuración donde la velocidad en baudios de Arduino se establece en 9600 bits por segundo usando la función Serial.begin. El objeto LCD se inicializa en modo 16X2. El pin conectado al LED y el pin conectado a RS y RW se configuran en modo de salida usando la función pinMode.
Se llama a una función de bucle dentro de la cual se declaran la matriz "buf" para leer el búfer en serie y la variable "buflen" para almacenar la longitud del búfer. Las variables del contador se inicializan a cero.
El almacenamiento en búfer de caracteres se detecta mediante la función vw_get_message; si está presente, se inicializa un contador “i”. Las lecturas del búfer se almacenan primero en la matriz RxAray usando el bucle for con el contador inicializado y después de detectar el carácter nulo, las lecturas del sensor de temperatura y humedad ingresadas en el RxAray se almacenan por separado en las matrices "SensorCharMsg1" y "SensorCharMsg2".
El valor de la variable junto con las cadenas relevantes incluidas se pasa al búfer del microcontrolador y se pasa a la pantalla LCD para mostrarlo en un formato presentable.
Esto finaliza la función de bucle y el código Arduino en el lado del receptor.
Código fuente del proyecto
###
#incluir#incluir #definir dht_dpin A0 //no; aquí. Establecer igual al sensor de canal está activado dhtDHT; // LED constante int ledPin = 13; // Sensores constante int Sensor1Pin = A2; int Sensor1Datos; char Sensor1CharMsg(4); char Sensor1CharMsg1(4); configuración nula { // Modos Pin // CONDUJO pinMode(ledPin,SALIDA); // Sensor(es) pinMode(Sensor1Pin,ENTRADA); Serie.begin(9600); delay(300);//Dejar que el sistema se establezca Serial.println("Humedad y temperaturann"); retraso(700); // configuración de VirtualWire vw_setup(2000); // Bits por segundo } bucle vacío { // Leer y almacenar datos del Sensor 1 // Sensor1Data = analogRead(Sensor1Pin); DHT.read11(dht_dpin); // Convierte datos enteros a una matriz Char directamente itoa(DHT.humedad,Sensor1CharMsg,10); itoa(DHT.temperatura,Sensor1CharMsg1,10); Las lecturas del sensor se publican en serie como texto ASCII legible por humanos mediante la función Serial.print y Serial.println. // DEPURAR Serial.print("Humedad actual = "); Impresión.serie(DHT.humedad); Serie.print("% "); Serial.print("temperatura = "); Impresión.serie(temperatura.DHT); Serial.println("C "); retraso(800); // FINALIZAR LA DEPURACIÓN escritura digital (13, verdadero); // Enciende una luz para mostrar la transmisión vw_send((uint8_t *)Sensor1CharMsg, strlen(Sensor1CharMsg)); vw_wait_tx; // Espera hasta que desaparezca todo el mensaje retraso(200); vw_send((uint8_t *)Sensor1CharMsg1, strlen(Sensor1CharMsg1)); vw_wait_tx; // Espera hasta que desaparezca todo el mensaje escritura digital (13, falso); // Apaga una luz después de la transmisión retraso(200); } // FINALIZAR bucle vacío... #incluir #incluir LCD de cristal líquido (2, 3, 4, 5, 6, 7); // LED intledPin = 13; // Sensores int Sensor1Datos; int Sensor2Datos; // Contenedor de transmisión RF char SensorCharMsg1(4); char rxAray(8); char SensorCharMsg2(4); intj,k; configuración nula { Serie.begin(9600); lcd.comenzar(16, 2); // establece el pin digital como salida pinMode(ledPin, SALIDA); pinMode(9, SALIDA); pinMode(8, SALIDA); //Cable virtual // Inicializa IO e ISR // Requerido para DR3100 vw_set_ptt_inverted(verdadero); // Bits por segundo vw_setup(2000); // Inicia la ejecución del PLL del receptor vw_rx_start; } // FINALIZAR la configuración nula bucle vacío { uint8_t buf(VW_MAX_MESSAGE_LEN); uint8_t buflen = VW_MAX_MESSAGE_LEN; j = 0; k = 0; // Sin bloqueo si (vw_get_message(buf, &buflen)) { ent i; // Mensaje con una buena suma de comprobación recibida, descárgalo. para (i = 0; i < buflen; i++) { // Rellena la matriz Sensor1CharMsg Char con el correspondiente // caracteres del buffer. rxAray(i) = char(buf(i)); } rxAray(buflen) = ''; mientras (j < 2) { SensorCharMsg1(j++) = rxAray(j++); } mientras (j < 4) { SensorCharMsg2(k++) = rxAray(j++); } // DEPURAR Serial.print(" hum = "); Serial.println(SensorCharMsg1); Serie.print(" temp = "); Serial.println(SensorCharMsg2); lcd.setCursor(0,0); lcd.print("Humedad = "); lcd.print(SensorCharMsg1); // cambiar el valor de salida analógica: lcd.setCursor(0,1); lcd.print("Temperatura = "); lcd.print(SensorCharMsg2); // FINALIZAR LA DEPURACIÓN } } ###
Diagramas de circuito
| Proyecto-23-Diagrama de circuito | ![]() |
Vídeo del proyecto
