Homebrew Sensoren / Aktoren sind eine sehr coole Sache, und erfreuen sich immer größerer Beliebtheit. Durch eine Bibliothek, die von pa-pa für Homematic gebaut worden ist, ist es möglich eigene Homematic Geräte zu entwickeln und zusammen mit nativen Geräten an einer CCU / piVCCU / RaspberryMatic usw.. Zentrale zu betreiben. Grundlage dafür ist immer ein Arduino, der als Prozessor dient. Es gibt bereits sehr viele Programme und Beispiele. Eine große Anzahl hat Jérôme erstellt. Die Beispiele von Ihm könnt ihr bie GitHub finden. In diesem Artikel will ich Euch zeigen, wie Ihr das Problem lösen könnt, wenn Eure Projekte nicht an der CCU angelernt werden können, obwohl alles richtig verlötet und auch ein passendes Sketch im Arduino hinterlegt ist. Ein sehr häufiges Problem ist, dass die Funkmodule, die für diese Projekte benötigt werden (CC1101) nicht ganz die Frequenz von Homematic (868,3 Mhz) treffen. Die Module liegen teilweise etwas daneben und so kann keine Kommunikation zu Stande kommen. Wir haben diese Abweichung für Euch mit Hilfe eines DVB-T Sticks für Euch sichtbar gemacht. Björn hat vor geraumer Zeit einen Artikel zu DIY AIS Empfängern geschrieben. Mit dieser Software kann man aber auch die Sendefrequenzen analysieren. Anbei die Bilder.

Hier sieht man im oberen Teil der Grafik das Frequenzband von 868,0 bis 868,6 MHz. Der rote Strich zeigt die genaue Frequenz an, auf dem die Homematic Geräte senden. Hier sollte sich auch unser CC1101 Modul wiederfinden, damit es mit der Zentrale kommunizieren kann. Doch das ist leider nicht der Fall! Im unten Bild seht Ihr die Frequenz, auf dem das Modul sendet. Der Peak ist hier bei ca. 868,45 MHz. Natürlich funkt das Modul nicht ganz sauber und exakt auf dieser Frequenz, doch die Amplitude ist soweit verschoben, dass keine Kommunikation mit der Zentrale möglich ist.

Nachdem wir nun das Sketch von pa-pa auf den Arduino gespielt haben, ist die Frequenz angepasst und das Modul kann für die Kommunikation mit Homematic genutzt werden. Anbei auch das Bild vom korrigierten Modul:

Wie Ihr sehen könnt, befindet sich die Amplitude vom CC1101 jetzt ziemlich genau bei 868,3 MHz. Durch dieses geniale Sketch von pa-pa lässt sich ein vermeintlich defektes Modul doch für die Kommunikation nutzen! Einfach nur genial!

Die geänderte Frequenz wird in den EEPROM des Arduinos geschrieben. Selbst wenn Ihr später ein anderen Sketch ladet, bleibt die angepasste Frequenz hinterlegt. Wie Ihr die Frequenz anpassen könnt, zeige ich Euch jetzt.

Wir starten zuerst die Arduino Software, alle benötigten Bibliotheken sollten an dieser Stelle bereits eingebunden sein. Wie das Funktioniert habe ich Euch in den DIY Tutorials der einzelnen Bausätze bereits ausführlich beschrieben. Daher setze ich dies als gegeben voraus. Auch solltet Ihr die aktuelles AskSinPP Library von GitHub installiert haben. Nun klickt Ihr auf Datei –> Beispiele –> AskSinPP. Dort findet Ihr das Sketch FreqTest. Dieses muss geöffnet werden.

Das Sketch wird dann wie gewohnt kompiliert und mittels FTDI-Adapter (Achtung! 3,3V) auf den Arduino gespielt.

Nachdem das Sketch auf das Board geladen worden ist, öffnen wir den Seriellen-Monitor. Diesen finden wir im Aruino Programm unter Werkzeuge –> Serieller Monitor. Der FTDI muss dabei weiter angeschlossen bleiben. Sobald der serielle Monitor geöffnet ist, startet das Programm und beginnt mit der Suche nach der passenden Frequenz. Damit die Homematic Frequenz detektiert werden kann, sollte darauf auch „Traffic“ vorhanden sein. Daher ist es wichtig, dass Ihr Funkverkehr generiert.

