Translate

jueves, mayo 05, 2016

Raspberry y sensor de temperatura/humedad DHT11




Vea aquí cómo conectar un sensor de temperatura y % de humedad DHT11 en nuestra Raspberry. el procedimiento es idéntico a un DHT22.
  • Mi experiencia tras el uso y la lectura de datos, es mas delicado este componente con una Raspberry, es mejor usar un DS18B20 para la temperatura y luego instalar Arduino dedicado a DHT11 porque lectura funciona mucho mejor.
  • Otro ejemplo se es este: http://www.uugear.com/portfolio/dht11-humidity-temperature-sensor-module/  su autor después de usar  C y  Python nos dice que:
  • Nos dimos cuenta de que ambos ejemplos: tiene una suerte de perder datos. Esto se debe a que la Raspberry Pi no se está ejecutando en un sistema operativo en tiempo real, el retraso en el programa no es lo suficientemente precisa, y a veces eso lleva a un fracaso de la transmisión. Debido a que C es un lenguaje de bajo nivel, que controla el pin GPIO de un modo más directo, por lo que el ejemplo en C tiene menos probabilidades de faillarl. Progrmandolo como un  trabajo en backuground, podemos ejecutar el programa varias veces y puede recoger el los resultados de una forma más adecuada. Este deberes aussi sea factible de ser realizado mediante programación.
  • Como solución debemos ejecutar este programa varias veces con con el objetivo de tener un resultado correcto.
Como podéis ver, la lectura de la DHT no es, ni mucho menos, fácil y reproducible.
El siguiente ejemplo es una secuencia de comandos shell que intenta pasar por alto los problemas de lectura preguntando varias veces hasta que la DHT disponga de un resultado de temperatura. Este método puede sobrecargar el Raspbery, a veces hasta la saturación de la CPU.
Tras este aviso, debéis saber que  hay precauciones que se deben  tomar.
Gracias, no usar los comentarios para decir "No funciona, no funciona bien," ya que  han sido advertidos.
Un DHT 11

Conexión de un DHT11 la Raspberry

1 de DHT en el 3,3 V,
2 de DHT en el GPIO que quieras,
3 nada,
4 GND 

Entre 1 y 2 resistencias 4.7K Ohm-10 K



  • Software

Esta es la parte difícil, porque parece que el modo de reproducción a través de GPIO no responde correctamente todo el tiempo (no hay valores correctos, no hay datas).
  • Hay una librería Adafruit que para mí funciona mejor que otros programas en C que se encuentran en la red.
Detalle de la instalación.
sudo wget http://goo.gl/oadpl -O Adafruit_DHT
sudo cp Adafruit_DHT /usr/bin/
sudo chmod 777 /usr/bin/Adafruit_DHT 


Para probarlo, se corre el siguiente comando (para un DHT11 DHT un 22 será preguntado por Adafruit_DHT 22 XX)
sudo Adafruit_DHT 11 4
Using pin #17Data (40): 0x28 0x0 0x18 0x0 0x40
Temp = 24 *C, Hum = 40 %
OK se muestra buena temperatura y humedad.
Precaución: DHT11 y DHT22 responden sólo 1 veces por segundo, por lo que hay que retrasar la consulta.
Sí, pero lo que es los 2 últimos dígitos (XX) 22 Adafruit_DHT XX: el GPIO que está conectada su DHT. GPIO 4 en el ejemplo anterior.
Voila, ahora usted tiene que empezar con regularidad y colocar los valores en Domoticz.
Así que tengo una escritura del golpe que consulta la DHT y que devuelve un valor sólo si el valor TEMP contiene algo (véase más adelante)
  • Domoticz :

Se crea un dispositivo virtual y en este dispositivo virtual. 




Se añade un sensor de temperatura Humedad + virtual, 05/09/2014 19_01_10-DomoticzMaintenant volvamos en los periféricos se hace clic en la flecha verde para agregarlo a continuación, cae en el IDX Domoticz (44) en mi caso

Ahora volvemos a los periféricos que hace clic en la flecha verde para agregarlo a continuación, cae en el IDX Domoticz (44) en mi caso.

