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
Publicar un comentario