Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:tech:gw60

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
de:tech:gw60 [2021/01/18 11:56] bullarde:tech:gw60 [2021/01/19 08:27] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 2: Zeile 2:
  
 ====Motivation==== ====Motivation====
-Will man bei der Hausautomatisierung auch die Rolladen einbinden so bedarf es einer entsprechenden Steuerung. Wer nicht gleich die Rolladen selbst umrüsten möchte, kann auf elektronische Gurtwickler ausweichen. Diese sind ausgereift benötigen aber eine externe Stromversorgung. Es sind mehrere Hersteller auf dem Markt zu finden, die auch eine drahtlose Fernsteuerung im Program haben. Gemeinsam ist fast allen, dass sie auf eigene Standards setzen und auf eine Zentrale des jeweiligen Herstellers aufbauen. Will man das vermeiden muss eine eigene, offene Lösung her.+Will man bei der Hausautomatisierung auch die Rolladen einbinden so bedarf es einer entsprechenden Steuerung. Wer nicht gleich die Rolladen selbst umrüsten möchte, kann auf elektronische Gurtwickler ausweichen. Diese sind ausgereift benötigen aber eine externe Stromversorgung. Es sind mehrere Hersteller auf dem Markt zu finden, die auch eine drahtlose Fernsteuerung im Program haben. Gemeinsam ist fast allen, dass sie auf eigene Standards setzen und eine Zentrale des jeweiligen Herstellers benötigen. Will man das vermeiden muss eine eigene, offene Lösung her.
  
 {{ :tech:universalgurtwickler_ap-frontal.jpg?nolink&200|GW60}} {{ :tech:universalgurtwickler_ap-frontal.jpg?nolink&200|GW60}}
