Raspberry Pi Verbindung
Zur Verwendung mit einem Raspberry Pi wird der Adapter geflippt und über die Buchsenleisten W2 und USRL direkt auf die GPIO Stiftleiste des Raspberry Pi gesteckt.
Achtung: Die Buchsen auf dem Adapter sind kürzer als die GPIO Stiftleiste des Raspberry Pi. Es muss darauf geachtet werden, dass die näher an der Bohrung liegende Buchsenleiste des Adapters (links unten im Bild) auf Pin 2 der Raspberry Pi GPIO Leiste gesteckt wird, so dass diese Bohrung genau über der auf dem Raspberry Pi liegt und man einen Abstandshalter dazwischen setzen könnte.
Mit aufgestecktem Adapter (hier in rot zur Verdeutlichung) sieht das so aus:
Sofern ein Kühler für die Raspberry Pi CPU eingesetzt wird, muss ein Stacking-Header wie dieser oder dieser dazwischen gesteckt oder ein Dupontkabel verwendet werden.
Bei Raspberry 5 mit älterem Adapter bitte auch den Hinweis unten beachten.
Die Firmware stellt automatisch fest, ob der Adapter auf einen Raspberry Pi aufgesteckt ist.
Die Stromversorgung des Adapters erfolgt direkt über den Raspberry Pi und die Kommunikation geht über die folgenden Pins am Raspberry Pi GPIO:
- TxD: Pin 8 (GPIO 14)
- RxD: Pin 10 (GPIO 15)
Diese Pins sind dem physikalischen Device “serial0” zugeordnet. Das physikalische device ist meist dem logischen Device ttyAMA0 zugeordnet, jedoch gibt es abhängig von der Raspberry Pi Version und der Raspbian / Raspberry Pi OS Version immer wieder andere Zuordnungen. Die aktuelle Konfiguration kann so bestimmt werden:
ls -l /dev
ausführen und dann die Zuordnung von serial0 suchen. Dies ist im Normalfall entweder ttyAMA0 oder ttyS0.
Da der UART von ttyS0 Schwierigkeiten mit höheren Baudraten hat, wird dringend geraten, unbedingt ttyAMA0 zu benutzen, welches den UART Typ PL011 verwendet, wo diese Probleme nicht auftreten können.
Sollte serial0 mit ttyS0 verbunden sein, was vor allem beim Raspberry Pi 3 und manchen Raspbian/Raspberry Pi OS Versionen auftritt, dann können ttyS0 und ttyAMA0 durch einen Eintrag in /boot/config.txt
:
dtoverlay=pi3-miniuart-bt
mit nachfolgendem Reboot vertauscht werden.
Die ebusd device Konfiguration in /etc/default/ebusd lautet daher:
-d ens:/dev/ttyAMA0 --latency=50
Die Angabe von “–latency=50” hilft, um bei den oft ungünstig implementierten UART Treibern im Raspberry Pi OS nicht in einen Timeout zu laufen.
Konfiguration mit Raspberry Pi OS
Standardmäßig werden die für den eBUS Adapter benötigten Pins vom Raspberry Pi OS für eine serielle Login Shell verwendet. Um nun stattdessen den eBUS Adapter über diese Schnittstelle laufen lassen zu können, muss diese Shell stillgelegt werden.
Achtung! Wenn diese Shell nicht komplett stillgelegt wird, dann sendet sie unkontrollierte Daten auf den eBUS was zu einer Störung des gesamten Bus Systems führen kann.
Zur Stilllegung müssen folgende Schritte durchgeführt werden (sinngemäß, die Texte können je nach Raspberry Pi OS leicht variieren):
sudo raspi-config
ausführenInterface Options
auswählenSerial Port
auswählenWould you like a login shell to be accessible over serial?
mit “Nein”/”No” beantwortenWould you like the serial port hardware to be enabled?
mit “Ja”/”Yes” beantworten- “raspi-config” beenden und neu booten
Spezielle UART Einstellungen
In manchen Raspberry Pi Versionen und/oder Raspbian/Raspberry Pi OS Versionen ist kein UART per default aktiv. Deshalb sollte kontrolliert werden, ob in /boot/config.txt
der Eintrag
enable_uart=1
enthalten ist. Gegebenenfalls nachtragen und dann neu booten.
Achtung! Sollte der ttyebus
Treiber vorhanden sein, so ist er komplett zu deinstallieren (https://github.com/eBUS/ttyebus). Dieser Treiber ist für den enhanced protocol nicht geeignet.
Um zu verifizieren, dass die Einstellungen richtig sind, kann man dmesg|grep ttyAMA0
ausführen. Dies sollte eine Zeile wie folgt ausgeben, die auch den UART PL011
enthält:
[ 1.166081] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 29, base_baud = 0) is a PL011 rev2