Aquaponik mit dem Calliope mini – Funksteckdosen schalten

Von engineIngmar|20. August 2017|Calliope mini, Entwickeln, Pilotanlage|4 Kommentare

Das Schalten von Funksteckdosen ist eine sichere Variante, Geräte mit Netzanschluss durch Microcontroller oder Minicomputer, wie den Calliope mini, zu steuern. Die Grundlage liefern Sets aus Funksteckdosen, welche eigentlich mit der beigelegten Fernbedienung gesteuert werden sollen. Für unsere Aquaponikprojekte kommen solche Steuerungen bei größeren Entfernungen und leistungsstärken Pumpen zum Einsatz.

Mit einem Raspberry Pi oder Arduino ist das Schalten von 433 MHz-Sendern mit vorgefertigten Programmbibliotheken schnell erledigt. Für den Calliope mini sind diese Bibliotheken nicht verwendbar und mit dem graphischen Programmeditor Open Roberta Lab ist auch keine Einbindung externer Bibliotheken möglich. Daher war zunächst eine systematische Analyse notwendig.

Hintergrundwissen

Handelsübliche Funksteckdosen werden über ein 433 MHz-Funksignal gesteuert. Es wird hierbei vom Sender (z.B. der Fernbedienung) ein binäres Signal übertragen, welches vom Empfänger decodiert wird. Bei Übereinstimmung mit dem dort eingestellten Code, wird ein Relais geschalten. Die verwendete Codierung ist herstellerabhängig. Einige Marken teilen sich aber auch die gleiche Codierung. In unseren Projekten verwenden wir die Funksteckdosen Brennenstuhl RCS 1000 N, welche eine an der Steckdose einzustellende Codierung haben. Eine Übersicht zu verbreiteten Funksteckdosen und die Arten der Codierung ist im Wiki von FHEM zu finden.

Zur Übertragung eines 433 MHz-Signals gibt es sehr günstige Sender. Diese werden auch bei Anwendungen mit dem Raspberry Pi oder Arduino eingesetzt. Die Sender benötigen nur eine geringe Betriebspannung und haben einen Datenpin. Durch das Anlegen eines digitalen Signals an diesen Pin, wird das Signal im 433 MHz-Band gesendet. Um mit dem Calliope mini Steckdosen zu schalten, müssen wir also wissen, wie ein solches Signal aussieht. Zur Analyse habe ich piscope mit einem Raspberry Pi 3 verwendet.

Beim Schalten der oben genannten Steckdosen wird ein Signal mit einer Länge von 12 bit übertragen. Ein Bit ist für die Zustände 1 oder 0 codiert. Die Unterscheidung erfolgt auf Basis der Länge der high bzw. low-Zustände

0    high (ca. 400 μs) low ca. (1000 μs) high (ca. 1000 μs) low  (ca. 400 μs)

1    high (ca. 400 μs) low ca. (1000 μs) high (ca. 400 μs ) low  (ca. 1000 μs)

Die 12 bit beinhalten einen Hauscode (der in der Fernbedienung eingestellte Code), einen Gerätecode (wird mit Hauscode in der Steckdose eingestellt) und das Signal für An (10) oder Aus (01). Am Ende wird noch ein Synchronisierungssignal (einmal kurz high) als Zeichen für das Ende des Codes übertragen.

Entwurf Signalerklärung mit Dip Schalter

Zubehör

Für das Projekt werden nur wenige Bauteile benötigt. Als Spannungsversorgung genügt die Betriebsspannung des Calliope mini. Dadurch kann das Batteriepack verwendet werden. Bei einer Versorgungsspannung von 5 V werden größere Reichweiten des Senders erzielt. Die Schaltung sollte dann ähnlich zur Relaisschaltung sein (Link zum Relaisartikel). Der Sender kann auch mit einer 17 cm langen Antenne (z.B.: Draht, Büroklammer o.ä.) ausgestattet werden, was eine spürbare Steigerung der Reichweite erzielt. Für die ersten Versuche ist das aber nicht notwendig.

Benötigte Komponenten:

Hinweis: Die Aquaponisten erhalten keine Beteiligung oder Prämie von den verlinkten Shops, wenn Ihr dort einkauft. Die verlinkten Bezugsquellen wurden beispielhaft ausgewählt.

Schaltungsaufbau

Die Schaltung ist schnell aufgebaut. Der Sender wird über die Plus- und Minus-Ecken am Calliope mini mit Energie versorgt. Vom Data-Pin muss dann nur noch eine Verbindung mit P1 am Calliope hergestellt werden.

Schaltungsaufbau

Programmcode für Funksteckdosen

Das Codebeispiel ist mit dem Open Roberta Lab erstellt worden. Es ist aber prinzipiell auch mit anderen Editoren umsetzbar, wenn diese Unterprogramme unterstützen. Im Open Roberta Lab werden Unterprogramme Funktionen genannt. Das Programm hat die Aufgabe, bei Betätigung der Taste A die Funksteckdose A anzuschalten. Bei Drücken der Taste B soll die Steckdose wieder ausgeschaltet werden.

