ESP — DHT Messdaten auf Waveshare 1,54 Zoll E‑Ink anzeigen





Ziele des Projekts

Die Mess­dat­en eines DHT-Sen­sors auf einem 1,54 Zoll E‑Ink-Dis­play darstellen

  • als Text
  • als Text und dem Zeit­punkt der let­zten Mes­sung
  • als Text mit Sym­bol­en und dem Zeit­punkt der let­zten Mes­sung

So sieht es aus:

Anwen­dungs­beispiel

Die Hardware

Als Elek­tro­n­is­ches Papi­er (E‑Pa­per/-E-Ink) wird die Tech­nik beze­ich­net das Ausse­hen von Tinte auf Papi­er nachzu­bilden. Die Anzeige leuchtet nicht selb­st, der Inhalt wird solange dargestellt bis eine Änderung erfol­gt. Die Anzeige ist träge, ein Wech­sel des Inhalts dauert mehrere Sekun­den, schnelle Bild­wech­sel sind nicht möglich.
Das Wave­share 1,54 Zoll E‑Ink Dis­play hat eine Auflö­sung von 200x200 Pix­eln und kann die Far­ben weiß, rot und schwarz darstellen.

Die Sen­soren DHT11 und DHT22 messen Tem­per­atur und Luft­feuchtigkeit

Vergleich DHT11/DHT22

DHT11DHT22
Mess­bere­ich Tem­per­atur0 — +50°C-40 — +80°C
Auflö­sung Tem­per­atur1°C0,1°C
Mess­ge­nauigkeit Tem­per­atur± 2 °C± 0,5 °C
Mess­bere­ich Luft­feuchtigkeit20 — 90%0 — 100%
Auflö­sung Luft­feuchtigkeit1%0,1%
Mess­ge­nauigkeit Luft­feuchtigkeit± 5 %± 2 %

Benötigte Bauteile

  • ESP32-Mikro­con­troller oder ESP8266-Mikro­con­troller
  • DHT11/DHT22 Tem­per­atursen­soren
  • Wave­share 1,54 Zoll E‑Ink Dis­play
  • Leitungs­drähte

Konfiguration der Mikrocontroller

Benötigte Bibliotheken

Instal­liere auch die benötigten zusät­zlichen Bib­lio­theken

Anschluss des Displays

Die Pins CLK, DIN (COPI) und CS sind durch den SPI-Bus des jew­eili­gen Mikro­con­trollers fest­gelegt, die anderen Pins kön­nen frei vergeben wer­den.

PinESP32 WROOMNodeM­CUESP32-C6Arduino Nano ESP32
BUSY4D111D9
RST22D22D7
DC23D63D6
CS5 (SPI)D8 (SPI)18 (SPI)D10 (SPI)
CLK18 (SPI)D5 (SPI)21 (SPI)D13 (SPI)
DIN23 (SPI)D7 (SPI)19 (SPI)D11 (SPI)
GNDGNDGNDGNDGND
VCC3,3V3,3V3,3V3,3V

Grafikfunktionen

Funktionen der Bibliothek GxEPD2

Schlüs­sel­wortPara­me­terAktion
width();Bild­schirm­bre­ite fest­stellen
height();Bild­schirmhöhe fest­stellen
init();Dis­play starten
setRotation(Richtung);Rich­tung = 0 → nicht drehen
Rich­tung = 1 → 90° drehen
Rich­tung = 2 → 180° drehen
Rich­tung = 3 → 270 ° drehen
Bild­schirm aus­richt­en
fillScreen(Farbe);Stan­dard­far­ben:
GxEPD_WHITE
GxEPD_BLACK
GxEPD_RED
Bild­schirmhin­ter­grund
set­Full­Win­dow();gesamten Bild­schirm nutzen
setPartialWindow(StartX, Star­tY, EndeX, EndeY);Teil des Bild­schirm nutzen
drawPixel(x, y, Farbe);einzel­nen Pix­el zeich­nen
drawLine(StartX, Star­tY, EndeX, EndeY, Farbe);Lin­ie zeich­nen
drawFastHLine(StartX, Star­tY, Länge, Farbe);hor­i­zon­tale Lin­ie zeich­nen
drawFastVLine(StartX, Star­tY, Länge, Farbe);ver­tikale Lin­ie zeich­nen
drawRect(StartX, Star­tY„ Bre­ite, Höhe, Farbe);Rechteck zeich­nen
drawRoundRect(StartX, Star­tY, Bre­ite, Höhe, Eck­en­ra­dius, Farbe);abgerun­detes Rechteck zeich­nen
fillRect(StartX, Star­tY, Bre­ite, Höhe, Füll­farbe);aus­ge­fülltes Rechteck zeich­nen
drawCircle(MittelpunkX, Mit­telpunk­tY, Radius, Farbe);Kreis zeich­nen
fillCircle(MittelpunktX, Mit­telpunk­tY, Radius, Füll­farbe);Aus­ge­füll­ten Kreis zeich­nen
setCursor(x, y);Cur­sor set­zen
setTextSize(Textgröße);Textgröße bes­tim­men
setTextColor(Farbe);Text­farbe set­zen
print(“Text”); println(“Text”);Text schreiben
setTextWrap(true/false);false → Text fließt über den Rand des Dis­plays hin­aus
true → Text wird am Ende umge­brochen
Zeilenum­bruch
drawBitmap(x, y, Bitmap_Array, Bre­ite, Höhe, Farbe);Bitmap dart­sellen

