Hallo.
Ich habe ein Problem bei der Auswertung einer Funknachricht die mit
einem AC-123-16 Funkhandsender von ANYSANE gesendet wird. (siehe Bild)
Ich möchte das Signal gerne mit einem Arduino und einem 433mhz Empfänger
auswerten.
Ich benutze im Moment die "rc-switch" Librarry von perivar.
Diese gibt mir aber keine gültiges Signal zurück.
Wenn ich aber auf den Debug-Modus stelle kann ich die Funknachricht in
den RAW-Werten sehen.
Ich habe die nachricht schon größtenteils entschlüsselt siehe Bild2.
Am Anfang der Nachricht kommt immer ein ganz langes HIGH und ein langes
LOW.
Danach kommt anscheinend eine Sender-ID (Array3).
Dann kommen zwei Byte "Array4" und "Array" in denen ist des Kanal
enthalten.
Die letzten beiden Byte enthalten welche taste gedrückt worden ist (Hoch
Mitte Runter) und eine Prüfsumme.
Beendet wird die Nachricht von einem langen HIGH gefolgt von einem lange
LOW.
Diese Kombination tritt in der Nachricht selbst nicht auf.
Ausgewertet werden nur "lange" Zustände.
Ich bin mir nicht sicher ob ich das durch Änderung der "rc-switch.cpp"
abbilden kann.
Dein Bild zeigt Leitung 0/1/2/3/4 und du erzählst interessante
Beobachtungen von Array3, Array4 und Array - aber ICH erkenne da
keine Zusammenhänge.
Und die anderen 30 Leute, die da schon draufgeklickt haben, auch
nicht.
Erklär dich vielleicht mal etwas verständlicher in Zusammenhang
mit dem sichtbaren Pegel-Ablauf...???
Stefan B. schrieb:> Ich bin mir nicht sicher ob ich das durch Änderung der "rc-switch.cpp"> abbilden kann.
Nein. Die genannte Library kann nur Protokolle verarbeiten, die nach
folgendem Schema arbeiten. Jedes Element (Start-, Daten, Stopbit)
besteht aus einem H-Teil und einem L-Teil, die in der Länge ein
bestimmtes Vielfaches eines Grundtaktes ergeben. Das kann ich in Deiner
Aufzeichnung nicht erkennen.
https://github.com/sui77/rc-switch/wiki/KnowHow_LineCoding
Wolfgang schrieb:> Wieso nicht?
Weil am Anfang, am Ende und unregelmäßig zwischendrin Kombinationen von
langen H-Impulsen mit langen L-Impulsen auftreten, die nicht in das
Schema passen. Der Rest sieht schon gut aus. Genaues kann man aber eh
nicht sagen, man bräuchte mal eine "richtige" Aufzeichnung, z.B. mit
einem Logikanalysator.
Hallo JJ
Sorry für die schlechte Erklärung!
Ich versuchs nochmal.
Der Sender den ich benutze sendet Zyklisch in kurzen intervallen immer
die gleiche Nachricht wenn eine Taste gedrückt wird.
Diese Sendeblöcke habe ich mit anderer Software schon separiert,
normalisiert und als digitalen Verlauf in einem Graphen dargestellt.
Das ist dann in dem Bild z.B. leitung0 und leitung1 zu sehen.
Die Nullen und Einsen in der Grafik markieren einen High bzw Low zustand
der eine bestimmte Dauer überschreitet
Die anderen Verläufe interessieren erstmal nicht. (stehen aber für taste
losgelassen)
Zum besseren Verständnis habe ich noch eine Grafik angehängt.
Hallo Wofgang
Ist sportlicher Ehrgeiz!
433mhz ist natürlich falsch es müsste 433MHz heißen.
Dieser Empfänger wurde verwendet (Bild2).
Mario M. schrieb:> Genaues kann man aber eh> nicht sagen, man bräuchte mal eine "richtige" Aufzeichnung, z.B. mit> einem Logikanalysator.
Einen Logikanalysator habe ich nicht aber wenn du mir verrätst wie eine
solche Aufzeichnung aussieht kann ich morgen eine machen.
Entschuldigung. Die aufeinanderfolgenden langen Impulse, die ich
"gesehen" habe sind in Wirklichkeit Bitwechsel zwischen "0" und "1". War
wohl noch nicht ganz wach.
Trotzdem wird das mit der rc-switch wohl nicht funktionieren, weil die
Library mit 32Bit-Werten arbeitet, also auch nur Codes mit max. 32 Bits
senden und empfangen kann.
Schau Dir mal folgendes Projekt an. Da wird auch erklärt, wie man die
Impulse vermisst und den Impulszug generiert:
http://www.dserv01.de/howtos/funksteckdose-fernsteuern-mit-arduino/
Hallo Mario,
das werde ich mir mal anschauen.
Als Bild jetzt der Originale Signalverlauf.
Vielleicht können die Experten hier darauf mehr erkennen.
Gruß
Stefan
Hallo,
ich muss mich hier nochmal melden und um Hilfe bitten.
Wie schon weiter oben erwähnt ist eine Auswertung mittels RC-SWITCH
nicht direkt möglich.
Wenn ich in der RCSwitch.cpp DEBUG aktiviere bekomme ich den kompletten
Signalverlauf auf die Serielle Schnittstelle ausgegeben
Serial.print(RCSwitch::timings[p]);//Hier werden die Werte übergeben.
25
Serial.print(F(","));
26
}
27
Serial.println();
Mein Problem ist es dieses Array ins Hauptprogramm zu übergeben damit
ich es auswerten kann.
Wie kann ich diese Werte übergeben damit ich sie in der MAIN-Loop
verarbeiten kann?
Danke für eure Hilfe!
Wie schon geschrieben, kann rc-switch derart lange Bitfolgen von Haus
aus nicht erzeugen. Die brutalstmöglich einfache Lösung wäre, ein Array
mit allen Zeiten (im Flash) anzulegen und in einer Schleife immer
delay_us mit dem jeweiligen Wert aufzurufen und dann den Port-Pin zu
toggeln. Am Anfang den Pin entsprechend des Startpegels setzen.
Mario M. schrieb:> Wie schon geschrieben, kann rc-switch derart lange Bitfolgen von Haus> aus nicht erzeugen. Die brutalstmöglich einfache Lösung wäre, ein Array> mit allen Zeiten (im Flash) anzulegen und in einer Schleife immer> delay_us mit dem jeweiligen Wert aufzurufen und dann den Port-Pin zu> toggeln. Am Anfang den Pin entsprechend des Startpegels setzen.
Hallo Mario,
Ich möchte ja keine Bitfolge erzeugen.
Ich will ja nur die Nachricht vom der Fernbedienung empfangen, Auswerten
welcher Kanal und Welche Taste und das ganze dann per W-LAN an meinen
Homeserver übergeben. Dazu würde ich oben genannten Empfänger und einen
WEMOS-D1-Mini verwenden.
Deshalb war meine Idee, wenn schon der Signalverlauf richtig empfangen
wird, diesen einfach an die Main-LOOP zu übergeben, auswerten und ein
UDP-Paket versenden.
Ich scheitere aber im Moment schon dran das ARRAY "timings[]" in die
Hauptschleife zu bekommen.
Stefan B. schrieb:> Wie schon weiter oben erwähnt ist eine Auswertung mittels RC-SWITCH> nicht direkt möglich.
vielleicht wird rolling code genutzt, dann wäre es unmöglich zu
dekodieren.
vielleicht ist es aber nur was selbstkreiertes auch da sehe ich schwarz.
Es gibt so viele Codearten
einen kleinen Einblick bekommt man hier
https://www.mikrocontroller.net/articles/IRMP