Benutzer-Werkzeuge

Webseiten-Werkzeuge


thoschwiki:raspberrypi:wavesharepoehatb

Waveshare PoE HAT (B)

Die Seite ist im Aufbau.

Das Waveshare PoE HAT (B) ist eine PoE-Hardwareerweiterung für den Raspberry Pi 3B+ und 4B, die eine Stromversorgung über das Netzwerkkabel ermöglichst. Neben der Hardware für die Spannungswandlung ist ein Lüfter und eine OLED-Display mit 128×32 Pixel vorhanden.

Installation der Software

Für die Steuerung des Lüfters und der Displayanzeige gibt es Programme in C und Python. Ich habe mich für die Variante in Python(3) entschieden, weil ich diese Sprache am ehesten verstehe und ggf. Änderungen bzw. Ergänzungen vornehmen kann.

Installation der notwendigen Pakete:

sudo apt-get install python3-pip python3-pil python3-numpy
sudo pip3 install RPi.GPIO smbus
In der Beschreibung zum Beispiel-Code (python/readme_EN.txt im Archiv) wird das Paket numpy* nicht als Abhängigkeit genannt. Ohne das Paket bricht das Script jedoch mit einem entsprechenden Fehler ab.
Die Installation des Paketes numpy über pip3 löst nicht alle Abhängigkeiten auf, sodass es notwendig ist, stattdessen das Pakte python3-nunpy über apt zu installieren.1)

Als nächster Vorbereitungsschritt ist das I²C-Interface zu aktivieren (sudo raspi-config > Interface Options > I2C).

Anschließend ist das Archiv mit dem Beispiel-Code herunterzuladen und zu installieren.

cd
wget https://www.waveshare.com/w/upload/b/b7/PoE_HAT_B_code.7z
7z x PoE_HAT_B_code.7z python -r -o./PoE_HAT_B_code   # Nur Unterverzeichnis 'python' entpacken
cd PoE_HAT_B_code
mv python/* .                                         # Inhalt von 'python' eine Ebene nach oben bewegen
rmdir python                                          # Nun leeres Verzeichnis 'python' löschen

Das Script zur Steuerung von Display und Lüfter findet sich unter ~/PoE_HAT_B_code/examples.

Nutzung der Software

Das Script wird über die Konsole als Parameter des Python-Interpreters aufgerufen und verfügt über keine Parameter:

python3 ~/PoE_HAT_B_code/examples/main.py

Abweichend von der Waveshare-Dokumentation ist bei mir ein Aufruf mit sudo nicht notwendig.

Die Temperatur, bei der der Lüfter aktiviert wird, ist im Quelltext kodiert. Sie kann durch eine Änderung der Zeile 20 des Scriptes main.py angepasst werden. Hierfür ist der Wert in der Klammer des Funktionsaufrufes anzuapssen (Default 37°C):

        POE.POE_HAT_Display(37)

Der Lüfter wird aktiviert, wenn die vorgegebene Temperatur erreicht wird. Sobald die Temperatur auf zwei Grad unter der Grenztemperatur fällt, wird der Lüfter gestoppt.

Das Script kann mit <Ctrl>+<C> unterbrochen werden. Der Lüfter wird dann sofort gestoppt. Die Anzeige auf dem Display bleibt unverändert2).

  • Wird das Script auf anderen Weg gestoppt (z.B. mit kill oder beim Runterfahren des Systems), dann verbleibt auch der Lüfter ist aktuellen Zustand.
  • Auch wenn das System runtergefahren ist, verbleiben Display und Lüfter im vorherigen Zustand, solange die Stromversorgung nicht unterbrochen wird.
  • Sofern die Stromversorgung nicht unterbrochen wird, ändert auch ein Reboot nichts am Zustand von Display und Lüfter, sofern beim Systemstart das Script nicht wieder automatisch gestartet wird.

Mit dem folgenden Aufruf kann das Script gestartet und im Hintergrund ausgeführt werden:

python3 ~/PoE_HAT_B_code/examples/main.py &

Um das Script beim Systemstart automatisch aufzurufen, empfiehlt Waveshare den Aufruf als vorletzte Zeile in die rc.local aufzunehmen:

sudo nano /etc/rc.local
fi
 
python3 /home/thosch/PoE_HAT_B_code/examples/main.py &
 
exit 0

Angepasste Software

Ich plane die Software an einigen Stellen in Funktion und Umsetzung der Programmierung anzupassen.

Insbesondere das Verhalten beim Beenden des Scriptes sollte verbessert werden:

  • Auf dem Display sollte klar erkennbar sein, dass die Steuerung deaktiviert ist.
  • Der Lüfter sollte in einen für das Gesamtsystem sicheren, d.h. aktivierten Zustand versetzt werden, um Überhitzungen zu vermeiden.

Quellen

1)
Alternativ kann auch der Beschreibung im Waveshare-Wiki gefolgt werden, wobei diese von der Abfolge her unstrukturiert ist, das Paket libtiff nicht (mehr?) existiert und auch nicht notwendig ist und das nicht aufgeführte Python-Paket smbus zu installieren ist.
2)
Dieses Verhalten ist irritierend, weil man nicht erkennen kann, ob die Lüfterkontrolle noch aktiv ist.
thoschwiki/raspberrypi/wavesharepoehatb.txt · Zuletzt geändert: 24.12.2020 10:16 von thosch