Unter dem Label 'Sygonix' sind diverse Sensoren und Aktoren im Handel, die auf dem (proprietären?) RS2W-Funkprotokoll basieren. Beim Versandhändler V*lkner ist derzeit mit der Artikel-Nr.S335991 ein solcher Sensor für knapp einen Euro erhältlich. Basierend auf einem kleinen AC-Stromwandler mit 6mm Durchlass teilt das Gerät einem Empfänger per 868MHz-Funksignal mit, ob ein zu überwachendes Gerät eingeschaltet ist oder nicht. Beim Öffnen des Gehäuses (40x40mm, Bild_01) findet man eine Li-Knopfzelle CR2477 mit weit höherer Kapazität als die üblichen kleineren Exemplare (2032 o.ä.), sowie die eigentliche Trägerplatine (Bild_02). Nach Lösen von zwei Schrauben kann diese entnommen werden und gibt den Blick auf die Bestückungsseite frei (Bild_03). Zu erkennen sind ein Mikrocontroller (Nuvoton) und im oberen Bereich das CC1101-Modul, welches das HF-Signal über ein SMD-Bauteil auf die PCB-Antenne auskoppelt; weiterhin vorhanden sind einige SMDs zur Aufbereitung des Signals vom Stromwandler. In einem Versuchsaufbau wurde ein Leiter einer 40W Glühlampe durch den Wandler geführt und untersucht, mit welchen Daten der Controller den CC1101 steuert. Hierbei konnte zwar der Schaltvorgang detektiert werden, aber nicht zwischen Ein- und Ausschalten differenziert werden. Nach längeren Recherchen zum RS2W-Funkprotokoll wurde beschlossen, den Controller durch Unterbrechen der Leiterbahnen vom CC1101-Modul abzutrennen, um letzteres mit einem Arduino-Nano zu verdrahten, Bild_04 zeigt Details. Um die Anpassung an die PCB-Antenne weiterhin nutzen zu können, verblieb das Modul auf der Trägerplatine. Verbreitete Verwendung finden fertige CC1101-Module (Bild_05) im 'CUL-stick' oder 'nanoCUL' zum Betrieb in Homematic-Systemen. Aus der modifizierten Trägerplatine und einem Arduino lässt sich leicht ein solcher Stick herstellen; dazu muss natürlich die entsprechende Firmware in den Arduino geladen werden. Es gilt zu beachten, dass das CC1101-Modul mit 3.3V versorgt wird, ebenso die Datenleitungen. - Eine interessante Seite (https://asksinpp.de/) liefert weitere Infos zum Funkmodul und dem Thema 'Homematic'. Für die Anschlussbelegung des Moduls auf der Trägerplatine gilt (Lötinseln links oben im Gegenuhrzeigersinn): CC1101-Modul CC1101-IC-Pins Funktion ----------------------------------------------------- #1 --- Antenne #2 #4,9,11,14,15 +3.3V Vcc #3 #20 SI #4 #1 SCLK #5 #2 SO #6 #3 GDO2 #7 #6 GDO0 #8 #7 CSn #9 #16,19 GND Weitere Details zum CC1101-Chip ggfs.im Datenblatt nachschlagen. Ich würde mich freuen, wenn jemand die im Sygonix-Baustein enthaltenen Elemente für eigene Zwecke nutzen kann, vielleicht sogar Details zum RS2W-Protokoll nennen kann. Immerhin sind der AC-Stromwandler, die Li-Knopfzelle und das Gehäuse ebenfalls Komponenten, für deren regulären Erwerb wesentlich mehr zu zahlen ist. Beste Grüße, Jürgen
> Beim Versandhändler V*lkner ist derzeit mit der Artikel-Nr.S335991 ...
Warum kannst nicht gleich einen Links angeben?
Das Protokoll zu reversen würde mich auch interessieren. Nur wird man da mehr als ein Endgerät brauchen und die restlichen sind leider nicht so günstig.
Beitrag #6390884 wurde vom Autor gelöscht.
Hallo Jürgen, ich habe mir ein paar dieser Module gekauft und den Funkteil herausgeschnitten (s. Bild). Damit konnte ich auf dem Labortisch eine Funkverbindung mithilfe 2er Arduino Pro Micros und der SmartRC-CC1101 Library herstellen. Allerdings ist die Reichweite auf ca. 5m beschränkt. Wie ist denn bei deinem Setup die Reichweite? Evtl. ist die onboard Antenne nicht optimal.
Beitrag #6390928 wurde vom Autor gelöscht.
Ist der Nuvoton (8051?/M0?) noch programmierbar oder hat der ein OTP Flash?
Peter K. schrieb: > Allerdings ist die Reichweite auf ca. 5m beschränkt. > Wie ist denn bei deinem Setup die Reichweite? > Evtl. ist die onboard Antenne nicht optimal. Die Beschreibung sagt max. 150m im Freien. Ich wuerde eher darauf tippen, dass nach dem Herausschneiden das Gegengewicht in Form der grossen Masseflaechen fehlt. wendelsberg
Das Argument mit der fehlenden Massefläche ist nicht von der Hand zu weisen, ich habe deshalb nach dem Durchtrennen der Leiterbahnen den Teil mit dem Prozessor stehengelassen. Auch eine Beeinflussung der PCB-Antenne durch das Steckbrett ist möglich; mit einem VNWA wurden bei 868MHz Messungen an verschiedenen Antennen-Designs vorgenommen - ich war erstaunt, bei welch geringen Änderungen der Umgebung sich die Resonanzfrequenz der Antenne änderte.. Die Reichweite des Moduls habe ich nicht untersucht, sie sollte aber deutlich über 5m liegen. Stimmen die Parameter, mit denen das Modul über die Library angesprochen wird? Ich hatte damit den nanoCUL aufgebaut, da konnte man die HF-Leistung einfach ändern. Versuche zur Weiterverwendung des Nuvoton-uP wurden nicht unternommen, es dürfte sich um einen OTP handeln. Grüße, Jürgen
Ich habe die folgenden Parameter aus dem advanced Beispiel der erwähnten Lib genommen:
1 | #include <ELECHOUSE_CC1101_SRC_DRV.h> |
2 | |
3 | //int gdo0 ;
|
4 | const byte LED_PIN = 3 ; |
5 | |
6 | void setup() |
7 | { Serial.begin( 9600 ) ; |
8 | pinMode( LED_PIN, OUTPUT ) ; |
9 | |
10 | ELECHOUSE_cc1101.Init() ; // must be set to initialize the cc1101! |
11 | //ELECHOUSE_cc1101.setGDO( gdo0,0 ) ; // set lib internal gdo pins ( gdo0,gdo2 )
|
12 | |
13 | ELECHOUSE_cc1101.setCCMode( 1 ) ; // config for internal transmission mode |
14 | ELECHOUSE_cc1101.setModulation( 0 ) ; // modulation mode. 0 = 2-FSK, 1 = GFSK, 2 = ASK/OOK, 3 = 4-FSK, 4 = MSK |
15 | ELECHOUSE_cc1101.setMHZ( 868.3 ) ; // auto calculated frequency ( default = 433.92 ). CC1101 can: 300-348 MHZ, 387-464MHZ and 779-928MHZ |
16 | ELECHOUSE_cc1101.setDeviation( 47.60 ) ; // frequency deviation in kHz. Value from 1.58 to 380.85. Default is 47.60 kHz |
17 | ELECHOUSE_cc1101.setChannel( 0 ) ; // channel number from 0 to 255. Default is 0 |
18 | ELECHOUSE_cc1101.setChsp( 199.95 ) ; // channel spacing is multiplied by channel number CHAN & added to the base freq in kHz. Range: 25.39..405.45. Default 199.95 kHz |
19 | ELECHOUSE_cc1101.setRxBW( 812.50 ) ; // receive bandwidth in kHz. Range: 58.03..812.50. Default 812.50 kHz |
20 | ELECHOUSE_cc1101.setDRate( 99.97 ) ; // data rate in kBaud. Range: 0.02..1621.83. Default 99.97 kBaud! |
21 | ELECHOUSE_cc1101.setPA( 10 ) ; // TxPower. Possible values depending on the frequency band. (-30 -20 -15 -10 -6 0 5 7 10 11 12 ) Default = max! |
22 | ELECHOUSE_cc1101.setSyncMode( 2 ) ; // Combined sync-word qualifier mode |
23 | // 0 = No preamble/sync
|
24 | // 1 = 16 sync word bits detected
|
25 | // 2 = 16/16 sync word bits detected
|
26 | // 3 = 30/32 sync word bits detected
|
27 | // 4 = No preamble/sync, carrier-sense above threshold
|
28 | // 5 = 15/16 + carrier-sense above threshold
|
29 | // 6 = 16/16 + carrier-sense above threshold
|
30 | // 7 = 30/32 + carrier-sense above threshold
|
31 | ELECHOUSE_cc1101.setSyncWord( 211, 145 ) ; // Syncword-H, Syncword-L. Must be the same for the transmitter and receiver. |
32 | ELECHOUSE_cc1101.setAdrChk( 0 ) ; // Address check of received packages |
33 | // 0=No check, 1=Addr check/no broadcast, 2=Addr check + 0x00 broadcast, 3=Addr check + 0x00 + 0xFF broadcast
|
34 | ELECHOUSE_cc1101.setAddr( 0 ) ; // Address used for packet filtration. Optional broadcast addresses are 0 ( 0x00 ) and 255 ( 0xFF ) |
35 | ELECHOUSE_cc1101.setWhiteData( 0 ) ; // Turn data whitening on/off. 0=Whitening off. 1 = Whitening on |
36 | ELECHOUSE_cc1101.setPktFormat( 0 ) ; // Format of RX and TX data. 0=Normal mode, use FIFOs for RX and TX |
37 | // 1=Synchronous serial mode, Data in on GDO0 and data out on either of the GDOx pins
|
38 | // 2=Random TX test mode; sends random data using PN9 generator. Works as normal mode, setting 0 in RX
|
39 | // 3=Asynchronous serial mode, Data in on GDO0 and data out on either of the GDOx pins
|
40 | ELECHOUSE_cc1101.setLengthConfig( 1 ) ; // 0=Fixed packet length mode. 1=Variable packet length mode. 2=Infinite packet length mode. 3=Reserved |
41 | ELECHOUSE_cc1101.setPacketLength( 0 ) ; // Indicates the packet length in fixed packet length mode or max packet length in variable packet length mode |
42 | ELECHOUSE_cc1101.setCrc( 1 ) ; // 1=CRC calculation in TX and CRC check in RX enabled. 0=CRC disabled for TX and RX |
43 | ELECHOUSE_cc1101.setCRC_AF( 0 ) ; // automatic flush RX FIFO if wrong CRC. Requires that only 1 packet is in the RXIFIFO and packet length is limited to FIFO size |
44 | ELECHOUSE_cc1101.setDcFilterOff( 0 ) ; // Disable digital DC blocking filter before demodulator. Only for data rates < 250 kBaud. |
45 | // The recommended IF frequency changes when DC blocking is disabled. 1=Disable (current optimized). 0=Enable (better sensitivity)
|
46 | ELECHOUSE_cc1101.setManchester( 0 ) ; // Enables Manchester encoding/decoding. 0=Disable. 1=Enable |
47 | ELECHOUSE_cc1101.setFEC( 0 ) ; // Enable Forward Error Correction (FEC) with interleaving for packet payload (Only supported for fixed packet length mode) |
48 | ELECHOUSE_cc1101.setPQT( 0 ) ; // Preamble quality estimator threshold. The preamble quality estimator increases an internal counter by one each time |
49 | // a bit is received that is different from the previous bit
|
50 | // and decreases the counter by 8 each time a bit is received that is the same as the last bit
|
51 | // A threshold of 4*PQT for this counter is used to gate sync word detection. When PQT=0 a sync word is always accepted
|
52 | ELECHOUSE_cc1101.setAppendStatus( 0 ) ; // When enabled, two status bytes will be appended to the payload of the packet. |
53 | // The status bytes contain RSSI and LQI values, as well as CRC OK
|
Und hier der Output des Receivers:
1 | Hello World |
2 | 72,101,108,108,111,32,87,111,114,108,100, |
3 | Rssi: -46 |
4 | LQI: 130 |
Danke für den Hinweis mit der Massefläche. Ich habe noch Module nachbestellt. Damit kann ich dann testen, ob es damit besser ist.
Zur Info: Über deren Nebenvetriebskanal 'Digitalo' ist es für 1 EUR weniger Versandkosten zu haben.
Ich habe die nachbestellten Module bekommen und mal den Empfänger mit Massefläche getestet. Die Reichweite war damit auch nicht besser. Vermutlich wird das Modul anders initialisiert als die Defaults im Example Sketch. Daher habe ich mal die Initialisierungssequenz aufgenommen. Die SPI Frequenz ist bei 105kHz und die Initialisierungssequenz ist im angehängten CSV.
Und hier noch die Protokolle beim Ein- und Ausschalten eines Stromes durch die Detektionsspule.
Moin Peter, es dürfte ein beträchtlicher Aufwand sein, die Initialisierung des CC1101 auf diese Weise herausfinden zu wollen; ich würde eher versuchen, die Parameter der verwendeten Library einzeln zu ändern und den Effekt zu beobachten. Z.B. hast Du verwendet 'ELECHOUSE_cc1101.setPA( 10 ) ; // TxPower' - offensichtlich kann man die HF-Leistung aber noch erhöhen (11,12). Hast Du einmal eine einfache Initialisierung versucht wie in diesem Beispiel: https://www.aeq-web.com/arduino-10mw-cc1101-ism-rf-transceiver/ Es muss natürlich verwendet werden: ELECHOUSE_cc1101.Init(F_868); LG Jürgen
Hallo! Na das klingt interessant... Mhm, noch eine Möglichkeit wäre es, die Register des cc1101 auszulesen, nachdem er gestartet und vom onboard Controller initialisiert wurde?
Landolf schrieb: > Mhm, noch eine Möglichkeit wäre es, die Register des cc1101 auszulesen, > nachdem er gestartet und vom onboard Controller initialisiert wurde? Warum so kompliziert? Gleich mit einem BusPirate bzw. SPI-Sniffer der eigenen Wahl reinhören und aufzeichnen.
:
Bearbeitet durch User
Sönke P. schrieb: > https://sigrok.org/wiki/Protocol_decoder:Cc1101 Danke für den Link. Leider stürzt Pulseview unter w10 mit meinem LogicSniffer immer ab. Ich habe aber die Init Sequenz mittlerweile komplett aufgenommen. Allerdings empfange ich mit dem Elechouse Receiver Sketch nichts, wenn ich in dessen Setup die gleiche Init Sequenz angebe und dann noch den Rx Mode setze.
Ich habe jetzt mal versuchsweise einen 8,6cm Draht über 3.3nF anstelle der PCB Antenne angeschlossen und damit komme ich schon mal 10m weit. Kritischer als die Drahtlänge erweist sich die Orientierung. Ich benutze die Example Sketches aus der SmartRC_CC1101 Driver Lib "cc1101_Transmitt_Hello_World_advanced" und "cc1101_New_Receive_method_advanced" Der einzige Wert, den ich geändert habe, ist die Frequenz über .setMHZ(868.3). Im Serial Monitor der Arduino IDE wird vom Receiver Sketch auch der Rssi Wert angezeigt. Damit kann man sehr schnell erkennen, welche Antennenmaßnahme deutliche Veränderungen bringt.
Leider sind scheinbar alle vergriffen oder der niedrige Preis war keine Absicht. Mal schauen ob die jetzt aus dem Programm genommen werden. Ich habe mir ein Paar kommen lassen und einen Nuvoton ICP Programmer. Der CN2-T20 µC lässt sich als N79E844 nach einmaligem Flash erase der LOCK-Bits flashen und lesen. Die 12k flash sind vorhanden und ansprechbar. Der E814 und E854 hat jedoch dieselbe Chip ID und ähnliche Funktionen. Mit ein bisschen internetsuche fand ich für den SDCC passende Header mit allen registerdefinitionen und sample code für die onchip peripherie. Was bereits getestet ist: Sleep Mode, WDT zum zyklischen aufwachen, Interrupts, SPI, I2C, UART, ADC etc. Rudimentäre library für den CC1101 Erstes Ziel ist ein funk-Bootloader sowie eine Pin-Kontaktplatte zum initialen flashen. Wenn alles gut klappt, möchte ich Raumklima, Präsenz und Objektsensoren anflanschen.
Hallo Flip B., das ist ja eine elegante Lösung, den Nuvoton uC direkt zur Ansteuerung des CC1101-Moduls zu verwenden! Es scheint ein 8051-Kern zu sein, was die Programmierung deutlich erleichtern sollte. - Schade, dass der Artikel inzwischen nicht mehr lieferbar ist, aber damit war angesichts des Preises schnell zu rechnen.. Berichte doch bitte, wenn Du Fortschritte bei der Verwendung des uC machst. LG Jürgen
Falls jemand wirklich daran interessiert ist die Hardware weiter zu verwenden (und nicht nur wie ich wegen des günstigen cc1101 haben möchte... ) Ich hab 10 Stück gekauft und gestern erhalten. Gegen original Preis + Versand würde ich welche weitergeben.
Martin schrieb: > Falls jemand wirklich daran interessiert ist die Hardware weiter zu > verwenden (und nicht nur wie ich wegen des günstigen cc1101 haben > möchte... ) Ich hab 10 Stück gekauft und gestern erhalten. Gegen > original Preis + Versand würde ich welche weitergeben. Ich wäre an zwei Stück interessiert (ja, die komplette Hardware interessiert mich, CC1101 Module habe ich). Wieviel möchtest Du dafür, Versand per Post/DHL wäre ideal?
Dieter S. schrieb: > Ich wäre an zwei Stück interessiert (ja, die komplette Hardware > interessiert mich, CC1101 Module habe ich). Wieviel möchtest Du dafür, > Versand per Post/DHL wäre ideal? Hallo Dieter, ich habe dir eine PN geschickt. Kosten, das was ich bezahlt habe + Versand nach deiner Wahl.
Ich habe mir mal kurz das RS2W Protokoll angesehen. Der Sensor alleine reicht dazu natürlich nicht, als Gegenstelle verwende ich eine dieser "RS2W Funk-Schaltsteckdose Außen". Im Prinzip sieht das so aus:
1 | Frequenz: 868.3 MHz |
2 | Modulation: FSK |
3 | Datenrate 50000 Baud |
4 | |
5 | Das Format der Datenpakete entspricht der Doku des CC1101. |
6 | Das Preamble (32 Bit, 1-0 alternierend) vor dem Sync ist bei |
7 | den Beispielen aus Gründen der Übersichtlichkeit weggelassen. |
8 | |
9 | Anlernen (Sensor in Lernmodus bringen, Taste der Steckdose gedrückt halten): |
10 | ---------------------------------------------------------------------------- |
11 | |
12 | Length Bit4 (0x10) "Achnkowledge" ? |
13 | | | |
14 | Sync | Address | Sequence Nr. CRC-16 |
15 | | | | | | | | |
16 | Steckdose: A5 5A A5 5A : 07 06 - 40 20 06 01 AA AA - 7C 07 |
17 | Sensor: A5 5A A5 5A : 07 06 - 40 30 06 01 AA AA - FB 84 |
18 | |
19 | |
20 | Ein (Stromfluss im Leiter) |
21 | -------------------------- 01: On |
22 | | |
23 | Sensor: A5 5A A5 5A : 07 06 - 40 00 0F 01 AA AA - 47 04 |
24 | Steckdose: A5 5A A5 5A : 07 06 - 40 10 0F 01 AA AA - C0 87 |
25 | |
26 | |
27 | Aus (kein Stromfluss im Leiter) |
28 | ------------------------------- 02: Off |
29 | | |
30 | Sensor: A5 5A A5 5A : 07 06 - 40 00 10 02 AA AA - CB 3E |
31 | Steckdose: A5 5A A5 5A : 07 06 - 40 10 10 02 AA AA - 4C BD |
Das Ganze ist jetzt nicht sonderlich spektakulär. Inwieweit im Addressbyte bzw. dem darauf folgenden 0x40 die Geräte-ID der Steckdose codiert ist kann ich nicht beurteilen, ich habe hier nur eine Steckdose zum testen. Übrigens gab es beim "Homegear" Source Code auf Github wohl eine Weile ein Repository "homegear-rs2w", das ist aber scheinbar nicht mehr da bzw. nicht mehr öffentlich.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.