Das kann z.B. der aktive Anlernmodul der CCU sein oder aber häufiges Schalten von Funkaktoren. Hierbei ist es wichtig, dass es sich um Homemaic Komponenten (nicht IP) handelt. Das Sketch geht nun im Minutentakt die Frequenzen durch und ermittel empirisch welche Frequenz am besten passt. Nachdem das Sketch die passenden Frequenz gefunden hat, wird das Programm beendet. Das Ergebnis sieht dann so aus:

Jetzt könnt Ihr Euer „richtiges“ Sketch laden, um das CC1101 zu betreiben. Sobald Ihr nun ein neues Sketch hinterlegt habt und den seriellen Monitor startet, könnt Ihr überprüfen, ob die geänderte Frequenz hinterlegt ist.

Der Wert wird im EEPROM gespeichert und wird durch einen RESET gelöscht.

In der neuen Ausgabe des seriellen Monitors seht Ihr die Zeile: Config Freq: xxxxx Das ist die Frequenz, die zuvor im Arduino hinterlegt worden ist. Um diese Frequenz erneut anzupassen, kann das FreqSketch erneut ausgeführt werden! Viel Spaß beim nachbauen!!

3 Kommentare
  1. Avatar
    Sven sagte:

    Hallo
    habe den sketch aufgespielt und laufen lassen bei mir kommt immer diese Fehlermeldung im Seriellem Monitor :
    12:45:52.288 -> Start searching …
    12:45:52.288 -> Freq 0x21656A: Error at 0D expected: 21 read: 01
    12:45:52.288 -> Error at 0E expected: 65 read: E4
    12:45:52.288 -> Error at 0F expected: 6A read: 00
    12:46:52.464 -> 0/0
    12:46:52.464 -> Freq 0x2165BA: Error at 0D expected: 21 read: 4A
    12:46:52.499 -> Error at 0E expected: 65 read: FF
    12:46:52.499 -> Error at 0F expected: BA read: CF
    12:47:52.665 -> 0/0
    12:47:52.665 -> Freq 0x21651A: Error at 0D expected: 21 read: 57
    12:47:52.699 -> Error at 0E expected: 65 read: 69
    12:48:52.905 -> 0/0
    12:48:52.905 -> Freq 0x21660A: Error at 0D expected: 21 read: 5F
    12:48:52.905 -> Error at 0E expected: 66 read: 4A
    12:48:52.905 -> Error at 0F expected: 0A read: 2A
    12:49:53.110 -> 0/0
    12:49:53.110 -> Freq 0x2164CA: Error at 0D expected: 21 read: 10
    12:49:53.110 -> Error at 0E expected: 64 read: 8A
    12:49:53.110 -> Error at 0F expected: CA read: 12
    12:50:53.291 -> 0/0
    12:50:53.291 -> Freq 0x21665A: Error at 0D expected: 21 read: F9
    12:50:53.336 -> Error at 0E expected: 66 read: 95
    12:50:53.336 -> Error at 0F expected: 5A read: 5F
    12:51:53.511 -> 0/0
    12:51:53.546 -> Freq 0x21647A: Error at 0D expected: 21 read: 4A
    12:51:53.546 -> Error at 0E expected: 64 read: 2A
    12:51:53.546 -> Error at 0F expected: 7A read: 10
    12:52:53.724 -> 0/0
    12:52:53.724 -> Freq 0x2166AA: Error at 0D expected: 21 read: 8A
    12:52:53.724 -> Error at 0E expected: 66 read: 12
    12:52:53.724 -> Error at 0F expected: AA read: F9
    12:53:53.935 -> 0/0
    12:53:53.935 -> Freq 0x21642A: Error at 0D expected: 21 read: 95
    12:53:53.935 -> Error at 0E expected: 64 read: 5F
    12:53:53.935 -> Error at 0F expected: 2A read: 4A

    heist das das CC1101 ist defekt??

    Danke schon mal im voraus

    LG Sven

    Antworten
  2. Avatar
    Christian sagte:

    Das Problem schein wohl weiter verbreitet zu sein…
    Meine letzte Lieferung an CC1101 hatten alle das Problem. Die Anpassung ist wirklich problemlos, ich würde aus Erfahrung aber sagen das ein paar Probeläufe mit dem Sketch nötig sind. Ich musste mich dann durch probieren. Zusätzlich setze ich die neue Frequenz dann auch im Anwendungs-Sketch (Beispielsweise DIY-Temp/Feuchtesebsor) immer gleich mit, da bei mir die Werte nich immer zuverlässig ins EEPROM geflossen sind.

    Antworten

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere die Speicherung der Daten.