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

Hallo,

da der momentan verwendete Arduino so langsam an seine Grenzen (Geschwindigkeit, Flash und SRAM) kommt, habe ich mir Gedanken über eine neue Version mit leistungsfähiger Hardware gemacht.

Als Hardware wird der STM32F103CBT6 Maple Mini verwendet:
128 Kbytes Flash
20 Kbytes SRAM
  2 SPI

Als optimales LAN Modul den USR-ES1 W5500
https://www.usriot.com/download/ES1/USR-ES1-EN%20V1.3.pdf



Es gibt 2 Konfigurations Varianten

a:) einfacher SIGNALduino mit nur einem cc1101 Modul

Es wird dabei nur das CC1101_1 (B) - für OOK/ASK verwendet.
Schaltplan siehe Anlage. Es kann auch die Platine von @Ranseyer verwendet werden, wenn nur das zweite cc1101 Modul bestückt wird.

Es ist keine cc1101 Modul konfiguration notwendig, das Modul B wird automatisch initialisiert.

Zur Inbetriebnahme ist folgendes notwendig:
- Bootloader 2.0 über USB flashen (bei aktuellen Maple Mini ist der Bootloader 2.0 evtl schon drauf)
- Firmware flashen (die bin Datei muss ggf durch die aktuelle Version ersetzt werden) 
  sudo dfu-util -d 1eaf:0003 -a 2 -D Maple_sduino_USB_411dev200627.bin -R

- evtl angepasstes 00_SIGNALduino Modul installieren
  gegenüber der Version von Sidey vom fhem update, enthält diese Version optimierungen und Komfortfunktionen.
- Erste schritte

b:) mit mehreren cc1101 Modulen und FSK



Aufbau der Hardware (mehrere cc1101 Module für FSK)

Ab der Version 4.1.0 werden bis zu 4 cc1101 Module (A-D) unterstützt
Beim MapleSduino sind die cc1101 Module an SPI2 angeschlossen:

28 MOSI
29 MISO
30 SCLK

CC1101_0 (A)
31  CSN  (Chip Select)
11  GD02 (Receive)
10  GD00  (send), optional für die a-culw

CC1101_1 (B) - 433 MHz für OOK/ASK
12  CSN  (Chip Select)
18  GD02 (Receive)
17  GD00  (send)

CC1101_2 (C)
15  CSN  (Chip Select)
16  GD02 (Receive)
13  GD00  (send), optional für die a-culw



Platine

