Introduction: EzTemp: Temperatura Y Humedad Fácil Para Raspberry Pi

Picture of EzTemp: Temperatura Y Humedad Fácil Para Raspberry Pi

La temperatura del aire y su humedad son dos de los parámetros más comunes que necesitan ser medidos. Raspberry Pi no tiene capacidad analógica integrada, por lo que usar sensores no es precisamente fácil.

En este instructable vamos a usar el sensor EzTemp.

EzTemp contiene un sensor de humedad profesional de Honeywell y un termistor de precisión que puedes leer usando simplemente el puerto serie de tu Raspberry Pi.

¡Veamos cómo se hace!

[ Consigue tu EzTemp en MakeLab Fábrica Digital ]

Step 1: Conexión

Picture of Conexión

EzTemp utiliza el puerto serie de tu Raspberry Pi para comunicarse.

Identifica los pines serie en tu Raspberry Pi, y conecta:

  • RPi GND a EzTemp GND
  • RPi Tx a EzTemp Rx
  • RPi Rx a EzTemp Tx
  • RPi 3.3V a EzTemp 3.3V

Observa que los pines Tx se conectan con Rx y viceversa.

¡Enciende tu Raspberry Pi!

[ Consigue tu EzTemp en MakeLab Fábrica Digital ]

Step 2: Desactiva La Consola Serie

Picture of Desactiva La Consola Serie

Por defecto, Raspberry Pi usa el puerto serie para la consola. Necesitamos desactivar esta funcionalidad para poder utilizar el puerto serie con EzTemp.

La forma más sencilla de desactivar la consola serie es usando el comando raspi-config. Abre una consola y escribe:

sudo raspi-config

Mostrará un menú, selecciona 8 Advanced Options > A7 Serial y pulsa No.

Reinicia la Pi y pasa al próximo paso.

Si este método no te ha funcionado, visita nuestro post:

3 métodos para desactivar la consola serie de tu Raspberry Pi

[ Consigue tu EzTemp en MakeLab Fábrica Digital ]

Step 3: Descarga El Script De Ejemplo

Picture of Descarga El Script De Ejemplo

En tu Raspberry Pi, descarga este script. Puedes hacerlo abriendo una consola y escribiendo:

wget https://raw.githubusercontent.com/CAIMANICS/EzTempRH-for-Raspberry-Pi/master/software/EzTempRH.py

Y puedes ejecutarlo escribiendo:

python EzTempRH.py

¡Eso es todo! Ya tienes tu EzTemp funcionando.

EzTemp&RH build 2
Temperature: 24.0C
Humidity:    48.0%
External:    1018 / 2048 counts
Version:     2

Ahora veamos como puedes usarlo en tus programas.

[ Consigue tu EzTemp en MakeLab Fábrica Digital ]

Step 4: Cacharrea

Picture of Cacharrea

Ya que tenemos EzTemp funcionando, vamos a analizar el script de ejemplo, así puedes comprenderlo y modificarlo para tus proyectos.

Antes de nada, necesitaremos abrir el puerto serie. El script utiliza el móculo PySerial para hacerlo.

import serial
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)

Ahora vamos a preguntar al sensor por su versión. Éste es un valor estático que identifica la versión de EzTemp.

Para ello, enviaremos el comando 'v' al EzTemp:

ser.write("v")

La versión es un valor de 2 bytes, por lo que debemos esperar una respuesta de 4 bytes (1 byte de echo + 2 bytes de versión + 1 byte de checksum) del EzTemp. Leamos la respuesta:

s = ser.read(4)

Los datos se reciben en bytes separados, aunque el identificador sea de 2 bytes. Para reconstruirlo, necesitaremos desplazar 8 bits hacia la izquierda el byte más significativo, y entonces sumarle el byte menos significativo. De esta forma se recupera el campo de 2 bytes correctamente:

version = (ord(s[1]) << 8) + ord(s[2])

Puedes utilizar la línea anterior cada vez que necesites reconstruir un valor de 2 bytes del EzTemp.

La última línea de este bloque simplemente imprime por pantalla el resultado:

print 'EzTemp&RH build ' + str(version)

El resto del script hace lo mismo pidiendo los valores de los sensores a EzTemp. Vamos a ver la temperatura como ejemplo:

ser.write("d")
s = ser.read(4)
temperature = (ord(s[1]) << 8) + ord(s[2])
print 'Temperature: ' + str(1.0*temperature/10) + 'C'

En este caso, usamos el comando 'd' para preguntar la temperatura en grados centígrados con precisión de 0,1ºC. Como puedes ver, la captura de la respuesta se parece a la del bloque anterior. La diferencia está en cómo interpretar el valor recibido.

Cuando solicitamos la temperatura o cualquier otro parámetro con precisión 0,1, el dato es recibido como un entero de 2 bytes en décimas del valor. Esto es, si la temperatura es 21,5ºC, el EzTemp nos enviará el valor 215, y nuestro script debe dividir por 10 para obtener la temperatura real.

Todos los parámetros tienen un comando para precisión entera, si no requieres decimales. Usando estos comandos se simplifica la lectura y el procesado de los datos. Echa un vistazo al datasheet (en inglés) para una lista completa de estos comandos.

[ Consigue tu EzTemp en MakeLab Fábrica Digital ]

Step 5: Recursos Útiles

Puedes encontrar más información sobre EzTemp en GitHub:

https://github.com/CAIMANICS/EzTempRH-for-Raspberry-Pi

Concretamente, la última versión de su datasheet:

https://github.com/CAIMANICS/EzTempRH-for-Raspberry-Pi/blob/master/doc/EzTempRH-Datasheet.pdf?raw=true

***

¿Quieres un EzTemp?

Puedes comprar uno en nuestro makerspace local, MakeLab Fábrica Digital:

http://www.fabricadigital.eu/tienda/eztemp-sensor-de-temperatura-y-humedad-para-raspberry-pi/

o también en Tindie (en inglés):

https://www.tindie.com/products/makelab/eztemp-easy-temperature-and-humidity-for-rpi/

Comments