AskSinPP DIY – Fehler: Anlernen nicht möglich – CC1101 Frequenz automatisch anpassen
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!!
Cooles Teil, wollte es nachbauen, ohne Solar und Akku, sondern mit einem USB, 3,3V Adapter. Somit braucht es ja den Lipo Schutz und den Laderegeler nicht? Momentan stehe ich etwas an, wo ich auf der Technikkram Platine mein Stromzufuhr anklemmen könnte. Bzw. ob man vielleicht noch durch die fehlenden Teile gewisse Pins verbinden muss. Hat dies evtl. schon jemand gemacht?
Hello zusammen,
hab heute ein DIY Kit von euch bekommen. Alles zusammengelötet, aber kein Anlernen möglich. Geholfen hat dann der FreqTest :) Danke und viele Grüße!
Hab vergessen zu erwähnen, dass ich auch den Frequenztest laufen liess und die neue Frequenz im Sketch eingesetzt habe.
Hallo, ich habe zwei Geräte gebaut und es gelingt mit keinem in Verbindung mit der CCU zu treten (anzulernen). Da erscheint nichts im Postfach. Ansonsten habi ich keine Fehler. ZB. das Voltmeter HM-WDS10-TH-O meldet auch im Monitor alles, wie mir scheint, korrekt. Siehe unten. Die LED blink auch nachdem Drücken des ANlernknopfes. Alls sieht gut aus…. aber….
Ist es möglich, dass es daran liegt, dass meine CCU den System-Sicherheitsschlüssel verwendet? Ich weiss mir sonst keine Rat mehr.
AskSin++ v5.0.0 (May 11 2021 13:07:39)
Address Space: 32 – 104
CC init1
CC Version: 04
– ready
iVcc: 3111
Config Freq: 0x2165BA
*LOW BAT Limit: 22
*Sendeintervall: 180
<- 0E 01 86 53 F34A00 000000 02 00 FB 00 00 – 71
<- 0E 02 86 53 F34A00 000000 01 00 B2 00 00 – 169
<- 0E 03 86 10 F34A00 000000 06 01 00 00 00 – 270
debounce
pressed
released
<- 1A 04 84 00 F34A00 000000 10 F3 4A 4A 50 56 4F 4C 54 30 30 30 30 53 02 01 01 – 335
debounce
pressed
released
<- 1A 05 84 00 F34A00 000000 10 F3 4A 4A 50 56 4F 4C 54 30 30 30 30 53 02 01 01 – 20385
Hallo,
es kommt bei jeder Frequenz immer nur 0/0, obwohl ich an der CCU immer wieder das Anlernen von HM classic anktiviere.
Die Verbindungen zwischen CC1101 und Arduino habe ich durchgemessen. Eine Antenne ist auch dran.
Die Module sind auf die Platine hier aus dem Artikel gelötet.
Hat jemand eine Idee?
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
Hallo Sven, hast du mal die Lötstellen gecheckt?
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.
Wo schreibe ich die Frequenz in den Sketch (mit welchen Befehlen setze ich die Freq.) bei mir läuft das Programm zwar aber die Frequenz wird entweder nicht ins EEprom geschrieben oder das EEprom beim schreiben eines neuen Sketches wieder gelöscht.
Die Antwort auf meine Fragen gab es hier: https://github.com/AskSinPP/asksinpp-web/blob/master/Grundlagen/FAQ/Fehlerhafte_CC1101.md