A continuación, un script como el que espera el regreso de un valor de temperatura válida, entonces se alimenta a través de la Domoticz IDX.
Ante todo
mkdir /var/tmp
touch /var/tmp/temper.txt
Crear después en domoticz / scripts y crear el archivo que contendrá la secuencia de comandos de lectura de temperaturas.
/home/pi/domoticz/scripts/nom_du_script.sh
sudo pico nom_du_script.sh
Luego copiar / pegar (clic derecho en Putty) esta secuencia de comandos shell.
#!/bin/bash

# Domoticz server
SERVER="192.168.1.81:8080"

# DHT  IDX
# El número de la IDX en la lista de los periféricos 
DHTIDX="44"


#DHTPIN
# EL GPIO que conecta DHT11
DHTPIN="4"

# si tiene un DHT22 cambiar al final de la línea en un 11 Adafruit_DHT Adafruit_DHT 22


# TMPFILE : ruta de acceso a un archivo temporal en el lugar para evitar el RAMDRIVE
# Escrituras de la tarjeta SD
# manera de lo contrario será escrito o el archivo que contiene la temperatura
#  /tmp/temper.txt es una buena opción si no se instala RAMDRIVE
# ver www.easydomoticz.com para saber mas 

TMPFILE="/var/tmp/temper.txt"
# Patrick modificacion desde 03.08.15 a la pregunta 5 veces como máximo
cpt=0
while [ $cpt -lt 6 ]
do
TEMP=""
sleep 5
sudo nice -20 Adafruit_DHT 11 $DHTPIN > $TMPFILE
TEMP=$(cat $TMPFILE|grep Temp |awk '{print $3}')
if [ $TEMP ]
then
TEMP=$(cat $TMPFILE|grep Temp |awk '{print $3}')
HUM=$(cat $ $TMPFILE |grep Temp |awk '{print $7}')
#echo $TEMP
#echo $HUM
# Send data
curl -s -i -H  "Accept: application/json"  "http://$SERVER/json.htm?type=command&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2"
TEMP=""
HUM=""
rm $TMPFILE
exit 0
fi
#echo $cpt
cpt=$(($cpt+1))
done
exit 1
 chmod +x /home/pi/domoticz/scripts/nom_du_script.sh
Con esto ya tenemos el script en marcha

 Lanzar el script a través de cron

Ahora es el lanzamiento de esta secuencia de comandos a intervalos regulares

Vamos a poner en un crontab para funcionar a la frecuencia que desee
Por esta un pequeño crontab -e http://fr.wikipedia.org/wiki/Crontab
y coloque una línea como la que está en el final
*/10 * * * * /home/pi/domoticz/scripts/dhtsend.sh
¿Quién dijo que cada 10 minutos? (*/10)
todos los dias * * * *
Puedo ejecutar el script llamado desde  dhtsend.sh de /home/pi/domoticz/scripts/
Guardar los cambios (CTRL x)
Ponerlo para  que cada 10 minutos sucedan las actualizaciones de los componentes domoticz.

Como estamos seguros de no sobrecargar el Raspi.

Le sugiero que ponga este script en el crontab cada 5 o 10 minutos.
- Ver más en: http://easydomoticz.com/raspberry-et-dht11/#sthash.8n8DNJsS.dpuf

Poniendo Hyperion en Raspberry Pi

Vamos a hacer una serie de entradas que nos acerque un poco más el mundo de Raspberry Pi a nuestros hogares, a nuestro día a día, que nos haga la vida más fácil o distinta!! En este caso veremos qué fácil es poner un sistema tipo Ambilight en nuestra TV de casa. Un sistema de retroiluminación para nuestra tele, donde costará más el montaje que la configuración!
Hyperion-Raspbmc-00-bujarra
Para todos aquellos que queráis haceros un sistema de multimedia, para ordenar peliculas, series, fotos, música… conoceréis XBMC que lo podréis instalar en vuestros Windows, Mac, Linux, iOS, Androides… hay bastantes distribuciones con XBMC para las Raspberry y un eterno debate de cuál es mejor, más rápido, etc… este documento lo basaremos en Raspbmc, suponiendo que ya lo tenemos instalado en nuestra raspberry. A parte de todo eso nunca olvidar todos los Add-ons que se le pueden poner que son la pera!
Hasta ahora personalmente venía utilizando Boblight, pero consume muchos más recursos que Hyperion, a parte Hypertion trae una herramienta HyperConn que nos permitirá configurarlo gráficamente muy sencillo! indicando el número de LEDs que tenemos, cómo los tenemos, tipo de movimiento más suave…
Bueno, al grano! qué necesitamos comprar:
– LEDs! cuántos? Dependerá de tu TV, normalmente para una de 42″ una tira de 50 LEDs que nos saldrá sobre los 27€ (ejemplo de eBay), en mi caso adquirí con el chip WS2801 (también pueden ser LPD6803, LPD8806 o Lightberry!).
– Necesitaremos también un transformador para meterles alimentación externa, bastará con uno de 5V y 2A (ejemplo de eBay) por 1€ aprox.
– Por último, un par de conectores tipo ‘DC Power Connector CCTV’ macho & hembra ya que al transformador anterior le cortaremos el conector y pondremos este que encaja con los LEDs (ejemplo de eBay) por 1€ aprox.
– Opcionalmente necesitaremos 3 cables de jumpers para conectarlos a la Raspberry en plan ‘bien’, normalmente macho-hembra (ejemplo de eBay).

