¿Estás interesado en programación de microcontroladores y en la creación de proyectos con sensores de temperatura y humedad? En este artículo, te mostraremos cómo utilizar MicroPython en placas ESP32/ESP8266 junto con los populares sensores DHT11/DHT22. ¡Sigue leyendo para descubrir cómo crear tus propios dispositivos IoT con estas poderosas herramientas!
Este tutorial muestra cómo usar los sensores de temperatura y humedad DHT11 o DHT22 con las placas de desarrollo ESP32 y ESP8266 usando firmware MicroPython.
Usando el módulo DHT
Hay un dht Módulo que viene de serie con firmware MicroPython. Esto facilita la determinación de la temperatura y la humedad.
1. Primero importe el dht Y máquina Módulos:
import dht
from machine import Pin
2. Crear un… dht Objeto que apunta al pin de datos del sensor, en este caso es GPIO 14:
sensor = dht.DHT11(Pin(14))
#sensor = dht.DHT22(Pin(14))
3. Para medir y leer los valores del sensor, utilice:
sensor.measure()
sensor.temperature()
sensor.humidity()
Continúe leyendo para obtener el tutorial completo y detallado.
Requisitos: flashear MicroPython
Para seguir este tutorial, debe tener instalado el firmware MicroPython en sus placas ESP32 o ESP8266. También necesitarás un IDE para escribir el código y subirlo a tu placa. Recomendamos utilizar Thonny IDE o uPyCraft IDE:
- IDE de Thonny:
- Instalación y primeros pasos con Thonny IDE
- Actualización del firmware MicroPython con esptool.py
- IDE de UpyCraft:
- Instale uPyCraft IDE (Windows, Mac OS X, Linux)
- Flashear/cargar firmware MicroPython a ESP32 y ESP8266
Introducción de los sensores DHT11 y DHT22
Los sensores DHT11 y DHT22 se utilizan para medir la temperatura y la humedad relativa. Son muy populares entre los fabricantes y entusiastas de la electrónica.
Estos sensores contienen un chip que realiza una conversión de analógico a digital y genera una señal digital con temperatura y humedad. Esto los hace muy fáciles de usar con cualquier microcontrolador.
DHT11 frente a DHT22
DHT11 y DHT22 son muy similares pero difieren en sus especificaciones. La siguiente tabla compara algunas de las especificaciones clave de los sensores de temperatura y humedad DHT11 y DHT22. Puede encontrar un análisis más detallado de estos sensores en la hoja de datos de los sensores.
Rango de temperatura | 0 a 50ºC +/-2ºC | -40 a 80ºC +/-0,5ºC |
Rango de humedad | 20 a 90% +/-5% | 0 a 100% +/-2% |
resolución | Humedad: 1% Temperatura: 1ºC |
Humedad: 0,1% Temperatura: 0,1ºC |
Tensión de funcionamiento | 3-5,5 VCC | 3-6 VCC |
Fuente de alimentación | 0,5-2,5 mA | 1-1,5 mA |
Fase de prueba | 1 segundo | 2 segundos |
Precio | $1 a $5 | $4 a $10 |
Donde comprar | Comparar precios | Comparar precios |
El sensor DHT22 tiene mejor resolución y un mayor rango de medición de temperatura y humedad. Sin embargo, es un poco más caro y sólo puedes solicitar lecturas cada 2 segundos.
El DHT11 tiene un alcance más corto y es menos preciso. Puede consultar los valores de los sensores cada segundo. También es un poco más barato.
A pesar de sus diferencias, funcionan de manera similar y puedes usar el mismo código para leer la temperatura y la humedad. Todo lo que tienes que hacer es seleccionar el tipo de sensor que estás utilizando en el código.
Configuración de pines DHT
Los sensores DHT tienen cuatro pines como se muestra en la siguiente figura. Sin embargo, si coloca su sensor DHT en una placa de conexión, solo tendrá tres pines y una resistencia pull-up interna en el pin 2.
La siguiente tabla muestra la asignación de pines de DHT22 y DHT11. Cuando el sensor está frente a usted, la numeración de los pines comienza en 1 de izquierda a derecha.
bolígrafo DHT | Adjunto a |
1 | 3,3 V |
2 | Cualquier GPIO digital; También conecte una resistencia pull-up de 10k ohmios. |
3 | no te conectes |
4 | Dimensiones |
Piezas requeridas
Para seguir este tutorial, debe conectar el sensor de temperatura DHT11 o DHT22 al ESP32 o ESP8266. Necesita utilizar una resistencia pull-up de 10k ohmios.
Aquí hay una lista de las piezas que necesitará para construir el circuito:
- ESP32 o ESP8266 (leer ESP32 frente a ESP8266)
- DHT11 o DHT22 Sensor de temperatura y humedad
- resistencia de 10k ohmios
- tablero de circuitos
- Cables de puente
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Esquema: ESP32 con DHT11/DHT22
Conecte el sensor DHT22 o DHT11 a la placa de desarrollo ESP32 como se muestra en el siguiente diagrama de circuito.
En este ejemplo conectamos el pin de datos DHT a GPIO 14. Sin embargo, también puedes utilizar cualquier otro pin digital adecuado.
Aprenda a utilizar los GPIO ESP32 en nuestra guía: Referencia de distribución de pines ESP32: ¿Qué pines GPIO debería utilizar?
Diagrama de circuito: ESP8266 con DHT11/DHT22
Siga el siguiente tutorial si está utilizando una placa ESP8266.
código
Abra un nuevo archivo en su IDE de MicroPython (como uPyCraft IDE o Thonny IDE) y copie el siguiente código.
# Complete project details at https://RandomNerdTutorials.com
from machine import Pin
from time import sleep
import dht
sensor = dht.DHT22(Pin(14))
#sensor = dht.DHT11(Pin(14))
while True:
try:
sleep(2)
sensor.measure()
temp = sensor.temperature()
hum = sensor.humidity()
temp_f = temp * (9/5) + 32.0
print('Temperature: %3.1f C' %temp)
print('Temperature: %3.1f F' %temp_f)
print('Humidity: %3.1f %%' %hum)
except OSError as e:
print('Failed to read sensor.')
Cómo funciona el código
Importar el Bolígrafo clase de la máquina Módulo para definir pines, importar el dormir método de la Tiempo Módulo para agregar retrasos a su código y finalmente importar el dht Módulo de importación de las funciones de lectura de los sensores DHT.
from machine import Pin
from time import sleep
import dht
Definir uno dht Objeto nombrado sensor en el pin de datos especificado. En este caso conectamos el pin de datos a GPIO 14. Utilice el siguiente comando si está utilizando un sensor DHT22:
sensor = dht.DHT22(Pin(14))
Comente la línea anterior y descomente la siguiente si usa un sensor DHT11.
#sensor = dht.DHT11(Pin(14))
En el mientras bucle, usamos intentar Y excepto Testificar. En el intentar Instrucciones intentamos obtener valores de temperatura y humedad.
Nota: try y except nos permiten continuar ejecutando el programa si ocurre una excepción. Por ejemplo, si ocurre un error, la ejecución del código del bloque try se detiene y se transfiere al bloque except. En nuestro ejemplo, la excepción es particularmente útil para evitar que el ESP32 o ESP8266 falle cuando no podemos leer el sensor.
En el intentar Instrucción, primero agregue un retraso de dos segundos porque la frecuencia de muestreo máxima de DHT22 es de dos segundos. Para el DHT11 es un segundo.
sleep(2)
Antes de consultar la temperatura y la humedad, debe medida() método en el sensor Objeto.
sensor.measure()
Luego lee la temperatura. sensor.temperatura() y la humedad del aire sensor.humedad(). Guarde estas medidas en el temperatura Y zumbido Variables.
temp = sensor.temperature()
hum = sensor.humidity()
El siguiente comando convierte la temperatura a grados Fahrenheit.
temp_f = temp * (9/5) + 32.0
Finalmente, imprima todas las medidas en el shell de MicroPython usando el prensa() Función:
print('Temperature: %3.1f C' %temp)
print('Temperature: %3.1f F' %temp_f)
print('Humidity: %3.1f %%' %hum)
Si se produce un error al recuperar los valores medidos, excepto Se ejecuta la declaración y se genera un mensaje de error:
except OSError as e:
print('Failed to read sensor.')
demostración
Después de copiar el código y realizar los cambios necesarios, puede cargar el código en su ESP32 o ESP8266.
Si está utilizando Thonny IDE, sólo necesita archivo> Guardar como…Entonces escoge Dispositivo MicroPython.
Hacer clic DE ACUERDO para subir el código a tu tablero.
Después de cargar el código, presione el botón RESET integrado del ESP.
Deberían aparecer nuevos valores de temperatura y humedad en el shell de MicroPython cada dos segundos.
Si está utilizando uPyCraft IDE y tiene problemas para cargar el código, vaya al siguiente tutorial y desplácese hacia abajo hasta la sección «Ejecutando su primer script»: Introducción a MicroPython en ESP32 y ESP8266.
Solución de problemas
Si su sensor DHT no proporciona lecturas, consulte nuestra Guía de solución de problemas de DHT para ayudarle a resolver el problema.
Envolver
Obtener valores de temperatura y humedad con MicroPython es fácil gracias al módulo dht. Según la definición de un dht objeto, solo necesitas el Temperatura() Y Humedad() Métodos.
Esperamos que esta guía le haya resultado útil. Ahora puede ver los valores de sus sensores en un servidor web accesible desde su teléfono inteligente o enviar los valores de sus sensores a una plataforma IoT utilizando el protocolo de comunicación MQTT. Consulte los siguientes tutoriales:
- MicroPython: ESP32/ESP8266 con servidor web DHT11/DHT22 (estación meteorológica)
- MicroPython: MQTT – Publicar valores de sensores DHT11/DHT22 (ESP32/ESP8266)
Si te gusta MicroPython y quieres aprender más, te recomendamos echar un vistazo a nuestro eBook: Programación MicroPython con ESP32 y ESP8266.
Gracias por leer.
MicroPython: ESP32/ESP8266 con sensor de temperatura y humedad DHT11/DHT22
Este tutorial muestra cómo utilizar los sensores de temperatura y humedad DHT11 o DHT22 con placas de desarrollo ESP32 y ESP8266 utilizando el firmware MicroPython. Estos sensores son ampliamente utilizados por makers y aficionados a la electrónica.
Uso del Módulo DHT
Existe un módulo dht que viene con el firmware MicroPython por defecto, lo que facilita la obtención de temperatura y humedad. Para empezar, importa los módulos dht y machine:
- Importa dht y machine:
import dht
from machine import Pin
- Crea un objeto dht que haga referencia al pin de datos del sensor, en este caso es GPIO 14:
sensor = dht.DHT11(Pin(14))
#sensor = dht.DHT22(Pin(14))
- Para medir y leer los valores del sensor, utiliza:
sensor.measure()
sensor.temperature()
sensor.humidity()
Requisitos Previos: Flashea MicroPython
Para seguir este tutorial, necesitas tener instalado el firmware MicroPython en tus placas ESP32 o ESP8266. También necesitas un IDE para escribir y cargar el código en tu placa. Sugerimos usar el IDE Thonny o uPyCraft:
- Thonny IDE: Instalación y guía rápida de Thonny IDE
- uPyCraft IDE: Instalación de uPyCraft IDE
Introducción a los Sensores DHT11 y DHT22
Los sensores DHT11 y DHT22 se utilizan para medir la temperatura y la humedad relativa. Ambos son muy populares entre los makers y aficionados a la electrónica.
- DHT11 vs DHT22
El sensor DHT22 tiene una mejor resolución y un rango de medición más amplio en comparación con el DHT11. Sin embargo, es un poco más caro y solo puedes solicitar lecturas cada 2 segundos. Por otro lado, el DHT11 tiene un rango más pequeño y es menos preciso, pero puedes solicitar lecturas cada segundo y es un poco más económico.
Pinout del Sensor DHT
Los sensores DHT tienen cuatro pines que se conectan de la siguiente manera:
- DHT sensor pinout:
1 – 3.3V
2 – Cualquier pin digital GPIO; también conectar una resistencia pull-up de 10k Ohm
3 – No conectar
4 – GND
Sensor y Partes Necesarias
Para seguir este tutorial, necesitarás conectar el sensor de temperatura DHT11 o DHT22 al ESP32 o ESP8266. También necesitarás una resistencia pull-up de 10k Ohm. Aquí tienes una lista de las partes necesarias para construir el circuito:
- ESP32 o ESP8266
- Sensor de temperatura y humedad DHT11 o DHT22
- Resistencia de 10k Ohm
- Protoboard
- Cables jumper
Código
Abre un nuevo archivo en tu IDE de MicroPython (como uPyCraft IDE o Thonny IDE) y copia el siguiente código:
# Detalles completos del proyecto en RandomNerdTutorials.com
from machine import Pin
from time import sleep
import dht
Para ver el código completo y las instrucciones restantes, visita el sitio web RandomNerdTutorials.com.