Mein neustes Projekt war ein Selbstbau CUL (CC1101 – USB – Lite module) für wenig Geld. Eigentlich brauchte ich schon immer einen zweiten CUL als RFR (RF Router) für meine Wetterstation KS 300, welche auf dem Dach montiert ist. Der Empfang war sehr fragil, d.h. mit etwa 85 % Verlust an Daten. Um die KS 300 relativ gut zu empfangen, musste ich den Haupt-CUL um konfigurieren. Nichts besonderes. Die ursprüngliche Standard-Konfiguration ist
freq:868.300MHz bWidth:325kHz rAmpl:42dB sens:4dB
und für die meisten Geräte absolut okay. Für die KS 300 eben nicht. Nur mit sens 16dB konnte ich diese mit nur 5 % Verlust empfangen. Dafür fielen die anderen Sensoren immer öfter aus.
Zu den Zutaten:
1x Arduino nano – aus der Bucht für ca. 3,99 plus Versand
1x CC1101 868 MHz Modul – ca. 14 € für 2 Stück inkl. Versand
(Achtung! Ein Hinweis von Leser Danzig: Bei dieses Modul handelt es sich nicht um ein optimiertes im Bereich von 868 MHz ist. Es besitzt die gleiche Verschaltung wie ein 433 MHz Modul. Ein „echtes“ 868 MHz Module wäre keine Durchsteckvariante im 2,54 mm Rastermaß, sondern in 2 mm, hier zu finden – Link. Und der passende Beitrag im FHEM Forum, wo eine Gegenüberstellung der beiden Module veranschaulicht wird. – Aber ich und die meisten anderen, die nicht das „echte“ Modul haben, sind weiterhin von der Empfangs- und Sendeleistung überzeugt.)
Die benötigte Hardware kommt jeweils aus China, also mit etwas Wartezeit verbunden. Es lohnt sich aber. Oben verlinkte Hardware ist bei mir seit ca. einem Monat ohne Probleme in Betrieb und ausgezeichnete Empfangs- und Sendeleistung. Es gab auch keine nennenswerten Probleme beim flashen. Weiterhin besitzt der nano auch den empfohlenen FTDI Chip (FT232RL).
Der Zusammenbau, compilieren und das Flashen unter Linux wurde im Blog von Gummibaer (Webarchive) sehr gut beschrieben, inklusive Tipps, sowie im FHEM Wiki. Die entsprechende Diskussion zu diesem Thema ist im FHEM Forum zu finden.
Ich selbst habe den Selbstbau CUL oder auch bekannt als nanoCUL, unter Windows geflasht und konfiguriert. Dazu habe ich WINAVR (20100110) installiert und per command line folgendes in die Console eingegeben:
..culfw\Devices\nanoCUL>c:\WinAVR-20100110\bin\avrdude.exe -C „c:\WinAVR-20100110\bin\avrdude.conf“ -v -v -v -v -p atmega328p -c arduino -P COM18 -b 57600 -D -Uflash:w:nanocul.hex:i
-C -> Konfigurartionsdatei für AVRDUDE
-p -> Programmer Typ -> atmega328p
-c -> Programmer ID -> arduino
-P -> Port an dem der Programmer angeschlossen ist (in dem Fall, ist der Arduino direkt mit dem USB verbunden)
-v -> Verbose Level (um so mehr -v angegeben werden, um so höher ist das Level)
-b -> Baudrate
-D -> deaktivieren von auto erase
Befehl kopieren:
avrdude.exe -C "c:\WinAVR-20100110\bin\avrdude.conf" -v -v -v -v -p atmega328p -c arduino -P COM3 -b 57600 -D -Uflash:w:nanocul.hex:i
Die Pfade und der COM Port sind natürlich anzupassen. Die nanoCul FW habe ich wie auf Gummibaer’s Blog beschrieben, für meine 868 Version angepasst. Lediglich die RF Router Eigenschaft musste ich selbst noch integrieren. Dazu habe ich die „culfw\Devices\nanoCul\Board.h“ um
#define HAS_RF_ROUTER
ergänzt und das „culfw\Devices\nanoCul\makefile“ um
../../clib/rf_router.c \
erweitert.
Definition in FHEM (Beispiel für Windows):
define myCUL CUL com18@38400 0000
Und fertig verpackt verrichtet der nanoCul seine Dienste.
Update 20.10.2015:
Der nanoCul mit CC1101 Transceiver funktioniert auch gut mit Homematic, zumindest kann ich das für die Stellantriebe HM-CC-VD und den Wandthermostat HM-CC-TC behaupten.
Update 04.02.2016:
Ich habe nun ein nanoCUL mit einem echten CC1101 868MHz Modul zusammengebaut, weil es stabiler im Homematic Mode laufen soll. Es genau für die Frequenz optimiert ist.
Hi,
ich habe mir ebenfalls den CUL433 zusammengebaut. Der wird an der CCU2 auch erkannt. Wenn ich an meiner Intertechno FB eine Taste betätige, wird der Code im Terminal auch angezeigt.
19:47:51 [ttyUSB0] –> i00101528
19:48:00 [ttyUSB0] –> i00401528
Versuche ich aber einen Code zu senden, reagiert die Steckdose nicht. Eine ist z.B. auf A2 kodiert.
19:49:26 [ttyUSB0] is0000F0000FFF
Wo könnte der Fehler sein?
Hallihallo,
ist zwar schon fast ein Jahr her aber vielleicht antwortet ja doch noch jemand. Ich bin grad dabei einen CUL CC1101 mit einem Arduino Nano Clone (CH340) zu verheiraten. Gibt es schon eine Lösung für
„avrdude.exe: stk500_getsync(): not in sync: resp=0x00“
Hallo,
schau mal ob das hier hilft:
„Für das Flashen war es bei mir (aber aus Linux heraus) hin und wieder erforderlich, den „Reset“-Button am Arduino zu drücken, kurz bevor die Arduino-IDE den flash-Vorgang gestartet hat (mehrere Nano- bzw. Micro-Boards, mit und ohne CH340). Dann natürlich warten, bis die IDE „upload completed“ (oder so) meldet.“
Quelle
Hi,
kann ich mit einem CUL mein Homematic-Thermostat und meine 433mhz Elro Funksteckosen ansteuern?
MFG
Philipp
Hallo Philipp,
nein, für die Elro brauchst Du einen zweiten CUL. Homematic sendet auf 868 MHz.
Gruß,
Steve
Hallo,
eine kurze Frage: Kann ich das nanoBoard auch ohne Anschlißenen eines 433 Moduls (also durch die PINS) flashen?
Grüße
Björn
Hallo Björn,
ja auf jeden Fall.
Gruß,
Matscher
Hallo,
ich habe den Selbstbau-CUL wie von Gummibaer beschrieben zusammengebaut, aber Probleme beim flashen. Vermutlich das gleiche Problem wie Björn Preis weiter oben.
Befehl:
avrdude.exe -C d:\WinAVR-20100110\bin\avrdude.conf -v -v -v -v –P COM18 -p atmega328p -c arduino -b 57600 -D -Uflash:w:nanoCUL.hex:i
Aufruf aus Verzeichnis D:\WinAVR-20100110\bin. Datei nanoCUL.hex liegt lokal im gleichen Verzeichnis.
Meldung:
Using Port : lpt1
Using Programmer : arduino
Overriding Baud Rate : 57600
avrdude.exe: ser_open(): can’t open device „lpt1“: Das System kann die angegebene Datei nicht finden.
Der CUL ist per USB direkt angeschlossen. Eine Umstellung der Parameter (–P COM18) weiter nach vorne/hinten macht keinen Unterschied. Neben dem arduino hängt nach der Empfänger für die Funktastatur /-maus am PC. Welche Addressierungsmöglichkeiten für USB hat man? Oder immer COM18?
Danke für Rückmeldungen
FC
Hallo Frank,
das liegt daran, das bei Dir der COM18 nicht das USB Device (nanoCul) ist. Schau mal im Geräte-Manger unter dem Eintrag Anschlüsse (COM & LPT). Dort sollte ein Eintrag „USB Serial Port (COM4)“ stehen. COM4 wäre er bei mir. Den Wert in Klammern trägst Du dann für -P ein.
Matscher
Hallo,
Funktioniert der KS300 Empfang und Homatic gleichzeitig auf einem CUL?
Gruß Rolf
Hallo Rolf,
nein das funktioniert nicht gleichzeitig.
Gruß,
Matscher
Hi,
danke für die Anleitung. Ich habe alles wie oben beschrieben durchgeführt und auch beim Flashen keinen Fehler bekommen aber:
Nach dem Flashen blinkt die grüne LED extrem schnell. Wenn ich das ganze vom USB ab- und wieder anstecke leuchtet lediglich noch die rote LED.
Da stimmt doch etwas nicht oder?
Danke im Voraus!
Grüße Dave
Hallo Dave,
schwer zu sagen. Bei mir leuchtet die rote und die Grüne LED dauerhaft. Am besten mal mit einen Terminalprogramm überprüfen, oder dieser doch funtkioniert. Kommunikationsparameter sind 38400/8N1 (screen, picocom, cutecom, minicom) und danach „v“ eingeben, dann sollte die Version vom cul Firmware herauskommen. Möglich ist auch, das beim flashen was schief gegangen ist. Wenn die grüne LED zu schnell blinkt, ist die Frequenz des Controllers falsch eingestellt. Da es aber nachdem erneuten anstecken nichts mehr blinkt, würde ich das vorerst ausschließen. Wenn, nochmal die Letzte Version aus dem SVN ziehen und nochmal flashen (bei mir läuft die V 1.65 nanoCUL868).
Gruß,
Matscher
Siehe FHEM Forum: Egal ob aus China oder Deutschland: Alle bisher bekannten und photographierten Platinen mit 2,54mm Raster mit Durchsteck-Pins sind auf 433Mhz optimiert und entsprechen sogar der Referenzimplementierung von TI, d.h. funktionieren eher schlecht als recht auf 868Mhz. Schade, dass das nicht erwähnt wird. Dabei kosten „echte“ auf 868Mhz optimierte Platinen im Stamp-Formfaktor nicht mehr.
http://forum.fhem.de/index.php/topic,24651.msg363840.html#msg363840
Hallo,
Problem offensichtlich gefunden.
Ich habe das -PCOM18 einfach weiter vorn angestellt und es hat geklappt.
c:\WinAVR-20100110\bin\avrdude.exe -C c:\WinAVR-20100110\bin\avrdude.conf -v -v -v -v -PCOM18 -patmega328p -carduino –PCOM18 -b57600 -D -Uflash:w:D:\culfw-code-525-trunk\culfw\Devices\nanoCUL\nanocul.hex:i
Hallo,
ich versuche nach Deiner Anleitung zu Flashen.
Befehl: c:\WinAVR-20100110\bin\avrdude.exe -C c:\WinAVR-20100110\bin\avrdude.conf -v -v -v -v -patmega328p -carduino –PCOM18 -b57600 -D -Uflash:w:D:\culfw-code-525-trunk\culfw\Devices\nanoCUL\nanocul.hex:i
Meldung:
Using Port: lpt1
– can’t open device LPT1.
Wenn PCOM18 angegeben ist sollte doch auch COM 18 verwendet werden?
Ich verstehe nicht was falsch läuft.
Gruß Björn
Hey,
habe das hex wie von Gummibär beschrieben unter Linux erstellt.
Da das Flashen unter Linux nicht klappen wollte wegen dem Fehler:
avrdude.exe: stk500_getsync(): not in sync: resp=0x00
Habe ich es unter Windows mit AtmelStudio und dem AVRisp mk2 über ISP beschrieben.
Resultat ist das Flashen geht, das Nano Board zeigt aber keine Regung. :-/
Hat jemand eine idee wo es dran liegen könnte?!
MfG
Also bei mir funktioniert das absolut nicht.
Kiege immer eine Fehlermeldung das der Befehl falsch geschrieben ist oder nicht gefunden wurde, obwohl eigentlich alles passen müsste.
D:\culfw\Devices\nanoCUL>C:\WinAVR-20100110\bin\avrdude.exe –PCOM16 -C „C:\WinAVR-20100110\bin\avrdude.conf“ -v -v -v -v -patmega328p -carduino -b57600 -D –U flash:w:D:\culfw\Devices\nanoCUL\nanocul.hex:i
Hallo Christian,
okay das ist copy&paste Problem. Passe ich dann im Post an. Die Anführungszeichen passen nicht. Jetzt sollte es mit folgenden Befehl funktionieren, solang die Pfade passen.
c:\WinAVR-20100110\bin\avrdude.exe -C c:\WinAVR-20100110\bin\avrdude.conf -v -v -v -v -patmega328p -carduino –PCOM18 -b57600 -D -Uflash:w:D:\97_SVN\culfw\Devices\nanoCul\nanocul.hex:i
Das Log aendet so:
c:\WinAVR-20100110\bin\avrdude.exe -PCOM3 -Cc:\WinAVR-20100110\bin\avrdude.conf -v -v -v -v -patmega328p -carduino -b57600 -D -Uflash:w:D:\97_SVN\culfw\Devices\nanoCul\nanocul.hex:i
Hallo Heiner,
ein anpassen des Ports im makefile ist nicht notwendig.
Was ich sehe ist:
Vtarget : 0.0 V
Das bedeutet soviel ich weiß, das der Controller kein Versorgungsspannung hat.
Nutzt du ICSP zum programmieren oder hast Du den nano direkt an USB angeschlossen?
Hi, ja ich hab einen Clone. Nach einigem rumprobieren scheint jetzt was zu kappen. Muss ich eigentlich im makefile acuh AVRDUDE_port auf meinen COM setzen? Das Log das ich jetzt krieg ist super lang und sieht nicht sauber aus. Es startet so:
D:\>cd D:\97_SVN\culfw\Devices\nanoCUL
D:\97_SVN\culfw\Devices\nanoCUL>c:\WinAVR-20100110\bin\avrdude.exe -PCOM3 -Cc:\W
inAVR-20100110\bin\avrdude.conf -v -v -v -v -patmega328p -carduino -b57600 -D -U
flash:w:D:\97_SVN\culfw\Devices\nanoCul\nanocul.hex:i
avrdude.exe: Version 5.10, compiled on Jan 19 2010 at 10:45:23
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is „c:\WinAVR-20100110\bin\avrdude.c
onf“
Using Port : COM3
Using Programmer : arduino
Overriding Baud Rate : 57600
avrdude.exe: Send: 0 [30] [20]
avrdude.exe: Send: 0 [30] [20]
avrdude.exe: Send: 0 [30] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [10]
AVR Part : ATMEGA328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page
Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
eeprom 65 5 4 0 no 1024 4 0 3600 3600 0xff 0xff
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
———– —- —– —– —- —— —— —- —— —– —– ———
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Arduino
Description : Arduino
avrdude.exe: Send: A [41] . [80] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [02]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: A [41] . [81] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [01]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: A [41] . [82] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [10]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: A [41] . [98] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [03]
avrdude.exe: Recv: . [10]
Hardware Version: 2
Firmware Version: 1.16
avrdude.exe: Send: A [41] . [84] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: A [41] . [85] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: A [41] . [86] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: A [41] . [87] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: A [41] . [89] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude.exe: Send: A [41] . [81] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [01]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: A [41] . [82] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [10]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: B [42] . [86] . [00] . [00] . [01] . [01] . [01] . [01] . [03] . [ff] . [ff] . [ff] . [ff] . [00] . [80]. [04] . [00] . [00] . [00] . [80] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: E [45] . [05] . [04] . [d7] . [c2] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [10]
avrdude.exe: Send: P [50] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [10]
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | | 0% 0.00savrdude.exe: Send: u [75] [20]
avrdude.exe: Recv: . [14] . [1e] . [95] . [0f] . [10]
Reading | ################################################## | 100% 0.02s
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: Send: V [56] P [50] . [00] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: safemode read 1, lfuse value: 0
avrdude.exe: Send: V [56] P [50] . [00] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: safemode read 2, lfuse value: 0
avrdude.exe: Send: V [56] P [50] . [00] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: safemode read 3, lfuse value: 0
avrdude.exe: safemode: lfuse reads as 0
avrdude.exe: Send: V [56] X [58] . [08] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: safemode read 1, hfuse value: 0
avrdude.exe: Send: V [56] X [58] . [08] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: safemode read 2, hfuse value: 0
avrdude.exe: Send: V [56] X [58] . [08] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: safemode read 3, hfuse value: 0
avrdude.exe: safemode: hfuse reads as 0
avrdude.exe: Send: V [56] P [50] . [08] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: safemode read 1, efuse value: 0
avrdude.exe: Send: V [56] P [50] . [08] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
avrdude.exe: safemode read 2, efuse value: 0
avrdude.exe: Send: V [56] P [50] . [08] . [00] . [00] [20]
avrdude.exe: Recv: . [14]
avrdude.exe: Recv: . [00]
avrdude.exe: Recv: . [10]
Siehst Du einen Fehler? In deiem Befehl hab ich nur -PCOM3 weiter nach vorn gezogen damit es funktioniert.
Hi, ich versuche gerade auch meine nanoCUL ueber Windows nach dieser Anleitung zu flashen. Ich habe aber Probleme.
Das Systtem sagt folgendes:
..3*
„avrdude.exe: Send: 0 [30] [20]“
dann
„avrdude.exe: Recv:
avrdude.exe: stk500_getsync(): not in sync: resp=0x00
Was mache ich falsch?
Hallo Heiner,
entweder ist der USB Port von einer anderen Anwendung blockiert, es ist der falsche Port oder der Treiber wurde nicht korrekt installiert. Ist es ein Clone?
Gruß,
Matscher