Dit is deel 1 van de beschrijving voor het bouwen van een weerstation met een Arduino
Bouw je eigen weerstation: deel 1
Het meten van de temperatuur en de luchtvochtigheid
Om de temperatuur en luchtvochtigheid te meten gebruiken we een opnemer (ook wel sensor genoemd) DHT22. Op de volgende plaatjes een afbeelding de DHT22.
Het aansluiten van de DHT22 op de Arduino:
Vcc of + –> 5 volt van de Arduino
GND of – –> ground van de Arduino
Data of out –> pen 9 van de Arduino
Note 1: Bij een losse DHT22 moet er een weerstand van 4700 Ohm tussen Vcc en data worden opgenomen; bij een printje is dat niet nodig omdat de weerstand al op het printje is gemonteerd.
Note 2: De volgorde van de aansluitingen van een printje met daarop de DHT22 verschillen van fabrikant tot fabrikant. Opletten dus!
Het schema en de proefopstelling
Het programma
Het Arduino programma zal de temperatuur en luchtvochtigheid meten en daarna deze waarden via de seriële monitor op het scherm van de computer laten zien.
Om met de sensor DHT22 te kunnen werken moet eerst de bibliotheek van deze sensor aan de Arduino bibliotheek worden toegevoegd. Toevoegen gaat als volgt: -> IDE menu -> Schets -> Bibliotheek gebruiken -> Bibliotheek beheren -> DHT22 in zoekvenster schrijven en nu laten zoeken -> DHT sensor library by ADAfruit kiezen -> installeren (indien melding: Adafruit Unified Sensor -> Install all)
Nu kunnen we in ons Arduino programma de DHT22 sensor gebruiken.
In het programma maken we ook kennis met variabelen van het type ‘float’. Dit zijn getallen met een komma; bijvoorbeeld 23,4. Dit is nodig omdat we de temperatuur en de luchtvochtigheid heel precies willen meten.
De code weerstation 1a
// sketch weerstation 1a.
// meten van de relatieve luchtvochtigheid en temperatuur met een DHT22 sensor.
// de meetwaarden wordt naar de seriële monitor gestuurd.
#include <DHT.h> // DHT sensor bibliotheek toevoegen
// DHT22 type van de sensor en pen 9 voor data
DHT sensor_dht(9, DHT22); // onze sensor heet nu: sensor_dht
float temperatuur, vochtigheid; // 2 variabelen om de meetwaarden op te slaan
void setup()
{
sensor_dht.begin(); // start de sensor om metingen te doen
Serial.begin(9600); // start de seriële monitor
}
void loop()
{
delay(2000); // wacht 2 seconden
//lees de sensor (temperatuur en de vochtigheid) uit en bewaar die in de variabelen
temperatuur = sensor_dht.readTemperature();
vochtigheid = sensor_dht.readHumidity();
// stuur de gemeten waarde naar de seriële monitor
Serial.print(“Luchtvochtigheid: “);
Serial.print(vochtigheid);
Serial.print(” %, Temperatuur: “);
Serial.print(temperatuur);
Serial.println(” Celsius”);
}
De data op de seriële poort
Uitbreiding met LCD
Probeer nu zelf om de temperatuur en de luchtvochtigheid op een LCD schermpje te schrijven. Hint: kijk eens naar de code van oefening 4 (het LCD) van werkbladen start.
Kom je er niet uit dan kijk eens naar de code hieronder:
De code weerstation 1b
// sketch weerstation 1b.
// Meten van vochtigheid en temperatuur met een DHT22 sensor.
// de meetwaarde wordt naar de seriële monitor gestuurd en op het LCD getoond.
#include <DHT.h> // DHT sensor bibliotheek toevoegen
#include <LiquidCrystal.h>
// DHT22 type van de sensor en pen 9 voor data
DHT sensor_dht(9, DHT22); // onze sensor heet nu: sensor_dht
// LCD Enable pin aan digital pin 11
// LCD R/W pin aan ground
// LCD D4 pin aan digital pin 5
// LCD D5 pin aan digital pin 4
// LCD D6 pin aan digital pin 3
// LCD D7 pin aan digital pin 2
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
float temperatuur, vochtigheid; // 2 variabelen om de meetwaarden op te slaan
void setup()
{
sensor_dht.begin(); // start de sensor om metingen te doen
Serial.begin(9600); // start de seriële monitor
lcd.begin(16,2); // start LCD type 16 x 2
}
void loop()
{
delay(2000); // wacht 2 seconden
//lees de temperatuur en de vochtigheid uit en bewaar die in de variabelen
temperatuur = sensor_dht.readTemperature();
vochtigheid = sensor_dht.readHumidity();
// stuur de gemeten waarden naar de seriële monitor
Serial.print(“Luchtvochtigheid: “);
Serial.print(vochtigheid);
Serial.print(” %, Temperatuur: “);
Serial.print(temperatuur);
Serial.println(” Celsius”);
// nu de metingen op het LCD vertonen
lcd.setCursor(0, 0); // zet cursor op positie 0 (vooraan) en rij 0 (eerste regel)
lcd.print (“Temp : “); lcd.print(temperatuur,1); lcd.print (” C “);
lcd.setCursor(0,1); // zet cursor op positie 0 (vooraan) en rij 1 (tweede regel)
lcd.print (“Vocht: “); lcd.print(vochtigheid,1); lcd.print (” % “);
}
De meetwaarden op het LCD
Download links voor code en beschrijving
- Code voor weerstation 1a (in ZIP formaat)
- Code voor weerstation 1b (in ZIP formaat)
- Download link voor “bouw je eigen weerstation deel 1” (in PDF formaat)
Vragen en/of opmerkingen?
Schrijf ze in de reactie sectie hieronder.