Manuell einstellbare Schleifbremse


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Raspi - Intern
(Datum, Uhrzeit, CPU-Temperatur)
Raspberry Pi, 4x20 LCD-Display, I2C-Bus


Die folgende Schaltung besteht aus vier Komponenten (wenn man Verdrahtungsmaterial außer Acht lässt). Neben Raspberry Pi (3B) müssen ein Display, I2C-Interface-Modul und ein Level-Konverter miteinander verdrahtet werden.

Raspi 3B

Raspberry Pi

Mit dem Display stehen für Anzeigezwecke insgesamt 80 Plätze für einzelne Zeichen zur Verfügung. Sie sind in vier Zeilen mit je 20 Plätzen unterteilt. Das Display gehört zu der Familie, die mit dem Controller HD44780 (oder kompatibel) ausgestattet ist. Der Controller leistet bei der Umsetzung der externen Befehle in lesbare Zeichen auf dem Display die meiste Arbeit. Die Displays mit diesem Controller sind weit verbreitet und in unterschiedlichsten Ausführungen erhältlich.

Display 4x20

Display 4x20 Frontansicht

Das Display kann nicht direkt an den I2C-Bus angeschlossen werden. Doch das stellt kein besonders großes Problem dar. Es gibt auf dem Markt viele Schnittstelle-Module, die das Problem erledigen. Die Einbindung eines solchen Moduls erfolgt ganz problemlos. Das Display verfügt über 16 Anschlüsse. Die Interface-Module, die extra dafür entwickelt wurden, ebenfalls. Das Modul wird problemlos direkt an das Display angelötet. Auf dem Modul sitzt der Chip PCF8574T, der das Display steuert und I2C-Schnittstelle zur Verfügung stellt, ein Jumper für Hintergrundbeleuchtung und ein Poti, mit dem der Kontrast des Displays eingestellt werden kann. Ein fertiges Gespann, bestehend aus dem Display und dem Modul, sieht man am folgenden Bild:

Interface Modul

Display mit angelötetem Interface Modul FC-113

Der Aufwand lohnt sich. Mit dem kleinen Modul werden lediglich zwei Verbindungen benötigt, um eine Kommunikation zwischen Display und Raspberry Pi herzustellen. Sonst muss man sechs GPIOs aufopfern: eine ganze Menge.
Zwischen Raspberry Pi und dem Interface-Modul findet zusätzlich noch eine Pegelanpassung statt. Raspberry Pi arbeitet mit 3,3V, Display mit dem Modul mit 5V. Damit es zu keiner Beschädigung des kleinen Computers kommt, ist eine Pegelanpassung immer empfehlenswert.

Level Konverter_4_kanal

Level Konverter 4-Kanal

Die Verdrahtung, da nur wenige Verbindungen nötig sind, ist schnell gemacht. Der dazugehörige Schaltplan ist auf der folgenden Abbildung zu sehen:

Schaltplan

Schaltplan

Testschaltung auf einem Steckbrett:

Testschaltung

Testschaltung

Das Programm

Die Aufgabe der Schaltung ist es, auf dem Display das aktuelle Datum, Uhrzeit und die CPU-Temperatur anzuzeigen. Bevor man mit Erstellung eines passenden Programms beginnt, müssen bestimmte Voraussetzungen erfüllt werden:
1. Auf dem Raspberry Pi muss der I2C-Bus aktiviert werden.

I2C aktivieren und testen

2. Im Programm wird die Bibliothek RPLCD verwendet. Sie muss installiert werden.
Infos unter https://pypi.org/project/RPLCD/
3. Mit "sudo apt install python-smbus" und "sudo pip install smbus2" können die smbus-Pakete installiert werden.

Das Programm besteht grundsätzlich aus drei Schritten. Im ersten Schritt wird das aktuelle Systemdatum ermittelt, im zweiten Schritt die Uhrzeit. Beides geschieht mit dem Befehl "time.strftime". Im dritten Schritt wir die aktuelle CPU Temperatur ausgelesen. Hier wird Datei "/sys/class/thermal/thermal_zone0/temp" zum Lesen geöffnet und anschließend wieder geschlossen. Es werden dabei drei erste Zeichen ausgelesen. Damit steht uns, gespeichert in der Variable "Temperatur", die aktuelle Temperatur mit einer Stelle nach Komma zur Verfügung. Nach jedem Schritt wird die Funktion "Anzeige" aufgerufen. Beim Aufruf wird der Funktion die gewünschte Zeile, Startposition des ersten Zeichens und der Text, der ausgegeben werden soll, übergeben. Nachdem alle Werte im Display auf dem richtigen Platz stehen, wiederholt sich der Vorgang.

Das Programm:


# ------------------------------------------------------------
# Raspi - Intern
# Anzeige von Datum, Uhrzeit und CPU-Temp.
# Mit Lcd_Display 4x20, I2C-Bus
# Raspberry Pi 3B, Python 3
# ------------------------------------------------------------
from RPLCD.i2c import CharLCD
import time

lcd=CharLCD('PCF8574',0x27)

# UUNTERPROGRAMM ANZEIGE ---------------------
def Anzeige(Zeile, PosStart, Text):
    for CharNr in range (0, len(Text)):
        Ausgabe = Text [CharNr:CharNr + 1] + ' '
        Pos = PosStart + CharNr - 2
        for PosAkt in range (19, Pos, -1):
            lcd.cursor_pos =(Zeile, PosAkt)
            lcd.write_string(Ausgabe)
            if Ausgabe [0:1] == '*':
                lcd.cursor_pos =(Zeile, PosAkt)
                lcd.write(0xDF)
            time.sleep(0.2)

# HAUPTPROGRAMM ------------------------------
lcd.clear()
lcd.cursor_pos =(0,0)
lcd.write_string('--- Raspi Intern ---')
tempData = "/sys/class/thermal/thermal_zone0/temp"

while True:
    time.sleep(2)
    for i in range(3):
        if i == 0:                          # DATUM 
            Text=time.strftime("%d.%b.%y")
            PosStart = 6
            Anzeige (i+1, PosStart, Text)
        if i == 1:                          # UHRZEIT 
            Text=time.strftime("%H:%M")
            PosStart = 8
            Anzeige (i+1, PosStart, Text)
        if i == 2:                          # CPU Temperatur 
            Datei = open(tempData, "r")
            Temperatur = Datei.readline(3)
            Datei.close()
            Text = Temperatur[0:2] + ',' + Temperatur[2:3] + ' *C'
            PosStart = 7
            Anzeige (i+1, PosStart, Text)
# ----------------------------------------------------------
        

Kurzvideo

Kurzvideo


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz