Temperatura y Humedad con MicroPython
Conocer las condiciones ambientales de un determinado lugar es de gran utilidad para mantener un ambiente según las características que se requieran. En ésta ocasión realizaremos un control de temperatura y humedad con MicroPython.
Este proyecto fue realizado con una Placa ESP32, al igual que con una placa Raspberry Pi Pico, ambas con el firmware de micropython previamente instalado, para la obtención de la temperatura y humedad se emplea un sensor DHT22, el cual posee prestaciones de un sensor de alta precisión.
ESP32
El firmware de MicroPython para la placa ESP32 viene con el modulo DHT preinstalado, por lo cual se puede usar el sensor directamente sin recurrir al uso de un modulo externo.
Materiales
- 1x Placa Esp32 con micropython.
- 1x Sensor DHT22
- 2x Diodo emisor de luz.
- 2x Resistor de 330 Ohm.
- 1x Resistor de 10k Ohm.
- 2x Protoboard.
- Cables de conexión.
Circuito
Los componentes se deben conectar de la siguiente manera:
- El Pin Vcc (+) del DHT22 va conectado a un extremo del resistor de 10kOhm y al Pin V5 de la placa ESP32.
- El Pin OUT (S) del DHT22 va conectado al otro extremo del resistor de 10kOhm y al Pin G14 de la placa ESP32.
- El Pin GND (-) del DHT22 va conectado al Pin GND de la placa ESP32.
- El ánodo del Led 1 (Pin Largo) va conectado a un extremo del resistor de 330 Ohm, el otro extremo del resistor va conectado al Pin G0 de la placa ESP32.
- El cátodo del Led 1 (Pin Corto) va conectado al Pin GND de la Placa ESP32.
- El ánodo del Led 2 (Pin Largo) va conectado a un extremo del resistor de 330 Ohm, el otro extremo del resistor va conectado al Pin G4 de la placa ESP32.
- El cátodo del Led 2 (Pin Corto) va conectado al Pin GND de la Placa ESP32.
Sketch en MicroPython
from machine import Pin from time import sleep import dht #Setup DHT dht22 = dht.DHT22(Pin(14)) #Setup Leds led_1 = Pin(0, Pin.OUT) led_2 = Pin(4, Pin.OUT) #Retardo de 500ms sleep(0.5) #Bucle de repeticion infinita while 1: try: #Obtiene los datos del sensor dht22.measure() t = dht22.temperature() h = dht22.humidity() #Si la variable t (temperatura) es mayor o igual a 26 if t>=26: #Enciende el led 1 led_1.on() #Si la variable t no cumple la condicion else: #Apaga el led 1 led_1.off() #Si la variable h (humedad) es mayor o igual a 75 if h>=75: #Enciende el led 2 led_2.on() #Si la variable h no cumple la condicion else: #Apaga el led 2 led_2.off() #Muestra los datos en la consola print('Temperatura: %3.2f°C Humedad: %3.2f%%' %(t, h)) #Si se produce un error al leer el sensor except OSError as e: #Muestra un mensaje de error en la consola print('Falla de sensor') #Retardo de 3 segundos sleep(3)
¿Cómo funciona el Sketch?
El Sketch funciona de la siguiente manera:
- La placa ESP32 obtendrá datos cada 3 segundos
- Si la temperatura es inferior a 26 °C, el Led 1 se mantendrá apagado, si la temperatura es igual o superior a lo mencionado el Led 1 se encenderá.
- Si la humedad es inferior a 75%, el Led 2 se mantendrá apagado, si la humedad es igual o superior a lo mencionado el Led 2 se encenderá.
- Los datos obtenidos son visualizados en la consola como se muestra a continuación:
Raspberry Pi Pico
El firmware de MicroPython para la placa Raspberry Pi Pico no viene con el módulo DHT preinstalado, por lo cual se debe recurrir a módulos externos para poder usar el sensor DHT22.
El modulo creado por Daniel Perrón funciona perfectamente y es el que se ha utilizado en este proyecto. Para instalar el modulo debes seguir estos pasos:
- Descarga el modulo desde el repositorio dando clic aquí.
- Descomprime el archivo descargado y abre el archivo DHT22.py
- Por ultimo, guarda el archivo en la memoria de la Raspberry Pi Pico.
Materiales
- 1x Placa Raspberry Pi Pico con micropython.
- 1x Sensor DHT22
- 2x Diodo emisor de luz.
- 2x Resistor de 330 Ohm.
- 1x Resistor de 10k Ohm.
- 2x Protoboard.
- Cables de conexión.
Circuito
Los componentes se deben conectar de la siguiente manera:
- El Pin Vcc (+) del DHT22 va conectado a un extremo del resistor de 10kOhm y al Pin VBUS de la placa Raspberry Pi Pico.
- El Pin OUT (S) del DHT22 va conectado al otro extremo del resistor de 10kOhm y al Pin Gp15 de la placa Raspberry Pi Pico.
- El Pin GND (-) del DHT22 va conectado al Pin GND de la placa Raspberry Pi Pico.
- El ánodo del Led 1 (Pin Largo) va conectado a un extremo del resistor de 330 Ohm, el otro extremo del resistor va conectado al Pin GP12 de la placa Raspberry Pi Pico.
- El cátodo del Led 1 (Pin Corto) va conectado al Pin GND de la Placa Raspberry Pi Pico.
- El ánodo del Led 2 (Pin Largo) va conectado a un extremo del resistor de 330 Ohm, el otro extremo del resistor va conectado al Pin GP13 de la placa Raspberry Pi Pico.
- El cátodo del Led 2 (Pin Corto) va conectado al Pin GND de la Placa Raspberry Pi Pico.
Sketch en MicroPython
from machine import Pin from DHT22 import DHT22 from time import sleep #Setup DHT #dht_sensor=DHT22(Pin(15),dht11=True) dht_sensor=DHT22(Pin(15)) #Setup Leds led_1 = Pin(11, Pin.OUT) led_2 = Pin(12, Pin.OUT) #Retardo de 500ms sleep(0.5) #Bucle de repeticion infinita while 1: #Obtiene los datos del sensor t, h = dht_sensor.read() #Si la variable t (temperatura) no contiene datos (None) if t is None: #Muestra un mensaje de error en la consola print("Falla de sensor") #Si la variable t contiene datos else: #Si la variable t (temperatura) es mayor o igual a 26 if t>=26: #Enciende el led 1 led_1.on() #Si la variable t no cumple la condicion else: #Apaga el led 1 led_1.off() #Si la variable h (humedad) es mayor o igual a 75 if h>=75: #Enciende el led 2 led_2.on() #Si la variable h no cumple la condicion else: #Apaga el led 2 led_2.off() #Muestra los datos en la consola print('Temperatura: %3.2f°C Humedad: %3.2f%%' %(t,h)) #Retardo de 3 segundos sleep(3)
¿Cómo funciona el Sketch?
El Sketch funciona de la siguiente manera:
- La placa Raspberry Pi Pico obtendrá datos cada 3 segundos.
- Si la temperatura es inferior a 26 °C, el Led 1 se mantendrá apagado, si la temperatura es igual o superior a lo mencionado el Led 1 se encenderá.
- Si la humedad es inferior a 75%, el Led 2 se mantendrá apagado, si la humedad es igual o superior a lo mencionado el Led 2 se encenderá.
- Los datos obtenidos se visualizan en la consola como se muestra a continuación: