¿Nos ayudas a pagar el Hosting?

Compartir en facebook Compartir en google+ Compartir en twitter Compartir en pinterest Compartir en linkedin

Sensor de temperatura y humedad con Python

Publicado en Noviembre de 2017

Un sensor de temperatura es simplemente un componente que nos devuelve un valor de tensión proporcional a la temperatura a la que está sometido. En esta ocasión vamos a utilizar un modelo comercial muy extendido y fácil de encontrar por muy poco dinero: el DHT22

Que necesitas:

Es muy sencillo. Este sensor (el que yo he probado) puede funcionar a 3.3 y a 5v. Lee el manual porque hay varios modelos diferentes, si no lo tienes claro (que deberías) empieza con 3.3v y si funciona mal, cámbialo a 5v. Pero antes, lee el manual. Tenemos 3 pines:

+      --> pin 01 (3.3V)
OUT --> pin 07 (PA6)
-      --> pin 09 (GND)

Usaremos una librería muy sencilla pero que funciona bien y la librería PYA20. Para instalar la librería del sensor lanza lo siguiente en un terminal:

sudo git clone https://github.com/AiratNig/DHT22-DHT11_Orange-Pi_Python.git

Consiste en una sencilla clase que sólo tenemos que instanciar en nuestro código, dándole el PIN al que está conectado y llamar al método read() que nos devolverá el valor de la temperatura y la humedad. La forma más sencilla de implantar es usando el ejemplo que viene con la librería. Accede a la carpeta recien creada y mira el ejemplo. Yo lo he adaptado un poco:

from pyA20.gpio import gpio
from pyA20.gpio import port

import dht
import time

# initialize GPIO
DHT22_PIN = port.PA6
gpio.init()
#gpio.cleanup()

DHT22_instance = dht.DHT22(pin=DHT22_PIN)

def DHT22_print_data(DHT22_result):
    if DHT22_result.is_valid():
        print 'Temperatura: {}, Humedad: {}'.format(DHT22_result.temperature, DHT22_result.humidity)
    else:
        DHT22_read_sensor()

def DHT22_read_sensor():
    DHT22_result = DHT22_instance.read()
    DHT22_print_data(DHT22_result)

#if __name__ == '__main__':
    #DHT22_read_sensor()

while True:
    DHT22_read_sensor()
    time.sleep(1)

Cuando lo ejecutes, te dará el siguiente resultado:

orangepi@orangepiplus2e:~/DHT22-DHT11_Orange-Pi_Python$ sudo python example.py
Temperature: 21.1, Humidity: 32.0
Temperature: 21.2, Humidity: 32.1
Temperature: 21.1, Humidity: 32.0
Temperature: 21.1, Humidity: 32.0
Temperature: 21.1, Humidity: 32.1
Temperature: 21.1, Humidity: 32.1
Temperature: 21.1, Humidity: 32.1
Temperature: 21.1, Humidity: 32.1
Temperature: 21.1, Humidity: 32.1
...

Parece bastante estable. Ahora sólo tienes que añadir tu código condicional para comprobar si cualquiera de los dos parámetros está dentro o fuera de rango para ejecutar otros programas.

Esta librería también funciona con el sensor DHT11. Hay otras librerías pero con esta yo he quedado bastante contento.

Espero que te haya sido de utilidad, no dudes en escribir un comentario si ves algún error o si puedo ayudarte.


Utiliza este espacio si quieres añadir algún comentario adicional o si tienes alguna duda.
No olvides añadir tu distribución y tu placa.

Todos los comentarios serán validados antes de su publicación.

Nombre*

Email* Nunca será publicado ni compartido

Comentario*



Copyright © 2016. Todos los derechos reservados | Diseño JaviPSantos

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-ley 13/2012. Si continúa navegando consideramos que acepta el uso de cookies.

OK | Más información