Entwicklung SIGNALDuino Empfänger Firm- und Hardware V4 für Maple Mini und ESP32

Begonnen von Ralf9, 13 Dezember 2019, 12:48:26

Vorheriges Thema - Nächstes Thema

Ralf9

Ich habe hier bei der ersten Nachricht eine Beschreibung der Hard- und Firmware angefangen.

Vorerst gibt es nur bin files für USB, LAN kommt später
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

@Telekatz, @papa

ich möchte beim FSK Empfang auch die RSSI abfragen, ich habe es mir so gedacht, hat dies irgendwelche Nachteile?

if (isHigh(pinReceive[radionr])) {  // wait for CC1100_FIFOTHR given bytes to arrive in FIFO
if (LEDenabled) {
blinkLED=true;
}
fifoBytes = cc1101::getRXBYTES();
if (fifoBytes > 0) {
uint8_t RSSI = cc1101::getRSSI()




Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

papa

Da kann ich auch nicht wirklich helfen. Beim Homematic-Empfang steht der RSSI Wert direkt hinter dem Paket.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Ralf9

Ich habe das RSSI beim FSK Empfang mal so eingebaut, es scheint einigermaßen zu passen.
Mir ist aufgefallen das die RSSI um ca 5 dB schwankt.
Beim TX29DTH-IT sind bei ähnlicher Entfernung die RSSI Werte um ca 5-10 dB besser als beim PCA301.
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

Ich möchte eine ToDoListe machen, passt dies hier rein oder ist es besser im Github?
Im Github können die erledigten Einträge abgehakt werden, geht dies hier im fhem Forum auch?
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

PeMue

Zitat von: Ralf9 am 10 März 2020, 10:23:33
Ich möchte eine ToDoListe machen, passt dies hier rein oder ist es besser im Github?
Ich mache das immer im ersten Post, den ich dann entsprechend ändere (-> erl., bzw. farblich kennzeichnen).
Im github wäre das vermutlich etwas professioneller.

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

habeIchVergessen

Zitat von: Ralf9 am 06 März 2020, 16:19:12
@Telekatz, @papa

ich möchte beim FSK Empfang auch die RSSI abfragen, ich habe es mir so gedacht, hat dies irgendwelche Nachteile?

if (isHigh(pinReceive[radionr])) {  // wait for CC1100_FIFOTHR given bytes to arrive in FIFO
if (LEDenabled) {
blinkLED=true;
}
fifoBytes = cc1101::getRXBYTES();
if (fifoBytes > 0) {
uint8_t RSSI = cc1101::getRSSI()




Gruß Ralf

wäre es nicht besser, per Interrupt die Bytes + RSSI in eine eigene FiFo zu schreiben und die Verarbeitung "nur" auf dieser laufen zu lassen?
Zumidest wird das im Davis-Sketch (RFM69 Funkchip) so gemacht. Hab ich auch "nur" kopiert.

Ralf9

Zitatwäre es nicht besser, per Interrupt die Bytes + RSSI in eine eigene FiFo zu schreiben und die Verarbeitung "nur" auf dieser laufen zu lassen?
Nein, die Bytes + RSSI werden hier nicht verarbeitet, sondern direkt ausgegeben. Die Verarbeitung erfolgt im Signalduino Modul
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

locutus

Zitat von: Ralf9 am 28 Februar 2020, 17:59:48
Was für eine Hardware verwendest Du zum Testen?
Diese hier.
Ich bin zwei Schritte vorangekommen. maple_mini_boot.bin Bootloader ist drauf und das Flashen der Firmware hat auch funktioniert:
sudo dfu-util -d 1eaf:0003 -a 1 -D Maple_cul_USB_410dev200306.bin -R
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: Invalid DFU suffix signature
dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!
Opening DFU capable USB device...
ID 1eaf:0003
Run-time device DFU version 0110
Claiming USB DFU Interface...
Setting Alternate Setting #1 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 1024
Copying data from PC to DFU device
Download        [=========================] 100%        56104 bytes
Download done.
state(8) = dfuMANIFEST-WAIT-RESET, status(0) = No error condition is present
Done!
Resetting USB to switch back to runtime mode


Aber ccconf liefert eine Frequenz von 6656.000 MHz zurück!
Internals:
   CFGFN     
   Clients    :IT:CUL_TCM97001:SD_RSL:OREGON:CUL_TX:SD_AS:Hideki:SD_WS07:SD_WS09: :SD_WS:RFXX10REC:Dooya:SOMFY:SD_BELL:SD_UT:SD_WS_Maverick:FLAMINGO:CUL_WS:Revolt: :FS10:CUL_FHTTK:Siro:FHT:FS20:CUL_EM:Fernotron:SD_Keeloq:SIGNALduino_un:
   DEF        /dev/ttyACM0@115200
   DMSG       nothing
   DevState   initialized
   DeviceName /dev/ttyACM0@115200
   FD         11
   FUUID      5e67fb25-f33f-68ff-7223-5befd1b120383244
   IDsNoDispatch 2,72.1,82
   LASTDMSG   nothing
   LASTDMSGID nothing
   NAME       MapleMini
   NR         45
   PARTIAL   
   STATE      opened
   TIME       1583872805
   TYPE       SIGNALduino
   hasCC1101  1
   sendworking 0
   version    V 4.1.0-dev200306 SIGNALduino cc1101 (R: B-*) - compiled at Mar  7 2020 14:27:50
   versionProtocols 1.10
   versionmodul v3.4.1
   MatchList:
     10:SD_WS07 ^P7#[A-Fa-f0-9]{6}[AFaf][A-Fa-f0-9]{2,3}
     11:SD_WS09 ^P9#F[A-Fa-f0-9]+
     12:SD_WS   ^W\d+x{0,1}#.*
     13:RFXX10REC ^(20|29)[A-Fa-f0-9]+
     14:Dooya   ^P16#[A-Fa-f0-9]+
     15:SOMFY   ^Ys[0-9A-F]+
     16:SD_WS_Maverick ^P47#[A-Fa-f0-9]+
     17:SD_UT   ^P(?:14|29|30|34|46|68|69|76|81|83|86|90|91|91.1|92|93|95)#.*
     18:FLAMINGO ^P13\.?1?#[A-Fa-f0-9]+
     19:CUL_WS  ^K[A-Fa-f0-9]{5,}
     1:IT       ^i......
     20:Revolt  ^r[A-Fa-f0-9]{22}
     21:FS10    ^P61#[A-F0-9]+
     22:Siro    ^P72#[A-Fa-f0-9]+
     23:FHT     ^81..(04|09|0d)..(0909a001|83098301|c409c401)..
     24:FS20    ^81..(04|0c)..0101a001
     25:CUL_EM  ^E0.................
     26:Fernotron ^P82#.*
     27:SD_BELL ^P(?:15|32|41|42|57|79|96)#.*
     28:SD_Keeloq ^P(?:87|88)#.*
     2:CUL_TCM97001 ^s[A-Fa-f0-9]+
     3:SD_RSL   ^P1#[A-Fa-f0-9]{8}
     4:OREGON   ^(3[8-9A-F]|[4-6][0-9A-F]|7[0-8]).*
     5:CUL_TX   ^TX..........
     6:SD_AS    ^P2#[A-Fa-f0-9]{7,8}
     7:Hideki   ^P12#75[A-F0-9]+
     9:CUL_FHTTK ^T[A-F0-9]{8}
     X:SIGNALduino_un ^[u]\d+#.*
   QUEUE:
   READINGS:
     2020-03-10 21:44:42   ccconf          freq:6656.000MHz bWidth:58KHz rAmpl:42dB sens:16dB  (DataRate:1621826.17Baud)
     2020-03-10 21:40:14   config          MS=1;MU=1;MC=1;Mred=0_MScnt=4;maxMuPrint=768;maxMsgSize=1024;Mdebug=1;MdebFifoLimit=120/170
     2020-03-10 21:46:35   ping            OK
     2020-03-10 21:44:35   state           opened
     2020-03-10 21:44:35   version         V 4.1.0-dev200306 SIGNALduino cc1101 (R: B-*) - compiled at Mar  7 2020 14:27:50


Angeschlossen ist nur ein 868 MHz Transceiver. Wie hier definiert:
#elif MAPLE_CUL
#define PIN_LED              33
#define PIN_SEND             17   // gdo0 Pin TX out
#define PIN_RECEIVE          18


a-culfw für MapleCUL liefert korrekte Werte zurück.

Ralf9

ZitatAngeschlossen ist nur ein 868 MHz Transceiver.
Wie ist er angeschlossen?

so
CC1101_0 (A)
31  CSN  (Chip Select)

oder so?
CC1101_1 (B)
12  CSN  (Chip Select)

Die Befehle werden ausgeführt entweder in der Arduino IDE im seriellen Monitor
oder mit
get sduino raw

Was ergibt ein:
Falls CC1101_0 (A)
CREA
sollte ergeben:
detect A: Partn=0 Ver=20

Falls CC1101_1 (B)
CREB
sollte ergeben:
detect B: Partn=0 Ver=20


Was ergibt ein C99
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Ralf9

@Telekatz

gibt es einen besonderen Grund warum hier CC1100_READ_BURST  verwendet wird und nicht CC1100_READ_SINGLE?
https://github.com/heliflieger/a-culfw/blob/f4305ea7ca9aba2ace6978c9c29e2645072e5c66/culfw/clib/cc1100.c#L431
uint8_t
cc1100_readReg(uint8_t addr)
{
  CC1100_ASSERT;
  cc1100_sendbyte( addr|CC1100_READ_BURST );
  uint8_t ret = cc1100_sendbyte( 0 );
  CC1100_DEASSERT;
  return ret;
}


Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

locutus

Zitat von: Ralf9 am 10 März 2020, 23:00:04
Wie ist er angeschlossen?
Die Maple_cul_USB_410dev200306.bin Firmware kann nicht funktionieren, da die Portbelegung für CC1101_0 (A) mit dem MapleCUL nicht übereinstimmt:

4 MOSI
5 MISO
6 SCLK


CC1101_0 (A)
7  CSN (Chip Select)
11  GD02 (Receive)
10  GD00 (Send)

CC1101_1 (B)
12  CSN (Chip Select)
18  GD02 (Receive)
17  GD00 (Send)

CC1101_2 (C)
15  CSN (Chip Select)
16  GD02 (Receive)
13  GD00 (Send)

CC1101_3 (D)
3   CSN (Chip Select)
14  GD02 (Receive)

Ralf9

Ich hatte die falsche Belegung gepostet:
https://github.com/Ralf9/SIGNALDuino/blob/976b9a39016cc04d5e4cf913c59f620b0cf72109/cc1101.h#L32
#elif MAPLE_CUL
#define mosiPin 4   // MOSI out
#define misoPin 5   // MISO in
#define sckPin  6   // SCLK out
SPIClass SPI_2(mosiPin, misoPin, sckPin);
const uint8_t radioCsPin[] = {7, 12, 15, 3};
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

Telekatz

Zitat von: Ralf9 am 11 März 2020, 00:36:56
@Telekatz

gibt es einen besonderen Grund warum hier CC1100_READ_BURST  verwendet wird und nicht CC1100_READ_SINGLE?
https://github.com/heliflieger/a-culfw/blob/f4305ea7ca9aba2ace6978c9c29e2645072e5c66/culfw/clib/cc1100.c#L431
uint8_t
cc1100_readReg(uint8_t addr)
{
  CC1100_ASSERT;
  cc1100_sendbyte( addr|CC1100_READ_BURST );
  uint8_t ret = cc1100_sendbyte( 0 );
  CC1100_DEASSERT;
  return ret;
}


Gruß Ralf

Ich nehme an, es wurde deshalb gemacht, um auch auf die Register ab 0x30 zugreifen zu können:
ZitatFor register addresses in the range 0x30-
0x3D, the burst bit is used to select between
status registers, burst bit is one, and command
strobes, burst bit is zero (see 10.4 below).
Because of this, burst access is not available
for status registers and they must be accesses
one at a time. The status registers can only be
read.

Ralf9

Ich habe in der ersten Nachricht die Beschreibung zur Version Ausgabe ergänzt:
Mit V (get Version) bekommt man eine Übersicht über die Module z.B. (R: A1 B0*). Mit * wird das selektierte cc1101 Modul markiert
Ein "-" hinter dem Modul (A-D), bedeuted, daß dieses Modul nicht richtig erkannt wurde,
ein "i" bedeuted, daß das Modul zwar korrekt erkannt wurde, aber noch keiner Bank zugeordnet wurde.
Wenn ein Modul nicht aufgeführt ist, dann ist es noch deaktiviert. 



Bei der zweiten Nachricht habe ich eine to do Liste angefangen
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7