Archivo de la etiqueta: dht11

Temperatura con Arduino, DHT11 y python (II)

modulo-sensor-de-tempertura-y-humedad-dht11-para-arduino_MEC-O-3277967849_102012Una vez que ya hemos hecho que nuestro arduino nos “hable”, ya solo nos queda “escuchar” lo que nos dice. Para ello vamos a utilizar Python para obtener la temperatura con Arduino.

Lo primero que tenemos que hacer es conectarnos con nuestro arduino (Arduino Uno R3), para ello, lo primero que haremos es descubrir en que puerto esta conectado nuestro arduino, este método esta explicado en un por anterior, así que no me detendré el ello.

Temperatura con Arduino

Una vez que ya sabemos en que puerto esta el arduino, pasamos a leer los datos que nos esta trasmitiendo. para la lectura de estos datos utilizaremos la librería PySerial. como con la búsqueda de puerto del arduino, ya esta explicado en otro post, por lo que tampoco me detendré en ello. Como siga así no explico nada :-).

Bueno, ahora es cuando llega la hora de saber lo que nos dice nuestro arduino. Como ya dije en la otra parte de este post, lo que nos envía el arduino es un registro formateado con los datos que nosotros queremos, por lo que solo tendremos que dividir el registro leído en los diferentes campos en que se compone el registro.

Cuando leamos el registro lo primero que hacemos es comprobar que el registro esta completo. Esto lo hago comprobando que los últimos caracteres del registros son los que establecimos como final de este “|f|” y que la longitud es la que definimos.

Si todo esta bien, pasamos a trocear el registro, si esta mal, pasamos de los datos leídos y volvemos a leer un nuevo registro. Si el sistema fuera para el control de sistemas críticos, este método no nos valdría, debido a la perdida de datos. Para mi caso me sobra, ya que esto va ha controlar la temperatura y humedad de un invernadero.

Para dividir el registro utilizamos el carácter que hemos utilizado en el arduino como separador de campos, en mi caso el carácter “|”, y el numero de campos de que consta nuestro registro, en mi proyecto 2, uno para la temperatura y otro para la humedad (Módulo de Sensor de Humedad Módulo de Temperatura Digital). Y lo guardamos en sus correspondientes variables. El resto del registro lo podemos guardar en una variable temporal, pero hay que pasarle una variable, sino, nos daría error.

Con esto ya tenemos nuestro campos guardados en sus respectivas variables para poder procesarlas como queramos. Y ya esta, hemos escuchado al arduino y sabemos lo que nos esta diciendo.

Este es el proceso completo que he utilizado.

Y esto es todo para obtener la temperatura con Arduino, si tienes alguna duda, o si ves que se puede mejorar, que se puede mejorar y mucho, no te cortes y deja tu comentario.

Temperatura con Arduino, sensor DHT11 y python (I)

modulo-sensor-de-tempertura-y-humedad-dht11-para-arduino_MEC-O-3277967849_102012El sensor DHT11 (Módulo de Sensor de Humedad Módulo de Temperatura Digital), y sus variantes, es uno de los sensores más fáciles de manejar para obtener la temperatura con arduino. Gracias a la librería disponible para el, solo tenemos que pedir la temperatura o la humedad y ya la tenemos, sin hacer ninguna otra operación.

Materiales usados

Arduino UNO Arduino UNO
 Sensor DHT 11 Sensor DHT11
protoboard Protoboard
cables_union Cables de conexión

Sensor DHT11

Para conectarlo al arduino es muy sencillo, alimentamos el pin vcc, primero por la izquierda, con 5v desde unos de los pines del arduino, conectamos la masa al más a la derecha, y desde un pin analogico del arduino al 2 pin del sensor, empezando por la izquierda, el 3 pin no hay que conectarlo a nada.

Montaje de un sensor DHT11 en una placa Arduino UNO
Montaje de un sensor DHT11 en una placa Arduino UNO

El código como he dicho antes es muy fácil gracias a la librería existente, solo tenemos que inicializar una variable que nos permita manejar en sensor y poco mas.

Importamos la libreria

Inicializamos la variable para manejar el sensor DHT11

Ahora solo tenemos que leer los datos del sensor DHT11 tanto de temperatura como de humedad de la siguiente forma

y con esto ya tendríamos tanto el % de la humedad con los grados de temperatura en la escala Celsius.

Pero ahora me queda mandar la información por el puerto serie para luego poderla leer en python.

Para esto creo un registro de 30 caracteres formateado, donde incluyo los dos valores leídos, una cadena variable de caracteres para ajustar la longitud del registro, un carácter separador de los campos “|”  y un campo “|f|” indicando que es el final del registro. quedando de la siguiente forma

HH|TT|XXXXXXXXXXXXXXXXXXXXX|f|

  1. HH seria el valor de la humedad, puede ser 1 0 2 caracteres dependiendo de la humedad que haya.
  2. TT valor de la temperatura, como la humedad el tamaño de este campo puede ser de 1 o 2 caracteres.
  3. X cadena variable, que dependiendo de la longitud de humedad o temperatura puede variar su longitud.
  4. |f| indica que es el final del registro. Para comprobar luego mediante python, que hemos leído correctamente la información enviada.

Si queremos enviar mas información solo tenemos que añadirla incluyendo los separadores. El tamaño del registro lo he establecido en 30 caracteres pero lo podemos variar cambiando la configuración del programa.

Y el código seria el siguiente

Y con esto ya hemos leído la temperatura y la humedad desde el sensor DHT11 (Módulo de Sensor de Humedad Módulo de Temperatura Digital), y enviada al puerto serie para ser leída por nuestro programa en python.

Código completo.

Y con eso terminamos la primera entrega. en la segunda, la lectura de los datos en Python.