280 lines
3.4 KiB
Markdown
280 lines
3.4 KiB
Markdown
# Speedtest_Display_Rasberry_Pi
|
|
|
|
<img src="IMG_0144.jpeg" width="500">
|
|
|
|
|
|
## 1. Raspberry Pi OS installieren
|
|
|
|
Empfohlen:
|
|
|
|
- Raspberry Pi OS Lite (64 Bit)
|
|
|
|
Mit Raspberry Pi Imager auf die SD-Karte schreiben.
|
|
|
|
Während des Flashens direkt konfigurieren:
|
|
|
|
- WLAN
|
|
- SSH aktivieren
|
|
- Hostname setzen
|
|
|
|
---
|
|
|
|
## 2. System aktualisieren
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt full-upgrade -y
|
|
sudo reboot
|
|
```
|
|
|
|
---
|
|
|
|
## 3. SPI aktivieren
|
|
|
|
```bash
|
|
sudo raspi-config
|
|
```
|
|
|
|
Dann:
|
|
|
|
```text
|
|
Interface Options
|
|
→ SPI
|
|
→ Enable
|
|
```
|
|
|
|
Neustarten:
|
|
|
|
```bash
|
|
sudo reboot
|
|
```
|
|
|
|
---
|
|
|
|
## 4. Prüfen ob SPI aktiv ist
|
|
|
|
```bash
|
|
ls /dev/spi*
|
|
```
|
|
|
|
Erwartet:
|
|
|
|
```text
|
|
/dev/spidev0.0
|
|
/dev/spidev0.1
|
|
```
|
|
|
|
---
|
|
|
|
## 5. TFT-Display aktivieren
|
|
|
|
Datei öffnen:
|
|
|
|
```bash
|
|
sudo nano /boot/firmware/config.txt
|
|
```
|
|
|
|
Ganz unten ergänzen:
|
|
|
|
```ini
|
|
dtparam=spi=on
|
|
|
|
dtoverlay=piscreen,speed=16000000,rotate=270
|
|
```
|
|
|
|
---
|
|
|
|
## 6. Framebuffer aktivieren
|
|
|
|
Neustart:
|
|
|
|
```bash
|
|
sudo reboot
|
|
```
|
|
|
|
Danach prüfen:
|
|
|
|
```bash
|
|
ls /dev/fb*
|
|
```
|
|
|
|
Erwartet:
|
|
|
|
```text
|
|
/dev/fb0
|
|
```
|
|
|
|
---
|
|
|
|
## 7. Testbild auf Framebuffer
|
|
|
|
```bash
|
|
sudo apt install -y fbi
|
|
```
|
|
|
|
Test:
|
|
|
|
```bash
|
|
sudo fbi -T 1 -d /dev/fb0 -noverbose test.jpg
|
|
```
|
|
|
|
---
|
|
|
|
## 8. Python installieren
|
|
|
|
```bash
|
|
sudo apt install -y python3 python3-pip python3-pil python3-numpy
|
|
```
|
|
|
|
---
|
|
|
|
## 9. DejaVu Fonts installieren
|
|
|
|
```bash
|
|
sudo apt install -y fonts-dejavu-core
|
|
```
|
|
|
|
Prüfen:
|
|
|
|
```bash
|
|
ls /usr/share/fonts/truetype/dejavu/
|
|
```
|
|
|
|
---
|
|
|
|
## 10. InfluxDB Python Client installieren
|
|
|
|
```bash
|
|
pip3 install --break-system-packages influxdb-client
|
|
```
|
|
|
|
---
|
|
|
|
## 11. Python-Datei anlegen
|
|
|
|
```bash
|
|
nano /home/hubobel/down.py
|
|
```
|
|
|
|
Python-Code einfügen und speichern.
|
|
|
|
---
|
|
|
|
## 12. Testlauf
|
|
|
|
```bash
|
|
python3 /home/hubobel/down.py
|
|
```
|
|
|
|
Jetzt sollte sichtbar sein:
|
|
|
|
- Downloadrate
|
|
- Uploadrate
|
|
- Ping
|
|
- WLAN-IP
|
|
- WAN-IP
|
|
- Verlaufsgrafik
|
|
|
|
---
|
|
|
|
## 13. systemd Service anlegen
|
|
|
|
```bash
|
|
sudo nano /etc/systemd/system/down.service
|
|
```
|
|
|
|
Inhalt:
|
|
|
|
```ini
|
|
[Unit]
|
|
Description=Framebuffer Speedtest Display
|
|
After=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=hubobel
|
|
WorkingDirectory=/home/hubobel
|
|
ExecStart=/usr/bin/python3 /home/hubobel/down.py
|
|
Restart=always
|
|
RestartSec=5
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
---
|
|
|
|
## 14. Service aktivieren
|
|
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable down.service
|
|
sudo systemctl start down.service
|
|
```
|
|
|
|
---
|
|
|
|
## 15. Status prüfen
|
|
|
|
```bash
|
|
systemctl status down.service
|
|
```
|
|
|
|
Live-Log:
|
|
|
|
```bash
|
|
journalctl -u down.service -f
|
|
```
|
|
|
|
---
|
|
|
|
## 16. Nach Reboot testen
|
|
|
|
```bash
|
|
sudo reboot
|
|
```
|
|
|
|
---
|
|
|
|
# Ergebnis
|
|
|
|
Das System läuft danach:
|
|
|
|
- ohne Desktop
|
|
- direkt auf `/dev/fb0`
|
|
- rebootfest über systemd
|
|
- ressourcenschonend
|
|
- ideal für Embedded-Statusanzeigen
|
|
|
|
|
|
## Dashboard-Umschaltung per GPIO-Taster
|
|
|
|
Das Display unterstützt drei unterschiedliche Dashboards, die direkt über GPIO-Taster am Raspberry Pi ausgewählt werden können.
|
|
|
|
### Verwendete GPIOs
|
|
|
|
| Funktion | GPIO | Pin |
|
|
|---|---|---|
|
|
| Dashboard 2 | GPIO5 | Pin 29 |
|
|
| Dashboard 3 | GPIO21 | Pin 40 |
|
|
| Masse (GND) | — | Pin 39 |
|
|
|
|
Die Taster werden jeweils zwischen GPIO und GND angeschlossen.
|
|
Die internen Pull-Up-Widerstände des Raspberry Pi werden per `gpiozero` verwendet, daher sind keine zusätzlichen Widerstände notwendig.
|
|
<img src="Schema_GPIO.png" width="500">
|
|
|
|
### Logik
|
|
|
|
| Zustand | Anzeige |
|
|
|---|---|
|
|
| kein Taster aktiv | Dashboard 1 |
|
|
| GPIO5 gegen GND | Dashboard 2 |
|
|
| GPIO21 gegen GND | Dashboard 3 |
|
|
|
|
)
|
|
|
|
SWITCH2 = Button(
|
|
21,
|
|
pull_up=True,
|
|
bounce_time=0.1
|
|
)
|