USB <-> Bluetooth bzw. Bluetooth <-> RS485 Umsetzer

Begonnen von PeMue, 12 Dezember 2015, 21:15:48

Vorheriges Thema - Nächstes Thema

PeMue

Hallo zusammen,

da scheinbar Interesse an Informationen an meinem derzeitigen Projekt besteht, hier mal ein paar Bilder. Schaltplan und Bestückung folgen nach und nach.

Ausgangspunkt:
Mein Solarstromzähler hat eine S0 bzw. eine RS485 Schnittstelle über die er ausgelesen werden kann. Da ich drei Wechselrichter habe, würde ich gerne alle drei auslesen. Ich habe zwar eine rudimentäre Dokumentation des Herstellers bekommen, die stimmt aber in weiten Teilen nicht mit dem überein, was ich so durch reverse engineering herausbekomme.
Derzeit lese ich über S0 und einem S0-Adapter an meiner alten Fritz Box 7170 die Daten per solarview aus.
Stein des Anstoßes ist ein quer durch die Wohnung gezogenes, zweiadriges Kabel  ???
Daher habe ich mich entschlossen, das Ganze durch eine Funkverbindung (Bluetooth) zu ersetzen.

USB <-> Bluetooth Umsetzer:
Im wesentlichen ist das ein FTDI232RL, der an der 3,3 V Schnittstelle ein Bluetoothmodul HM-10 hängen hat. Die Schaltung ist so aufgebaut, dass sie auch mit einem HC05 funktioniert. Die LED wird per Lötjumper umgeschaltet.
Für den HM-10 gibt es auch ein fake Modul, das fast genauso aussieht, wo aber der 32 kHz Quarz fehlt. Es heißt dann BLE-CC41-A und kommt von Bolutek. Beide Module lassen sich per Bluetooth miteinander verbinden, allerdings funktioniert die Datenübertragung nur in eine Richtung.
Anbei mal ein Bild, wie das Ganze momentan aussieht:
(http://forum.fhem.de/index.php?action=dlattach;topic=45589.0;attach=41966;image)

Bluetooth <-> RS485 Umsetzer:
Weitere Informationen folgen ...
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

hexenmeister

Sieht interessant aus, auch wenn ich derzeit keine Verwendung dafür habe :)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

PeMue

Hallo zusammen,

so, die Funkstrecke funktioniert mittlerweile. Allerdings ist die Funkreichweite relativ bescheiden, ca. 5 m aber mit Verbindungsabbrüchen. Vermutlich muss ich doch auf den BTM222 ausweichen oder gleich einen RS485 <-> WLAN Umsetzer machen.

Wer nähere Infos braucht, einfach hier posten, dann stelle ich die Informationen (Schaltplan, Anleitung, Bilder, ...) zur Verfügung.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

tante ju

Hi,

Habe zwar, wie Hexenmeister, gerade keinen Bedarf an sowas aber ich denke, Bluetooth ist so die schlechteste der Möglichkeiten. Bluetooth belegt den kompletten 2,4 GHz ISM Bereich und stört daher WLAN und Zigbee (2.4) und MySensors mit NRF24. Für so geringe Bandbreiten wie RS485 sollte doch ein einfacher Aufbau mit NRF reichen, oder?

PeMue

Zitat von: tante ju am 01 Oktober 2016, 12:00:19
Für so geringe Bandbreiten wie RS485 sollte doch ein einfacher Aufbau mit NRF reichen, oder?
Gibt es da irgendetwas, was seriell per NRF irgendwie vernetzt?

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

tante ju

Zitat von: PeMue am 01 Oktober 2016, 14:34:29
Gibt es da irgendetwas, was seriell per NRF irgendwie vernetzt?

Ich meine, ich hätte mal Arduino Sketches gesehen. Sollte nicht so aufwändig sein.

PeMue

Zitat von: tante ju am 01 Oktober 2016, 21:40:05
Ich meine, ich hätte mal Arduino Sketches gesehen. Sollte nicht so aufwändig sein.
Hm, ich habe das http://blog.circuits4you.com/2016/04/wireless-serial-using-nrf24l01.html mal mit MySensors seriellen Gateways probiert, aber irgendwie funktioniert das nicht so recht  >:(
Und ich wüsste auch nicht, wie ich im RF-Zweig des Sketches Fehlersuche betreiben sollte ...

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

tante ju

Zitat von: PeMue am 03 Oktober 2016, 12:37:55
Hm, ich habe das http://blog.circuits4you.com/2016/04/wireless-serial-using-nrf24l01.html mal mit MySensors seriellen Gateways probiert, aber irgendwie funktioniert das nicht so recht  >:(
Und ich wüsste auch nicht, wie ich im RF-Zweig des Sketches Fehlersuche betreiben sollte ...

