- Descripción general del sensor DHT11:
- Prerrequisitos:
- Instalación de la biblioteca LCD Adafruit en Raspberry Pi:
- Instalación de la biblioteca Adafruit DHT11 en Raspberry Pi:
- Diagrama de circuito:
- Programación Python para sensor DHT11:
- Medición de humedad y temperatura con Raspberry Pi:
La temperatura y la humedad son los parámetros más comunes que se monitorean en cualquier entorno. Hay toneladas de sensores para elegir para medir la temperatura y la humedad, pero el más utilizado es el DHT11 debido a su rango de medición decente y precisión. También funciona con comunicación de un pin y, por lo tanto, es muy fácil de conectar con microcontroladores o microprocesadores. En este tutorial, aprenderemos cómo conectar el popular sensor DHT11 con Raspberry Pi y mostrar el valor de temperatura y humedad en una pantalla LCD de 16x2. Ya lo usamos para construir la estación meteorológica IoT Raspberry Pi.
Descripción general del sensor DHT11:
El sensor DHT11 puede medir la humedad relativa y la temperatura con las siguientes especificaciones
Rango de temperatura: 0-50 ° C Precisión de temperatura: ± 2 ° C Rango de humedad: 20-90% RH Precisión de humedad: ± 5%
El sensor DHT11 está disponible en forma de módulo o en forma de sensor. En este tutorial estamos usando la forma de módulo del sensor, la única diferencia entre ambos es que en la forma de módulo el sensor tiene un condensador de filtrado y una resistencia pull up unida al pin de salida del sensor. Entonces, si está utilizando el sensor solo, asegúrese de agregar estos dos componentes. También aprenda la interfaz DHT11 con Arduino.
Cómo funciona el sensor DHT11:
El sensor DHT11 viene con una carcasa de color azul o blanco. Dentro de esta carcasa tenemos dos componentes importantes que nos ayudan a sentir la humedad relativa y la temperatura. El primer componente es un par de electrodos; la resistencia eléctrica entre estos dos electrodos se decide mediante un sustrato que retiene la humedad. Entonces, la resistencia medida es inversamente proporcional a la humedad relativa del ambiente. Cuanto mayor sea la humedad relativa menor será el valor de resistencia y viceversa. También tenga en cuenta que la humedad relativa es diferente de la humedad real. La humedad relativa mide el contenido de agua en el aire en relación con la temperatura del aire.
El otro componente es un termistor NTC montado en superficie. El término NTC significa coeficiente de temperatura negativo, para el aumento de temperatura, el valor de resistencia disminuirá
Prerrequisitos:
Se asume que su Raspberry Pi ya está flasheado con un sistema operativo y puede conectarse a Internet. De lo contrario, siga el tutorial Introducción a Raspberry Pi antes de continuar.
También se supone que tiene acceso a su pi a través de ventanas de terminal o de otra aplicación a través de la cual puede escribir y ejecutar programas de Python y usar la ventana de terminal.
Instalación de la biblioteca LCD Adafruit en Raspberry Pi:
El valor de la temperatura y la humedad se mostrará en una pantalla LCD de 16 * 2. Adafruit nos proporciona una biblioteca para operar fácilmente esta pantalla LCD en modo de 4 bits, así que agreguemosla a nuestra Raspberry Pi abriendo la ventana de terminal Pi y siguiendo los pasos a continuación.
Paso 1: Instale git en su Raspberry Pi usando la siguiente línea. Git te permite clonar cualquier archivo de proyecto en Github y usarlo en tu Raspberry pi. Nuestra biblioteca está en Github, por lo que tenemos que instalar git para descargar esa biblioteca en pi.
apt-get install git
Paso 2: La siguiente línea enlaza con la página de GitHub donde está presente la biblioteca, simplemente ejecute la línea para clonar el archivo del proyecto en el directorio de inicio de Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Paso 3: use el siguiente comando para cambiar la línea del directorio, para ingresar al archivo del proyecto que acabamos de descargar. La línea de comando se da a continuación
cd Adafruit_Python_CharLCD
Paso 4: Dentro del directorio habrá un archivo llamado setup.py , tenemos que instalarlo, para instalar la biblioteca. Use el siguiente código para instalar la biblioteca
sudo python setup.py instalar
Eso es todo, la biblioteca debería haberse instalado correctamente. Ahora, de manera similar, procedamos con la instalación de la biblioteca DHT, que también es de Adafruit.
Instalación de la biblioteca Adafruit DHT11 en Raspberry Pi:
El sensor DHT11 funciona con el principio del sistema de un solo cable. El valor de temperatura y humedad es detectado por el sensor y luego transmitido a través del pin de salida como datos en serie. Luego podemos leer estos datos usando el pin de E / S en una MCU / MPU. Para comprender cómo se leen estos valores, tendría que leer la hoja de datos del sensor DHT11, pero por ahora, para simplificar las cosas, usaremos una biblioteca para hablar con el sensor DHT11.
La biblioteca DHT11 proporcionada por Adafruit se puede utilizar para DHT11, DHT22 y otros sensores de temperatura de un solo cable. El procedimiento para instalar la biblioteca DHT11 también es similar al que se siguió para instalar la biblioteca LCD. La única línea que cambiaría es el enlace de la página de GitHub en la que se guarda la biblioteca DHT.
Ingrese las cuatro líneas de comando una por una en el terminal para instalar la biblioteca DHT
clon de git
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Una vez hecho esto, tendrás ambas bibliotecas instaladas con éxito en nuestra Raspberry Pi. Ahora podemos continuar con la conexión del hardware.
Diagrama de circuito:
El diagrama de circuito completo que conecta DH11 con Raspberry pi se muestra a continuación, fue construido usando Fritzing. Sigue las conexiones y haz el circuito
Tanto el sensor LCD como el DHT11 funcionan con un suministro de + 5V, por lo que usamos los pines de 5V en la Raspberry Pi para alimentar ambos. Se usa una resistencia pull up de valor 1k en el pin de salida del sensor DHT11, si está usando un módulo, puede evitar esta resistencia.
Se agrega un potenciómetro de 10k al pin Vee de la pantalla LCD para controlar el nivel de contraste de la pantalla LCD. Aparte de eso, todas las conexiones son bastante sencillas. Pero tome nota de qué pines GPIO está utilizando para conectar los pines, ya que los necesitaremos en nuestro programa. La siguiente tabla debería permitirle averiguar los números de pin GPIO.
Utilice la tabla y realice las conexiones de acuerdo con el diagrama del circuito. Usé una placa de pruebas y cables de puente para hacer mis conexiones. Desde que usé el módulo DHT11, lo conecté directamente a Raspberry Pi. Mi hardware se ve así a continuación
Programación Python para sensor DHT11:
Tenemos que escribir un programa para leer el valor de temperatura y humedad del sensor DHT11 y luego mostrar lo mismo en la pantalla LCD. Dado que hemos descargado bibliotecas para el sensor LCD y DHT11, el código debería ser bastante sencillo. El programa completo de Python se puede encontrar al final de esta página, pero puede leer más para comprender cómo funciona el programa.
Tenemos que importar la biblioteca LCD y la biblioteca DHT11 a nuestro programa para usar las funciones relacionadas con ella. Como ya los hemos descargado e instalado en nuestra Pi, simplemente podemos usar las siguientes líneas para importarlos. También importamos la biblioteca de tiempo para usar la función de retardo.
tiempo de importación # tiempo de importación para crear retardo importar Adafruit_CharLCD como LCD # Importar biblioteca LCD importar Adafruit_DHT # Importar biblioteca DHT para sensor
A continuación, tenemos que especificar a qué pines está conectado el sensor y qué tipo de sensor de temperatura se utiliza. La variable sensor_name se asigna a Adafruit_DHT.DHT11 ya que estamos usando el sensor DHT11 aquí. El pin de salida del sensor está conectado a GPIO 17 de la Raspberry Pi y, por lo tanto, asignamos 17 a la variable sensor_pin como se muestra a continuación.
sensor_name = Adafruit_DHT.DHT11 # estamos usando el sensor DHT11 sensor_pin = 17 # El sensor está conectado a GPIO17 en Pi
Del mismo modo, también tenemos que definir a qué pines GPIO está conectada la pantalla LCD. Aquí estamos usando la pantalla LCD en modo de 4 bits, por lo tanto, tendremos cuatro pines de datos y dos pines de control para conectarlos a los pines GPIO del pi. Además, puede conectar el pin de luz de fondo a un pin GPIO si también deseamos controlar la luz de fondo. Pero por ahora no lo estoy usando, así que le he asignado 0.
lcd_rs = 7 #RS de LCD está conectado a GPIO 7 en PI lcd_en = 8 #EN de LCD está conectado a GPIO 8 en PI lcd_d4 = 25 # D4 de LCD está conectado a GPIO 25 en PI lcd_d5 = 24 # D5 de LCD está conectado a GPIO 24 en PI lcd_d6 = 23 # D6 de LCD está conectado a GPIO 23 en PI lcd_d7 = 18 # D7 de LCD está conectado a GPIO 18 en PI lcd_backlight = 0 #LED no está conectado, así que asignamos a 0
También puede conectar LCD en modo de 8 bits con Raspberry pi, pero luego se reducirán los pines libres.
La biblioteca LCD de Adafruit que descargamos se puede utilizar para todo tipo de pantallas LCD características. Aquí, en nuestro proyecto, estamos usando una pantalla LCD de 16 * 2, por lo que estamos mencionando el número de filas y columnas a una variable como se muestra a continuación.
lcd_columns = 16 # para 16 * 2 LCD lcd_rows = 2 # para 16 * 2 LCD
Ahora que hemos declarado los pines de la pantalla LCD y el número de filas y columnas para la pantalla LCD, podemos inicializar la pantalla LCD utilizando la siguiente línea que envía toda la información requerida a la biblioteca.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) #Enviar todos los detalles de los pines a la biblioteca
Para iniciar el programa, mostramos un pequeño mensaje de introducción usando la función lcd.message () y luego damos un retraso de 2 segundos para que el mensaje sea legible. Para imprimir en la 2ª línea, el comando \ n se puede utilizar como se muestra a continuación
lcd .message ('DHT11 con Pi \ n -CircuitDigest') #Dar un mensaje de introducción time.sleep (2) #esperar 2 segundos
Por último, dentro de nuestro tiempo de bucle debemos leer el valor de la temperatura y la humedad del sensor y lo mostrará en la pantalla LCD para cada 2 segundos. El programa completo dentro del ciclo while se muestra a continuación
while 1: # Bucle infinito
humedad, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin) # leer del sensor y guardar los valores respectivos en temperatura y humedad varibale
lcd.clear () #Borrar la pantalla LCD lcd.message ('Temp =%.1f C'% temperature) # Mostrar el valor de la temperatura lcd.message ('\ nHum =%.1f %%'% humedad) #Display el valor de Humedad time.sleep (2) #Espere 2 segundos y luego actualice los valores
Podemos obtener fácilmente el valor de temperatura y humedad del sensor usando esta única línea a continuación. Como puede ver, devuelve dos valores que se almacenan en la variable humedad y temperatura. Los detalles de sensor_name y sensor_pin se pasan como parámetros; estos valores se actualizaron al comienzo del programa
humedad, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Para mostrar un nombre de variable en la pantalla LCD, podemos usar identificadores como & d,% c, etc. Aquí, dado que estamos mostrando un número de punto flotante con solo un dígito después del punto decimal, usamos el identificador%.1f para mostrar el valor en la temperatura y la humedad variables
lcd .message ('Temp =%.1f C'% temperatura) lcd .message ('\ nHum =%.1f %%'% humedad)
Medición de humedad y temperatura con Raspberry Pi:
Realice las conexiones según el diagrama de circuito e instale las bibliotecas necesarias. Luego, inicie el programa de Python que se proporciona al final de esta página. Su pantalla LCD debe mostrar un mensaje de introducción y luego mostrar el valor actual de temperatura y humedad como se muestra en la imagen a continuación.
Si no encuentra nada en la pantalla LCD, verifique si la ventana del shell de Python muestra algún error, si no se muestra ningún error, luego verifique sus conexiones una vez más y ajuste el potenciómetro para variar el nivel de contraste de la pantalla LCD y verifique si obtiene algo en la pantalla.
Espero que haya entendido el proyecto y haya disfrutado construyéndolo. Si ha tenido algún problema para hacerlo, infórmelo en la sección de comentarios o utilice el foro para obtener ayuda técnica. Haré todo lo posible para responder a todos los comentarios.
También puede consultar nuestros otros proyectos utilizando DHT11 con otro microcontrolador.