Niveau – beginner
Tijdsduur – 15 / 20 Min
Kosten – €18.80 euro zonder Arduino €42.75 euro met

Als jij je wel eens afvraagt wat de luchtvochtigheid in jouw huis is dan is dit project voor jou!

Tijdens dit project leer je hoe je een luchtvochtigheidsmeter maakt met behulp van een DHT11 sensor en een 16X2 LCD beeldscherm. Een DHT11 is een sensor die de temperatuur en de luchtvochtigheid meet. Bij het beeldscherm heb je de keuze of je deze er wel of niet aan toe wilt voegen zo nee ga naar stap 2. Als je er wel een beeldscherm aan toe wilt voegen kan je de keuze maken of je deze met of zonder I2C wilt aansluiten. Als je hem zonder I2C wilt aansluiten ga naar stap 4 en als je hem met I2C wilt aansluiten ga naar stap 6.

Stap 2: Bouwen en Bedraden

Nu je alle onderdelen hebt kan je beginnen met het bedraden.

Voor het bedraden heb je vijf kabels nodig.

Er gaat een kabel van de 5V op de Arduino naar de plus van het breadboard en van de ground op de Arduino naar min van het breadboard.

Zodra je dat hebt gedaan doe je de DHT11 in het breadboard met de blauwe kant naar u toe gericht. Op deze manier defineren we ook de pinnen.

Nu ga je met en kabel van de I/O pin 8 naar de meest linker pin van de DHT11, vervolgens gaat er een kabel van de middelste pin van de DHT 11 naar de plus van het breadboard en een kabel van de meest rechter pin naar de min van het breadboard.

Het is belangrijk dat je de kabels op de juiste volgorde verbind want anders kloppen je waardes niet.

stap 3: Programmeren

Nu je het hebt bedraad kan je het gaan programmeren.

Het is een simpele code die ervoor zorgt dat de metingen gelezen kunnen worden en te zien zijn op de seriële monitor.

//hier importeren we de DHT library
#include <dht.h>

//nu geven we de DHT11 een naam
dht DHT;

//en defineren zijn pin
#define DHT11_PIN 8    

void setup()
{
  //hier starten we de seriële connectie
  Serial.begin(9600);
}

void loop()
{
    //hier lezen we de sensor waardes
    int chk = DHT.read11(DHT11_PIN);
    //en zorgen dat ze in de seriële com te zien zijn
    Serial.print("Humidity: ");
    Serial.print(DHT.humidity);
    Serial.print(" %, Temp: ");
    Serial.print(DHT.temperature - 5);
    Serial.println(" Celsius");
    delay(2000); 
}

Stap 4: LCD toevoegen

Als je de keuze hebt gemaakt om er een beeldscherm zonder I2C aan toe te voegen volg deze stappen dan. Als je er een beeldscherm aan toe voegt wordt het een standalone apparaat dit zorgt ervoor dat hij niet met een computer verbonden hoeft te zijn.

De aansluitingen voor de LCD zijn: K gaat naar de min, A gaat naar de plus, D7 gaat naar I/O pin 2, D6 gaat naar I/O pin 3, D5 gaat naar I/O pin 4, D4 gaat naar I/O pin 5, E gaat naar I/O pin 6, RW gaat naar de min, RS gaat naar I/O pin 7, VO gaat naar de signaal pin van de pot meter, VDD gaat naar de plus en VSS gaat naar de min.

Bij het aansluiten van de pot meter gaat de meest rechter pin naar de plus, de meest linker pin naar de min en de middelste naar de VO van het LCD beeldscherm.

De reden dat er een pot meter in dit project zit is omdat er anders niks of alleen maar witte blokjes op het beeldscherm te zien zijn. Door aan de potmeter te draaien zal de tekst vanzelf tevoren komen. Blijf dit doen totdat de tekst goed zichtbaar is, de pot meter is namelijk een draaiweerstand. Dit zorgt ervoor dat als je er aan draait dat er een andere hoeveelheid spanning op het beeldscherm komt. Dat zorgt er weer voor dat de kleine lampjes in het display feller of minder fel worden.

