Inzwischen gibt es für den Signalduino eine Firmware die den CC1101 unterstützt. Es wird die Verkabelung des nanoCUL verwendet.
Hier sind Schaltungsvarianten mit dem 3,3V 8MHz promini bei denen man sich keine Gedanken über Levelshifter machen muß, da keine benötigt werden.
https://forum.fhem.de/index.php/topic,69042.msg605241.html#msg605241Die Firmware ist noch in Entwicklung.
Ich habe die folgenden Befehle eingebaut. Gesendet werden sie mit
get sduino raw
Alle Werte sind in hex:
C<reg>
<reg> is a (two digit) hex number: return the value of the cc1101 register. <reg>=99 dumps the first 48 registers.
Example: C35 -> C35 = 0D
e
EEPROM / factory reset. resets all eeprom values without reboot
r<AA>
Read eeprom (da das "R" beim SIGNALDuino bereits mit freeram belegt ist, habe ich das "r" verwendet)
r<AA>n
Read 16 byte from eeprom (z.B. r00n)
W<AA><DD>
Write eeprom (schreibt einen Wert ins EEPROM und ins CC1101 Register. Die eeprom Adresse hat einen Offset von 2. z.B W041D schreibt 1D ins Register 2)
WS<AA>
Strobe commands z.B:
34 Enable RX
36 Exit RX / TX (idle state)
x<pp> Change the (EEPROM) PA tables (power amplification for RF sending)
MIt
C35 wird das MARCSTATE Register ausgelesen:
01 - IDLE
02 - XOFF
0D - RX
12 - ENDCAL
13 - TX
Mit dem
WS Befehl kann der state des CC11001 gewechselt werden. Hier ist sind einige strobe commands:
31 SFSTXON Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1). If in RX (with CCA): Go to a wait state where only the synthesizer is running (for quick RX / TX turnaround).
34 Enable RX
35 Enable TX
36 Exit RX / TX (idle state)
3D No operation. May be used to get access to the chip status byte.
Beim WS Befehl wird der chip status zurück gegeben:
0 IDLE IDLE state (Also reported for some transitional states instead of SETTLING or CALIBRATE)
1 RX Receive mode
2 TX Transmit mode
3 FSTXON Fast TX ready
4 CALIBRATE Frequency synthesizer calibration is running
5 SETTLING PLL is settling
6 RXFIFO_OVERFLOW
7 TXFIFO_UNDERFLOW
Mit dem
x Befehl kann die Sendeleistung geändert werden. Hier sind die Werte für 433 MHz:
34 -10_dBm
68 -5_dBm
60 0_dBm
84 5_dBm
C8 7_dBm
C0 10_dBm
Mit
C3E kann die PATABLE ausgelesen werden
Mit
r30n kann die im EEPROM gespeicherte PATABLE ausgelesen werden
Die PATABLE besteht aus 8 Werten. Da das PA ramping nicht verwendet wird, wird nur der zweite Wert verwendet.
Hier sind die allgmeinen Befehle:? -> help
V -> Version
R -> freeRam
t -> uptime
XE -> enableReceiver
XQ -> disableReceiver
P -> Ping
CG -> getConfig
enableMessagetype
CES -> MS
CEC -> MC
CEU -> MU
disableMessagetype
CDS -> MS
CDC -> MC
CDU -> MU
CER -> Einschalten der Datenkomprimierung (config: Mred=1)
CDR -> Abschalten der Datenkomprimierung (config: Mred=0)
S -> sendSR;R=3;... sendet die Daten im Raw-Modus dreimal wiederholt
SM;R=3;... sendet die Daten Manchester codiert dreimal wiederholt
SC;R=3;... sendet eine kombinierte Nachricht dreimal wiederholt (das SC am Anfang wird benötigt um bei einer kombinierten Nachricht ein repeat anzugeben)
In meiner Firmware V 3.3.2 gibt es zusätzlich noch:
https://forum.fhem.de/index.php/topic,82379.msg744554.html#msg744554CED -> Debugausgaben ein
CDD -> Debugausgaben aus
CDL -> Message-LED aus
CEL -> Message-LED ein
CEO -> Einschalten der sehr langen MU-Nachrichten (config: MuNoOverflow=1)
CDO -> Abschalten der sehr langen MU-Nachrichten
CSmscnt=[Wert] -> Wiederholungszähler für den split von MS Nachrichten (default=4)
CSmuthresh=[Wert] -> Schwellwert in us für den split von MU Nachrichten (0=aus)
CSmcmbl=[Wert] -> minbitlen für MC-Nachrichten
CSfifolimit=[Wert] -> Schwellwert für debug Ausgabe der Pulsanzahl im FIFO Puffer
?S - show configSet commands (z.Zt.: fifolimit mcmbl mscnt muthresh)
eC - initEEPROMconfig
Damit werden die config Daten im EEPROM auf default zurückgesetzt
In den FIFO Empfangspuffer gehen z.Zt. 100 Pulse, dh. eine Ausgabe von MD=100 bedeutet ein Pufferüberlauf
Ab meiner Firmware V 3.3.2.2-rc10 gibt es
CSmaxnumpat=[Wert] -> Mit maxnumpat kann man dann die max Anzahl Pattern bis auf 16 erhöhen (P0-PF Hex), default ist 8.
CSmaxpulse=[Wert] -> Mit maxpulse kann man die max Pulslänge (default -32001) verkleinern, ab der ein Ende erkannt wird. Z.B. mit maxpulse 17000 wird -18532 als Ende erkannt.
Ab meiner Firmware V 3.3.4 gibt es
https://forum.fhem.de/index.php/topic,82379.msg1010643.html#msg1010643rN<adr16> -> read 64 Byte from EEPROM
b -> Info über die gerade aktive Bank
bs -> banksummary
b<0-9> -> damit können die cc1101 Register zwischen 10 verschiedenen EEPROM Bänken (0000, 0100, 0140, 0180, 01C0,..) umgeschaltet werden.
CW<reg><val>, <reg><val>... -> damit kann eine folge von cc1101 Registern gesetzt und in die aktuelle EEPROM Speicherbank geschrieben werden