Codebeispiel Teil 2Im Kopf des Algorithmus werden mehrere Unterprogramme definiert. Die beiden Funktionen kurz und lang haben die Aufgabe, den Calliope mini eine definierte Zeit pausieren zu lassen. Da der im Editor vorgesehene Befehl warten leider nicht die notwendige kurzen Pausen ermöglicht, habe ich die beiden Schleifen (enthalten lediglich die Erhöhung einer Platzhaltervariable um 1) genutzt, welche die Pausen von ca. 1000 μs (lang) und  400 μs (kurz) erzeugen. Die beiden Funktionen eins_ und null_ erzeugen an Pin 1 den jeweiligen Bit unter Nutzung der Unterprogramme für die Pulslänge. Die weiteren Funktionen enthalten die Bitfolge für den im Beispiel eingestellten Haus- und Gerätecode, die jeweiligen Codes für das An- oder Aus-Signal und die Synchronisierung.

Codebeispiel TeilDas Hauptprogramm selbst beinhaltet eine unendliche Schleife. Bei Drücken der Taste A am Calliope mini, werden die Unterprogramme für Haus- und Gerätecode, das Anschalten und das Synchronisieren aufgerufen. Der Platzhalter wird zurückgesetzt, um ein Überlaufen der Variable zu verhindern. Bei Druck auf B wird an entsprechender Stelle das Unterprogramm für das Ausschalten aufgerufen.

Wenn Ihr das Programm im Open Roberta Lab nachbaut solltet Ihr darauf achten die Unterprogramme vor dem Hauptprogramm anzuordnen, ansonsten wird ein Kompilierungsfehler ausgegeben.

Die Anpassung des Programms auf einen anderen Steckdosencode erfolgt in den Unterprogrammen hauscode und geraetecode.

Download

Das kompilierte Programm als .hex-Datei ist unter folgendem Download-Link  verfügbar. Nach dem Entpacken des Archivs kann die Datei einfach auf den Calliope kopiert werden und dann startet das Programm automatisch. Die Open Roberta Projektdatei ist ebenfalls als .xml im Archiv enthalten. Diese kann als Projekt in den Editor importiert werden.

Download: Calliope mini – Funksteckdosen schalten

Einen direkten Link zu dem Open Roberta Lab Programm findet Ihr hier.

Was sind eure Erfahrungen mit Funktsteckdosen und dem Calliope mini? Habt Ihr bereits andere Typen decodieren können? Lasst uns an Euren Erfahrungen über die Kommentarfunktion teilhaben.

Creative Commons Lizenzvertrag
Aquaponik mit dem Calliope mini – Funksteckdosen schalten von Ingmar Reichert ist lizenziert unter einer Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

Diesen Beitrag teilen:

4 Kommentare

  1. Hallo,
    begeistert von der Idee habe ich mir die Steckdosen und die 433MHz-Sender besorgt. Leider kriege ich die Steckdose nicht zum Schalten.
    Das Programm kommt an, Haus-&Gerätecode habe ich zig Mal geprüft. Nix.
    Hat noch irgendjemand einen Tipp für mich, wie ich das debuggen kann?
    Kann ich die Sender irgendwie testen? Ich weiß ja gar nicht, ob das am Ende Elektroschrott ist.
    Kann man den Empfänger, der mit in dem Pack war, irgendwie zum testen des Senders nutzen?

    Für jeden Tipp dankbar

    Okeo

    1. engineIngmar

      Hallo Okea,

      schön, dass Dich der Beitrag zur Umsetzung der Idee animiert hat. Ich kann Dir aus eigener Erfahrung folgende Hinweise geben:
      1. Das Empfangen funktioniert nicht immer zuverlässig. Ich sende das Signal zum Schalten immer 10 mal.
      2. Ich teste die Sender immer mit einem Raspberry Pi und dem mitgelieferten Sender. Dann nehme ich das Sniffer-Tool aus der Ninjablocks Bibliothek. Mehr dazu hier: https://tutorials-raspberrypi.de/raspberry-pi-funksteckdosen-433-mhz-steuern/ Ich hatte auch mal einen Sender, der sehr unzuverlässig war.
      3. Bei größeren Entfernungen (über 2 m) solltest Du es mal mit einer Antenne (17cm Draht) an dem Sender probieren.
      4. Die angegebenen Pausen habe ich durch systematisches Probieren ermittelt. Bei einer Auswertung des Signals habe ich etwas kürzere Intervalle gemessen.

      Beste Grüße!
      Ingmar

  2. Schöner Artikel. Ein bisschen konstruktive Kritik:
    – die Einheit der Frequenz Hertz heißt abgekürzt Hz, nicht hz, also auch MHz und nicht Mhz
    – zwischen Zahl und Einheit gehört immer ein Leerzeichen, siehe http://www.bipm.org/en/publications/si-brochure/section5-3-3.html

    1. Aquaponisten

      Hallo Mathias,
      vielen Dank für das Lob und das aufmerksame Lesen. Die redaktionellen Fehler haben wir gleich behoben.
      Beste Grüße!
      Ingmar

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Du verwendest diese HTML Tags und Attribute: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*