Raspberry Pi 3 und RS-485 wollen nicht

Hallo,

Ich habe ein RS-485 Modul an die entsprechenden GPIOs geklemmt und versuche nun meine wired Komponenten in homegear “einzulesen”. Leider bekomme ich im homegear.err nur "Module HomeMatic Wired: RS485 Module “HM-RS485”: Error sending HomeMatic Wired packet: No sending detected.

Wie kann ich denn überprüfen ob das RS-485 überhaupt mit dem Pi spricht?
/boot/cmdline.txt:
dwc_otg.lpm_enable=0 console=tty1 kgdboc=ttyUSB0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline isolcpus=2,3 rootwait

/boot/config.txt:

arm_freq=900
core_freq=250
sdram_freq=450
over_voltage=2
enable_uart=1
dtparam=spi=on
dtparam=i2c_arm=on
dtoverlay=pi3-disable-bt

Vielleicht hat ja jemand eine Idee :slight_smile:

Gruß,
Shizzleslick

Sorry, falls noch hilfreich:

#######################################
######## RS485 - Serial Module ########
#######################################

## The device family this interface is for
[RS485 - Serial Module]

## Specify an unique id here to identify this device in Homegear
id = HM-RS485

## Options: rs485, hmwlgw
deviceType = rs485

device = /dev/ttyAMA0
#device = /dev/ttyS0

## Should be "13" for serial modules, "20" for USB modules and "8" for HMW-LGW.
responseDelay = 13

## Set to "true" for USB modules
oneWay = false

## GPIO to enable RX
gpio1 = 17

## Set GPIO to this value to enable RX
enableRXValue = 0

## GPIO to enable TX
gpio2 = 18

## Set GPIO to this value to enable TX
enableTXValue = 1

Gruß,
shizzleslick

Hallo @shizzleslick,

UART auf dem Raspberry Pi 3 ist ein bisschen kompliziert. Hast du die Schritte, welche auf doc.homegear.eu für den COC dokumentiert sind ausgeführt? Für das RS485-Modul gilt das gleiche.

Viele Grüße

Sathya

Hallo @sathya,

Ja, meine cmdline.txt sieht ein bisschen anders aus ( kgdboc=ttyUSB0,115200 ), ansonsten habe ich alles durchgeführt.

Gruß,
shizzleslick

Wie kann ich denn überprüfen, ob der Pi das Modul überhaupt ordnungsgemäß erkennt?

Auszug dmesg:

[    0.000000] Kernel command line: 8250.nr_uarts=1 dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1400 bcm2708_fb.fbheight=1050 bcm2709.boardrev=0xa02082 bcm2709.serial=0xa1f81dd9 smsc95xx.macaddr=B8:27:EB:F8:1D:D9 bcm2708_fb.fbswap=1 bcm2709.uart_clock=48000000 vc_mem.mem_base=0x3dc00000 vc_mem.mem_size=0x3f000000  dwc_otg.lpm_enable=0 console=tty1 kgdboc=ttyUSB0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline isolcpus=2,3 rootwait
[    0.081123] uart-pl011 3f201000.uart: could not find pctldev for node /soc/gpio@7e200000/uart0_pins, deferring probe
[    1.909486] 3f201000.uart: ttyAMA0 at MMIO 0x3f201000 (irq = 87, base_baud = 0) is a PL011 rev2
[   34.156829] uart-pl011 3f201000.uart: no DMA platform data

Gruß,
shizzleslick

Hallo @shizzleslick,

du kannst das Gerät zum Beispiel mit “screen” öffnen:

screen /dev/ttyS0 19200

Dann “screen” mit “Strg+A” und “:quit” schließen und jetzt die eingehenden Daten hexadezimal ausgeben lassen:

od -x < /dev/ttyACM0

Wenn du jetzt an deinen Wired-Geräten irgendetwas machst, sollten Pakete auf der Konsole erscheinen.

Was für ein RS485-Modul hast du dir gekauft?

Viele Grüße

Sathya

Hallo @sathya,

Vielen Dank für Deine Tipps! Ich verstehe nur nicht ganz warum Du den screen auf ttyS0 machst und od auf ttyAMA0.

Hier das Modul:
https://www.amazon.de/MAX485-module-RS-485-TTL-MTS1EU/dp/B017A676EY/ref=sr_1_1?ie=UTF8&qid=1476966623&sr=8-1&keywords=MAX485+module+%2F+RS-485+module+%2F+TTL+to+RS-485+module+%2F+MTS1EU

Vielen Dank nochmals,
shizzleslick

Ist auch nicht richtig. “od” ebenfalls auf “ttyS0”. Ich hatte es aus meiner Konsole kopiert, daher der Fehler…

Das Modul sollte prinzipiell funktionieren.

Viele Grüße

Sathya

@shizzleslick, benutz doch bitte die Formatierungsmöglichkeiten des Forums. Hab das für dich mal beispielhaft nachgeholt. Danke :slight_smile:

Halle @shizzleslick, hey @pmayer,

Dann sieht man auch gleich einen möglichen Fehler ;-): In der “homematicwired.conf” muss “device” auf “/dev/ttyS0” stehen. Da es aber auskommentiert in der Datei steht, vermute ich mal, dass du das bereits probiert hattest?

Viele Grüße

Sathya

@pmayer
Oh, danke für den Hinweis, ich bin nicht viel in Foren unterwegs.:innocent:

@sathya:
screen hat keinen Erfolg gebracht.

Ja, ich hatte schon einiges rumprobiert und den Blutooth-Kram ausgestellt. Ich habe jetzt alles soweit wieder “original” und habe zumindest einen Teilerfolg:

[ 0.328550] 3f215040.uart: ttyS0 at MMIO 0x3f215040 (irq = 59, base_baud = 31250000) is a 16550

