Maple-SignalDuino: Unterschied zwischen den Versionen
K (Abbildung eingefügt →Platine) |
K (→Nutzung in FHEM: Änderungen, Anpassungen der Struktur) |
||
Zeile 158: | Zeile 158: | ||
== Nutzung in FHEM == | == Nutzung in FHEM == | ||
=== <big>Austausch des FHEM Moduls 00_SIGNALduino.pm</big> === | |||
Für die komfortable Bedienung und für FSK ( Empfang/Dekodierung vom LaCrosse Protokoll benötigt FSK) ist ein {{Link2Forum|Topic=111653|Message=1058900|LinkText=angepasstes 00_SIGNALduino Modul}} notwendig. | Für die komfortable Bedienung und für FSK ( Empfang/Dekodierung vom LaCrosse Protokoll benötigt FSK) ist ein {{Link2Forum|Topic=111653|Message=1058900|LinkText=angepasstes 00_SIGNALduino Modul}} notwendig. | ||
Wird die ursprüngliche 00_SIGNALduino.pm genutzt, ist das dekodieren von LaCrosse Sensoren nicht möglich und | Wird die ursprüngliche 00_SIGNALduino.pm genutzt, ist das dekodieren von LaCrosse Sensoren nicht möglich und es bedarf recht umständlicher Zeichenfolgen, um z.B den jeweiligen Sendemodus eines CC1101 Moduls zu konfigurieren. So lautet z.B. die Zeichenfolge für die Konfiguration des Sendemodus ''Mode 1 - IT+ 17.241 kbps (LaCrosse)'' | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
get sduino raw CW0001,0246,0302,042D,05D4,06FF,0700,0802,0D21,0E65,0F6A,1089,115C,1206,1322,14F8,1556,1700,1818,1916,1B43,1C68,1D91,2211,23E9,242A,2500,2611,3D00,3E04,404d,4131,425f,4349,4454,452b,4600 | get sduino raw CW0001,0246,0302,042D,05D4,06FF,0700,0802,0D21,0E65,0F6A,1089,115C,1206,1322,14F8,1556,1700,1818,1916,1B43,1C68,1D91,2211,23E9,242A,2500,2611,3D00,3E04,404d,4131,425f,4349,4454,452b,4600 | ||
Zeile 168: | Zeile 167: | ||
Wird die angepasste 00_SIGNALduino.pm genutzt so steht folgender Befehl im FHEM Device zur Verfügung | Wird die angepasste 00_SIGNALduino.pm genutzt so steht folgender Befehl im FHEM Device zur Verfügung | ||
<syntaxhighlight lang="text"> | <syntaxhighlight lang="text"> | ||
set sduino rfmode | set sduino rfmode Lacrosse_mode1_17241 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Zeile 184: | Zeile 183: | ||
</syntaxhighlight>auf die ursprüngliche 00_SIGNALduino.pm zurück gewechslt werden. | </syntaxhighlight>auf die ursprüngliche 00_SIGNALduino.pm zurück gewechslt werden. | ||
=== USB | === Define in FHEM === | ||
{{Randnotiz|RNTyp=g|RNText=Weitere Hintergrundinformationen zu dieser Art der Adressierung von USB-Geräten allgemein sind in [[Mehrere USB-Geräte einbinden|diesem Beitrag]] zu finden.}} | |||
==== USB ==== | |||
Ist der Maple-SDuino per USB in FHEM eingebunden muss zunächst die USB-ID des FTDI Chip vom Maple ermittelt werden. {{Randnotiz|RNTyp=g|RNText=Weitere Hintergrundinformationen zu dieser Art der Adressierung von USB-Geräten allgemein sind in [[Mehrere USB-Geräte einbinden|diesem Beitrag]] zu finden.}}Dazu im Terminal den folgenden Befehl ausführen: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ls -l /dev/serial/by-id | ls -l /dev/serial/by-id | ||
Zeile 194: | Zeile 195: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Der define Befehl in FHEM ist nun folgender | |||
:<code>define <eigener-SIGNALduino-Name> SIGNALduino /dev/serial/by-id/'''''usb-STMicroelectronics_MAPLEMINI_F103CB_CDC_in_FS_Mode_XXXXXXXX-if00'''''@115200</code> | :<code>define <eigener-SIGNALduino-Name> SIGNALduino /dev/serial/by-id/'''''usb-STMicroelectronics_MAPLEMINI_F103CB_CDC_in_FS_Mode_XXXXXXXX-if00'''''@115200</code> | ||
==== LAN ==== | |||
Ist der Maple-SDuino per LAN in FHEM eingebunden so lautet das define <syntaxhighlight> | |||
define <eigener-SIGNALduino-Name> SIGNALduino 192.168.0.244:23 | |||
</syntaxhighlight> | |||
Bei der LAN Version ist in der Grundeinstellung DHCP vom Maple-SignalDuino aktiviert. | Bei der LAN Version ist in der Grundeinstellung DHCP vom Maple-SignalDuino aktiviert. |
Version vom 21. Juli 2021, 14:04 Uhr
Maple-SignalDuino | |
---|---|
Allgemein | |
Protokoll | diverse |
Typ | Transceiver |
Kategorie | |
Technische Details | |
Kommunikation | Funk, 433MHz oder 868MHz |
Kanäle | f |
Betriebsspannung | 3,3V nach Spannungsregler |
Leistungsaufnahme | |
Versorgung | USB |
Abmessungen | 79 x 27 mm |
Sonstiges | |
Modulname | modifiziertes SIGNALduino |
Hersteller | Eigenbau |
Einleitung
Der Maple-SignalDuino (Maple-SDuino) ist ein I/O Gerät zur Funkübertragung basierend auf dem Maple-Mini, der ursprüglich von LeafLabs entwickelt wurde. Der STM32F103 bietet deutlich mehr Ressourcen als die Atmel/Microchip Mega-328 Mikrocontroller der bisherigen Arduino Plattformen.
Einfacher SIGNALduino mit nur einem cc1101 Modul (alternativ)
Es wird dabei nur das CC1101_1 (B) - für OOK/ASK verwendet.
Schaltplan siehe Maple-SignalDuino#Aufbau der Hardware. 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
- Firmware flashen
- evtl. angepasstes 00_SIGNALduino Modul installieren
Software
Dieses Projekt ist NICHT zu verwechseln mit dem Originalprojekt. Es handelt sich hierbei um einen Clone von RFFHEM und SIGNALduino.
Neuerungen
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 zwei neue Konfigurationsvariabl
- ::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 drei gleiche MS-Nachrichten in Folge empfangen, so werden die folgenden MS-Nachrichten nicht mehr ausgegeben. Per default werden vier MS-Nachrichten ausgegeben, dies kann z.B. mit CSmscnt=8 auf acht 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
- Befehl CR - configRadio
- CRE<A-D> aktiviert ein cc1101 Modul z.B. CREA aktiviert das erste cc1101 Modul A
- CRD<A-D> deaktiviert ein cc1101 Modul z.B. CRDA deaktiviert das erste cc1101 Modul A
- Der Befehl b wurde erweitert:
- b<A-D><0-9> initialisiert ein cc1101 Modul (A-D) mit einer Speicherbank (0-9) z.B. bA3 initialisiert das erste cc1101 Modul A mit der Speicherbank 3
- b<A-D> selektiert ein cc1101 Modul (A-D) z.B. selektiert bA das erste cc1101 Modul A. Die Befehle zum lesen und schreiben vom EEPROM und cc1101 Registern werden auf das selektierte cc1101 angewendet.
- mit nachgestelltem W wird es im EEPROM gespeichert z.B. bA1W
- 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), bedeutet, dass dieses Modul nicht richtig erkannt wurde, ein "i" bedeutet, dass das Modul zwar korrekt erkannt wurde, aber noch keiner Bank zugeordnet wurde. Wenn ein Modul nicht aufgeführt ist, dann ist es noch deaktiviert.
- XQ - deaktiviert Empfang aller cc1101 Module
- XQ<A-D> - deaktiviert Empfang einzelner cc1101 Module
- XE - aktiviert Empfang aller cc1101Module
- XE<A-D> - aktiviert Empfang einzelner cc1101 Module
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.
Kompilieren
Wer es selber compilieren will: https://github.com/Ralf9/SIGNALDuino/tree/dev-r41x_cc1101 (siehe auch diesen Forenbeitrag) Außerdem besteht jetzt auch die Möglichkeit mit platformio zu kompilieren. Weiter Infos dazu hier.
Flashen
Es empfiehlt sich, sowohl den Bootloader als auch die Firmware im zunächst unbestückten Zustand des MapleSduino auf selbigen zu flashen. Im Forum wird immer wieder mal von nicht funktionierenden Bauteilen wie Maple, LAN Modul oder auch nicht korrekt funktionierenden CC1101 Modulen berichtet. Sind alle Bauteile auf entsprechenden Platinen erst einmal verlötet, ist es sehr schwierig defekte Bauteile zu entlöten bzw. auszutauschen. Außerdem ist eine stabile Spannungsversorgung vom Maple während der Flashvorgänge zwingend erforderlich.
Bootloader flashen
Ab der Version 4.1.0-dev200427 ist für die .bin Files der Bootloader2.0 erforderlich. Es kann durchaus möglich sein das auf einem frisch gelieferten Maple bereits der Bootloader 2.0 drauf ist. Daher empfiehlt es sich zunächst den Versuch zu starten direkt die Firmware zu flashen. Ist der benötigte Bootloader 2.0 nicht auf dem Maple so muss dieser einmalig auf dem Maple installiert werden. Ist das erfolgt so kann die Firmware beliebig oft geflasht werden.
Um den Flashvorgang zu vereinfachen dient folgendes kleine Skript:
#! /bin/sh
while (true); do
echo "Debug-Port des MAPLE per FTDI-USB2Seriell Wandler anschliessen (RX+TX gekreuzt)!, Bot-Taste halten und erst dann MAPLE mit Spannung versorgen. "
sudo stm32flash -w maple_mini_boot20.bin -v /dev/ttyUSB0
if [ $? -eq 0 ]
then break
fi
sleep 1
done
exit
Der Bootloader als .bin Datei steht hier zum Download bereit. Weitere Details zum Flashen des Bootloaders
- MapleCUN
- Bootloader 2.0 über USB flashen
- https://github.com/heliflieger/a-culfw/tree/master/culfw/Devices/MapleCUN
Firmware flashen
Ist der benötigte Bootloader erst einmal geflasht, kann die Firmware des MapleSduino geflasht werden. Abhängig davon, wie der MapleSduino in das System eingebunden werden soll, (USB, LAN oder WIFI) gibt es momentan jeweilige Binaries für USB, LAN und Wifi/serial (tx/rx vom DBG Anschluss)
- LAN gibt es momentan nur für den MapleSduino; siehe dazu diesen Forenbeitrag.
- 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
Die "Maple_cul_....bin" ist für den MapleCUL und MapleCUN.
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
Hier steht ein kleines Script zur Verfügung welches den Flashvorgang sehr vereinfacht und hier ist die Firmware zu finden: https://github.com/Ralf9/SIGNALDuino/releases
Die verfügbare a-culw Firmware ist in diesem Forenbeitrag beschrieben und herunterladbar.
Hardware
Als Hardware wird der STM32F103CBT6 Maple Mini verwendet:
- 128 Kbytes Flash
- 20 Kbytes SRAM
- 2 SPI
- Als optionales LAN Modul den USR-ES1 W5500.
Aufbau der Hardware
Ab der Version 4.1.0 werden bis zu vier 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. Auf dieser Platine kann der Maple-Mini auf zwei unterschiedliche Arten bestückt werden:
- normal (die USB Buchse und reset/but Taste sind oben, somit sind die beiden Taster direkt zu betätigen)
- gedreht (USB Buchse ist unten in der Aussparung und kann zB. mit Heisskleber fixiert werden, reset/but Taster sind durch entsprechende Löcher/Langloch in der Platine zu betätigen)
Zur Orientierung ist Pin 31 auf der Platine beschriftet.
Es können bis zu 3 CC1101 Module/Stamps an der Platine betrieben werden. 2 Module 868MHz und 433MHz werden direkt auf die Platine gelötet. Das dritte Modul/Stamp wird Mithilfe einzelner Adern an die Platine (Lötaugen CC3A-VCC,GND,MOSI,SCK und CC3B-CS2,Out2,IN2,MISO2) angeschlossen
Wichtig: Bei den V0.1 und V0.2 Platinen ist die Beschriftung 433 und 868 MHz manuell zu ändern!
Teile
- Maple Mini / STM32F103CBT6: https://de.aliexpress.com/item/1400667476.html oder auch schneller bei Amazon
Funkmodule nach Wahl:
- CC1101 868MHZ: https://de.aliexpress.com/item/32635393463.html, https://de.aliexpress.com/item/4000594832541.html
- CC1101 433 Mhz: https://de.aliexpress.com/item/32472259186.html
Empfohlen:
- Puffer-Kondensator 10-500uF. Z.B. als C5 mit 10uF: Conrad Artikelnummer 457966
Optional:
- LAN Modul USR-ES1 W5500: https://de.aliexpress.com/item/32598945210.html
- Abblock-Kondensator mit ein paar pF bis nF an VCC des Maple. Z.B. als C6 mit 22PF: Conrad Artikelnummer 445432
- Koaxbuchsen: https://de.aliexpress.com/item/4000009303962.html
Antennen: Infos dazu gibt es reichlich im Internet, auch im Antennenthread im FHEM-Forum
Nutzung in FHEM
Austausch des FHEM Moduls 00_SIGNALduino.pm
Für die komfortable Bedienung und für FSK ( Empfang/Dekodierung vom LaCrosse Protokoll benötigt FSK) ist ein angepasstes 00_SIGNALduino Modul notwendig.
Wird die ursprüngliche 00_SIGNALduino.pm genutzt, ist das dekodieren von LaCrosse Sensoren nicht möglich und es bedarf recht umständlicher Zeichenfolgen, um z.B den jeweiligen Sendemodus eines CC1101 Moduls zu konfigurieren. So lautet z.B. die Zeichenfolge für die Konfiguration des Sendemodus Mode 1 - IT+ 17.241 kbps (LaCrosse)
get sduino raw CW0001,0246,0302,042D,05D4,06FF,0700,0802,0D21,0E65,0F6A,1089,115C,1206,1322,14F8,1556,1700,1818,1916,1B43,1C68,1D91,2211,23E9,242A,2500,2611,3D00,3E04,404d,4131,425f,4349,4454,452b,4600
Wird die angepasste 00_SIGNALduino.pm genutzt so steht folgender Befehl im FHEM Device zur Verfügung
set sduino rfmode Lacrosse_mode1_17241
Ein update auf die angepasste 00_SIGNALduino.pm kann gemacht werden mit
update all https://raw.githubusercontent.com/Ralf9/RFFHEM/master/controls_ralf9_signalduino.txt
oder die Datei 00_SIGNALduino.pm ins FHEM Verzeichnis und die signalduino_protocols.pm ins lib Verzeichnis kopieren, dann fhem neu starten.
Hier gibt es noch weitere Details zu dem Thema:
Wenn gewünscht kann jederzeit mit dem Befehl
update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/master/controls_signalduino.txt
auf die ursprüngliche 00_SIGNALduino.pm zurück gewechslt werden.
Define in FHEM
USB
Ist der Maple-SDuino per USB in FHEM eingebunden muss zunächst die USB-ID des FTDI Chip vom Maple ermittelt werden.
Dazu im Terminal den folgenden Befehl ausführen:
ls -l /dev/serial/by-id
Das ergibt z.B. diese Ausgabe:
lrwxrwxrwx 1 root root 13 28. Jun 19:13 usb-STMicroelectronics_MAPLEMINI_F103CB_CDC_in_FS_Mode_XXXXXXXXX-if00 -> ../../ttyACM0
Der define Befehl in FHEM ist nun folgender
define <eigener-SIGNALduino-Name> SIGNALduino /dev/serial/by-id/usb-STMicroelectronics_MAPLEMINI_F103CB_CDC_in_FS_Mode_XXXXXXXX-if00@115200
LAN
Ist der Maple-SDuino per LAN in FHEM eingebunden so lautet das define
define <eigener-SIGNALduino-Name> SIGNALduino 192.168.0.244:23
Bei der LAN Version ist in der Grundeinstellung DHCP vom Maple-SignalDuino aktiviert.
Soll der Maple-SignalDuino eine feste IP im Netz bekommen so kann z.B mit Hilfe einer Telnet Verbindung die Netzwerk Konfig des Maple-SignalDuino geändert werden. CUN Netzwerk einrichten
Inbetriebnahme/Konfiguration
Ist der Maple-SDuino in Fhem definiert, so müssen je nach Bestückung die jeweiligen CC1101 Module konfiguriert werden. Beispielhaft hier die Konfiguration eines Maple-SDuino mit 3 CC1101 Modulen/Stamps. Das erste Modul (868 MHz) empfängt/dekodiert Slow/RF, das zweite Modul (433 MHz) ist für IT und das dritte (868 MHz) Modul ist für LaCrosse. In der Grundeinstellung ist zunächst nur das zweite Modul (433MHz - Radio B) aktiv. Module 1 und 3 (Radio A und Radio C) sind deaktiviert. Deshalb müssen zunächst die beiden Radios aktiviert werden, danach werden die jeweiligen Radios mit den in den Speicherbänken hinterlegten RFmodes initialisiert:
get <dein Maple-SDuino> CREA #aktiviert Radio A
get <dein Maple-SDuino> CREC #aktiviert Radio C
get <dein Maple-SDuino> raw bA #selektiert Radio A
get <dein Maple-SDuino> cmdbank 0 #aktiviert Speicherbank 0 des Maple-SDuino
get <dein Maple-SDuino> rfmode SlowRF_CCFactoryReset #speichert rfmode SlowRF in aktivierter Speicherbank
get <dein Maple-SDuino> raw bA0W #Zuordnung Radio A mit Speicherbank 0
get <dein Maple-SDuino> raw bB #selektiert Radio B
get <dein Maple-SDuino> cmdbank 1 #aktiviert Speicherbank 1 des Maple-SDuino
get <dein Maple-SDuino> rfmode SlowRF_CCFactoryReset #speichert rfmode SlowRF in aktivierter Speicherbank
get <dein Maple-SDuino> raw bB1W #Zuordnung Radio A mit Speicherbank 1
get <dein Maple-SDuino> raw bC #selektiert Radio C
get <dein Maple-SDuino> cmdbank 2 #aktiviert Speicherbank 2 des Maple-SDuino
get <dein Maple-SDuino> rfmode LaCrosse_mode_17241 #speichert rfmode LaCrosse_17241 in aktivierter Speicherbank
get <dein Maple-SDuino> raw bC2W #Zuordnung Radio A mit Speicherbank 2
Als Ergebnis steht dann im Reading version unter anderem
(R: A0* B1 C2) # RadioA Speicherbank0, Radio B Speicherbank1, RadionC Specherbank2
In den Internals des Maple-Sduino steht dann sinngemäß folgendes
a_ccconf b=0 freq:868.350MHz bWidth:464KHz rAmpl:42dB sens:4dB (DataRate:5603.79Baud,Modulation:ASK/OOK) [boffs=0100*]
b_ccconf b=1 freq:433.920MHz bWidth:325KHz rAmpl:42dB sens:4dB (DataRate:5603.79Baud,Modulation:ASK/OOK) [boffs=0140]
c_ccconf b=2 freq:868.300MHz bWidth:203KHz rAmpl:33dB sens:8dB (DataRate:17257.69Baud) [boffs=0000]
Fehlersuche, Diverse
Der Stromverbrauch der Transceiver ist typischerweise 17 mA für RX und 34 mA für TX pro Modul. Bei Inaktivität: 4 Transceiver, LAN-Modul, MAPLE ca 100mA.
Wenn der SlowRF nicht mehr funktioniert: Per Default ist das cc1101 Modul der Bank 0 zugeordnet, dies kann mit get Version kontrolliert werden. Es muß in Version "B0" stehen z.B. (R: B0). Es kann auch ein Factory Reset vom Modul B versucht werden, dazu muß das Modul B selektiert sein (R: B0*)
get sduino raw e
Antwort:
ccFactoryReset done r=B b=0 rx=0 ccmode=0 sync=D391 ccconf=10B07157C43023B900070018146C070090 boffs=0000
Wenn es immer noch nicht funktioniert kann auch mit "eC" ein factory Reset der Konfigeinstellungen im EEPROM durchgeführt werden.
get sduino raw eC
Antwort:
Init eeprom to defaults detect B: Partn=0 Ver=0x14
Wenn ein nativer Mode (FSK) nicht mehr funktioniert: Dazu muss das entsprechende cc1101 Modul selektiert sein. Mit "get Version" kann dies kontrolliert werden. Ein "-" bedeutet, daß das Modul nicht erkannt wurde z.B. (A-). Ein "i" bedeutet, das dem Modul keine Bank zugeordnet wurde z.B.(Ai).
Es kann versucht werden mit den raw Befehlen "e" und "CW..." die Bank neu zu konfigurieren. Wenn dies alles nicht hilft, kann mit dem raw Befehl "eC" ein factory Reset der Konfigeinstellungen gemacht werden.