Steuerung eines Treppenliftes über WLAN
Problematik und Aufgabenstellung
Wenn man die Bewegungsfähigkeit im Einfamilienhaus über mehrere Etagen auch im Alter aufrechterhalten möchte, stellt sich irgendwann die Frage nach der Anschaffung eines Treppenliftes. Nach Vergleich verschiedener Systeme wurde also ein solcher Treppenlift angeschafft und installiert.
Das System brachte eine erhebliche Erleichterung und ließ sich bequem über Joystick in der Armlehne oder über Fernsteuerung bedienen. Diese Bedienung über Tastenbetätigung ist bei allen Systemen gleich, hat aber einen grundsätzlichen Nachteil. Aus Sicherheitsgründen muss die entsprechende Taste während der gesamten Fahrzeit gedrückt gehalten bleiben. Dieses Prinzip ist als „Totmannschalter“ bei Schienenfahrzeugen bekannt.
Möchte man bei der Fahrt mit dem Treppenlift irgendwelche Gegenstände mitnehmen, so hat man nur eine Hand zur Verfügung, da mit der anderen Hand der Joystick festgehalten werden muss. Auch wenn man den Lift per Fernbedienung z.B. über mehrere Etagen schicken will, muss über einige Minuten die Taste der Fernbedienung gehalten werden. Diese Bedienung hat sich sehr schnell als lästig erwiesen, warum gibt es also nicht eine Steuerung wie sie bei normalen Aufzügen vorzufinden ist?
Somit war die Aufgabenstellung klar, es galt eine aufzugähnliche Steuerung zu bauen. Ein Eingriff in das vorhandene System kam nicht infrage, da einerseits die Steuerungstechnik nicht bekannt war und andererseits verbot sich dies auch aus Garantiegründen.
Hier lag der Gedanke nahe, über einen Microcontroller (z.B. Arduino) eine parallele Steuerung aufzubauen und in das WLAN-Netz des Hauses einzubinden.
Hardware
Als WLAN-fähiger Microcontroller wurde die ESP8266 NodeMCU gewählt, welche mit der Arduino IDE programmiert werden kann. Die Stromversorgung erfolgte über ein 5 V Netzteil.
Der Microcontroller liefert als Ausgangssignale die Befehle für AUF und AB. Diese steuern jeweils über eine Transistorschaltung ein Relais an. Die Tastkontakte einer Fernbedienung wurden durch Kabel herausgeführt und an die Schaltausgänge der Relais gelegt. Somit war die Tastenbedienung durch Schalter ersetzt worden.
Für eine Aufzugsteuerung ist die Information über den jeweiligen Standort erforderlich. Hierzu wurden auf jeder Etage Endschalter installiert, die die Parkposition des Treppenliftes anzeigen. Die Signale der Endschalter wurden durch dünne Kabel zur Steuereinheit geführt. Diese Kabel konnten fast unsichtbar unterhalb des Treppengeländers verlegt werden. Durch diese Kabelverbindung fängt man sich jedoch Störsignale ein, die zu einer falschen und wechselnden Positionsanzeige führen. Durch jeweils einen externen Pullup von 1 kOhm und einen Kondensator von 10 uF gegen GND kann dieser Effekt sicher verhindert werden.
Software
Die ESP8266 NodeMCU wird mit der Arduino IDE programmiert. Hierzu muss das Add-On ESP8266 installiert sein. Weiterhin sind verschiedene Bibliotheken einzubinden:
- ESP8266WebServer.h // Lib für den Webserver
- ESP8266WiFi.h // Lib für das WLAN
- time.h // Lib für die Uhrzeit über NPT-Server
- FS.h // Lib für das SPIFFS-Filesystem
Der HTML-Code zum Erstellen der Webseite wird im ESP8266-Dateisystem (SPIFFS) gespeichert. Um die HTML-Datei in den ESP8266-Flash-Speicher hochzuladen, wird ein Plug-in für die Arduino DIE, der Dateisystem-Uploader verwendet. Zunächst wird ein Ordner namens Data erstellt, in diesem Ordner wird die zuvor erstellte HTML-Datei gespeichert. Anschließend wird die HTML-Datei in das ESP8266-Dateisystem über Tools > ESP8266 Data Sketch Upload hochgeladen.
Das komplette Programm ist im Hauptsketch KJS_Node_Treppenlift.ino enthalten und ausführlich dokumentiert, lediglich der Sketch zur Verbindung mit dem WLAN wurde als Connect-Sketch ausgelagert und wird im Haupt-Tab aufgerufen. Dies hat sich für mich als praktisch erwiesen, da ich den Connect-Sketch somit auch für andere Programme unverändert kopieren und verwenden kann.
Download des Codes
Die beiden Arduino Sketche sowie der HTML-Text stehen als Github Gist zum Download bereit:
KJS_Node_Treppenlift.ino Connect.ino index.html