Stap 5: LCD programmeren

Nu je het beeldscherm hebt aangesloten kan je hem gaan programmeren.

Je moet hiervoor de LiquidCrystal library gebruiken die zit standaard in de Arduino IDE. Als je die dan hebt geïmporteerd kan je beginnen met het overnemen van de code die hier onder staat.

//hier importeren we de DHT library
//en de LiquidCrystal library
#include <dht.h>
#include <LiquidCrystal.h>

//op deze plek defineren we de LCD pinnen
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

//hier geven we de DHT11 een naam
dht DHT;

//en defineren zijn pin
#define DHT11_PIN 8

void setup(){
  //nu selecteren we de LCD lampjes
  lcd.begin(16, 2);
}

void loop()
{
  //nu lezen we de waardes van de DHT11
  int chk = DHT.read11(DHT11_PIN);
  //en hier zorgen we dat ze
  //op het beeldscherm komen
  lcd.setCursor(2,0); 
  lcd.print("Temp: ");
  lcd.print(DHT.temperature - 5);
  lcd.print("C");
  lcd.setCursor(2,1);
  lcd.print("Humi: %");
  lcd.print(DHT.humidity);
  delay(2000);
}

Op het moment dat alles nu klopt heb je je eigen standalone luchtvochtigheidsmeter en thermometer, gefeliciteerd.

stap 6: LCD met I2C

In deze stap laat ik je zien hoe je een I2C LCD kan aansluiten. Het voordeel hiervan is dat het beeldscherm in totaal maar vier jumper wires nodig heeft en standalone is.

Het is wel belangrijk dat je hiervoor de LiquidCrystal_I2C library en de Wire library importeerd anders kan je het beeldscherm namelijk niet aansturen.

De LiquidCrystal_I2C library kan je vinden als je in de Arduino IDE naar schets gaat, dan naar bibliotheek gebruiken en dan op bibiliotheek beheren klikt. Dan zie je als het goed is een pop-up tabblad daar zie je rechtsboven een zoekbalk. Typ daar LiquidCrystal_I2C in en selecteer er een en klik dan op installeer. Doe hetzelfde met de Wire library.

Nu ga je beginnen met het bedraden.

Als eerste gaat er een jumper wire van de 5V op de Arduino naar de plus van het breadboard en een jumper wire van de GND op de Arduino naar de min van het breadboard.

Daarna sluit je van het I2C LCD de GND op de min aan, de VCC op de plus, SDA op A4 en SCL op A5.

De aansluiting voor de DHT 11 is de meest linker pin naar I/O pin 8, de middelste pin naar de plus en de meest rechter pin naar de min.

Stap 7: I2C LCD programmeren

Nu ga je het programma van de LCD zo aanpassen dat je de I2C LCD ermee kan aansturen.

Zorg ervoor dat je de wire en de LiquidCrystal_I2C library hebt geïmporteerd. Zodra je die hebt kan je een paar kleine aanpassingen maken en dan werkt je programma ook op een I2C LCD beeldscherm.

//hier importeren we de juiste librarys
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <dht.h>

//hier laten we het programma weten wat het I2C adres
//is en dat het een 16 bij 2 beeldscherm is
LiquidCrystal_I2C lcd(0x3F,20,4);


dht DHT;

#define DHT11_PIN 8

void setup(){
  lcd.begin(16, 2);
  //hier initializeren we de lampjes van
  //het beeldscherm het is belangrijk dat je 2 keer
  //lcd.init() hebt wantanders werkt je programma niet
  lcd.init();
  lcd.init();
  lcd.backlight();
}

void loop()
{
  int chk = DHT.read11(DHT11_PIN);
  lcd.setCursor(2,0); 
  lcd.print("Temp: ");
  lcd.print(DHT.temperature - 8);
  lcd.print("C");
  lcd.setCursor(2,1);
  lcd.print("Humi: %");
  lcd.print(DHT.humidity);
  delay(2000);
}