GPIO-Projekt 9 – LCD-Temperatur
In diesem Projekt lernen Sie, wie Sie mit einem DS18B20-Temperatursensor die Umgebungstemperatur messen und diesen Wert anzeigen können ein 16x2 LCD-Display mit I2C-Schnittstelle. Dies ist eine großartige Anwendung zur visuellen Darstellung von Daten.
Anschlussplan
Schließen Sie den DS18B20-Temperatursensor an:
- Schwarzes Kabel: Mit GND (Pin 6) verbinden.
- Rotes Kabel: An 3,3 V (Pin 1) anschließen.
- Gelbes Kabel:
- Verbinden mit GPIO 4 (Pin 7).
- Platzieren Sie einen 10kΩ-Widerstand zwischen dem gelben Kabel und 3,3 V ( Stift 1).
LCD-Display anschließen:
- VCC: An 5 V (Pin 2) anschließen.
- GND: Mit GND (Pin 6) verbinden.
- SDA: Verbinden mit GPIO 2 (Pin 3).
- SCL: Verbinden mit GPIO 3 (Pin 5).
Pinout Reference
GPIO | Pin # | Function | Connection |
| GPIO 4 | Pin 7 | Temperature sensor data | DS18B20-yellow wire |
| GPIO 2 | Pin 3 | I2C SDA | LCD SDA |
| GPIO 3 | Pin 5 | I2C SCL | LCD SCL |
| 3.3V | Pin 1 | Nutrition | DS18B20-red wire |
| 5V | Pin 2 | Nutrition | LCD VCC |
| GND | Pin 6 | Earth (Ground) | DS18B20 and LCD |

Vorbereitung
Schritt 1: Erforderliche Bibliotheken installieren
Führen Sie die folgenden Befehle im Terminal aus, um die Bibliotheken für DS18B20 und LCD zu installieren:
sudo apt-get update
sudo apt-get install python3-pip
pip3 install RPLCDAktivieren Sie die 1-Wire-Schnittstelle für den DS18B20:
- Öffnen Sie das Konfigurationsmenü:
sudo raspi-config- Gehen Sie zu Schnittstellenoptionen > 1-Wire und schalten Sie es ein.< /span>
- Starten Sie den Raspberry Pi neu.
Überprüfen Sie, ob der DS18B20 erkannt wird:
ls /sys/bus/w1/devices/Sie würden eine Adresse wie 28-XXXXXXXXXXXX sehen. .
Python-code in Thonny
Schritt 1: Schreiben Sie Ihren Code
Öffnen Sie die Thonny Python IDE und geben Sie den folgenden Code ein:
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()
Schritt 2: Speichern Sie die Datei
Klicken Sie auf Datei > Speichern unter und benennen Sie die Datei lcd_temperature.py.
Schritt 3: Führen Sie das Skript aus
Klicken Sie oben in der Thonny-Benutzeroberfläche auf die grüne Schaltfläche Ausführen (▶).
Wie funktioniert es?
- DS18B20 Temperatursensor:
- Liest die Temperatur über das 1-Wire Protokoll und gibt den Wert in Grad Celsius zurück.
- LCD-Anzeige:
- Zeigt den Temperaturwert auf einem 16x2 LCD-Display an.
- Wiederholung:
- Das Programm liest und zeigt die Temperatur alle 2 Sekunden an.
Ergebnis
- Die Umgebungstemperatur wird kontinuierlich vom DS18B20 gelesen und auf dem LCD-Display angezeigt.
- Die Temperatur wird auch im Terminal angezeigt.
Experimentieren
- Fahrenheit hinzufügen:
- Passen Sie den Code an, um auch Fahrenheit anzuzeigen:
Python
Code kopieren
- Passen Sie den Code an, um auch Fahrenheit anzuzeigen:
- LED hinzufügen:
- Schalten Sie eine LED ein, wenn die Temperatur einen Schwellenwert überschreitet.
- Protokollierung:
- Protokollieren Sie die Temperatur zur weiteren Analyse in einer Datei:
with open("temp_log.txt", "a") as log:
log.write(f"{temp:.1f} °C\n")
