Sensor DH-11 en una Raspberry Pi y Arduino

Estoy tratando de hacer que mi sensor DH-11 funcione en mi raspberry pi, pero no lo he logrado después de varios intentos. Seguí el siguiente tutorial de Adafruit:

https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging

Mis intentos no tuvieron éxito. Simplemente no recibo ninguna respuesta del sensor. Sé que mis dos sensores DH11/DH22 funcionan porque leo datos de ellos si hago el mismo circuito usando mis arduinos y ejecuto un script. Tampoco creo que los GPIO de mi frambuesa estén dañados de ninguna manera, ya que probé con 5 y no obtuve ningún dato.

No estoy tratando de registrar cosas en un documento de Google como lo hace el tutorial, solo estoy tratando de leer datos del sensor usando la frambuesa... Tengo planes para registrar los datos en un servidor y acceder a ellos de forma remota... Pero para que primero tengo que obtener lecturas del sensor.

Ahora, ¿alguien ha logrado esto? ¿Leyendo datos de un DH11/DH22 en el raspberry pi? Si es así, ¿podrías decirme qué tutorial seguiste? He estado buscando algunos, pero parece que el de Adafruit es, con mucho, el más popular.

¡Gracias por tu ayuda!

¡Salud!

¿Ya has usado con éxito algún GPIO en RasPi? Debe ejecutarse como root (sudo) para tener acceso a GPIO.
Sí, tengo otros proyectos... Así que no es por eso.
echa un vistazo a esta publicación electronics.stackexchange.com/questions/236530/… ; y si está dispuesto a probar el código, me interesaría mucho saber si también se ajusta a un DHT11. Estoy intentando con ese código eliminar los picos debido a los errores de DHT11, y parece funcionar hasta ahora.

Respuestas (2)

El de Adafruit puede ser un tutorial popular, pero la implementación real del software quizás no sea la mejor (advertencia, tengo mi propia solución de software, por lo que no debe considerarse imparcial).

El DHT11/DHT22 genera un flujo de bits para codificar la lectura. La longitud de cada pulso de tiempo alto codifica si el bit es un cero o un uno. La sincronización de estos bits es crucial para obtener una lectura válida.

La mayoría de las implementaciones utilizan tiempos de espera ocupados para los bits que son susceptibles a problemas de reprogramación de Linux. Esas implementaciones funcionan pero no son confiables. Es posible que deba tomar tres de cuatro lecturas antes de obtener una que pase el cálculo de la suma de verificación (esperando varios segundos entre cada una).

Un método confiable es usar el hardware SPI para leer el flujo de bits. Eso obtendrá tasas de error mejores que 1 en 100,000 lecturas.

El otro método es usar mi biblioteca pigpio , que cronometra los eventos de gpio hasta el nivel de microsegundos. Ejemplo de DHT22 Python aquí . El github tiene un ejemplo de DHT11 .

Para obtener información de fondo, consulte la publicación.

Gracias por señalarme la dirección correcta. Veo que usas una terminología un poco complicada aquí. Siempre he querido crear mis propios scripts, no solo usar los ya codificados. ¿Tiene algún consejo sobre cómo puedo empezar con respecto a cómo cronometrar bits y obtener lecturas? ¡Gracias! ¡Su ayuda es muy apreciada!
@JackGal Le sugiero que descargue mi piscopio y eche un vistazo a la forma de onda generada por el sensor durante una lectura. Luego, eche un vistazo a las diversas soluciones de software para ver cómo capturan e interpretan la forma de onda. Al comparar la forma de onda con las soluciones, podrá decidir cuál es su propia solución. Buena suerte.

Hay un par de pasos para leer el DHT11 con raspberry. Primero, si está utilizando la biblioteca de cableadoPi, está listo para comenzar, ya hay algunas implementaciones en Internet. Pero si en mi caso quieres hacerlo sin bibliotecas externas, tienes que mapear la memoria de raspberry para poder manipular los pines GPIO. Luego, necesita un temporizador preciso para enviar al DHT11 una señal de inicio, que activará el sensor para comenzar a proporcionarle datos. Puede leer los temporizadores en la ficha técnica del producto. Después de eso, el sensor te enviará 5 bits de datos. El primero es la parte entera de la humedad. El segundo es la parte decimal de la humedad. Tercero y cuarto son los valores de temperatura. Y el quinto bit es la suma de control.

Puedes ver mi implementación aquí .