Es gibt von @Ranseyer eine Platine:
https://forum.fhem.de/index.php/topic,109220.0.html
Es gibt 2 Bestückungsvarianten: normal (die USB Buchse und die Reset Taste sind oben), gedreht (USB Buchse ist unten in der Aussparung und kann z.B. mit Heisskleber fixiert werden.
Zur Orientierung ist Pin 31 beschriftet.

Wichtig: Bei den V0.1 und V0.2 Platinen ist die vertauschte Beschriftung 433 und 868 MHz manuell zu ändern!
433 ist CC0_A
868 ist CC1_B (433 MHz)



Flashen der Firmware

Hier ist die Firmware:  https://github.com/Ralf9/SIGNALDuino/releases

Es gibt momentan Binaries für USB, LAN und serial (tx/rx vom DBG Anschluss)
- LAN gibts momentan nur für den MapleSduino
   https://forum.fhem.de/index.php/topic,106278.msg1049877.html#msg1049877
- serial ist z.B. für eine wifi-serial bridge mit dem ESP (z.B. ESP-link)

Es gibt für den MapleSduino und den MapleCul verschiedene Binaries:

Die "Maple_sduino....bin" ist für den MapleSduino und
die "Maple_cul_....bin" ist für den Maple Cul und Maple Cun

Damit kann die Firmware geflasht werden, die bin Datei muss ggf durch die passende Version ersetzt werden

sudo dfu-util -d 1eaf:0003 -a 2 -D Maple_sduino_USB_411dev200627.bin -R
oder
sudo dfu-util -d 1eaf:0003 -a 2 -D Maple_cul_USB_411dev200627.bin -R


Die Baudrate wurde auf 115200 erhöht.



a-culw

Es gibt für den MapleSduino auch eine a-culw Firmware
https://forum.fhem.de/index.php/topic,106278.msg1037726.html#msg1037726



Bootloader

USB funktioniert momentan nur mit dem orginal Bootloader
Dies lässt sich auch an der upload Dauer erkennen: Beim orginal Bootloader dauert der Upload ca 30 sec und beim Bootloader 2.0 dauert der Upload nur ca 3 sec


Ab der Version 4.1.0-dev200427 ist für die bin Files der Bootloader2.0 erforderlich. z.B. maple_mini_boot20.bin
https://wiki.fhem.de/wiki/MapleCUN#Bootloader_flashen
Bootloader 2.0 über USB flashen



Kompilieren

Wer es selber kompilieren will:

https://github.com/Ralf9/SIGNALDuino/tree/dev-r41x_cc1101
https://forum.fhem.de/index.php/topic,106278.msg1027914.html#msg1027914




Für die komfortable Bedienung und für FSK ist ein angepasstes 00_SIGNALduino Modul notwendig

Es ist auch bei der Initialisierung des MapleMini eine Optimierung enthalten.
https://forum.fhem.de/index.php/topic,111653.msg1058900.html#msg1058900

Erste schritte
https://forum.fhem.de/index.php/topic,106278.msg1032098.html#msg1032098

Hier ist eine allgemeine Befehlsübersicht:
https://forum.fhem.de/index.php/topic,58396.msg497921.html#msg497921

Hier ist eine Beschreibung "FSK mit dem SIGNALDuino"
https://forum.fhem.de/index.php/topic,106594.msg1004463.html#msg1004463

Es gibt auch ein Wiki
https://wiki.fhem.de/wiki/Maple-SignalDuino

Linkliste




Bei dieser Version für den Maple Mini gibt es u.a. die folgenden Neuerungen:


       
  • Das Sendekommando kann eine maximale Länge von 600 Zeichen haben.
  • Der Messagepuffer hat nun eine maximale Größe von 1500 Pulsen
    Es gibt nun 2 neue Konfigurationsvariablen

    CSmaxMsgSizex256  -  damit kann die Größe des Messagepuffers konfiguriert werden. Der Wert wird mit 256 multipliziert, d.h. 4 ergibt eine Messagepuffergröße von 1024

    CSmaxMuPrintx256  -  damit kann die maximale Länge von MU-Nachrichten konfiguriert werden. Der Wert wird mit 256 multipliziert
  • Die zweite und folgenden MS-Nachrichten werden nun mit der vorherigen MS-Nachricht verglichen, sind sie gleich, wird am Ende ein "Q" ausgegeben.
    Werden 3 gleiche MS-Nachrichten in Folge empfangen, so werden die folgenden MS-Nachrichten nicht mehr ausgegeben.
    Per default werden 4 MS-Nachrichten ausgegeben, dies kann z.B. mit  CSmscnt=8 auf 8 erhöht werden
    Wenn aktiviert, dann steht bei get config (CG): MSEQ=1;
    CEQ -  aktivieren, dann werden die folgenden gleichen MS-Nachrichten nicht mehr ausgegeben
    CDQ - deaktivieren
  • CR - configRadio
    MIt CRE<A-D> kann ein cc1101 Modul aktiviert werden. z.B. CREA aktiviert das erste cc1101 Modul A
    MIt CRD<A-D> kann ein cc1101 Modul deaktiviert werden. z.B. CRDA deaktiviert das erste cc1101 Modul A
  • Der Befehl b wurde erweitert:
    b<A-D><0-9>  damit wird ein cc1101 (A-D) mit einer Speicherbank (0-9) initialisiert. z.B. mit bA3 wird das das erste cc1101 Modul A mit der Speicherbank 3 initalisiert.
    b<A-D> damit wird ein cc1101 (A-D) selektiert. Die Befehle zum lesen und schreiben vom EEPROM und cc1101 Registern werden auf das selektierte cc1101 angewendet. Z.B. mit bA wird das erste cc1101 Modul A selektiert.
    mit nachgestelltem W wird es im EEPROM gespeichert
  • br - damit wird von allen cc1101 eine Bankinfo ausgegeben
  • bs - damit wird eine Übersicht von allen Bänken ausgegeben
  • 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 zugeordent wurde.
    Wenn ein Modul nicht aufgeführt ist, dann ist es noch deaktiviert. 
  • Mit XQ und XE wird jetzt bei allen cc1101 der Empfang deaktiviert oder aktiviert
    Wird bei XQ oder XE ein A-D drangehängt, dann können einzelne Empfänger aktiviert oder deaktiviert werden.
    Bei der USB Version ist durch anhängen von W ein XQW zu empfehlen. Mit XQW wird nach einem Reset der Empfang des cc1101 nicht automatisch aktiviert.
    Dies kann in einigen Fällen zur Optimierung der Initialisierung beim Fhem Modul nötig sein und ist an "irx0" in der Version erkennbar.
  • Die Datenkomprimierung für MS- und MU-Nachrichten (config: Mred=1) ist nun nicht mehr notwendig.
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

Ralf9

to do Liste

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

sash.sc

Lässt sich das sketch von esp8266 nicht ohne Probleme auf dem esp32 portieren?

Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Ralf9

#3
Zitat von: sash.sc
Hallo Ralf.

Ich habe einen wemos als Signalduino am laufen.

Ist da die Hardware nicht ausreichend?
Oder möchtest du den LAN Anschluss haben?

Gruß Sascha
ja, ich möchte einen LAN Anschluss haben.
Wenn WLAN dann gleich den ESP32


Zitat von: Beta-User am 07 Januar 2020, 11:17:23
Wunschliste II: MapleSignalduino (mit LAN+durchgereichten seriellen Interfaces, auf MapleCUN-Basis)...

Ja sowas ähnliches habe ich in nächster Zeit vor,  den Maple Mini und das LAN Modul habe ich schon (siehe Anlage)
Der Maple Mini hat ja 2 SPI Busse, kann man da auf einem SPI das LAN Modul und auf dem anderen SPI dann zwei cc1101 Module anschließen?

Im ersten Schritt reicht für mich erstmal nur ein cc1101 Modul
Für die durchgereichten seriellen Interfaces werde ich Hilfe gebrauchen, das bekomme ich nicht alleine hin.


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

Hallo Ralf,

der STM32 ist schon eine gute Wahl, allerdings etwas aufwendiger in der Programmierung als ein ATMEGA. Eventuell kannst du die SPI-Anbindung vom mapleCUL stibitzen.

Ich versuche schon seit einiger Zeit dem CSM/megaCUL (ATMEGA1284P) SIGNALDuino beizubringen. Aber trotz Portanpassungen in der Firmware wird der CC1101 nicht erkannt.
Hast Du eventuell Interesse an einem CSM (mehr SRAM, zwei UART, usw.)? ... ist geschenkt!

Ralf9

Hallo locutus,

ZitatHast Du eventuell Interesse an einem CSM (mehr SRAM, zwei UART, usw.)? ... ist geschenkt!
nein, habe dafür kein bedarf.

Ja der Maple Mini ist für den Signalduino sehr interessant. Es wird aber noch etwas dauern bis ich dazu komme.
Werde dann wahrscheinlich einige Fragen dazu haben.
Aber erstmal möchte ich die sduino V 3.3.4.0 fertig machen, die V.4.0.x wird darauf aufbauen.

Weißt Du zufällig bis zu welcher Baudrate die serielle über USB beim Maple Mini stabil funktioniert?
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


Ralf9

Zitat0% Baudratenfehler bei 57,6Kbps.
https://cw.fel.cvut.cz/wiki/_media/courses/be2m37mam/tasks/stm32-uart.pdf

Danke dies ist recht interessant.
Die 57,6Kbps. sind beim sduino in manchen Fällen grenzwertig, z.B. bei sehr langen Nachrichten.

Die 115.2Kbps haben bei 72 MHz auch 0%, ich werde es damit versuchen.

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

RaspiLED

#8
Hi Ralf,
soll ich Dir einen aufgebauten MapleCUL mit 4 cc1101 und LAN zur Verfügung stellen? Auf Ranseyer's großem Board?

Sowas: https://forum.fhem.de/index.php/topic,60458.msg728546.html#msg728546

Gruß Arnd


Signalduino (Nano, ESP, ...), CUL (Busware, Nano, Maple, ...), Homematic (HM-MOD-UART-RPI, ESP, Maple, ...), LaCrosseGateway (LGW, ESP, ...), 1-wire, ESPEasy, Bravia, Yamaha, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

Ralf9

Hallo Arnd,

Danke für das Angebot, ist aber nicht nötig, ich habe den Maple Mini, das LAN-Module und 2 cc1101 Modul vorliegen.

Ich benötige aber noch raw Nachrichten von weiteren LaCrosse Sensoren.

ich werde hier noch schreiben was ich u.a. noch gebrauchen kann
https://forum.fhem.de/index.php/topic,106594.0.html

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

Ralf9

Ich hab mir mal vom MapleCul die PIN-Belegung des Maple Mini für die ersten beiden cc1101 Module rausgesucht -> siehe erster Beitrag.

Ich kann noch ein Pinout vom Maple Mini gebrauchen.

Kann es sein, daß es vom USR-ES1 W5500 kein aktuelles Datenblatt gibt?
Ich habe nur dies gefunden, da passt aber die PIN-Belegung nicht
https://www.usriot.com/download/ES1/USR-ES1-EN%20V1.3.pdf
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

sash.sc

Zitat von: Ralf9 am 09 Januar 2020, 23:10:53
Hallo Arnd,

Danke für das Angebot, ist aber nicht nötig, ich habe den Maple Mini, das LAN-Module und 2 cc1101 Modul vorliegen.

Ich benötige aber noch raw Nachrichten von weiteren LaCrosse Sensoren.

ich werde hier noch schreiben was ich u.a. noch gebrauchen kann
https://forum.fhem.de/index.php/topic,106594.0.html

Gruß Ralf
Hat du denn maple Mini von Locutus?

Gesendet von meinem MI 9 mit Tapatalk

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Ralf9

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

sash.sc

Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Beta-User

Zitat von: Ralf9 am 07 Januar 2020, 22:40:37
Für die durchgereichten seriellen Interfaces werde ich Hilfe gebrauchen, das bekomme ich nicht alleine hin.
Will nicht behaupten, dass ich das alles verstanden hätte. Telekatz zu fragen ist sicher eine gute Idee, der arbeitet aber mWn. nicht mit der Arduino-IDE, sondern mit irgendwas "richtigem".

Hatte irgendwo mal ein Projekt gesehen, das nur die beiden weiteren Schnittstellen nach USB durchreicht, leider finde ich den Link nicht mehr. Im Prinzip waren das aber am Ende nur ein paar Programmzeilen unter Zuhilfenahme dessen, was STM dazu bereitstellt.
Könnte sein, dass sich das auf eine include beschränkt, interessant scheinen mir vor allem die drei Funktionen ab hier zu sein: https://github.com/heliflieger/a-culfw/blob/master/culfw/Devices/MapleCUN/stm32f1xx_it.c#L311, sowie die Basisdefines, die irgendwie in den STM-Teilen weit verstreut liegen, z.B. https://github.com/heliflieger/a-culfw/blob/master/culfw/STM32/usbd/usb_device.h#L54 und über die makefile eingebunden werden (?).

Hoffe, das hilft irgendwie weiter, ich bin da auch ziemlich verloren....




@Ralf9:
Vielleicht noch eine Anmerkung zum Thema "Maple": Ich hatte hier auch schon ein paar andere Boards rumliegen (v.a. "Blue Pill"), aber wirklich gut funktioniert hatten eigentlich nur die "Maple"-Varianten, die ja auch halbwegs erschwinglich sind. Memory&PIN-mäßig macht das vermutlich nicht den Riesen-Unterschied, aber für eine größere Verbreitung wäre mMn. zu empfehlen, ein erprobtes Standardboard als Basis zu nehmen, idealerweise unter Verwendung derselben PIN-Layouts wie beim MapleCUN.
(Bin aber auch da eher User wie Entwickler; kann auch falsch sein!).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files