LCD1602

Mit dem LCD1602 wollen wir unseren Wettersensor erweitern, um die aktuellen Werte direkt anzeigen zu können.

Waveshare LCD1602

Das LCD1602 ist ein LC (Liquid Crystal) Display, das 16 Zeichen in zwei Zeilen ausgeben kann. Von Waveshare gibt es eine Version mit bereits montierter Treiberplatine, die nur noch die Anschlüsse an den I²C Bus zur Verfügung stellt (Datenblatt). Dies müsstest du sonst selbst anlöten. Der mitgelieferte Kabelsatz ist wie folgt farbcodiert

  • SDA – gelb
  • SCL – blau
  • GND – violett
  • VCC – grün

Warum Waveshare keine einheitlichen Farben verwendet, ist mir schleierhaft. Sowas sorgt nur für Verwirrung und öffnet Fehlern Tor und Tür.

Material

Die Materialliste findest du im Vorgängerpost. Zusätzlich verwende ich noch ein Breadboard als Mehrfachsteckdose und Stiftleisten , um das Display und den BME280 gleichzeitig an den Bus anzuschließen. Dazu brauchst du noch fünf Jumperkabel (f-m), um den Raspberry Pi mit dem Breadboard zu verbinden.Die Farbgebung dieser Jumper orientiert sich bei mir an den Farben der Kabel des BME280.

Schaltungsaufbau

Raspberry Pi 4B mit BME280 Wettersensor und LCD1602 Display
Raspberry Pi 4B mit BME280 Wettersensor und LCD1602 Display

Da Sowohl das Breakout des BME280 als auch das des LC-Displays Anschlüsse mit f-Steckern haben, habe ich die von beiden benötigten Pins von zwei Stiftleisten abgegriffen. Der Fallstrick ist hier, das beim BME280 SCL gelb ist, beim Display aber blau und umgekehrt!

Testen der Schaltung

Nach der Verkabelung (ich weiß, das sieht etwas chaotisch aus) startest du den Raspi und scannst mit i2cdetect -y 1 den I²C Bus. Das Ergebnis sollte dann so aussehen:

Die Ausgabe von i2cdetect zeigt den BME280 mit 0x3e und das LCD mit 0x76 am Bus.
Die Ausgabe von i2cdetect zeigt den BME280 mit 0x76 und das LCD mit 0x3e am Bus.

Wieder hat der BME280 die Adresse 0x76. Das LCD1602 ist jetzt mit der Adresse 0x3e parallel am I²C dazugekommen.

Python

Jetzt geht’s darum, mit Python etwas auf dem Display anzuzeigen. Dazu benötigen wir erstmal das richtige Python-Modul. Dies kannst du hier herunterladen.Nachdem du das ZIP-Archiv entpackt hast, findest du eine Datei LCD1602.py vor, die das Modul repräsentiert, dass wir für das Display benötigen. Kopiere es in das Verzeichnis, in dem auch unser eigenes Programm liegt.

Das LCD1062 zeigt die Werte für Temperatur, Druck und Feuchtigkeit des BME280 Sensors an.
Das LCD1062 zeigt die Werte für Temperatur, Druck und Feuchtigkeit des BME280 Sensors an.

Aus dem Modul sind für uns hier zwei Methoden wichtig. setCursor(x,y) setzt den Cursor auf Zeile x und Spalte y, die Werte sind Null-basiert, also x=0 für die erste Zeile und 1 für die zweite. Genauso wird die erste Position einer Zeile mit 0 adressiert.

Mit der Methode printout(str) wird der String str ab der aktuellen Cursorposition ausgegeben.

Jetzt erweitern wir unser Programm vom Vorgänger-Post um einen Methode print_weather().

def print_weather(temperature, humidity, pressure):
  lcd.setCursor(0, 0)
  lcd.printout('T:{:5.1f}'.format(temperature))
  lcd.printout(' D:{:5.1f}'.format(pressure))

  lcd.setCursor(0, 1)
  lcd.printout('F:{:5.2f}%'.format(humidity))

Die Methode schreibt die Messwerte aufs Display, Temperatur und Druck in die erste Zeile, den Wert für die Feuchtigkeit in die zweite. Das Ergebnis siehst du im Foto oben.

Der Aufruf der Methode geschieht in der Arbeitsschleife gleich nach dem Auslesen der Sensorwerte und vor dem Schreiben in die Datenbank.

print_weather(temperature,humidity, pressure)

Das vollständige Programm wdisp.py findest du im GIT-Repository.

Du kannst jetzt Sensor, Raspi und Display in ein Kunststoff Gehäuse schrauben und hast damit eine 1A Wetterstation. Allerdings wäre dazu ein Pico vermutlich besser geeignet, wegen des Stromverbrauchs.

komplett montiert mit Raspberry Pi 4B, BME280 und LCD1602 und jeder Menge Kabel
komplett montiert mit Raspberry Pi 4B, BME280 und LCD1602 und jeder Menge Kabel

Schreibe einen Kommentar

WordPress Cookie Hinweis von Real Cookie Banner