Oszilloskop für Arme


Ja, ich bin immer noch bei meinen Fernbedienungen.

Die grundsätzliche Funktionsweise war ja folgende: das Signal besteht aus An/Aus-Zuständen in einer bestimmten zeitlichen Abfolge. Das kann man wunderbar in einem Koordinatensystem (X-Achse Zeit, Y-Achse Zustand) visualisieren – nichts anderes macht ja auch ein Oszilloskop oder Logic Analyzer. Da normalsterbliche Bastler wie ich sowas aber nicht besitzen (Hallo Familie, das ist ein Wink mit dem Weihnachtszaunpfahl), habe ich dafür ein php-Script geschrieben.

Die RCSwitch Libary misst die Zeitabstände zwischen den An- und Aus-Zuständen und speichert diese in einem Array. Das Array wird an die Callback Methode übergeben und kann dort ausgegeben werden.

Arduino Sketch:

#include 

RCSwitch mySwitch = RCSwitch(3);

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0, output);
}

void loop() {

}

void output(unsigned long decimal, unsigned int length, unsigned int delay, unsigned int* raw) {
    for (int i=0; i< length*2; i++) {
      Serial.print(raw[i]);
      Serial.print(",");
    }
}

Im Serial Monitor bekomme ich nach Drücken einer Fernbedienung also eine kommaseparierte Liste mit Mikrosekunden die ein An-/Aus-Zustand jeweils dauert. Copy&Paste unter: http://test.sui.li/oszi.php und schwupps hat man das ganze hübsch aufbereitet 🙂

Hier ein paar Beispiele:

Signal eines Pollin Steckdosensets:


Signal eines Pollin Funkdimmers:


Signal zum öffnen des Kofferraumes einer billigen Nachrüst-Zentralverriegelung für’s Auto:


Signale zum aufschließen meines MG mit der Original Lucas 17TN Fernbedienung (Rolling Code, der ändert sich jedes mal):


Flattr this

6 Gedanken zu “Oszilloskop für Arme

  1. Das siehst Du richtig. Bei Autoverriegelungssystemen (siehe letztes Beispiel) wird in der Regel jedoch bei jedem Knopfdruck ein neuer Code gesendet, d.h. der einmal mitgelesene Code ist beim nächsten mal schon nicht mehr gültig.
    Funksteckdosen & Co, und billige Nachrüstsysteme von eBay sind allerdings problemlos nachbaubar.

  2. Vielen Dank für Deine Lib. Das Schalten meiner Pollin-Steckdosen klappt mit einem HFS300-Sender einwandfrei. Leider kann ich nichts mit meinem HFS301-Empfänger (gab es beide mal bei ELV) empfangen.
    Du hast einen Pollin-Funk-Dimmer dekodiert. Gibt es dazu auch eine Funktion, um diesen mit dem Arduino anzusteuern?

    • Bei den Funkdimmern hat jede Fernbedienung eine eigene ID. Das Datentelegramm ist weitestgehend identisch zu dem der Steckdosen und besteht aus:

      20 Bit eindeutige ID + 1 Bit Befehl (1 = An, 0 = Aus) + 3 Bit Adresse (111 = erste, 011 = zweite, 101 = dritte, 110 = vierte)

      Um die Anzusteuern musst du entweder die 20Bit ID der bereits angelernten Fernbedienung auslesen (ok, dafür bräuchtest du erstmal einen funktionierenden Empfänger 😉 alternativ kann man die FB aufschrauben und den DOut-Pin direkt mit dem Arduino verbinden. Bei Interesse kann ich das bei Gelegenheit gerne detailierter beschreiben) oder du denkst dir einfach 20Bit aus und lernst die Dimmer damit neu an.

      Aufruf:
      mySwitch.send(„101010111111010110001111“); // Meinen ersten Dimmer anschalten
      mySwitch.send(„101010111111010110000111“); // Meinen ersten Dimmer ausschalten

  3. Hi,

    welche rc switch library nimmst Du denn?

    mySwitch.enableReceive(0, output);

    bringt bei mir einen Fehler, da es nur ein Argument erwartet. Da mein Sender / Empfänger 868 und 433 kann, weisst Du wie man mit der RC Switch die Register so setzt, dass man die Frequenz umstellt? Oder geht das nur mit der cc1101?

    Danke

Hinterlasse einen Kommentar