ich versuche gerade meine 433 MHz Funksteckdose zu knacken. Leider passt sie nicht in die RCSwitch Library Daher will ich die Pulse selbst messen. Frage: wenn duration=PulseIn(xxx) einen Wert 1200 ausgibtm ist das dann in µ-Sekunden? Sind das dann 1,2 Millisekunden?
PulseIn mißt aber nur den Positiven Impuls oder die Länge der Pause.
PulseIn ist nicht geeignet um die Puls und Pausen-Längen einer Sequenz von Impulsen und Pausen verschiedener Längen zu messen.
Da ist es einfacher den Eingang einer Soundkarte mit dem richtigen programm als Speicheroszilloskop zu mißbrauchen.
Was sind denn das für Steckdosen (ich würde die Library gerne erweitern...)? Spuckt das ReceiveDemo Example Sketch aus der Library irgendetwas aus?
Wenn Du kein Oszi hast, hier die Version für ganz arme
Folgendes Sketch liest fortlaufend die Zeitabstände von 500 Changes auf Interrupt 0 (Pin2) aus und spuckt sie seriell aus. Unter rc-switch raw data viewer kannst Du die ausgegebene Liste eintragen und bekommst das Ergebnis einigermaßen hübsch dargestellt. Sieht dann ungefähr so aus:
#define maxChanges 500
unsigned int changeCount;
unsigned int timings[maxChanges];
unsigned long lastTime;
int nStartValue;
void setup() {
Serial.begin(9600);
lastTime = micros();
changeCount = 0;
attachInterrupt(0, r, CHANGE);
}
void loop() {
}
void output() {
}
void r() {
long time = micros();
if (changeCount ==1) {
nStartValue = digitalRead(2) ;
}
timings[changeCount++] = time - lastTime;
lastTime = time;
if (changeCount-1 >= maxChanges) {
if (nStartValue == 0) {
Serial.print(1); Serial.print(',');
}
for (int i = 1; i<changeCount-1; i++) {
Serial.print(timings[i]);
Serial.print(",");
}
Serial.println();
Serial.println();
changeCount = 0;
}
}
gesendet. Wenn ich eine Quigg Steckdosen mit diesen beiden An/Aus Codes anlerne, dann kann ich eine damit schalten.
Ich habe aber noch drei weitere Dosen... Die habe ich nicht mit einem anderen Code belernen können, da ich die Systematik noch nicht kapiert habe. Daher wäre eine Erweiterung der Lib genial!
uwefed:
PulseIn mißt aber nur den Positiven Impuls oder die Länge der Pause.
PulseIn ist nicht geeignet um die Puls und Pausen-Längen einer Sequenz von Impulsen und Pausen verschiedener Längen zu messen.
Da ist es einfacher den Eingang einer Soundkarte mit dem richtigen programm als Speicheroszilloskop zu mißbrauchen.
Viele Grüße Uwe
..... und natürlich auch bei Dir, Uwe! Das war ja Ursprünglich meine Frage.
Ich wollte gerade schon sagen es sei Manchester Code, weil da nur zwei verschiedene Längen mit "1lang" so lang wie "2kurz" ist... aber irgendwie kommt das ohne Flanke bei den ?? nicht hin, oder?
Wenn der Coder/Decoder die Bausteine HX2262/HX2272 sind dann hätte ich da eine Idee.
Der HX2262 (und kompatible) arbeitet nicht mit einer binären Logik sondern mit einer tertiären. Die Eingänge können H,L und nicht beschaltet (float) sein, also 3 Zustände haben.
Meist verwendet man nur 2 Eingangspegel aber es sind 3 möglich.
Jedes Bit besteht aus 2 Impulsen. Die Periodendauer eines Bits (also 2 Impulse) ist 32 Oszilatorschwingungen des 2262 lang.
Die Zahl gibt die Zeit in Oszilatorperioden an:
Bit 0 besteht aus : 4H, 12L, 4H, 12L
Bit 1 besteht aus : 12H, 4L, 12H, 4L
Bit float besteht aus: 4H, 12L, 12H, 4L
Im Endefekt ist die Dauer der Impulse bzw Pausen 1 oder 3 mal 4 Oszillatoperioden lang (lang ist 3*kurz).
Das stimmt aber auch wieder nicht mit der Aufzeichnung zusammen.
Meine Idee bringt auch keinen Durchbruch.
Ja, mit Geber meine ich immer die Fernbedienung Alter Radio- und Fernsehtechniker-Slang. Habe die Dose doch mit einem schmalen Schlitzschraubenzieher aufbekommen. Leider auch kein Chip drinnen. Nur eine Perle.
Das letzte habe ich gerade lange gesucht und wiedergefunden. Ich glaube, dass ich las, dass die Quigg die Tevion sind.... Ich blicke durch diese ge"0"e, ge"1"e und ge"f"e nicht durch...
Wobei die Farben purple Steckdose 2 ist und green Steckdose 3 ( könnten nocht einige startbits dabei sein). Rot ist aus und blau ist ein. Der Rest ein oder mehrere Paritätsbit?
Fängt immer mit (ziemlich lange) ~15000us Low + 600us High an (wohl zum synchronisieren)
600us Low + 1200us High => 0
1200us High + 600us Low => 1
Die ca. ersten 2/3 Bits sind bei allen drei gleich, wird wohl 'ne Art Gruppencode der Fernbedienung sein. Der Rest unterscheidet sich, wobei ungefähr alles bis zum letzten Bit der Gerätecode der einzelnen Steckdose und das letzte An/Aus sein könnte.