FHEM – Ein Selbstbau CUL 868

Selbstbau CUL 868
Selbstbau CUL 868

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.)

 

CC1101 868 Mhz und Arduino Nano
CC1101 868 Mhz und Arduino Nano

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 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.

nanoCul 868 mHz
nanoCul 868 mHz

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.

 

25 thoughts on “FHEM – Ein Selbstbau CUL 868

  1. 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?

  2. 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“

    1. 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

  3. 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

    1. 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

  4. 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

    1. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

    1. 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

  10. 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

    1. 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?

  11. 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.

  12. 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?

    1. 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

Schreibe einen Kommentar

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