-{{:tech:universalhandsender-frontal-rgb.jpg?nolink&200 |ZB35}}+{{:tech:universalhandsender-frontal-rgb.jpg?nolink&200 |ZB40}}
  
 Ein preiswerter elektronischer Gurtwickler ist der [[https://www.superrollo-online.de/elektronische-rollladengurtwickler/superrollo-gw60/|GW60]] von SUPERROLLO. Er lässt sich mit einer [[https://www.superrollo-online.de/elektronische-rollladengurtwickler/funkset-zb40/|Funkfernsteuerung]] (433,92MHz) mit Keeloq Verschlüsselung erweitern. Mit dieser Fernbedienung sind so einzelne Rollos oder auch Gruppen aus der Ferne bedienbar. \\ Ein preiswerter elektronischer Gurtwickler ist der [[https://www.superrollo-online.de/elektronische-rollladengurtwickler/superrollo-gw60/|GW60]] von SUPERROLLO. Er lässt sich mit einer [[https://www.superrollo-online.de/elektronische-rollladengurtwickler/funkset-zb40/|Funkfernsteuerung]] (433,92MHz) mit Keeloq Verschlüsselung erweitern. Mit dieser Fernbedienung sind so einzelne Rollos oder auch Gruppen aus der Ferne bedienbar. \\
-Es gibt auch ein paar Umbaulösungen im Internet, die z.B. mit Hilfe eines {{https://www.hempel-online.de/umbau-superrollo-gw60-mit-esp8266.html|ESP8266}} die Tastendrücke simulieren. Das funktioniert recht zuverlässig und war bei mir auch 2 Jahre im Einsatz. Der Einbau ist aber schon aufwendig und die aktuelle Position wird nicht übermittelt da die Impulsauswertung sehr aufwendig ist. +Es gibt auch ein paar Umbaulösungen im Internet, die z.B. mit Hilfe eines {{https://www.hempel-online.de/umbau-superrollo-gw60-mit-esp8266.html|ESP8266}} die Tastendrücke simulieren. Das funktioniert recht zuverlässig und war bei mir auch 2 Jahre im Einsatz. Der Einbau ist aber schon aufwendig und die aktuelle Position wird nicht übermittelt da die Impulsauswertung dafür sehr aufwendig ist. 
  
-Der Traum wäre ein Modul dass in den vorgesehen Platz des GW60 Gehäuses passt und auch die aktuelle Position übermitteln kann. Ein Rückkanal steht tatsächlich schon an der Modulschnittstelle zur Verfügung, da RxD und TxD des GW60 Controllers an das Empfangsmodul gehen. Die anliegende Spannung von 5V ist aber nur mit deutlich weniger als 100mA belastbar. Da kommt ein ESP8266 nicht in Frage.+Der Traum wäre ein Moduldass in den vorgesehenen Platz des GW60 Gehäuses passt und auch die aktuelle Position übermitteln kann. Ein Rückkanal steht tatsächlich schon an der Modulschnittstelle zur Verfügung, da RxD und TxD des GW60 Controllers an das Empfangsmodul gehen. Die anliegende Spannung von 5V ist aber nur mit deutlich weniger als 100mA belastbar. Da kommt ein ESP8266 eher nicht in Frage.
  
-Bis der Traum sich verwirklichen liess, musste ich auf die neuen Rollos von IKEA mit [[de:tech:tradfri|TRÅDFRI]] Einbindung warten. Nach etwas Reverse Engineering steht fest, dass die TRÅDFRI Module mit der Rollo/Steuerung serial kommunizieren und gleich Position, Spannung und Strom mitliefern. Der Stromverbrauch liegt im Peak-Bereich bei 33mA. Das kann der interne Regler des GW60 schon verkraften. +Bis der Traum sich verwirklichen lies, musste ich auf die neuen Rollos [[https://www.ikea.com/de/de/p/fyrtur-verdunklungsrollo-kabellos-batteriebetrieben-grau-10408206/|FYRTUR]] von IKEA mit [[de:tech:tradfri|TRÅDFRI]] Einbindung warten. Nach etwas Reverse Engineering steht fest, dass die TRÅDFRI Module mit der Rollo-Steuerung seriell kommunizieren und auch gleich Position, Spannung und Strom austauschen. Der Stromverbrauch liegt im Peak-Bereich bei max. 33mA. Das kann der interne Regler des GW60 wohl verkraften. 
  
 ==== Hardware ==== ==== Hardware ====
-Die erste Aufgabe ist die Anbindung eines TRÅDFRI Moduls an den GW60 sodass es mechanisch wie elektrisch wie der Originalempfänger FB35 ausschaut. Das TRÅFRI Modul arbeitet mit 3.3V während der GW60 Controller mit 5V versorgt wird. Der Schaltplan muss daher Level-shifter und einen Spannungsregler enthalten. +Die erste Aufgabe ist die Anbindung des TRÅDFRI Moduls an den GW60 sodass es mechanisch wie elektrisch wie der Originalempfänger ZB40 ausschaut. Das TRÅDFRI Modul arbeitet mit 3.3V während der GW60 Controller mit 5V versorgt wird. Der Schaltplan muss daher zwei Level-shifter und einen Spannungsregler enthalten. 
 Meine Lösung sieht wie folgt aus: Meine Lösung sieht wie folgt aus:
  
 {{ :tech:schematic_gw60_zigbee.png?direct&600 |Schaltplan}} {{ :tech:schematic_gw60_zigbee.png?direct&600 |Schaltplan}}
  
-Links ist der Anschluss zum GW60 im Original als Federkontakt ausgelegt. Leider habe ich kein Lieferanten fuer diese Kontakte gefunden und bin deshalb auf POGO Pins ausgewichen. Die gibt es bei Ebay in fast allen Varianten. Hier kommt eine 6.8mm lange Version zum Einsatz. +Links ist der Anschluss zum GW60 im Original als Federkontakt ausgelegt. Leider habe ich kein Lieferanten für diese Kontakte gefunden und bin deshalb auf POGO Pins ausgewichen. Die gibt es bei [[https://www.ebay.de/itm/100x-vergoldete-6mm-Kupfer-Nadeln-Sonden-Spring-Pogo-Pin-Anschluss/372718361027?hash=item56c7bed9c3:g:TvkAAOSwXFldNB8B|Ebay]] in fast allen Varianten. Hier kommt eine 6mm lange Version zum Einsatz. 
  
 {{ :tech:pogo_pin.png?direct&100|POGO Pin}} {{ :tech:pogo_pin.png?direct&100|POGO Pin}}
  
-Rechts sind die Anschlüsse für die Modulprogrammierung als Pads ausgeführt. Damit lässt sich TRÅDFRI Modul programmieren. Schliesslich will man ja nicht jedesmal eine teure Rollosteuerung von IKEA kaufen um ein Modul für die eigene Lösung zu ergattern. Doch dazu später mehr. +Rechts sind die Anschlüsse für die Modulprogrammierung als Pads ausgeführt. Damit lässt sich TRÅDFRI Modul flashen. Schliesslich will man ja nicht jedesmal eine teure Rollosteuerung von IKEA kaufen um ein Modul für die eigene Lösung zu ergattern. Doch dazu in einem anderen [[de:tech:tradfri_mod|Artikel]] mehr. 
-Für die Verbindung mit der TRÅDFRI Steuerung ist der Taster und die LED vorgesehen. Einmal angelernt brauchen wir beides nicht mehr. +Für die Verbindung mit der TRÅDFRI Steuerung ist der Taster und die LED vorgesehen. Einmal angelernt brauchen wir beides nicht mehr. Der zur Verfügung stehende Platz reicht um alle Komponenten unterzubringen. 
-Der zur Verfügung stehende Platz reicht um alle Komponenten unterzubringen. +
  
 {{ :tech:gw60_zigbee_pcb.png?direct&200 |}} {{ :tech:gw60_zigbee_pcb.png?direct&200 |}}
  
-Damit auch der Deckel aufs Gehäuse passt, sollte das PCB nur 1mm dick wie beim Original sein.+Damit auch der Deckel aufs Gehäuse passt, sollte das PCB wie beim Original nur 1mm dick sein. 
 ==== Gehäuse ==== ==== Gehäuse ====
 Mit einem Messschieber ist das Gehäuse schnell in Fusion360 erstellt und sieht dann so aus: Mit einem Messschieber ist das Gehäuse schnell in Fusion360 erstellt und sieht dann so aus:
 +
 {{ :de:tech:gw60_zigbee_cover.png?nolink&400 |}} {{ :de:tech:gw60_zigbee_cover.png?nolink&400 |}}
-Es lässt wie abgebildet im 3D Drucker ohne Stützstrukturen drucken. Der kleine Block rechts dient zum Schutz der POGO Pins und lässt sich auf diese aufschieben.+ 
 +Es lässt sich wie abgebildet im 3D Drucker ohne Stützstrukturen drucken. Der kleine Block rechts dient zum Schutz der POGO Pins und lässt sich auf diese aufschieben.
  
 {{:tech:gw60_zigbee_modul.jpg?direct&200|TRÅDFRI Modul}} {{:tech:gw60_zigbee_modul.jpg?direct&200|TRÅDFRI Modul}}
 {{:tech:gw60_all.jpeg?direct&200|GW60 mit TRÅDFRI Modul}} {{:tech:gw60_all.jpeg?direct&200|GW60 mit TRÅDFRI Modul}}
    
-Die PCB Antenne schaut fuer einen besseren Empfang aus dem Gehäuse raus. Obwohl das Modul bei Montage des GW60 im Gurtkasten verschwindet gab es bei mir keine Verbindungsprobleme zu den TRÅDFRI Tastern oder zum Gateway.+Die PCB Antenne schaut für einen besseren Empfang aus dem Gehäuse raus. Obwohl das Modul bei Montage des GW60 im Gurtkasten verschwindet gab es bei mir keine Verbindungsprobleme zu den TRÅDFRI Tastern oder zum Gateway.
  
 ==== Software ==== ==== Software ====
  
-Das TRÅDFRI Modul ist zwar jetzt elektrisch und mechanisch mit dem GW60 verbunden allerdings kann der GW60 Controller noch nichts mit den Daten anfangen. Dazu muss die vorhandene Firmware erweitert werden. Den GW60 steuert ein PIC16F690 mit on-board Programming Interface. Als preiswerter Programmer bietet sich der PICKIT3 an, den es auch als China-Nachbau gibt.+Das TRÅDFRI Modul ist nun zwar jetzt elektrisch und mechanisch mit dem GW60 verbundenallerdings kann der GW60 Controller noch nichts mit den Daten anfangen. Dazu muss die vorhandene Firmware erweitert werden. Den GW60 steuert ein PIC16F690 mit on-board Programming Interface. Als preiswerter Programmer bietet sich der PICkit3 an, den es auch als China-Nachbau gibt.
  
-{{ :tech:pickit3.png?direct&200 |}} +{{ :tech:pickit3.png?direct&200 |PICkit3}} 
  
-Um als erstes die Original Firmware auslesen zu können, müssen wir die GW60 Platine mit dem PICkit3 verbinden. Als sehr hilfreich erweisen sich die Testpads auf der Rückseite des PCBs. Dort lassen sich leicht die 5 Kabel anlöten.+Um als erstes die Original Firmware auslesen zu können, müssen wir die GW60 Platine mit dem PICkit3 verbinden. Als sehr hilfreich erweisen sich die Testpads auf der Rückseite des GW60 PCBs. Dort lassen sich leicht die 5 Kabel anlöten.
  
 {{ :tech:gw60_pickit3.png?direct&400 |GW60 Programming}} {{ :tech:gw60_pickit3.png?direct&400 |GW60 Programming}}
Zeile 54: Zeile 56:
 Bei meinen GW60 war zum Glück das FLASH des PIC16F690 nicht geschützt. Bei meinen GW60 war zum Glück das FLASH des PIC16F690 nicht geschützt.
  
-=== Erweiterung === +==== Erweiterung ==== 
-Der eigentliche Teil der Arbeit bestand nun aus Reverse Engineering. Für die Erweiterung ist genug Platz im FLASH. Der Bereich 0600h - 07FFh ist ungenutzt. Um die Änderungen and der Original Software gering zu halten wird die Erweiterung nur an 4 Stellen eingebettet: +Der eigentliche Teil der Arbeit bestand nun wiederum aus Reverse Engineering. Für die Erweiterung ist genug Platz im FLASHdes PIC16F690. Der Bereich ''0600h - 07FFh'' ist ungenutzt. Um die Änderungen an der Original Software gering zu haltenwird die Softwareerweiterung nur an 4 Stellen in den Originalcode eingebettet: 
-  - INIT --> wird einmal während Initialisierung aufgerufen. +  - INIT --> wird einmal während der Initialisierung aufgerufen. 
   - ISR --> Erweiteung der Interrupt Service Routine   - ISR --> Erweiteung der Interrupt Service Routine
   - LOOP --> Main loop   - LOOP --> Main loop
   - PANEL --> Auswertung der Tastendrücke    - PANEL --> Auswertung der Tastendrücke 
  
-Dazu wird der Code an folgenden Stellen ausgetauscht+Dazu wird der Code an folgenden Stellen ausgetauscht (jeweils ein 16-bit Word):
 <code> <code>
  ADDR  CODE  ADDR  CODE
Zeile 98: Zeile 100:
 </code> </code>
  
-Vorsicht! Die Adressen sind 16-bit Word Adressen. Die jeweils untere Zeile gibt den Originalcode wieder und die darüber liegende den zu patchenden Code. Durch den Austausch springt der Controller jeweils in unsere Erweiterungssoftware und kommt wieder als wäre nichts geschehen. Damit bleibt die gesamte Funktionalität des GW60 erhalten. +Vorsicht! Die Adressen sind 16-bit Word Adressen. Die jeweils untere Zeile gibt den Originalcode wieder und die darüber liegende den zu patchenden Code. Das gilt natürlich nur für die mir vorliegende Softwareversion. Allerdings war die Software im Gegensatz zum PCB bei allen meinen zu unterschiedlichen Zeiten gekauften GW60 identisch.  
 +Durch den Austausch springt der Controller jeweils in unsere Erweiterungssoftware und kommt wieder als wäre nichts geschehen. Damit bleibt die gesamte Funktionalität des GW60 erhalten. 
  
-Die Grösse des Erweiterungscodes liegt bei 374 Words:+Die Grösse des Erweiterungscodes liegt bei 374 Words und ist hier einfach mal gelistet:
 <code> <code>
 ADDR 0600h - 0775h ADDR 0600h - 0775h
Zeile 127: Zeile 130:
 Die Erweiterung in den vier oben genannten Bereichen haben folgende Funktion: Die Erweiterung in den vier oben genannten Bereichen haben folgende Funktion:
 ==INIT== ==INIT==
-Hier werden die eigenen Variablen initialisiert und die Baudrate auf 2400 festgelegt. Die AUsfuehrung erfolgt am Ende der Originalsoftware.+Hier werden die eigenen Variablen initialisiert und die Baudrate auf 2400 festgelegt. Die Ausführung erfolgt am Ende der INIT Sequenz der Originalsoftware.
 ==ISR== ==ISR==
-Die Originalsoftware empfängt schon Bytes von der UART. Hier müssen wir nur noch mit einem Flag der Erweiterung signalisieren, dass ein neues Byte empfangen wurde.+Die Originalsoftware empfängt schon Bytes von der UART. Hier müssen wir nur noch mit einem Flag der Erweiterung signalisieren, dass ein neues Byte empfangen wurde. Auch hier klingt sich die Erweiterung am Ende der ISR ein.
 ==PANEL== ==PANEL==
-Hier werden die Tastendrücke simuliert wenn ein entsprechendes Kommando vom TRÅDFRI Module kam. Gleichzeitig wird beim Lauf die STOP Taste simuliert, wenn die vorgewählte Zwischenposition erreicht ist.+Hier werden die Tastendrücke simuliert wenn ein entsprechendes Kommando vom TRÅDFRI Modul kam. Gleichzeitig wird beim Lauf die STOP Taste simuliert, wenn die vorgewählte Zwischenposition erreicht ist.
 ==LOOP== ==LOOP==
 Hier erfolgt züglich die Auswertung eines empfangenden Frames und bei Anfrage wird der Statusframe mit der aktuellen Position gesendet.  Hier erfolgt züglich die Auswertung eines empfangenden Frames und bei Anfrage wird der Statusframe mit der aktuellen Position gesendet. 
  
-Das ASM File beinhaltet mehr Erklärungen:+Das ASM File der Erweiterung beinhaltet mehr Erklärungen:
 <file asm GW60_ext.asm> <file asm GW60_ext.asm>
 ; File:     GW60_ext.asm ; File:     GW60_ext.asm
Zeile 830: Zeile 833:
 </file> </file>
  
-Nach dem Patch der Originalsoftware verhält sich der GW60 wie ein IKEA Rollo. Es kann über die TRÅDFRI Schalter und das Gateway bedient werden. Es gibt die aktuelle Position wieder und kann auch eine bestimme Position anfahren. Ist das Gateway mit z.B. Siri verbunden, reicht morgens wie bei mir ein "Hey Siri, alle Rolladen öffnen" und schon wird es hell in der Wohnung. +Nach dem Patch der Originalsoftware verhält sich der GW60 wie ein IKEA Rollo. Es kann über die TRÅDFRI Taster und das Gateway bedient werden. Es gibt die aktuelle Position wieder und kann auch eine bestimme Position anfahren. Ist das Gateway mit z.B. Siri verbunden, reicht morgens wie bei mir ein "//Hey Siri, alle Rolladen öffnen//" und schon wird es hell in der Wohnung. 
-Der Umbau ist bei mir seit April 2020 ohne Probleme im Einsatz. Eine kleine Einschraenkung ergibt sich nur bei manueller Betätigung: dann wird die aktuelle Position erst bei dem nächsten Funkbefehl aktualisiert.+ 
 +==== Fazit ==== 
 +Der Umbau ist bei mir seit April 2020 ohne Probleme im Einsatz. Eine kleine Einschraenkung ergibt sich nur bei manueller Betätigung: dann wird die aktuelle Position erst bei dem nächsten Funkbefehl aktualisiert.\\ 
 +Falls man doch nochmal die Software aktualisieren muss habe ich das Programming Interface nach draussen gelegt. Ist aber sicher nur nice-to-have... 
 + 
 +{{ :tech:gw60_pgm_if.jpeg?direct&400 |}} 
 + 
 +==== Downloads ==== 
 + 
 +  * {{:tech:GW60_ZIGBEE_BOM.pdf | Bestückungsliste (BOM)}} 
 +  * {{:tech:GW60-ZIGBEE.brd.zip |PCB}} Eagle format (.brd) 
 +  * {{:tech:GW60_Zigbee v14.stl.zip| Gehäuse}} (STL Datei)
  
 +==== Spenden ====
  
 +Wenn ihr meine Arbeit unterstützen wollt, so könnt ihr mir gerne einen Cappuccino oder so spenden: .
  
 +<html>
  
 +<form action="https://www.paypal.com/donate" method="post" target="_top">
 +<input type="hidden" name="hosted_button_id" value="N397JC5HP82AQ" />
 +<input type="image" src="https://www.paypalobjects.com/de_DE/DE/i/btn/btn_donateCC_LG.gif" border="0" name="submit" title="PayPal - The safer, easier way to pay online!" alt="Donate with PayPal button" />
 +<img alt="" border="0" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1" />
 +</form>
  
 +</html>
de/tech/gw60.1610971011.txt.gz · Zuletzt geändert: 2021/01/18 11:56 (Externe Bearbeitung)