GPIO Project 9 - LCD Temperatuur
Beginner
30 Minuten
€ 169,90
In dit project leer je hoe je een DS18B20-temperatuursensor gebruikt om de omgevingstemperatuur te meten en hoe je deze waarde weergeeft op een 16x2 LCD-display met I2C-interface (die vind je in je GPIO kit). Dit is een geweldige toepassing om data visueel te presenteren.
Aansluitschema
Verbind de DS18B20 temperatuursensor:
- Zwart draad: Verbind met GND (pin 6).
- Rood draad: Verbind met 3.3V (pin 1).
- Geel draad:
- Verbind met GPIO 4 (pin 7).
- Plaats een 10kΩ weerstand tussen de gele draad en 3.3V (pin 1).
Verbind het LCD-display:
- VCC: Verbind met 5V (pin 2).
- GND: Verbind met GND (pin 6).
- SDA: Verbind met GPIO 2 (pin 3).
- SCL: Verbind met GPIO 3 (pin 5).
Pinout Referentie
GPIO | Pin # | Functie | Aansluiting |
| GPIO 4 | Pin 7 | Data temperatuursensor | DS18B20-gele draad |
| GPIO 2 | Pin 3 | I2C SDA | LCD SDA |
| GPIO 3 | Pin 5 | I2C SCL | LCD SCL |
| 3.3V | Pin 1 | Voeding | DS18B20-rode draad |
| 5V | Pin 2 | Voeding | LCD VCC |
| GND | Pin 6 | Aarde (Ground) | DS18B20 en LCD |

Voorbereiding
Stap 1: Installeer benodigde bibliotheken
Voer de volgende commando's uit in de terminal om de bibliotheken voor de DS18B20 en LCD te installeren:
sudo apt-get update
sudo apt-get install python3-pip
pip3 install RPLCDActiveer de 1-Wire-interface voor de DS18B20:
- Open het configuratiemenu:
sudo raspi-config- Ga naar Interface Options > 1-Wire en zet deze aan.
- Herstart de Raspberry Pi.
Controleer of de DS18B20 wordt herkend:
ls /sys/bus/w1/devices/Je zou een adres zien zoals 28-XXXXXXXXXXXX.
Python-code in Thonny
Stap 1: Schrijf je code
Open de Thonny Python IDE en voer de volgende code in:
import os
import glob
from time import sleep
from RPLCD.i2c import CharLCD
# DS18B20-instellingen
base_dir = '/sys/bus/w1/devices/'
device_folder = glob.glob(base_dir + '28*')[0]
device_file = device_folder + '/w1_slave'
# LCD-instellingen
lcd = CharLCD(i2c_expander='PCF8574', address=0x27, cols=16, rows=2)
def read_temp_raw():
"""Lees ruwe data van de DS18B20."""
with open(device_file, 'r') as f:
lines = f.readlines()
return lines
def read_temp():
"""Verwerk de data en retourneer de temperatuur in graden Celsius."""
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos + 2:]
temp_c = float(temp_string) / 1000.0
return temp_c
try:
while True:
temp = read_temp()
print(f"Temperatuur: {temp:.1f} °C")
# Toon de temperatuur op het LCD
lcd.clear()
lcd.write_string("Temp: {:.1f} C".format(temp))
sleep(2)
except KeyboardInterrupt:
print("\nProgramma gestopt.")
lcd.clear()
Stap 2: Sla het bestand op
Klik op Bestand > Opslaan als en noem het bestand lcd_temperature.py.
Stap 3: Voer het script uit
Klik op de groene Run-knop (▶) bovenin de Thonny-interface.
Hoe werkt het?
- DS18B20 Temperatuursensor:
- Leest de temperatuur via het 1-Wire-protocol en retourneert de waarde in graden Celsius.
- LCD-display:
- Toont de temperatuurwaarde op een 16x2 LCD-display.
- Herhaling:
- Het programma leest en toont de temperatuur elke 2 seconden.
Resultaat
- De omgevingstemperatuur wordt continu gelezen door de DS18B20 en weergegeven op het LCD-display.
- In de terminal wordt de temperatuur ook weergegeven.
Experimenteren
- Fahrenheit toevoegen:
- Pas de code aan om ook Fahrenheit weer te geven:
python
Code kopiëren
- Pas de code aan om ook Fahrenheit weer te geven:
- LED toevoegen:
- Laat een LED aangaan als de temperatuur een drempelwaarde overschrijdt.
- Logging:
- Log de temperatuur in een bestand voor verdere analyse:
with open("temp_log.txt", "a") as log:
log.write(f"{temp:.1f} °C\n")
