Arduino växthusgaser kontroll - fuktighets- och (2 / 3 steg)
Steg 2: Ledningar fukt och temperaturgivare
Det är mycket enkelt att ställa in två separata sensorer för detta, men jag använde en sensor som läser både fukt och temperatur. DHT sensorer är billiga och kan läsa både temperatur och luftfuktighet. De har fyra stift och ansluta enligt följande:
- VCC (3V-5V power)
- Data ut
- Ingen anslutning
- Marken
Bifoga en 10K motstånd mellan VCC och Data raderna också. Ett diagram visas ovanför.
Du kommer att behöva hämta DHT biblioteket för att använda DHT sensorer. Här är en från Adafruit. För att använda den, ladda ner filerna DHT.cpp och DHT.h och lägg dem i en mapp som heter "DHT" i mappen arduino "bibliotek".
Här är ett exempel på kod från adafruit för din DHT sensor:
Exempel testning skiss för olika DHT luftfuktighet/temperatur sensorer
Skrivet av ladyada, offentlig
#include "DHT.h"
#define DHTPIN 2 / / vilken pin vi är ansluten till
Avkommentera oavsett vilken typ du använder!
#define DHTTYPE DHT11 / / DHT 11
#define DHTTYPE DHT22 / / DHT 22 (AM2302)
#define DHTTYPE DHT21 / / DHT 21 (AM2301)
Ansluta stift 1 (till vänster) av sensorn till + 5V
Obs: Om med en styrelse med 3.3V logik som en Arduino vederbörlig ansluta stift 1
till 3.3V istället för 5V!
Ansluta stift 2 av sensorn till vad din DHTPIN är
Ansluta stift 4 (till höger) av sensorn till marken
Ansluta en 10K motstånd från stift 2 (data) till stift 1 (power) av sensorn
Initiera DHT sensor för normala 16mhz Arduino
DHT dht (DHTPIN, DHTTYPE);
Obs: för att arbeta med en snabbare chip, som en Arduino förfallodatum eller Teensy, du
kan behöva höja tröskeln för cykel räknas anses vara en 1 eller 0.
Du kan göra detta genom att skicka en 3: e parametern för detta tröskelvärde. Det är lite
för mygel för att hitta rätt värde, men i allmänhet snabbare CPU den
högre värde. Standard för en 16mhz AVR är ett värde av 6. För en
Arduino Due som körs på 84mhz ett värde av 30 verk.
Exempel att initiera DHT sensor för Arduino förfallodatum:
DHT dht (DHTPIN, DHTTYPE, 30);
void setup() {
Serial.BEGIN(9600);
Serial.println ("DHTxx test!");
DHT.BEGIN();
}
void loop() {
Vänta några sekunder mellan mätningarna.
Delay(2000);
Läst temperatur eller fuktighet tar cirka 250 millisekunder!
Sensormätningar kan också vara upp till 2 sekunder "gamla" (det är en mycket långsam sensor)
flyta h = dht.readHumidity();
Läs temperatur som Celsius
flyta t = dht.readTemperature();
Läs temperatur som Fahrenheit
flyta f = dht.readTemperature(true);
Kontrollera om någon läser misslyckades och avsluta tidigt (för att försöka igen).
om (isnan(h) || isnan(t) || isnan(f)) {
Serial.println ("kunde inte läsa från DHT sensorn!");
hemkomst.
}
Beräkna Värmeindex
Måste skicka in temp i Fahrenheit!
flyta Hej = dht.computeHeatIndex (f, h);
Serial.Print ("luftfuktighet:");
Serial.Print(h);
Serial.Print ("% \t");
Serial.Print ("temperatur:");
Serial.Print(t);
Serial.Print ("* C");
Serial.Print(f);
Serial.Print ("* F\t");
Serial.Print ("Värmeindex:");
Serial.Print(HI);
Serial.println ("* F");
}