Prog Shield Fugt Sensor

Fra Holstebro HTX Wiki
Skift til: navigering, søgning
DHT11 Fugt-sensor

Fugtsensoren (eller humidity sensor) er en komponent der kan registrere luftfugtighed, og kan måle det i %. Princippet i modulet er gennemgået på Humidity-siden, men opbygget med kode til PIC microcontroller.

Software

Softwaren er baseret på et bibliotek lavet af AdaFruit[1], og kan downloades som en ZIP-fil fra Denne side. Biblioteket downloades og installeres som beskrevet under Arduinos biblioteker.

Der er lavet en tilrettet version af test-softwaren der kan hentes her i denne ZIP-fil.

Anvendelsen af softwaren

Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere fugtsensoren, med ben og type osv.

#include "DHT.h"

#define DHTPIN A3     // what digital pin we're connected to

#define DHTTYPE DHT11   // DHT 11
DHT dht(DHTPIN, DHTTYPE);

Inde i setup() skrives en velkomst og der skal sættes gang i objektet ved hjælp af begin-metoden som vist her:

void setup() {
  Serial.begin(9600);
  Serial.println("DHT11 test!");

  dht.begin();
}

I loop() startes med et sekunds ventetid - databladet foreskriver, at der skal gå mindst 600 ms mellem aflæsningerne. Derefter læses fugtighed og temperatur. Hvis fejltjekket går godt, så udskrives de læste værdier til den serielle monitor:

void loop() {
  // Wait a second between measurements.
  delay(1000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.println(" *C");
}

Testen kan give følgende resultat i Serial Monitor.

DHT11 test!
Humidity: 33.00 %	Temperature: 24.00 *C
Humidity: 33.00 %	Temperature: 24.00 *C
Humidity: 33.00 %	Temperature: 23.00 *C
Humidity: 33.00 %	Temperature: 23.00 *C

Yderligere muligheder i softwaren

Der ligger yderligere muligheder i klassen man kan anvende, hvis man ønsker andre måder at anvende ... på:

   DHT(uint8_t pin, uint8_t type, uint8_t count=6);
   void begin(void);
   float readTemperature(bool S=false, bool force=false);
   float convertCtoF(float);
   float convertFtoC(float);
   float computeHeatIndex(float temperature, float percentHumidity, bool isFahrenheit=true);
   float readHumidity(bool force=false);
   boolean read(bool force=false);

Hardware

Der læses på en ledning som beskrevet i Humidity, og på grund af et uheld, så er sensoren landet på et forkert ben, dette betyder dog ikke det store da biblioteket godt kan aflæse sensoren på det ben.

Layout

Fugtigheds-sensoren DHT11's placering på programmerings-shieldet kan ses her:
Layout-DHT11.png
Placering af DHT11 på Programmerings-Shieldet - HUSK at vende den rigtigt

Sensoren går ind på A3, og vil på denne placering blokere for den Analoge indgang til fx LM35 eller infrarød afstandsmåler.

Alternativ placering

Hvis man ønsker at skrive softwaren selv, og ønsker at anvende interrupt til det, så kræver det en anden placering på programmerings-shieldet som det kan ses her:
Layout-DHT11-Alternativ.png
Alternativ placering af DHT11 på Programmerings-Shieldet - HUSK at vende den rigtigt

På denne måde får sensoren fat i ben 2, og kan dermed anvende interrupt.

Denne placering blokerer så for RF-Link modtageren og for IR-Fjerbetjening Modtager

Referencer

  1. DHT Sensor Library placeret ved GitHub