Primal Display: Raspberry Pi LCD-Temperaturmonitor mit DHT11 bauen
Primal Display: Raspberry Pi LCD-Temperaturmonitor mit DHT11 bauen
Diese Anleitung zeigt, wie Sie ein 16x2 HD44780-kompatibles LCD an einen Raspberry Pi 3 anschließen und live Temperatur- und Luftfeuchtigkeitswerte eines DHT11-Sensors anzeigen. Die Anleitung deckt Hardware-Auswahl, Verkabelung (sowohl 4-Bit- als auch 8-Bit-Modus), benötigte Bibliotheken und ein vollständiges Python-Skript ab.
Hintergrund
Einführung
Ein LCD-Display ist eine vielseitige Ergänzung für jedes Raspberry-Pi-Projekt. Durch direktes Verdrahten eines HD44780-kompatiblen Bildschirms an die GPIO-Pins können Sie Sensordaten oder benutzerdefinierte Nachrichten anzeigen, ohne I2C- oder SPI-Adapter zu benötigen.
Hardware
- HD44780-kompatibles 16x2 LCD (Kosten < 10 €)
- Raspberry Pi 3 (oder neuer)
- DHT11 Temperatur-/Luftfeuchtigkeitssensor
- Micro-SD-Karte mit Raspbian OS
- 1–2 Potentiometer à 10 kΩ (Kontrast/Helligkeit)
- Steckplatine, Jumper-Kabel und 5-V-Netzteil
Wir nutzen sechs GPIO-Pins für das LCD; diese direkte Methode hält den seriellen Port des Pi frei und eliminiert die Notwendigkeit von I2C-Treibern.
Verkabelung
Zwei Verkabelungsoptionen stehen zur Verfügung:
- 4-Bit-Modus – nutzt 4 Datenleitungen, ein Potentiometer für Kontrast.
- 8-Bit-Modus – nutzt 8 Datenleitungen, zwei Potentiometer (Kontrast und Helligkeit).
Im 4-Bit-Modus wird das 8-Bit-Befehlsbyte in zwei 4-Bit-Hälften aufgeteilt, sodass der Datenbus halb so breit ist. In der Praxis maskiert die interne Verarbeitungszeit des LCD jeden Geschwindigkeitsvorteil des 8-Bit-Modus, daher wählen Sie basierend auf verfügbaren Pins.
LCD-Pin-Belegung (4-Bit)
- Pin 1 (GND) – Masse
- Pin 2 (+5 V) – Stromversorgung
- Pin 3 (Vo) – Potentiometer-Schleifer (Kontrast)
- Pin 4 (RS) – GPIO 37
- Pin 5 (RW) – Masse (nur Schreiben)
- Pin 6 (EN) – GPIO 35
- Pin 7–10 – ungenutzt
- Pin 11 (D4) – GPIO 33
- Pin 12 (D5) – GPIO 31
- Pin 13 (D6) – GPIO 29
- Pin 14 (D7) – GPIO 23
- Pin 15 (LED+) – +5 V
- Pin 16 (LED−) – Masse
LCD-Pin-Belegung (8-Bit)
- Pin 1 – Masse
- Pin 2 – +5 V
- Pin 3 – Potentiometer-Schleifer (Kontrast)
- Pin 4 – GPIO 37 (RS)
- Pin 5 – Masse (RW)
- Pin 6 – GPIO 35 (EN)
- Pin 7 (D0) – GPIO 40
- Pin 8 (D1) – GPIO 38
- Pin 9 (D2) – GPIO 36
- Pin 10 (D3) – GPIO 32
- Pin 11 (D4) – GPIO 33
- Pin 12 (D5) – GPIO 31
- Pin 13 (D6) – GPIO 29
- Pin 14 (D7) – GPIO 23
- Pin 15 – +5 V
- Pin 16 – Masse
DHT11-Sensor-Verkabelung
Der DHT11 nutzt drei Pins: VCC, Data, GND. VCC an 3,3 V (Pin 1) anschließen; bei instabilen Messwerten auf 5 V (Pin 2) wechseln. Data-Pin an GPIO 18 (physikalischer Pin 12) verdrahten. Ein Pull-Up-Widerstand (4,7 kΩ) zwischen VCC und Data wird empfohlen.
Benötigte Bibliotheken
Stellen Sie sicher, dass Build-Tools und Python-Header vorhanden sind:
sudo apt-get update
sudo apt-get install build-essential python-dev
RPLCD für LCD-Steuerung installieren:
sudo apt-get install python-pip
sudo pip install RPLCD
Adafruit DHT11 Library von GitHub installieren:
sudo apt-get install git
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python setup.py install
Python-Skript (8-Bit)
Datei temperature.py mit Ihrem bevorzugten Editor (z. B. nano) erstellen:
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
import Adafruit_DHT
from RPLCD import CharLCD
GPIO.cleanup()
# LCD-Konfiguration – 8-Bit-Modus
lcd = CharLCD(
numbering_mode=GPIO.BOARD,
cols=16,
rows=2,
pin_rs=37,
pin_e=35,
pins_data=[40, 38, 36, 32, 33, 31, 29, 23]
)
while True:
humidity, temperature = Adafruit_DHT.read_retry(11, 18)
if humidity is None or temperature is None:
print('Failed to retrieve data from sensor')
continue
print(f'Temp: {temperature:.1f} C Humidity: {humidity:.1f} %')
lcd.clear()
lcd.cursor_pos = (0, 0)
lcd.write_string(f'Temp: {int(temperature)} C')
lcd.cursor_pos = (1, 0)
lcd.write_string(f'Humidity: {int(humidity)} %')
time.sleep(5)
Skript ausführbar machen und ausführen:
chmod +x temperature.py
./temperature.py
4-Bit-Modus Alternative
Ersetzen Sie die pins_data-Liste durch vier GPIO-Pins (z. B. [33, 31, 29, 23]) und passen Sie die LCD-Initialisierung entsprechend an.
Zusammenfassung
Mit diesen Schritten haben Sie ein voll funktionsfähiges LCD-Display, das Echtzeit-Temperatur und Luftfeuchtigkeit anzeigt – perfekt für Wetterstationen, IoT-Dashboards oder Bildungsprojekte.
Weiterführende Informationen
Für tiefere Einblicke in LCD-Treiber und erweiterte Konfiguration erkunden Sie das Adafruit DHT Repository und die RPLCD Dokumentation.
Herstellungsprozess
- Das Nudelholz: Von etruskischen Ursprüngen bis zur modernen Handwerkskunst
- Die Entwicklung und Handwerkskunst moderner Bowling-Pins
- Flüssigkristall-Display (LCD): Technologie, Fertigung und Zukunftsaussichten
- Pin Control Subsystem für Linux Device Driver meistern
- Drone Pi: Dual-Mode Multiwii & Raspberry Pi Quadrocopter für Smartphone- und Fernsteuerung
- Arduino LCD-Projekt: 16×2 Display mit Tastern & Widerständen selbst bauen
- Tragbare Braille-Displays verstehen: Wichtige Einblicke & Innovationen
- 74LS74 Dual D-Flip-Flop: Referenz, Pinout & Wahrheitstabelle
- Atlas Copco stellt NGP+ Stickstoffgenerator auf der WIN Expo 2017 vor
- Atlas Copco auf NPE2018: Hightech für Kunststofffertigung