Allerdings bekomme ich immer noch nichts per screen oder hexdump :frowning:
Ich guck mal weiter.

Vielen Dank,
shizzleslick

Vielen Dank für eure Hilfe, ich habe das Modul an einem BananaPi getestet, mit dem gleichen “Erfolg”. Hab mir nun zwei neue Module bestellt und hoffe, dass ich mit denen mehr Glück habe.

Gruß,
shizzleslick

Hallo,
Wollte nur kurz mal eine “Wasserstandsmeldung” geben. Da ich nur Abends und dann auch nicht jeden Tag zum Basteln komme, dauert bei mir alles etwas länger (vielleicht liegt es auch an meiner Intelligenz :wink: ).

Um sicherzugehen, daß der UART auf dem Pi3 noch läuft, habe ich ein 3,3v Bluetooth Adapter (HC-06) drangeklemmt und mit meinem Handy gepairt. Siehe da, hexdump und screen zeigen Daten.

Nun stehe ich immernoch vor dem Problem mit dem RS485 Modul. Da mir nun mehr Module (RS485) zur Verfügung stehen, werde ich diese erstmal auf Funktion, zwischen zwei Arduinos, testen. Danach dann einen Arduino an den Bus der Homematic klemmen und mal “horchen”.

Vielleicht kann mir jemand folgende Frage beantworten. Der Pi3 möchte gerne 3.3v an RX/TX, das Modul ist ein 5v Modul. Kann es sein, daß es daher nicht funktioniert? Bei meinen ersten Tests mit den Pis hatte ich immer Vcc des Moduls mit dem 5v Ausgang der Pis verbunden. Wieviel Spannung liegt dann eigentlich an A und B an? Welche Spannung kommt den aus den wired Komponennten von Homematic (an A und B)? Laut Spezifikation sind ja nur -7v/12v erlaubt.

Gruß,
shizzleslick

Ob dein RS485 Chip an 3,3V funktioniert, kommt auf das verwendete Bauteil an. Typischerweise ist das der MAX485, oder einer seiner Brüder. Zumindest in deinem Link wird angegeben, dass das Modul diesen verwendet. Musst du natürlich nachprüfen…

Die Frage, die du beantworten musst, ist ob der Chip die Pegel für logisch LOW oder logisch HIGH unterscheiden kann. Im Datenblatt kann man sehen, dass die “Input High Voltage” bei “MIN 2.0V” liegt. Alles unter 0,8V erkennt er als LOW.
Auch die Versorgungsspannung ist mit 1,5-5V spezifiert, weswegen du ihm da natürlich 5V geben kannst er sich aber auch mit 3,3V begnügt.

Damit sollte, wenn denn ein MAX485 verbaut ist, eine Eingangspannung von 3,3V tadellos funktionieren, Signal- wie auch Versorgungsseitig.
Das Einzige was jetzt noch sein kann, ist dass auf dem Modul noch irgendwelche Widerstände verbaut sind die das verhindern würden.


Sieht mir aber nicht danach aus. Die hier verbauten Widerstände sind nur Pull-Up’s und ein Pull-Down. Und natürlich der 120Ω Abschlusswiderstand für den RS485-Bus.

Bei der Chinaware kann es mal vorkommen, dass Plagiate verbaut sind. Wurde beim FTDI/MAX232 sehr gerne gemacht.

so long,
p

Vielen Dank, daß Du Dir die Mühe gemacht hast, alles zu erklären.
Jetzt hätte ich da noch eine kleine Verständnisfrage :slight_smile:
Ich habe immer gedacht, daß aus der Versorgungsspannung die Signalspannung generiert wird. Vom MAX232 kenne ich das ja so, daß ich mit 5V TTL reingehe und mit RS232 Pegel rauskomme und keine extra Versorgungspannung benötigt wird. Daher meine Frage bezüglich der Versorgungspannung des RS485 und der möglicherweise daraus resultierenden Signalspannung.

Gruß,
shizzleslick

Das Signal macht ja der MAX485. Der benötigt eine, im Datenblatt spezifizierte, Versorgungsspannung um die Busspannung zu erzeugen. Wenn die von-bis angegeben ist, sollte es dich eingangseitig nicht kümmern müssen.
Es sollte, wenn ich es richtig verstanden habe, ziemlich gleich mit dem MAX232 sein.

Vielen Dank für Deine Zeit! Echt klasse!
Mich wundert es nur, daß ich anscheinend der einzige mit dem Problem bin (oder andere benutzen einen anderes RS485 Modul).

Nochmal Danke!
Gruß,
shizzleslick

Ich habe leider keine wired-komponenten im Einsatz. Eventuell kann @sathya was dazu sagen…

So, habe jetzt ein paar Tests gemacht und bin immer noch nicht am Ziel :frowning:
Ich habe einen Arduino mit Spannungsteiler am TX, direkt an den Pi angeschlossen. Funktioniert.
Dann habe ich an den Arduino und an den Pi jeweils ein RS485 Modul geklemmt. Funktioniert
Jetzt war ich voller Vorfreude und habe den Pi mit dem Modul an die wired Komponenten geklemmt und fleißig Licht an und aus gemacht … nichts :frowning:
Bin jetzt echt ratlos. Was könnte das denn jetzt noch sein?

Bin für jede Idee dankbar :slight_smile:

Schönes Wochenende,
shizzleslick

Nachtrag: Vergiss den Post, das hatte ich ja bereits vorgeschlagen… Ich haue mal Christian an.

Hallo @shizzleslick,

hast du mal probiert, ob du mit

screen /dev/ttyS0 19200

etwas siehst? Vielleicht kann Christian was dazu sagen, der ist der Hardwareexperte…

Viele Grüße

Sathya