• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
problemi dht22 saltuari

DHT22 problemi saltuari
#1
ciao a tutti,
ho un problema (casuale) su un DTH22 collegato ad un raspberry 3A. In realtà ho due DHT22 collegati: il primo sul PIN 14 ed il secondo sul PIN 2: quest'ultimo casualmente dopo n giorni smette di funzionare (l'errore è come se fosse fisicamente scollegato) e non c'è verso di farlo funzionare se non staccando e riattaccando il sensore al connettore.
Non è problema del sensore perchè l'ho cambiato con un altro (provato e funzionante) e quello vecchio l'ho messo su un NodeMCU dove funziona regolarmente da mesi.
Non penso siano i connettori: sono gli stessi per i due sensori e non mi sembrano rovinati o ossidati.

Ho provato anche a cambiare la libreria (https://learn.adafruit.com/dht-humidity-...thon-setup) con questo codice:

Codice:
import time
import board
import adafruit_dht
# Initial the dht device, with data pin connected to:
dhtDevice = adafruit_dht.DHT22(board.D2,use_pulseio=False)
temperature = dhtDevice.temperature
humidity = dhtDevice.humidity
try:
    n = int(humidity)
    print("T={:.1f} C  H={}% "
              .format(temperature, humidity))
except ValueError:
    print('Failed to get reading')


Sembra andare un po' meno peggio di prima, ma ogni tanto si "blocca" lo stesso.
Ripeto che sul sensore collegato sul PIN 14 (che tra l'altro è collegato con un cavo più lungo dell'altro) non ho questo problema (per dirla tutta ogni tanto perde una lettura del sensore: si vede che Raspberry con i DHT22 fa fatica ... sui NodeMCU funzionano molto meglio).

C'è un modo di resettare il PIN senza staccarlo fisicamente?
Può essere il PIN 2 la causa del problema? Per cambiarlo dovrei rifare tutti i cablaggi.
Altre idee?

grazie!
ciao
Risposta
#2
A quanto leggo, i sensori DHT richiedono tempistiche accurate e la libreria Adafruit non brilla per bontà. Per quello su NodeMCU o qualsiasi microcontrollore, probabilmente, funziona meglio: un sistema real time può mantenere tempistiche precise, un sistema con OS multitasking, meno.

Prova questa libreria alternativa
https://github.com/szazo/DHT11_Python

Ho un sacco di sensori, ma non credo di avere DHT, di certo non li ho mai usati, quindi non ti so dare consigli per esperienza diretta.
Risposta
#3
E' noto che Raspberry essendo multitasking perda qualche lettura, per quello le librerie compensano il problema.
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#4
(21/06/2021, 22:13)Zzed Ha scritto: A quanto leggo, i sensori DHT richiedono tempistiche accurate e la libreria Adafruit non brilla per bontà. Per quello su NodeMCU o qualsiasi microcontrollore, probabilmente, funziona meglio: un sistema real time può mantenere tempistiche precise, un sistema con OS multitasking, meno.

Prova questa libreria alternativa
https://github.com/szazo/DHT11_Python

Ho un sacco di sensori, ma non credo di avere DHT, di certo non li ho mai usati, quindi non ti so dare consigli per esperienza diretta.

grazie, ma vedo che è specifica per DHT11, io uso i DHT22.
Risposta
#5
forse questa libreria
https://github.com/adafruit/Adafruit_CircuitPython_DHT
o cambiando pin
non ti segnala qualche messaggio di errore preciso?
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#6
(22/06/2021, 10:59)Enrico Sartori Ha scritto: forse questa libreria
https://github.com/adafruit/Adafruit_CircuitPython_DHT
o cambiando pin
non ti segnala qualche messaggio di errore preciso?

la libreria è quella che sto usando.
L'errore è:
RuntimeError: DHT sensor not found, check wiring

ma il sensore è collegato normalmente e non c'è nessun motivo perchè non faccia più contatto dopo n giorni.
grazie
ciao
Risposta
#7
effettivamente c'è scritto
Codice:
if len(pulses) < 10:
                # Probably a connection issue!
                raise RuntimeError("DHT sensor not found, check wiring")
Hai già provato a cambiare pin?
e se fosse da aumentare il ritardo? aumentando un po' il valore
delay_between_readings = 2
https://github.com/adafruit/Adafruit_Cir...uit_dht.py
in
adafruit_dht.py

o provare con altre librerie
http://abyz.me.uk/rpi/pigpio/examples.html#pdif2_DHTXXD
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#8
Proverò a cambiare PIN, appena riesco lo faccio.

Per la questione ritardo so che c'è questo problema, però non credo sia quello: io leggo i valori ogni mezz'ora, l'ultima volta è andato avanti per 25 giorni, quindi circa 1200 letture corrette (in realtà al 99%, perchè ogni tanto una se la perde, ma per me non è un problema), poi ha smesso di colpo per n giorni finchè non l'ho fisicamente staccato e riattaccato.

Cmq per curiosità (non sono un grande esperto di Python): l'istruzione
Codice:
delay_between_readings = 2
dove andrebbe messa?
Prima di
Codice:
dhtDevice = adafruit_dht.DHT22(board.D2,use_pulseio=False)
?
grazie
ciao
Risposta
#9
l'istruzione c'è gia se vedi il file che ti ho linkato, riga 190.
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect