Raspberry Pi project: Weerstation
Bij dit Raspberry Pi project gaan we een weerstation maken. We maken hierbij gebruik van de DHT11. Dit is een Temperatuur en vochtigheid sensor. De Temperatuur wordt aangegeven in graden Celsius (°C) en de luchtvochtigheid in percentages (%).
Deze handleiding behandeld:
- Niveau – Gemiddeld 55%
- Tijdsduur 30 min 35%
- Kosten – €70,30 50%
Stap 1: Benodigdheden:
Stap 2: Bibliotheken installeren
Om te beginnen moeten we eerst een aantal bibliotheken installeren. Deze bibliotheken hebben we nodig voor het uitlezen van de DHT11 sensor. De bibliotheken installeren we met behulp van de terminal.
Allereerst installeren we de bibliotheek “Adafruit_CircuitPython_DHT”:
sudo pip3 install Adafruit_CircuitPython_DHT
Vervolgens installeren we de bibliotheek “libgpiod2”:
sudo apt install libgpiod2
Stap 3: Aansluiten
Wanneer de benodigde bibliotheken zijn geïnstalleerd, kunnen we doorgaan met het maken van het aansluitcircuit en de python code. De DHT11 sluiten we direct aan op de Raspberry Pi. De ground van de DHT11 sluiten we aan op de GND van de Raspberry Pi (blauwe draad). De voeding van de sensor sluiten we aan op de 3.3V van de Raspberry Pi (rode draad). Het data-signaal sluiten we aan op de GPIO pin 13 van de Raspberry Pi.
Stap 4: Programmeren
1 import time
2 import board
3 import adafruit_dht
4
5 # Initialiseer de DHT11 met GPIO pin 13:
6 dhtDevice = adafruit_dht.DHT11(board.D13)
7
In de Python code importeren we bovenin eerst de benodigde bibliotheken. Vervolgens schrijven we in de code dat het signaal van de DHT11 op de digitale pin 13 van de Raspberry Pi is aangesloten.
8 while True:
9 try:
10 # Druk de waarden (temperatuur en luchtvochtigheid) af naar de seriële poort
11 temperature_c = dhtDevice.temperature
12 humidity = dhtDevice.humidity
13 print(
14 “Temperatuur: {:.1f} *C Luchtvochtigheid: {}% “.format(
15 temperature_c, humidity
16 )
17 )
18
19 except RuntimeError as error:
20 # Errors komen vrij vaak voor, DHT’s zijn moeilijk te lezen, blijf gewoon doorgaan
21 print(error.args[0])
22 time.sleep(2.0)
23 continue
24 except Exception as error:
25 dhtDevice.exit()
26 raise error
27
28 time.sleep(2.0)
Nu maken we een oneindige loop, waarbij steeds de temperatuur en de luchtvochtigheid wordt afgedrukt. In de loop gebruiken we de try…except functie. Dit omdat er bij de DHT sensoren altijd moeilijk te lezen zijn, waardoor er soms errors optreden. Met het try-blok kun je een codeblok op fouten testen. En met het except-blok kun je de fout afhandelen. Wanneer er geen fouten optreden, leest het try-blok de temperatuur en de vochtigheid uit. Vervolgens worden deze gegevens afgedrukt naar de seriële poort, waardoor je deze waardes uit kunt lezen op je beeldscherm.
Voor wie de volledige code wilt kopiëren staat dit hieronder. We raden je echter aan om het over te schrijven, omdat ja daar veel meer van leert.
import time
import board
import adafruit_dht# Initialiseer de DHT11 met GPIO pin 13:
dhtDevice = adafruit_dht.DHT11(board.D13)while True:
try:
# Druk de waarden (temperatuur en luchtvochtigheid) af naar de seriële poort
temperature_c = dhtDevice.temperature
humidity = dhtDevice.humidity
print(
“Temperatuur: {:.1f} *C Luchtvochtigheid: {}% “.format(
temperature_c, humidity
)
)except RuntimeError as error:
# Errors komen vrij vaak voor, DHT’s zijn moeilijk te lezen, blijf gewoon doorgaan
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise errortime.sleep(2.0)
Stap 5: Resultaat
Wanneer je alles goed aangesloten en geprogrammeerd hebt, kun je op “Run” klikken, om de code te starten. Wanneer je de code start, zie je dat de gemeten temperatuur en de luchtvochtigheid afgedrukt wordt in de “Shell”.
Nu weet je hoe je een weerstation kan maken met behulp van de Raspberry Pi.