EzTemp&RH: Easy Temperature and Humidity for Raspberry Pi

Nos gustaría mucho compartir esta campaña de indiegogo que nos parecio muy interesante. Se trata de un sensor de temperatura y humedad digital diseñado para Raspberry Pi. Este proyecto está siendo desarrollado por unos increibles Hackers del sur de España y se trata de EzTemp&RH.

Dicho sensor no solo es compatible con Raspberry Pi sino que cuenta con un puerto serial que lo hace compatible con más tarjetas de desarrollo. El dispositivo ha sido diseñado con un sensor de humedad HIH5030 de Honeywell el cual es muy popular en usos industriales, además cuenta con un termistor para medir la temperatura. Si bien existen otros sensores que hace lo mismo pero de una forma análoga o con protocolo propio, al parecer este sensor tiene mucha más estabilidad que los otros.

Este proyecto es Open Source y puedes ver los archivos en Github. Te invitamos a apoyar esta campaña en Indiegogo.

Lección 22 – Arduino – Sensor de temperatura DHT11 (DHTxx)

En esta ocasión utilizaremos un sensor muy popular el cual es el DHT11 el cual es parte de la familia DHTxx. Este sensor es económico, básico y lento pero es excelente para hacer prototipos y experimentos. Este sensor está hecho a base de otros 2 sesores, un sensor capacitivo de humedad y un termistor. Además de esto cuenta con un pequeño chip que hace las conversiones de señal análogo a digital generando una única señal digital con la temperatura y la humedad. De este modo la señal es fácil de leer usando un microcontrolador.

Evernote Camera Roll 20140406 195620

Exiten dos versiones de los sensores DHTxx los cuales son DHT11 y DHT22, son muy similares, tienen los mismos pines pero tienen diferentes especificaciones técnicas.

DHT11:

  • Bajo precio.
  • 3 a 5 volts de energía Entrada/Salida.
  • 2.5 mA max en la transmisión de datos.
  • Bueno para leer de 20 a 80% de humedad con una presión de 5%.
  • Bueno para leer temperaturas de 0 a 50 ºC con 2% de precisión.
  • La taza de muestreo no puede ser mayor a 1Hz (una vez por segundo).

DHT22:

  • Bajo precio
  • 3 a 5 volts de energía Entrada/Salida.
  • 2.5 mA max en la transmisión de datos.
  • Bueno para leer de 0 a 100% de humedad con una presión de 2 a 5%.
  • Bueno para leer temperaturas de -40 a 125 ºC con 0.5% de precisión.
  • La taza de muestreo no puede ser mayor a 0.5Hz (dos veces por segundo).

Como dijimos al principio, nosotros usaremos solo el primer modelo (DHT11) pero como pueden ver el segundo modelo es mejor y más preciso.

Circuito

El circuito es muy fácil de armar ya que el sensor cuenta con solo 4 terminales las cuales son:

  • Vcc (3 a 5V)
  • Señal de datos
  • No usado
  • Tierra (GND)

Se necesita conectar una resistencia de 10K entre la terminal de Vcc y la terminal de datos, esto actúa como una resistencia de pull-up en la linea de datos. En el siguiente diagrama se muestra la forma en que se debe de conectar el circuito.

dht11
Código

Para trabajar de manera sencilla con este sensor haremos uso de la librería desarrollada por Adafruit la cual podemos descargar del siguiente enlace a github.Una vez que se haya descargado la librería tenemos que descomprimirla y renombrar la carpeta descomprimida como DHT, además nos tenemos que asegurar que esa carpeta contenga el archivo dht.cpp .

Después movemos la carpeta a la carpeta de Arduino la cual puede ser arduinosketchfolder/libraries/ o Arduino/libraries. En caso de que no exista esta carpeta tendrás que crear la sub-carpeta en Arduino y reiniciar el Software de Arduino (IDE).

Podemos ejecutar nuestro código y abrimos nuestra terminal serial para ver los valores de humedad y temperatura.

Captura de pantalla 2014-04-06 a la(s) 19.48.38

Evernote Camera Roll 20140406 194721

Lección 16 – Arduino – LCD Display + Sensor de temperatura

Esta lección haremos uso de el LCD Display de la lección anterior y el sensor de temperatura de la lección 10 (sensor de temperatura). La diferencia es que en lugar de desplegar el valor de la temperatura en el monitor serial  lo desplegaremos en el Display. Para eso vamos a hacer uso del circuito de la lección anterior y las funciones de LiquidCrystal, además vamos a usar una nueva función de esta biblioteca para representar el caracter ‘º’ ya que no lo podemos imprimir directamente en el display. La función se llama createChar():

createChar()

Creamos un char a partit de un arreglo de bytes, primero creamos el arreglo de bytes de la siguiente manera:

byte smiley[8] = {
  B00000,
  B10001,
  B00000,
  B00000,
  B10001,
  B01110,
  B00000,
};

y ahora hacemos uso de la función createChar() para construir el nuevo caracter

lcd.createChar(0, smiley);

Y ahora lo imprimimos en el LCD Display

 lcd.write(byte(0));

Circuito

Ahora vamos a hacer el circuito como el siguiente, es el mismo circuito que la lección anterior solo que ahora le vamos a agregar el sensor de temperatura.

disptemp

Código

En el código vamos a hacer la lectura del sensor de temperatura, y este mismo valor lo vamos a impirmir en el Display. Si el valor de la lectura es mayor a 30 grados se imprimirá un mensaje de que la temperatura es muy grande. Como siempre comentamos el código para que lo puedas entender de una mejor manera.

2013-07-18 15.36.26

2013-07-18 16.02.56

Lección 10 – Arduino – Midiendo temperatura (Sensor MCP9700)

Uno de los hacks más populares con Arduino es usarlo como termometro. Para eso vamos a necesitar un sensor de temperatura, dicho sensor lo puedes encontrar con el nombre de MCP9700. Este sensor genera una señal análoga y no se necesita algún otro componente para trabajar con el, así que solo necesitaremos el sensor, cables y nuestro Arduino. La imagen contiene el nombre de las terminales del MCP9700 y la hemos obtenido de la hoja de datos del componente.

MCP9700pinout

MCP9700 pinout

MUY IMPORTANTE Las terminales mostradas en la imagen, donde dice “Bottom View” es una imagen vista desde abajo del componente. La terminal marcada con el número 1 va a voltaje (5v), la terminal marcada con el número 2 va a ir a A0 de nuestro Arduino y la terminal 3 va a GND (Tierra) de nuestro Arduino. Nosotros vamos a leer el voltaje que se obtiene de la pata 2 (Vout) y esta señal es análoga. Según la hoja de datos (pagina 1) la sensibilidad del sensor es de 10mV/ºC es decir que 10mV equivale a 1 ºC. En la hoja también podemos leer que 500mV corresponde a 0ºC, vaya, cuando nuestro Arduino lea 500mV en la entrada análoga eso equivaldrá a 0ºC.

Captura de pantalla 2013-07-02 a la(s) 00.38.12

Circuito

temp

Código

En el mismo código hemos hecho la explicación del mismo. Recuerda que cuando ejecutes el código debes de abrir tu monitor serial ya que ahí se imprimirán los valores.

2013-07-01 23.59.01

2013-07-01 23.59.13

2013-07-01 23.59.17