Ja, genau das ist es. Hat aber nichts mit mySensors zu tun, deswegen funktioniert es auch mit dem seriellen gateway da nicht. Soll es mit MySensors funktionieren?

Bei dem Sketch ist wichtig (was da nicht erklärt ist), die MAC im Array pipes[] zu vertauschen. Die MACs sind Sender und Empfänger. Es muß also auf der einen Seite E7 und auf der anderen E9 als erstes sein (und vielleicht irgendwelche anderen MACs nehmen, als die vorgeschlagenen).

PeMue

Zitat von: tante ju am 03 Oktober 2016, 12:56:48
Hat aber nichts mit mySensors zu tun, deswegen funktioniert es auch mit dem seriellen gateway da nicht.
Nein, ich habe nur die Hardware "missbraucht", um nicht lose verkabeln zu müssen. Was sind die MACs? Die habe ich natürlich nicht getauscht ...

Danke + Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

tante ju

Zitat von: PeMue am 03 Oktober 2016, 13:24:01
Nein, ich habe nur die Hardware "missbraucht", um nicht lose verkabeln zu müssen. Was sind die MACs? Die habe ich natürlich nicht getauscht ...

Diese Zeile:
const uint64_t pipes[2] = { 0xDEDEDEDEE7LL, 0xDEDEDEDEE9LL };


Das ist als MAC jeweils 00-DE-DE-DE-DE-E7 und 00-DE-DE-DE-DE-E9
auf der einen Seite ist die E7 lokal und E9 remote und auf der anderen Seite eben umgekehrt

PeMue

Zitat von: tante ju am 03 Oktober 2016, 14:29:16
Diese Zeile:
const uint64_t pipes[2] = { 0xDEDEDEDEE7LL, 0xDEDEDEDEE9LL };


Das ist als MAC jeweils 00-DE-DE-DE-DE-E7 und 00-DE-DE-DE-DE-E9
auf der einen Seite ist die E7 lokal und E9 remote und auf der anderen Seite eben umgekehrt
Ok, jetzt habe ich es verstanden und umgesetzt. Leider tut es auch nicht. Die LEDs blinken, die Dinger scheinen irgend etwas zu machen (zu senden?) - aber der Empfänger empfängt nichts.
Beide Module funktionieren aber als MxSensors Gateway bzw. Sensor  :(

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

tante ju

Zitat von: PeMue am 03 Oktober 2016, 14:47:28
Ok, jetzt habe ich es verstanden und umgesetzt. Leider tut es auch nicht. Die LEDs blinken, die Dinger scheinen irgend etwas zu machen (zu senden?) - aber der Empfänger empfängt nichts.
Beide Module funktionieren aber als MxSensors Gateway bzw. Sensor  :(

Hadere gerade mit zwei Dingen parallel, sonst hätte ich es schon nachgebaut um zu prüfen, was da schief geht.

Hast Du die Baudraten überprüft, ob die passen? Eventuell erstmal auf beiden Seiten festprogrammierte Teststrings ausgeben um zu sehen, ob denn auch wirklich die serielle funktioniert?

PeMue

Zitat von: tante ju am 03 Oktober 2016, 17:55:30
Hast Du die Baudraten überprüft, ob die passen? Eventuell erstmal auf beiden Seiten festprogrammierte Teststrings ausgeben um zu sehen, ob denn auch wirklich die serielle funktioniert?
Keine Bange, ich habe etwas anderes gemacht. Vermutlich habe ich auch eine alte Bibliothek des RF24, ich werde die nächsten Tage weiter testen. Dumm ist nur, dass ab und zu die IDE mit irgendwelcher Fehlermeldung aussteigt, beim blink.ino aber compiliert  :(

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

juergs

Ich kenne zwar die Auszutauschenden Daten nicht,aber da könnte ich noch mit "virtual wire" beisteuern : https://www.pjrc.com/teensy/td_libs_VirtualWire.html

PeMue

Zitat von: juergs am 03 Oktober 2016, 18:43:04
Ich kenne zwar die Auszutauschenden Daten nicht,aber da könnte ich noch mit "virtual wire" beisteuern : https://www.pjrc.com/teensy/td_libs_VirtualWire.html
ca. 15-20 Byte pro Messblock bei 57600 baud (8N1), und das Ganze halt per RS485 Bus. Die Abfrage erfolgt etwa jede Minute pro Wechselrichterzweig (sprich 3-6 Mal pro Minute).

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser