Virtuelles Multifunktionsdisplay für den Raspberry Pi. Ein SocketCAN-Interface für NMEA2000 sowie ein Luftdrucksensor wird empfohlen.
Go to file
Thomas Hooge 6214d08174 GPS-Code von NMEA0183 getrennt, NMEA0183 weiterprogrammiert 2025-07-05 10:12:57 +02:00
fonts Erstveröffentlichung Weihnachten 2024 2024-12-24 09:36:04 +01:00
images Seitenstil an aktuelles OBP60 angenähert 2025-07-03 15:20:23 +02:00
pages Platzhalter für zukünftige Seiten erstellt 2025-07-04 14:44:11 +02:00
.gitignore Programmname "obp60v" umgesetzt. Konfigurationshandling verbessert 2025-07-05 08:05:05 +02:00
INSTALL Programmname "obp60v" umgesetzt. Konfigurationshandling verbessert 2025-07-05 08:05:05 +02:00
README README erweitert 2025-07-03 08:23:05 +02:00
TODO Einige kleine Fixes und Ergänzungen 2024-12-24 13:23:55 +01:00
fullscreen.svg Fixes für Vollbildmodus und Entwicklungssystem ohne N2K 2025-07-01 14:37:54 +02:00
obp60.svg Erstveröffentlichung Weihnachten 2024 2024-12-24 09:36:04 +01:00
obp60_48x48.png Einige kleine Fixes und Ergänzungen 2024-12-24 13:23:55 +01:00
obp60v.conf-sample Schnittstellenverwaltung für u.a NMEA0183 verbessert 2025-07-05 09:19:14 +02:00
obp60v.py GPS-Code von NMEA0183 getrennt, NMEA0183 weiterprogrammiert 2025-07-05 10:12:57 +02:00

README

Multifunktionsdisplay (MFD) virtuell: OBP60v

Hinweis: Dieses Programm dient in erster Linie dazu die GUI der "echten"
OBP60-Hardware zu designen. Eine eigenständige Nutzung ist selbstverständlich
"auf eigene Gefahr" hin möglich.

Für Informationen zum OBP60 in Hardware siehe:
  - https://open-boat-projects.org/de/diy-multifunktionsdisplay-obp-60/
  - https://obp60-v2-docu.readthedocs.io/de/latest/

Fehlermeldungen und Patches gerne an thomas@hoogi.de senden.

Basishardware
- Raspberry Pi 4 / 4GB

Zusatzhardware:
- NMEA2000 Interface
  - PiCAN-M (hiermit wird entwickelt)
  oder
  - Waveshare RS485 CAN HAT (getestet)
- BME280-Sensor über I2C
- RTC mit DS3231 über I2C
- GPS über USB/seriell angeschlossen

Zusatzsoftware:
- OpenCPN

Abhängigkeiten
- python3-can für das N2K-Interface
- python3-astral für Sonnenauf- und -untergang
- python3-heapdict
- python3-setproctitle

Für GPS
- python3-serial
- python3-nmea2

Für BME280
- python3-smbus2
- python3-bme280

Die Konfiguration des virtuellen Geräts erfolgt über die Datei "obp60.conf".
Die Einstellungen sollten vor dem ersten Start überprüft und ggf. angepaßt
werden.

Es gibt zwei Darstellungsmodi: Standard und Vollbild
Der Standardmodus sollte im Design möglichst nahme am Original OBP60 liegen.
Es ist ein Fenster was immer im Vordergrund liegt, sich jedoch auf dem
Bildschirm positionieren läßt.
Der Vollbildmodus ist für das Display des OBP60P gedacht und setzt eine
physische Bildschirmauflösung von 800x600 Pixeln voraus.
Der Modus kann vor dem Programmstart in der Konfigurationsdatei obp60.conf
eingestellt werden:
  [system]
  guistyle = default | fullscreen

Zur Steuerung des Geräts sind 6 Tasten vorhanden. Numeriert von 1 bis 6 von
links nach rechts bzw. von oben nach unten im Vollbildmodus.
Die Tasten können angeklickt werden und führen dann direkt
eine von der jeweiligen Seite abhängige Funktion aus.
Die jeweilige Funktion wird durch ein Symbol oberhalb der Taste dargestellt.
Die Tasten 3 und 4 sind für die Seitennavigation vorgesehen: zurück und vor.
Sie können jedoch von einer Seite bei Bedarf übersteuert werden.

Wischgesten werden simuliert, indem die Maustaste auf einer Tastenfläche
gedrückt und auf einer anderen Taste losgelassen wird.

Folgende Wischfunktionen sind implementiert:
  1. Programmende durch die Wischfunktion "2" -> "1"
  2. Tastensperre an: "6" -> "1"
  3. Tastensperre aus: "1" -> "6"
  4. Systemseite: "4" -> "5"

Routen und Wegepunkte können von OpenCPN empfangen werden. Dazu muß eine
passende serielle Schnittstelle für den NMEA0183-Ausgang definiert werden.
Im System kann diese in der Datei rc.local aktiviert werden:
  # Create virtual serial connection
  socat pty,rawer,echo=0,group-late=dialout,mode=0660,link=/dev/ttyV0 \
        pty,rawer,echo=0,group-late=dialout,mode=0660,link=/dev/ttyV1 &
OpenCPN sendet dann Datensätze über ttyV0 und dieses Programm
empfängt sie über ttyV1.