In dem Betrag Raspberry Pi - Adafruit Mini PiTFT 135x240 Color TFT Add-on wurde das Display bereits näher beschrieben. In diesem Beitrag möchte ich das Display als Erweiterungsoption für die Raspberry Pi - zero : Wetterstation incl. OLED-Display vorstellen. Zur Anzeige von WLAN-, Sensor- und Speicherplatzinformationen. Zusätzlich kann direkt ein Upload des Webcam Bildes und ein Reboot per Tastendruck erfolgen.
Hinweis: Als Basis wurden die Beispiele von Adafruit für das Display verwendet.
Im ersten Schritt wurden die Befehle/Funktionen definiert, welche den jeweiligen Status anzeigen sollen oder per Buttondruck aufgerufen werden sollen.
cmdWlanSsid = "iwconfig wlan0 | grep ESSID | awk -F: '{print $2}'"
cmdHostName = "hostname -I | cut -d' ' -f1"
cmdCam = "vcgencmd get_camera | cut -d' ' -f2" #supported=1 detected=1 => OK
cmdDisk = 'df -h | awk \'$NF=="/"{printf "Disk: %d/%d GB %s", $3,$2,$5}\''
cmdWebcam = '/home/pi/webcam/webcam.sh'
cmdReboot = 'sudo reboot'
def is_connected():
try:
# connect to the host -- tells us if the host is actually
# reachable
socket.create_connection(("www.google.com", 80))
return "online"
except OSError:
pass
return "offline"
# Temperatursensor ermitteln
SensorPfad = "/sys/bus/w1/devices/" # Pfad
SensorNames = open("/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves" ,"r")
Sensor = SensorNames.readline()
if Sensor:
SensorNames.close()
Anschließend werden diese Informationen an das Display in einer "while" Schleife gesendet.
while True:
# Draw a black filled box to clear the image.
draw.rectangle((0, 0, width, height), outline=0, fill=(0, 0, 0))
#Show WLAN
WLAN = subprocess.check_output(cmdWlanSsid, shell=True).decode("utf-8")
...
# Write lines of text.
y = top
draw.text((x, y), WLAN, font=font, fill="#FFFFFF")
...
# Display image.
display.image(image, rotation)
time.sleep(0.1)
Mit Hilfe von buttonA = digitalio.DigitalInOut(board.D23) kann das Drücken der Taste abgefangen werden.
So erfolgt beim Drücken des "Button A" ein "Upload des Webcam Bildes" mit dem bekannten Script (https://sebastianhemel.blogspot.com/2019/11/raspberry-pi-camera-modul-v21.html) und beim Drücken des "Button B" die Anzeige eines "Copyright". Werden beiden Tasten gleichzeitig gedrückt, erfolgt ein Reboot des Pi.
...
if buttonB.value and not buttonA.value: # just button A pressed
...
y = top
text = "Webcam Upload..."
draw.text((x, y), text, font=font, fill="#FFFFFF")
y += font.getsize(text)[1]
# Display image.
display.image(image, rotation)
subprocess.check_output(cmdWebcam, shell=True).decode("utf-8")
draw.text((x, y), "...finished!", font=font, fill="#FFFFFF")
...
Anbei das komplette Python Script (rgb_display_stats-picture.py), welches man am Besten direkt beim Booten starten sollte.
sudo nano /etc/rc.local
Und die folgende Zeile hinzufügen:
sudo python3 /home/pi/rgb_display_stats-picture.py &
vor dem "exit 0" in der Datei.