webwinkelkeur logo

4.7 gem.

5101+ beoordelingen
webwinkelkeur logoBekijk alles

5101+ beoordelingen

5101+ beoordelingen

Bestel voor 16:00 voor dezelfde dag verzending

14 dagen retour

NL

Particulier

Zakelijk

GPIO Project 9 - LCD Temperatuur

Beginner
30 Minuten
114,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. Dit is een geweldige toepassing om data visueel te presenteren.

Aansluitschema

Verbind de DS18B20 temperatuursensor:

  1. Zwart draad: Verbind met GND (pin 6).
  2. Rood draad: Verbind met 3.3V (pin 1).
  3. 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:

  1. VCC: Verbind met 5V (pin 2).
  2. GND: Verbind met GND (pin 6).
  3. SDA: Verbind met GPIO 2 (pin 3).
  4. SCL: Verbind met GPIO 3 (pin 5).

Pinout Referentie

GPIO

Pin #

Functie

Aansluiting

GPIO 4Pin 7Data temperatuursensorDS18B20-gele draad
GPIO 2Pin 3I2C SDALCD SDA
GPIO 3Pin 5I2C SCLLCD SCL
3.3VPin 1VoedingDS18B20-rode draad
5VPin 2VoedingLCD VCC
GNDPin 6Aarde (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 RPLCD

Activeer de 1-Wire-interface voor de DS18B20:

  1. Open het configuratiemenu:
sudo raspi-config
  1. Ga naar Interface Options1-Wire en zet deze aan.
  2. 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?

  1. DS18B20 Temperatuursensor:
    • Leest de temperatuur via het 1-Wire-protocol en retourneert de waarde in graden Celsius.
  2. LCD-display:
    • Toont de temperatuurwaarde op een 16x2 LCD-display.
  3. 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

  1. Fahrenheit toevoegen:
    • Pas de code aan om ook Fahrenheit weer te geven:
      python
      Code kopiëren
  2. LED toevoegen:
    • Laat een LED aangaan als de temperatuur een drempelwaarde overschrijdt.
  3. 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")