led-05-bujarra
Para el montaje tenemos varias opciones, cada cual se lo puede montar como quiera, se puede poner un cartón detrás de la TV y con unas bridas atamos cada LED a su posición, o hacer con unas tuberías de estas pequeñas de 1cm de diametro en el perímetro de la TV y taladrar cada posición de los LED para luego ponerlos ahí, esta es la parte más costosa, ya que hay que arremangarse y ponerse a ello, pero en un rato está listo!

led-01-bujarra
En cuanto al conexionado es muy sencillo, en esta imagen de Adafruit podréis ver basicamente donde van los cables.
DescripciónColor de cableNº de PinDescripción del Pin
GroundAzulPin 6Tierra
ClockVerdePin 23SCLK
DataBlancoPin 19MOSI
5VRojoPin 25v

led-06-bujarra
Si necesitáis ayuda y queréis saber la función de cada GPIO de las RPi, buena imagen!

led-02-bujarra
Imagenes de ‘brendan’ (@_nadnerb), donde vemos el cable del transformador cortado y añadido el conector macho, para saber qué lado es positivo o negativo no quedará más que medirlo con un polimetro (o a suerte, probar primero de un sentido y si no encienden con todo instalado…).

led-03-bujarra
Vemos los cables de los jumpers conectados al extremo final de la tira de LED’s…

led-04-bujarra
Como quedaría el montaje en la raspberry…
Bien, una vez montado todo ya sólo queda la instalación y la configuración, demasiado sencillo, antes de seguir, deberéis comprobar que tenemos Bobligth deshabilitado (En el Add-on “Raspbmc settings” > “System Configuration” > “Service Management”). Pasos para instalar Hyperion:
sudo apt-get update
sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf7 ca-certificates
wget -N https://raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
sudo sh ./install_hyperion.sh

Tras este último comando ya deberemos tener instalado Hyperion y si tenemos XBMC abierto probaremos a abrir un video, foto… y veremos los efectos de forma instantánea. Comando para probar y poner todos los LED rojos:
hyperion-remote --priority 50 --color red --duration 5000
Bueno, ahora si queremos personalizar un poco los movimientos, darle más brillo, intensidad… podremos utilizar HyperCon, que no es más que una aplicación en Java que nos generará el fichero de configuración (hyperion.config.json) que colocaremos en ‘/etc’.

Hyperion-Raspberry-00-bujarra
En la pestaña “Hardware” podemos cambiar si nos interesa la posición de los LEDs, número de ellos, etc… otra opción interesante a cambiar sería ‘Blackborder Threshold [%]’, simplemente para que no coja el borde de la imagen.

Hyperion-Raspberry-01-bujarra
En la pestaña ‘Process’ podríamos habilitar el ‘Smoothing’ que suavizará las transiciones de color de los LEDs. Se podría subir el ‘HSV Value gain’ a 1,75, 2, 3… es la intensidad de los LEDs!

Hyperion-Raspberry-02-bujarra
Y por último en la pestaña ‘Eternal’ indicaremos donde queremos que los LEDs actuen, si sólo en videos… así como elegir el efecto que queremos que hagan los LEDs cuando la Rpi reinicie y su tiempo de duración.

Y poco más!! A disfrutarlo!! ya veréis que chulo queda y qué ambiente le da a la casa… seguiremos con otros documentos de la raspberry en próximos días… si tenéis otras distribuciones de XBMC podréis ver en la doc oficial cómo aplicar esta instalación (por ejemplo en OpenELEC….), más info en su web oficial!