Wir haben an unserem Haus zwei elektrische Markisen angebaut. Dabei handelt es sich um eine klassische Markise auf einer Terassenüberdachung. Dazu kommt eine zweite, senkrechte Markise, um Nachmittags und Abends die Sonne wegzuhalten. Für diese beiden Markisen habe ich mit einer ESP8266 & Arduino Kombination eine Steuerung gebaut, die per WLAN und 433MHz Funkfernbedienung ansprechbar ist. Das Konzept ist auch für elektrische Rolladen verwendbar.
Für die Ansteuerung der nötigen Relais kommt ein Arduino Nano zum Einsatz. Dieser bietet genügend Ausgänge. Weiterhin habe ich einen Empfänger für den 433MHz an den Arduino angeschlossen. Ein ESP8266 dient als WLAN Interface und stellt einen Webserver bereit. Der ESP8266 könnte im Prinzip auch die gesamte Steuerung vornehmen. Die üblichen, günstigen ESP8266 Boards bieten aber nur 2 Ein/Ausgangspins. Durch die Kombination des Arduinos mit dem ESP8266 bekommen wir genügend Pins. Beide Mikrocontroller sind bei ebay für jeweils unter 3 Euro zu bekommen.
Steuerung der Markisen mit einem Relaisboard & Arduino
Markisen wie auch Rolladen werden typischerweise durch zwei Anschlüsse für die Phase angesteuert. Ganz trivial: einmal einfahren, einmal ausfahren. Meistens sind die Kabel dafür schwarz und braun (dazu blau für die Erde und grün/gelb für die Schutzerde).
Die beiden Phasen darf man nicht gleichzeitig anschließen. Da es sich häufig um Konsensatormotoren handelt, darf man mehrere Motoren auch nicht parallel an einen Schalter anschließen. Die Gründe dazu findet man leicht per Suchmaschine. Ich erwähne es hier nur kurz als Randbedingung des Designs.
Wir wollen als 3 Zustände schalten können:
1. Beide Phasen stromlos.
2. Braune Phase angeschlossen.
3. Schwarze Phase angeschlossen.
Das bestromen beider Phasen soll ausgeschlossen sein. Weiterhin muss im Code vermieden werden, dass die Motorrichtung direkt gewechselt wird. In diesem Fall liegt auf dem Motorkondensator noch Spannung an. Eine Umpolung kann dann die Relais überlasten.
Die einfachste Variante zur Lösung ist die Steuerung eines Motors mit Hilfe von zwei Relais. Dabei schaltet Relais 1 die Phase und Relais 2 die Richtung. Relais 2 muss als ein Umschalter sein. Die Relais werden wie folgt verschaltet:

Man kann ein passendes Relaisboard selbst bauen. Über ebay kann man ein passendes Board mit 8 Relais für ca. 7 Euro inkl. Versand bekommen. Dafür lohnt sich ein Selbstbau nicht. 4 Relais bleiben frei und können für künftige Erweiterungen genutzt werden (z.B. Licht).
Die entsprechenden Relaisboards sind mit Treibertransistoren, Freilaufdioden und Optokopplern ausgerüstet und können direkt an einen Arduino angeschlossen werden. Zu beachten ist eigentlich nur, dass die Relais typischerweise auf 0V/low am Eingang schalten.

Im konkreten Fall habe ich die 8 Eingänge des Relaisboards an die Arduino Pins A0..A7 angeschlossen.
433 MHz Empfänger für die Funkfernbedienung
Für die Ansteuerung mit einem 433 MHz Sender habe ich den zuvor in einem anderen Beitrag beschriebenen Funkwandschalter verwendet (klick). Es sollten die meisten 433MHz Funkwandschalter funktionieren. Ebenso die meisten Fernbedienungen von Funksteckdosen.

Update 20.09.2015:
Als Empfänger hatte ich zunächste einen der vielen 433MHz Empfänger verwendet, die unter der Bezeichnung „433 MHz Empfänger für Arduino“ angeboten werden. Solche Empfänger findet man ab 1 Euro bei ebay. Ich musste lernen, dass der ESP8266 auf kurze Distanz zuviel Störungen in den 433MHz Empfänger einstreut. Deshalb habe ich den Empfänger gegen einen Empfänger des Typs RXB12 (basierend auf einem SYN470R Chip) ersetzt. Dieser Emfänger ist ein Superhet und kann die Störungen des naheliegenden ESP sehr gut herausfiltern. Entsprechende Empfänger gibt es für ca. 1.50€ bei ebay. Die Pinbelegung beider Empfänger ist gleich.
Für diese Art von Empfängern gibt es die Arduino Library RCSwitch. Der Datenpin des Empfängers muss an einen interrupt-fähigen Pin angeschlossen werden. Deshalb habe ich Pin D2 gewählt. Die Stromversorgung erfolgt über den Arduino mit 5V.
ESP8266 für WLAN & Webserver
In diesem Projekt habe ich den ESP8266 als kleinen Webserver analog zu diesem Beispiel programmiert (klick). Die Webseite des ESP8266 ist unter http://markise/ erreichbar oder alternativ unter der IP, die der ESP im Netzwerk bekommt. Für die beiden Markisen werden die Knöpfe „einfahren“, „stop“ und „ausfahren“ angeboten.

