El sensor DHT21 / AM2301 no mide la humedad

5

Estoy intentando usar un DHT21 con un Lamobo R1 también conocido como Banana PI R1 para leer la temperatura y la humedad, con Armbian / Jessie y un 4.5. 2 kernel. Un Lamobo R1 es básicamente una placa A20 compatible con raspberry pi, con un bus raspberry pi 2 compatible invertido.

Lo he configurado en GPIO5, raspberry pin compatible 24, WirinPi 5, pin físico 18, según una tabla here , más los pines GND y + 5V.

Intenté leer la temperatura y la humedad con y sin la resistencia recomendada. Si bien la temperatura es buena, y también está corroborada por un DS18b20 sensor conectado a GPIO2, la humedad es siempre del 99.9%.

He instalado la biblioteca compatible con WiringPi del WiringBP repositorio.

Sin embargo, utilice por ejemplo DHT21-AM2301 o lol_dht22 Siempre obtuve la salida de Humidity en 99.9% o 99.90%

Un módulo de kernel personalizado para este chip, am2301 simplemente bloquea la máquina.

Lo que he encontrado hasta ahora es:

  • Parece que funciona con Raspberry y Arduino;
  • El chip es muy sensible a los tiempos, incluso en la frambuesa original;
  • Algunas personas informaron que solo funcionaba en GPIO1 y GPIO2 en la frambuesa original, mientras que las otras GPIO tenían una latencia mucho mayor;
  • Hay una configuración de hardware mucho más complicada para conectarlo a un I2C, en el que no estoy particularmente interesado;
  • Algunas personas también teorizan que solo funciona con el kernel 3;
  • El Lamobo R1 parece tener un bus pin extraíble por defecto;
  • Las lecturas se pueden hacer solo cada segundo debido a las limitaciones del conjunto de chips;
  • La implementación física del bus R1 en comparación con el rpi me permite sobrevivir sin la resistencia;
  • El límite del cable parece ser de 25 m, y hay historias anecdóticas de personas que alcanzan los 60 m con el cable UTP. El mío no es más largo que 20 cm;
  • No puede exponerse a la luz solar directa debido al mantenimiento del equilibrio químico;
  • Dicho equilibrio químico se degrada con el tiempo (¿2-3 años?).

¿Alguien tiene algo más que agregar?

Notas adicionales según comentarios:

  • La humedad es lo primero que la temperatura;
  • Como @ChrisStratton teorizó correctamente, los bits de humedad son todos 1;
  • Ya he probado dos sensores DHT21 con los mismos resultados.

La salida de

gpio readall

es

+----------+-Rev3-+------+--------+------+-------+  
| wiringPi | GPIO | Phys | Name   | Mode | Value |  
+----------+------+------+--------+------+-------+  
|      0   |  17  |  11  | GPIO 0 | IN   | Low   |  
|      1   |  18  |  12  | GPIO 1 | IN   | High  |  
|      2   |  27  |  13  | GPIO 2 | IN   | Low   |  
|      3   |  22  |  15  | GPIO 3 | IN   | Low   |  
|      4   |  23  |  16  | GPIO 4 | IN   | Low   |  
|      5   |  24  |  18  | GPIO 5 | OUT  | High  |  
|      6   |  25  |  22  | GPIO 6 | IN   | Low   |  
|      7   |   4  |   7  | GPIO 7 | IN   | Low   |  
|      8   |   2  |   3  | SDA    | ALT5 | High  |  
|      9   |   3  |   5  | SCL    | ALT5 | High  |  
|     10   |   8  |  24  | CE0    | IN   | Low   |  
|     11   |   7  |  26  | CE1    | IN   | Low   |  
|     12   |  10  |  19  | MOSI   | ALT5 | Low   |  
|     13   |   9  |  21  | MISO   | ALT5 | Low   |  
|     14   |  11  |  23  | SCLK   | ALT5 | Low   |  
|     15   |  14  |   8  | TxD    | ALT0 | Low   |  
|     16   |  15  |  10  | RxD    | ALT0 | Low   |  
|     17   |  28  |   3  | GPIO 8 | IN   | Low   |  
|     18   |  29  |   4  | GPIO 9 | ALT4 | Low   |  
|     19   |  30  |   5  | GPIO10 | OUT  | High  |  
|     20   |  31  |   6  | GPIO11 | ALT4 | Low   |  
+----------+------+------+--------+------+-------+  

    
pregunta Rui F Ribeiro

2 respuestas

6

Según hoja de datos , los tiempos DHT21 son más cortos con 3.3V y más largos con 5V. Lo cambié de 5V a 3.3V y ahora lee la humedad correctamente. Parece que mientras que en Arduino lo tienes a 5 V, el lado del software / las rutinas para el plátano pi y la frambuesa están asumiendo que está conectado a 3.3 V.

Del software mencionado en la pregunta, el más rápido parece ser lol_dht22. Estoy usando una versión ligeramente modificada (por mi cuenta), que crea archivos en / var / run aproximadamente cada 9-10 segundos para alimentar a rpimonitor .

Comodicecorrectamente@ChrisStratton,estemétododebitbanging/pollingesaltamentepropensoaerrores,especialmentecuandoseejecutaenelterritoriodelusuario.

LasumadecomprobacióndelprotocolosimpleimplementadaporelDHT21claramentenoeslosuficientementefuertecomoparaeliminarlamayoríadeloserrores/picos(yhaymuchos).Tuvequeagregarrutinasdecorreccióndesoftwaresimplesparaignorarvaloresfueradelugar,einclusoentonceshaypicos.

ElcódigoparaleerlossensoresDHT11/DHT21/DHT22estáenmigithub enlace .

También tenía dudas sobre si necesitaría tocar la configuración del árbol del dispositivo R1, como lo hice para configurar el protocolo 1Wire con otro sensor de temperatura. No fue necesario.

Como nota adicional, se debe tener cuidado al seguir esquemas a ciegas en línea. Mientras que el bus Arduino opera a + 5V, la frambuesa y los compatibles funcionan a + 3V; aunque aparentemente no es el caso del DHT21 (el estrés aparentemente es que el bus R1 es más resistente que el bus rpi), la alimentación a dispositivos / sensores aleatorios de + 5V conectados a un bus rpi puede ser potencialmente dañina para su SBC.

La temperatura medida también parece ser consistentemente más alta +2 grados Celsius de lo que debería ser, y muchas otras personas notifican estas inconsistencias de la temperatura utilizando dispositivos DHT21.

    
respondido por el Rui F Ribeiro
0

La lectura de humedad es del 99.9% cuando se suministra al sensor con 5V. Intenta suministrarlo con 3,3V y funcionará. Probé un circuito con una MCU en 5V y solo cuando el AM2301 está en 3,3V, funciona como se esperaba.

    
respondido por el Velja

Lea otras preguntas en las etiquetas