Olen ehitanud Arduino abil ilmajaama, mis mõõdab temperatuuri / õhuniiskust ja rõhku Adafruit 8266 HUZZAH abil. Temperatuuri ja niiskust mõõdetakse AdaFruitilt tellitud DHT22 anduri abil. Projekt viidi lõpule umbes 4 kuud tagasi ja esimese kolme kuu jooksul on see andnud head andmed. Lõpuks hakkasid niiskuse väärtused tagastama prügi, mille väärtus oli umbes 1%.
Asendasin DHT22 anduri teisega, seekord juhusliku eBay müüja käest. See töötas ka umbes nädala jooksul hästi (niiskuse väärtused näivad 20-60% vahemikus head välja nägevat).
Siis langesid need järsku jälle 1% -ni.
Kui käivitan DHTtesteri (oma programmi asemel) sensori ja oma Uno arendusplaadi vastu, on selle sensori puhul ka 1% niiskus.
DHTxx test! Niiskus: 1,00% Temperatuur: 19,20 * C 66,56 * F Soojusindeks: 17,96 * C 64,33 * F Niiskus: 1,00% Temperatuur: 19,20 * C 66,56 * F Soojusindeks: 17,96 * C 64,33 * F
Nii et tean, et praegu pole probleem minu programmiga (juhtub nii minu kui ka DHTtesti programmiga), mitte minu Arduinoga (juhtub nii väljal 8266 kui ka minu diivanil oleva Unoga ). Nii et midagi peab juhtuma anduritega selles valdkonnas, kus nad töötavad nädalast kuni mõne kuuni ja siis ebaõnnestuvad?
Kas teil on ideid?
Hakkan mõtlema mõni viga / kriitik sööb või teeb andurile midagi (võib-olla meelitab neid see sellepärast, et see on soojem), aga kas ikkagi on hea võimalus varjestada, kui see nii on, väärtusi mõjutamata? Kas on mõni muu viis toimuva nägemiseks?
// Näide erinevate DHT niiskuse / temperatuuri andurite visanditest // Kirjutanud ladyada, üldkasutatav domeen # sisaldab "DHT.h" #define DHTPIN 2 // millise tihvtiga oleme ühendatud // Kommenteerige mis tahes tüüpi, mida te kasutate! // # define DHTTYPE DHT11 // DHT 11 #define DHTTYPE DHT22 // DHT 22 (AM2302) // # define DHTTYPE DHT21 // DHT 21 (AM2301)
// Ühendage anduri tihvt 1 (vasakul) + 5V-ga // MÄRKUS. Kui kasutate 3,3 V loogikaga plaati nagu Arduino Due, ühendage tihvt 1 // 5 V asemel 3,3 V-ga! // Ühendage anduri tihvt 2 ükskõik millise DHTPIN-iga / Vormista DHT andur. DHT dht (DHTPIN, DHTTYPE); void setup () {Serial.begin (9600); Serial.println ("DHTxx test!"); dht. algus (); } void loop () {// Oodake mõõtmiste vahel mõni sekund. viivitus (2000); // Temperatuuri või niiskuse lugemine võtab aega umbes 250 millisekundit! // Anduri näidud võivad olla ka kuni 2 sekundit "vana" ujuk h = dht.readHumidity (); // Loe temperatuuri Celsiuse (vaikimisi) ujukina t = dht.readTemperature (); // Loe temperatuuri Fahrenheiti (isFahrenheit = tõene) ujukina f = dht.readTemperature (true); // Kontrollige, kas mõni lugemine ebaõnnestus ja väljuge varakult (proovige uuesti). if (isnan (h) || isnan (t) || isnan (f)) {Serial.println ("DHT-andurilt ei õnnestunud lugeda!"); tagasi; } // Arvuta soojusindeks Fahrenheiti (vaikimisi) float hif = dht.computeHeatIndex (f, h); // Arvuta soojusindeks Celsiuse järgi (isFahreheit = false) float hic = dht.computeHeatIndex (t, h, false); Serial.print ("Niiskus:"); Seeriaprint (h); Serial.print ("% \ t"); Serial.print ("Temperatuur:"); Seeriaprint (t); Seeriaprint ("* C"); Seeriaprint (f); Serial.print ("* F \ t"); Serial.print ("Soojusindeks:"); Seeriaprint (hic); Seeriaprint ("* C"); Seeriaprint (hif); Serial.println ("* F");}