Beispielprogramm

Das Pro­gramm zeigt

  • mit der inter­nen Funk­tion der Bib­lio­thek Text an
  • mit der Bib­lio­thek U8g2_for_Adafruit_GFX Text an
    Diese Bib­lio­thek ver­fügt über eine große Auswahl von Schriften in ver­schiede­nen Größen, sie kann im Gegen­satz zur inter­nen Textdarstel­lung auch Son­derze­ichen und Umlaute darstellen
  • Kreise, Lin­ien und Rechtecke
Text mit u8g2Kreisehor­i­zon­tale Lin­ienabgerun­dete Rechtecke

Du musst ab Zeile 10 den entsprechen­den Mikro­con­troller auswählen.

Bitmaps darstellen

Array des Bitmaps erstellen

Bitmaps kön­nen nicht direkt auf dem Dis­play dargestellt wer­den, sie müssen als Array hexa­dez­i­maler Werte vor­liegen.
Wäh­le oder erstelle ein Bild mit den max­i­malen Maßen 200x200 Pix­eln. Das Online-Tool 🔗https://javl.github.io/image2cpp/ wan­delt das Bild in ein Array um.

Das Programm

Das erstellte Array muss in den Kopf des Pro­gramms einge­fügt wer­den.
draw­Bitmap zeigt das Bild an.
Du musst ab Zeile 8 den entsprechen­den Mikro­con­troller auswählen.

Teilbereiche des Bildschirms verwenden

Das Pro­gramm zeigt im set­up-Teil zunächst auf der linken Seite einen Text an. Im loop-Teil wird mit set­Par­tial­Win­dow ein Bild­schirm­bere­ich definiert. Dort wer­den die Bitmaps angezeigt, der linke Teil des Bild­schirms bleibt unverän­dert.

Du musst ab Zeile 9 den entsprechen­den Mikro­con­troller auswählen.

Anzeige der Messdaten als Text

Du musst in Zeile 9 den Pin des DHT-Sen­sors, in Zeile 13 den Typ des DHT-Sen­sors anpassen und ab Zeile 26 den passenden Mikro­con­troller auswählen.

Anzeige der Messdaten als Text und der mit WiFi ermittelten Zeit der letzten Messung

Du musst in Zei­le 16 den Pin des DHT-Sen­­sors, in Zei­le 20 den Typ des DHT-Sen­­sors anpas­sen und ab Zei­le 70 den pas­sen­den Mikro­con­trol­ler auswählen.
Die Zeit der let­zten Mes­sung wird erst nach dem ersten Durch­lauf (im Beispiel nach fünf Minuten) angezeigt.

Anzeige der Messdaten als Text, mit Symbolen und der mit WiFi ermittelten Zeit der letzten Messung

Du musst in Zei­le 16 den Pin des DHT-Sen­­sors, in Zei­le 20 den Typ des DHT-Sen­­sors anpas­sen und ab Zei­le 67 den pas­sen­den Mikro­con­trol­ler auswählen.


Quellen


Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen

Verwandte Anleitungen


Letzte Aktualisierung: Nov. 15, 2025 @ 19:29