Ein Druck auf den jeweiligen Knopf erzeugt eine Ausgabe auf der seriellen Schnittstelle, z.B. „MOTOR1STOP“. Diese seriellen Ausgaben werden auf dem Arduino eingelesen und damit die Ausgänge entsprechend geschaltet.
Beim elektrischen Anschluss ist zu beachten, dass der ESP8266 nur mit 3.3V läuft. Deshalb wird zunächst eine Versordungsspannung von 3.3V mit Hilfe eines LM1117 3.3V hergestellt. Da der ESP8266 über sehr kurze Zeiträume bis zu 200mA ziehen kann, habe ich noch einen Elko verbaut.
Für die serielle Schnittstelle habe ich die Softserial Library auf dem Arduino verwendet. Diese funktioniert bei 9600 Baud zuverlässig. Auf diese Weise bleibt die Möglichkeit erhalten, auf der USB Schnittstelle (verwendet die Hardware basierte serielle Schnittstelle) für Debug Zwecke weiter zu verwenden. Die Arduino Pins D3 und D4 werden für die Verwendung mit Softserial konfiguriert. Weiterhin kann über den Arduino Pin D5 ein Reset des ESP8266 ausgelöst werden.
Um die Signale zwischen Arduino (5V) und ESP8266 (3.3V) zu konvertieren, kann man einen Levelshifter nehmen. Es geht aber auch ganz trivial per Spannungsteiler (siehe Schaltplan). Der TX Pin des ESP8266 geht direkt an den Arduino; 3.3V langen für ein high aus. Der RX Pin wird ebenso wie der Reset-Pin über einen Spannungsteiler an den Arduino angeschlossen.
Schaltplan
Der gesamte Schaltplan ergibt sich somit wie folgt. Das Relaisboard wird über ein 10-poliges Kabel angeschlossen.

Auf dem Relaisboard steuern Relais 1 (an/aus) & Relais 2 (Richtung) den Motor der ersten Markise. Relais 3&4 steuern die zweite Markise (Verkabelung siehe oben).
Software
Die Softwarelösung besteht aus zwei Teilen: 1x Arduino, 1x ESP8266
Wie schon beschrieben orientiert sich die Lösung für den ESP8266 stark an dem Beispiel, das ich vor einigen Wochen gepostet habe (klick). Sie wird mit Hilfe einer erweiterten Arduino IDE auf den ESP8266 programmiert. Das entsprechende Vorgehen habe ich hier beschrieben (klick). Wer den Code verwenden möchte, muss vor der Benutzung noch SSID und Passwort des WLANs eintragen, in das sich die Markisensteuerung verbinden soll.
Die Arduino Software besteht im wesentlichen aus 3 Teilen:
1. Einlesen von Kommandos von der Softserial Schnittstelle
2. Einlesen von Kommandos von dem 433MHz Empfänger.
3. Steuern der Relais/Motoren in die richtige Richtung schalten und nach 2 Minuten wieder abschalten. Dann sollte die Markise am jeweiligen Endschalter angekommen sein.
Die Codes für die 433 MHz Fernbedienung müssen im Arduino Sourcecode eingetragen werden. Am einfachsten ist es, die gesendeten Codes mit dem seriellen Monitor in der Arduino IDE mitzuloggen und dann in den Sourcecode einzutragen. Wer den 433MHz Teil nicht einbauen will, kann diesen Sourcecodeteil einfach ignorieren.
Die Sourcecodes stehen hier zum Download bereit: Sourcecode Markisensteuerung
Stromversorgung
Die Stromversorgung erfolgt einfach über den USB Port des Arduino. Alternativ kann man auch 5V direkt auf den Vin Pin geben. Ich habe ein altes Handy Ladegerät verwendet. Um dem Stromverbrauch der Relais Rechnung zu tragen, sollte ein Relais mit einer Belastbarkeit von 1000mA zum Einsatz kommen.
Einbau in einen Gehäuse
Für die nötige Außenmontage habe ich im Baumarkt einen großen IP54 Schaltkasten gekauft (ca. 8€). In diesen Schaltkasten habe ich mittels zwei Sperrholzbrettchen 3 Ebenen erzeugt. Der gesamte Aufbau sieht dann wie folgt aus.
Hauptplatine ohne Arduino/ESP8266 (der LM1117 sitzt auf der Rückseite). Der zusätzliche Platinenstreifen hat keine elektrische Funktion. Er dient nur als Distanzhalter für den Einbau.

Hauptplatine mit Arduino/ESP8266 und 433MHz Empfänger:

Bestücktes Gehäuse vor der Montage:

P.S.: Eine Integration in fhem ist problemlos möglich. Falls das Probleme bereitet, hinterlasst einen Kommentar. Die Ansteuerung klappt dann auch mit der passenden Android App andFHEM.































