DHT11 Temperatuur- & Vochtigheidsensor Project met LED-indicatoren en Piezo-luidspreker
Onderdelen en Benodigdheden
| DHT11 Temperatuur- & Vochtigheidsensor (4 pins) | 1 |
| Arduino UNO | 1 |
| LED's: 1x groen, 2x rood | 3 |
| Weerstanden 220Ω | 3 |
| Piezo-luidspreker | 1 |
| Draadjes (jumper wires) | 12 |
Apps en Online Services
- Arduino IDE
Over dit Project
Dit is een beginnerproject dat de DHT11-sensor gebruikt om temperatuur en luchtvochtigheid te meten. Drie LED's geven de temperatuurstatus aan:
- Groen (A1): Perfecte temperatuur (20-27°C)
- Rood (A0): Te koud (≤20°C) + piezo geluid
- Rood (A2): Te warm (≥29°C) + piezo geluid
De waarden worden ook op de seriële monitor uitgeprint.
Benodigde Bibliotheken
Installeer via Bibliotheekbeheerder in Arduino IDE (zoeken op "DHT sensor library" en "Adafruit Unified Sensor").
Aansluitschema
- DHT11 DATA-pin → Digitale pin 5
- LED "Te koud" (rood) → A0 (via 220Ω)
- LED "Perfect" (groen) → A1 (via 220Ω)
- LED "Te warm" (rood) → A2 (via 220Ω)
- Piezo-luidspreker → Digitale pin 9
- Alle GND's samen, VCC naar 5V
Code
#include <Adafruit_Sensor.h>
#include <DHT.h>
int speakerPin = 9;
#define DHTPIN 5
#define DHTTYPE DHT11
#define LED_TOO_COLD A0
#define LED_PERFECT A1
#define LED_TOO_HOT A2
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println("DHT11 test!");
dht.begin();
pinMode(speakerPin, OUTPUT);
pinMode(LED_TOO_COLD, OUTPUT);
pinMode(LED_PERFECT, OUTPUT);
pinMode(LED_TOO_HOT, OUTPUT);
}
void loop() {
delay(2000); // DHT11 heeft ~2s tussen metingen nodig
float h = dht.readHumidity();
float t = dht.readTemperature(); // Celsius
float f = dht.readTemperature(true); // Fahrenheit
if (isnan(h) || isnan(t) || isnan(f)) {
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");
if (t <= 20) {
Serial.println("Te koud!");
digitalWrite(LED_TOO_COLD, HIGH);
digitalWrite(speakerPin, HIGH);
delay(1000);
digitalWrite(speakerPin, LOW);
digitalWrite(LED_TOO_COLD, LOW);
}
else if (t > 20 && t < 27) { // Originele code had fout: 20 < t < 27 werkt niet in C++
Serial.println("Perfecte temperatuur!");
digitalWrite(LED_PERFECT, HIGH);
delay(2000);
digitalWrite(LED_PERFECT, LOW);
}
else if (t >= 29) {
Serial.println("Te warm!");
digitalWrite(LED_TOO_HOT, HIGH);
digitalWrite(speakerPin, HIGH);
delay(1000);
digitalWrite(speakerPin, LOW);
digitalWrite(LED_TOO_HOT, LOW);
}
// Let op: tussen 27-28°C gebeurt er niets (dode zone)
}
Opmerking: De originele code had een logische fout in de voorwaarde if (20 < t < 27) – in C/C++ evalueert dit altijd true. Gecorrigeerd naar t > 20 && t < 27. Ook is er een "dode zone" tussen 27-28°C waar geen LED brandt.
Productieproces
- Bouw je eerste IoT-project met Raspberry Pi, DHT11 en ThingSpeak
- Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
- Integreren van een thermocouple-sensor met de Arduino Portenta H7 via de MAX6675 IC
- Bouw een real-time gyroscoop-spel met Arduino Nano & MPU-6050 sensor
- K30 CO2-sensor: Real-time binnenluchtkwaliteitmonitoring met Arduino
- Unopad: Naadloze Arduino MIDI-controller voor Ableton Live
- Arduino temperatuur- en vochtigheidslogger met DHT11 en Ethernet Shield
- Bouw een Slimme IoT Pot met ESP8266, Arduino & Ultrasonische Sensor – Real-time Monitoring
- Een eenvoudige obstakelsensor bouwen met Arduino – IR LED & Fotodiodo Tutorial
- Een DFRobot Capacitieve Vingerafdruksensor integreren met Arduino of ESP8266
- Temperatuur en Vochtigheid met DHT11 op Blynk - Stap-voor-Stap Arduino Tutorial